|
Пердачок
Стаж: 18 лет 6 месяцев Сообщений: 317
|
Пердачок ·
19-Дек-08 23:49
(15 лет 10 месяцев назад)
|
|
Tanitra84
Стаж: 17 лет 2 месяца Сообщений: 1332
|
Tanitra84 ·
22-Дек-08 20:33
(спустя 2 дня 20 часов)
выскакивает вот такая ошибка...
не подскажете, в чём может быть дело?
ColorMatrix.dll лежит в C:\Program Files\AviSynth 2.5\plugins... может, ещё что-нибудь не сделала?
заранее спасибо за ответ/совет
|
|
Magdy
Стаж: 17 лет 7 месяцев Сообщений: 357
|
Magdy ·
22-Дек-08 20:46
(спустя 13 мин.)
Tanitra84, что-то мне подсказывает что Вы обрабатываете не DVD источник (индексный файл, созданный в DGIndex), если так - то просто уберите строчку hints=true.
|
|
Tanitra84
Стаж: 17 лет 2 месяца Сообщений: 1332
|
Tanitra84 ·
22-Дек-08 20:57
(спустя 10 мин., ред. 22-Дек-08 20:57)
Magdy
именно его и обрабатываю MPEG2source("D:\Torrents\KKK.d2v", info=3)
со скриптом "по умолчанию" проблем не было
скрытый текст
Import("C:\Program Files\AviSynth 2.5\plugins\LimitedSharpenFaster.avs")
MPEG2Source("D:\Torrents\KKK.d2v",info=3) colormatrix()
ConvertToYUY2() crop(0,71,-0,-71)
spline36resize(720,304) DeGrainMedian ()
LimitedSharpenFaster()
а вот когда решила немного побаловаться другими значениями,
скрытый текст
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\DGDecode.dll")
MPEG2source("D:\Torrents\KKK.d2v", info=3)
ConvertToYUY2()
ColorMatrix(hints=true,interlaced=true)
Tweak(bright=2)
Tweak(cont=1.1)
Tweak(hue=-2)
FFT3DGPU(sigma=3)
FFT3DGPU(bt=-1, sharpen=1.2)
Crop(0,71,-0,-71)
Lanczos4Resize(720, 304)
то такая пакость выскочила...
правда, я сегодня впервые пытаюсь сделать рип на основе avs скриптов (раньше всё моё внимание уходило на дорожки, а теперь решила и самим видео заняться) , вот и подумала, что может, что-то не туда засунула...
хочется разобраться...
|
|
Magdy
Стаж: 17 лет 7 месяцев Сообщений: 357
|
Magdy ·
22-Дек-08 21:16
(спустя 18 мин., ред. 22-Дек-08 21:16)
Ну, во первых, я не совсем понимаю зачем Вы используете вот эту строчку:
ConvertToYUY2(),
исходное DVD, да и рип, который в последствии из него получится используют формат YV12, фильтры в скрипте тоже его поддерживают, имхо, это какая-то ненужная трансформация.
Во вторых, ошибка вылетает скорее всего из-за этого:
Цитата:
DGDecode v1.20 и более новые версии выводят колориметрические подсказки в видео. Колориметрическая информация может быть просмотрена используя
Код:
Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v", info=1)
Подсказки используются, если установлено info=3 in Mpeg2source, установлено hints = true в ColorMatrix и если ColorMatrix используется сразу после загрузки видео
Код:
Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v", info=3)
ColorMatrix(hints=true)
Если указывается d2v файл, то колориметрическая информация будет браться прямо из него самого.
Код:
Mpeg2source("F:\TestStreams\avs\AguileraGrammies.d2v")
ColorMatrix(d2v="AguileraGrammies.d2v")
|
|
Tanitra84
Стаж: 17 лет 2 месяца Сообщений: 1332
|
Tanitra84 ·
22-Дек-08 21:34
(спустя 18 мин.)
Magdy
спасибо, попробую покопаюсь)
|
|
Tanitra84
Стаж: 17 лет 2 месяца Сообщений: 1332
|
Tanitra84 ·
23-Дек-08 19:02
(спустя 21 час, ред. 23-Дек-08 19:02)
уважаемые знатоки кодирования, подскажите, что "пошло не так"
в оригинале так:
получилось вот так:
даже не знаю, что лучше с цветовой гаммой сделать (((( нужно было точнее что-то указать? или добавить что-то ещё?
скрипт был самый простой, ничего спец. с цветом не делала, думала, что он цветовую гамму из фильма возьмёт
скрытый текст
Import("C:\Program Files\AviSynth 2.5\plugins\LimitedSharpenFaster.avs")
MPEG2Source("путь.d2v",info=3) colormatrix()
ConvertToYUY2() DeGrainMedian ()
LimitedSharpenFaster() Crop(0,70,-0,-70)
Lanczos4Resize(720, 304)
или надо было вот так писать: ColorMatrix(d2v="путь.d2v")
или, быть может, нужно с tweak'ом что-то делать?
пардон за ламерские вопросы
|
|
Magdy
Стаж: 17 лет 7 месяцев Сообщений: 357
|
Magdy ·
23-Дек-08 19:59
(спустя 56 мин.)
Tanitra84, вполне возможно что мой монитор неправильно настроен, но лично мне второй вариант нравится больше чем первый ( с красными отливами на лицах). Или Вы хотели добиться какого-то определённого эффекта?
|
|
Tanitra84
Стаж: 17 лет 2 месяца Сообщений: 1332
|
Tanitra84 ·
23-Дек-08 20:08
(спустя 8 мин.)
Magdy
цвета уж слишком приглушенные получились, это особенно видно, если сравнивать траву на первом скриншоте и на втором
всё немного посерело, Вам не кажется? подумала, что, может, кто-нибудь подскажет, что можно в таком случае делать - какой фильтр применить и/или каике значения поставить
|
|
Magdy
Стаж: 17 лет 7 месяцев Сообщений: 357
|
Magdy ·
23-Дек-08 20:16
(спустя 8 мин.)
Tanitra84, таковы уж последствия работы функции colormatrix():
Цитата:
ColorMatrix корректирует цвета потоков MPEG-2 DVD. Более корректно, многие MPEG-2 потоки используют слегка отличающиеся коэффициенты (называемые Rec.709) для хранения цветовой информации, чем это делают подпрограммы преобразования цвета AviSynth или XviD/DivX декодеры (называемые Rec.601), с тем результатом, что клипы DivX/XviD или MPEG-2, закодированные TMPGEnc/QuEnc отображатся со слегка смещенными цветами (что выглядит подобно небольщой разницы в яркости). Это может быть проверено путем открытия потока MPEG-2 прямо в VirtualDubMod.
У меня на мониторе всё выглядит нормально.
|
|
Tanitra84
Стаж: 17 лет 2 месяца Сообщений: 1332
|
Tanitra84 ·
23-Дек-08 20:21
(спустя 4 мин.)
|
|
spleet
Стаж: 17 лет 10 месяцев Сообщений: 410
|
spleet ·
28-Дек-08 15:08
(спустя 4 дня)
Хотел рипнуть властелина (HD), столкнулся с такой траблой:
скрытый текст
собсна как сетку убрать?
применяемый скрипт:
скрытый текст
MT("""
i=degrainmedian(limitY=6,limitUV=6,mode=4)
idx1=rand()
v=removedirt()
backward_vec2 = v.MVAnalyse(blksize=16,truemotion=true,isb = true, delta = 2, pel = 2, overlap=4, sharp=2, idx = idx1)
backward_vec1 = v.MVAnalyse(blksize=16,truemotion=true,isb = true, delta = 1, pel = 2, overlap=4, sharp=2, idx = idx1)
forward_vec1 = v.MVAnalyse(blksize=16,truemotion=true,isb = false, delta = 1, pel = 2, overlap=4, sharp=2, idx = idx1)
forward_vec2 = v.MVAnalyse(blksize=16,truemotion=true,isb = false, delta = 2, pel = 2, overlap=4, sharp=2, idx = idx1)
i.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400)
MergeLuma(deen("a2d",3,0,6),\
FFT3Dfilter(wintype=1,bt=3,bw=32,bh=32,ow=16,oh=16,degrid=1,\
sigma=0.2,sigma2=0.5,sigma3=0.9,sigma4=2,plane=0,interlaced=false))
SeeSaw(NRlimit=0, NRlimit2=5, Sstr=2.40, Szp=1, Slimit=50, Sdamplo=16, Spower=1, sootheT=95, SdampHi=29)
""",threads=2,splitvertical=true)
и еще чем можно "ступеньки" убрать
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4959
|
Tempter57 ·
28-Дек-08 16:21
(спустя 1 час 13 мин., ред. 28-Дек-08 16:21)
1. Включая режим МТ для плагина MVTools, ты осознаешь, что получишь шов склейки двух полукадров? Прочти http://avisynth.org/mediawiki/MT_support_page
2.
spleet писал(а):
MergeLuma(deen("a2d",3,0,6),\
FFT3Dfilter(wintype=1,bt=3,bw=32,bh=32,ow=16,oh=16,degrid=1,\
sigma=0.2,sigma2=0.5,sigma3=0.9,sigma4=2,plane=0,interlaced=false))
вот в этой строке deen обрабатывает канал цветности, а FFT3Dfilter-яркостной. Именно в FFT3Dfilter есть параметр degrid=1, который снижет сетку на изображении, но в данном случае только в яркостном канале, поиграйся ещё и с разными sigma (скорее всего sigma2 или sigma3) и установи, какая из них сильнее задавливает сетку, пока указанную строку замени на
FFT3Dfilter(wintype=1,bt=5,bw=32,bh=32,ow=16,oh=16,degrid=1,\
sigma=1.2,sigma2=2.5,sigma3=2.0,sigma4=4,plane=4,interlaced=false)
Можно попробовать и фильтр dfttest(sigma=1.1,tbsize=3)
3. Со ступеньками хуже, попробуй вначале скрипта ввести строку:
nnedi(dh=true,field=0).turnleft().nnedi(dh=true,field=0).turnright()
а в конце сделать ресайз
lanczosresize(720,304,taps=10) #вместо720х304 установи своё разрешение
P.S. применение пресета Molotov2 для HD или BD- это, конечно,-жесть.
|
|
spleet
Стаж: 17 лет 10 месяцев Сообщений: 410
|
spleet ·
28-Дек-08 17:34
(спустя 1 час 12 мин., ред. 28-Дек-08 17:34)
Tempter57
ну да.. сетка получается из-за режима MT...
к п.2 ступеньки нужно расценивать как интерлейс? (З.Ы. lanczos не знает параметра taps)
Molotov2 во всяком случае приличный результат дает (там в HD много вставок апскейлного DVD)..
А какие фильтры поддерживают многоядерность, из используемых мною (ну кроме removegrain,-dirt,repair и fft3d), а то скорость падает до 4fps
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4959
|
Tempter57 ·
28-Дек-08 19:22
(спустя 1 час 48 мин.)
spleet
В архиве plugins_filtering на предыдущей страничке для BD есть пресеты.
А режим MT можно заменить на режим Setmtmode(2) или MTstack. Всё это в пресетах отражено с 3-мя вариантами MVTools на любой вкус. Если у тебя HD 1080i интерлейсный, то помимо него надо побороться ещё и со ступеньками и лучше работать с увеличенным клипом:
SetMTMode(2,2)
degrainmedian(limitY=12,limitUV=8,mode=3).fft3dgpu(bw=16, bh=16, bt=3, sigma=1.2, plane=0)
bc = last.BilinearResize(Width()*2, Height()*2)
super=MSuper(bc, hpad=8, vpad=8, pel=2, sharp=2, rfilter=2)
b1v = MAnalyse(super,isb=true, delta= 1, blksize=16, overlap=4, search=3, chroma=true, truemotion=true)
f1v = MAnalyse(super,isb=false,delta= 1, blksize=16, overlap=4, search=3, chroma=true, truemotion=true)
nnedi(field=0, dh=true).TurnLeft().nnedi(field=0, dh=true).TurnRight()
cf1 = MCompensate(super, f1v, thSCD1=200)
cb1 = MCompensate(super, b1v, thSCD1=200)
tb1 = Overlay(cb1, opacity=.5)
tf1 = Overlay(cf1, opacity=.5)
f1 = Overlay(tb1, opacity=.5)
f2 = Overlay(tf1, opacity=.5)
Overlay(f1,f2, opacity=.5)
LimitedSharpenFaster(Smode=4,strength=100)
gradfun2db(1.4)
Lanczosresize(720,304,taps=10) # taps=10 впиши руками
Скорости не обещаю, но качество будет лучше. Это тут ещё векторный анализ с радиусом 1.
|
|
spleet
Стаж: 17 лет 10 месяцев Сообщений: 410
|
spleet ·
28-Дек-08 21:22
(спустя 1 час 59 мин., ред. 28-Дек-08 21:22)
Tempter57 писал(а):
spleet
В архиве plugins_filtering на предыдущей страничке для BD есть пресеты.
А режим MT можно заменить на режим Setmtmode(2) или MTstack. Всё это в пресетах отражено с 3-мя вариантами MVTools на любой вкус.
Спс. Не понял только две вещи о SetMTmode:
1. mode int (2, default 1-6) - влияет только на количество поддерживаемых фильтров и скорость обработки?
threads - не понял, что дает...
2. Чем отличается MT("""") от SetMTmode и в любом ли случае будет вертикальная граница раздела двух полукадров?
З.Ы. попробовал прессет
скрытый текст
SetMTMode(2,2)
source = last
backward_vec2 = source.MVAnalyse(blksize=16, isb=true, truemotion=true, delta=2, pel=4, overlap=4, sharp=2, idx = 1)
backward_vec1 = source.MVAnalyse(blksize=16, isb=true, truemotion=true, delta=1, pel=4, overlap=4, sharp=2, idx = 1)
forward_vec1 = source.MVAnalyse(blksize=16, isb=false, truemotion=true, delta=1, pel=4, overlap=4, sharp=2, idx = 1)
forward_vec2 = source.MVAnalyse(blksize=16, isb=false, truemotion=true, delta=2, pel=4, overlap=4, sharp=2, idx = 1)
maskp1 = mvmask(kind=1, vectors=forward_vec1, ysc=255).UtoY()
maskp2 = mvmask(kind=1, vectors=forward_vec2).UtoY()
maskp3 = mvmask(kind=1, vectors=backward_vec1, ysc=255).UtoY()
maskp4 = mvmask(kind=1, vectors=backward_vec2).UtoY()
maskf = average(maskp1, 0.25, maskp2, 0.25, maskp3, 0.25, maskp4, 0.25).spline36resize(source.width, source.height)
smooth = source.degrainmedian(limitY=10,limitUV=8,mode=3).fft3dfilter(bw=16, bh=16, bt=1, sigma=1.0, sigma2=0.1,sigma3=1.2,sigma4=1.5,plane=0)
source2 = maskedmerge(source,smooth,maskf)
source3 = source2.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=450,idx=2)
den = source3
den = mt_lutxy(source, den, "x 3 + y < x 3 + x 3 - y > x 3 - y ? ?", Y=3, U=2, V=2)
pmax = source.mt_logic(maskf, "max").mt_logic(maskf, "max")
pmin = source.mt_logic(maskf, "min").mt_logic(maskf, "min")
gradfun2db(1.2)
sharp = den.SeeSaw(NRlimit=3, NRlimit2=4, Sstr=1.5, Slimit=8, bias=24, Spower=4, Sdamplo=7, Szp=16)
mm = sharp.mt_clamp(pmax, pmin, 0, 0, U=2, V=2)
return mm
Lanczosresize(720, 304,taps=10)
на выходе видео без ресайза получилось
|
|
Zep
Стаж: 17 лет 1 месяц Сообщений: 10
|
Zep ·
28-Дек-08 21:35
(спустя 13 мин.)
Если кто пользуется програмой Xvid4PSP, вопрос по максимальным настройкам кодека xvid
Для режима 3 - pass size, это максимальные (лучшие по качеству) настройки?
|
|
shellgen
Стаж: 18 лет 1 месяц Сообщений: 6417
|
shellgen ·
28-Дек-08 21:46
(спустя 10 мин., ред. 28-Дек-08 21:47)
spleet писал(а):
на выходе видео без ресайза получилось
spleet писал(а):
return mm
Lanczosresize(720, 304,taps=10)
А с чего бы ему оказаться с ресайзом, если результат возвращается до lanczos ? Строку с return убить надо бы конечно, точнее заменить на mm
|
|
spleet
Стаж: 17 лет 10 месяцев Сообщений: 410
|
spleet ·
28-Дек-08 21:55
(спустя 9 мин., ред. 28-Дек-08 21:55)
Где-то читал что VHQ Mode нельзя юзать вместе с Global Motion Compensation.
2 shellgen
спс
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4959
|
Tempter57 ·
28-Дек-08 22:16
(спустя 20 мин.)
spleet писал(а):
Спс. Не понял только две вещи о SetMTmode:
1. mode int (2, default 1-6) - влияет только на количество поддерживаемых фильтров и скорость обработки?
threads - не понял, что дает...
2. Чем отличается MT("""") от SetMTmode и в любом ли случае будет вертикальная граница раздела двух полукадров?
1. Первая цифра означает вариант(режим) установки многопотоковой работы AviSynth: в данном случае подразумевается режим SetMTMode(2) , вторая цифра обозначает количество подключаемых ядер(threads-количество ядер), например, ваш CPU имеет 2 ядра,- тогда пишем SetMTMode(2,2), если просто написать режим SetMTMode(2), то все имеющиеся ядра подключатся автоматически, что в случае 4-хядерника может дать сбой на этапе кодирования, особенно кодеком х264, подозреваю из-за повышенной нагрузки и разогрева кристалла CPU, не исключаю и другие факторы, как элементарную нехватку оперативки и прочих вещей.
2.Режим MT("""") разбивает процесс обработки на потоки, в которых обработка производится полукадрами, это для фильтров без векторного анализа абсолютно незаметно, но с плагином MVTools, где производится векторный анализ движения, такой режим мягко говоря некорректен из-за образования вертикального шва по середине кадра. С этой целью применяется режим SetMTMode(2), где процесс обработки делится на потоки, причём обработка кадра в каждом отдельном потоке производится целиком, затем такие потоки склеиваются последовательно в общий после обработки, при этом вертикальный шов разумеется полностью отсутствует.
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4959
|
Tempter57 ·
28-Дек-08 22:27
(спустя 10 мин.)
Zep
Снимите галочку с Quarter pixel search и Global Motion Compensation, иначе на стационарном DVD проигрывателе ваш файл не будет читаться и поставьте B-frames=1, если ваш битрейт будет выше 900 кбит\с можно подключить матрицу кодирования MPEG вместо H263. Будет ещё лучше, если по адресу
C:\Program Files\Winnydows\XviD4PSP5\presets\encoding\AVI Hardware\video
вы создадите пресет для кодека в "народный размер" 1,37 GB: video codec:
XviD video cli:
-qtype 1 -vhqmode 4 -nopacked -bvhq -max_bframes 1 -lumimasking
-size 1400000 -qtype 1 -vhqmode 4 -nopacked -bvhq -max_bframes 1 -lumimasking -imin 1 -bmin 1 -pmin 1
Меняя значение -size 1400000 можно создать пресет и в другой размер.
|
|
Zep
Стаж: 17 лет 1 месяц Сообщений: 10
|
Zep ·
28-Дек-08 23:03
(спустя 36 мин., ред. 28-Дек-08 23:03)
Tempter57
Большое спасибо.
То есть особого смысла в третьем проходе нет.
Я хотел еще спросить про AviSynth. У меня он был установлен еще до установки Xvid4PSP.
А эта программа устанавливает AviSynth еще раз автоматически.
Нужно ли перед установкой Xvid4PSP удалять AviSynth.
А так получается, что AviSynth установлен и в C:\Program Files\AviSynth, и в C:\Program Files\Winnydows\XviD4PSP5
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4959
|
Tempter57 ·
29-Дек-08 00:16
(спустя 1 час 12 мин.)
Zep
можно спокойно оставить
|
|
Zep
Стаж: 17 лет 1 месяц Сообщений: 10
|
Zep ·
29-Дек-08 00:29
(спустя 13 мин.)
Хорошо, не придется ничего заново ставить.
Tempter57
Еще раз спасибо за помощь.
|
|
spleet
Стаж: 17 лет 10 месяцев Сообщений: 410
|
spleet ·
29-Дек-08 14:36
(спустя 14 часов)
Tempter57
терь все понял, спс =)
Вопрос ко всем, какой кадр луче навскидку?
скрытый текст
скрытый текст
вроде 3-ий
|
|
Magdy
Стаж: 17 лет 7 месяцев Сообщений: 357
|
Magdy ·
29-Дек-08 14:45
(спустя 8 мин.)
spleet, имхо, 2-й - он весит меньше =))
|
|
spleet
Стаж: 17 лет 10 месяцев Сообщений: 410
|
spleet ·
29-Дек-08 16:11
(спустя 1 час 26 мин.)
Хех.. а почиму при включении ф-ии SetMTMode скорость кодирования уменьшается (по сравнению со скриптом без MT вообще)?
|
|
Pustovetov
Стаж: 17 лет Сообщений: 4255
|
Pustovetov ·
29-Дек-08 16:20
(спустя 9 мин.)
spleet писал(а):
Вопрос ко всем, какой кадр луче навскидку?
Или первый или третий. Второй слишком замылен.
|
|
Tempter57
Стаж: 16 лет 1 месяц Сообщений: 4959
|
Tempter57 ·
29-Дек-08 17:51
(спустя 1 час 30 мин.)
spleet писал(а):
Хех.. а почиму при включении ф-ии SetMTMode скорость кодирования уменьшается (по сравнению со скриптом без MT вообще)?
расскажи о своём железе и предоставь окончательный вариант скрипта.
|
|
spleet
Стаж: 17 лет 10 месяцев Сообщений: 410
|
spleet ·
29-Дек-08 20:59
(спустя 3 часа, ред. 29-Дек-08 20:59)
скрытый текст
source = last
super=source.MSuper(hpad=8, vpad=8, pel=2, sharp=2, rfilter=2)
vb2 = MAnalyse(super, isb=true, truemotion=true, delta=2, blksize=16, overlap=4)
vb1 = MAnalyse(super, isb=true, truemotion=true, delta=1, blksize=16, overlap=4)
vf1 = MAnalyse(super,isb=false, truemotion=true, delta=1, blksize=16, overlap=4)
vf2 = MAnalyse(super,isb=false, truemotion=true, delta=2, blksize=16, overlap=4)
maskp1 = source.MMask(vf1, kind=1, ysc=255).UtoY()
maskp2 = source.MMask(vf2, kind=1).UtoY()
maskp3 = source.MMask(vb1, kind=1, ysc=255).UtoY()
maskp4 = source.MMask(vb2, kind=1).UtoY()
maskf = average(maskp1, 0.25, maskp2, 0.25, maskp3, 0.25, maskp4, 0.25).spline36resize(source.width, source.height)
smooth = source.degrainmedian(limitY=10,limitUV=8,mode=3).fft3dfilter(bw=16, bh=16, bt=3, sigma=1.0, sigma2=1.2,sigma3=1.5,sigma4=2.5,plane=0)
source2 = mt_merge(source,smooth,maskf)
den = source2.MDegrain2(super,vb1,vf1,vb2,vf2,thSAD=400)
den = mt_lutxy(source, den, "x 3 + y < x 3 + x 3 - y > x 3 - y ? ?", Y=3, U=2, V=2)
pmax = source.mt_logic(maskf, "max").mt_logic(maskf, "max")
pmin = source.mt_logic(maskf, "min").mt_logic(maskf, "min")
#gradfun2db(1.2)
sharp = den.SeeSaw(NRlimit=3, NRlimit2=4, Sstr=1.5, Slimit=5, bias=40, Spower=4, Sdamplo=6, Szp=16)
mm = sharp.mt_clamp(pmax, pmin, 0, 0, U=2, V=2)
mm
собсна скорость ~5fps загрузка цп50% (проц Core2 duo 2.34ГГц)
если задействовать SetMTMode падает ~2fps
(з.ы. для чего нужен gradfun2db(1.2)?)
|
|
|