Публични търгове и конкурси
22.11.2024 г. Заповед №460 от 20.11.2024г. на кмета на Община Угърчин и документация за участие в публичен търг на 09.12.2024г. от 09:30 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред поземлен имот с идентификатор 75054.900.1692, съгласно схема за поставяне на кафеавтомат, находящ се в землището на гр. Угърчин, общ. Угърчин.
22.11.2024 г. Заповед №461 от 20.11.2024г. на кмета на Община Угърчин и документация за участие в публичен търг на 09.12.2024г. от 09:45 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат в поземлен имот с идентификатор 75054.900.1411, съгласно схема за поставяне на кафеавтомат, находящ се в землището на гр. Угърчин, общ. Угърчин.
22.11.2024 г. Заповед №458 от 20.11.2024г. на кмета на Община Угърчин и документация за участие в публичен търг на 09.12.2024г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на ДМА – МПС частна общинска собственост, представляващ Колесен багер товарач Модел: JCB-3CX, Рег.№OB 01574.
22.11.2024 г. Заповед №459 от 20.11.2024г. на кмета на Община Угърчин и документация за участие в публичен търг на 09.12.2024г. от 09:15 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на ДМА – МПС частна общинска собственост, представляващ Мотопед Шинерай Хи 50 КУ 3 Е с рег. №ОB 2555 M.
27.09.2024 г. Заповед №382/26.09.2024 г. за определяне ЕТ „СОЛАРСКИ – ДОНА ТРИФОНОВА-ТОТКО СТЕФАНОВ“, ЕИК 110542979, седалище и адрес на управление: с. Лесидрен, общ. Угърчин, вх. №5410/16.09.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 43325.500.689.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 43325.500.689 в землището на с. Лесидрен, общ. Угърчин, ОБЯВЕН СЪС ЗАПОВЕД №328/27.08.2024г.
27.09.2024 г. Заповед №383/26.09.2024 г. за определяне „РУМЕНОВИ РР“ ЕООД, ЕИК 201846044, седалище и адрес на управление: с. Кирчево, ул. „Панайот Волов“ №13, вх. №5386/13.09.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 3 кв.м., за поставяне на кафеавтомат /1 кв.м./ и вендинг автомат /2 кв.м./ пред сграда с идентификатор 36943.500.699.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 36943.500.699 в землището на с. Кирчево, общ. Угърчин, ОБЯВЕН СЪС ЗАПОВЕД №329/27.08.2024г., с предложена единствена и най-висока месечна наемна цена 29.00 лв./кв.м. /двадесет и девет лева на квадратен метър/ без ДДС.
27.09.2024 г. Заповед №381/26.09.2024 г. за определяне ЕТ „НИКОЛАЙ МАРКОВ“, ЕИК 110021595, седалище и адрес на управление: гр. Ловеч, ж.к. „Здравец“ 201, вх.А, ет.5, ап.12, вх. №5278/09.09.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 36662.500.307.3, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 36662.500.307 в землището на с. Катунец, общ. Угърчин, ОБЯВЕН СЪС ЗАПОВЕД №327/27.08.2024г., с предложена единствена и най-висока месечна наемна цена 35.00 лв./кв.м. /тридесет и пет лева на квадратен метър/ без ДДС.
13.09.2024 г. Заповед №358/12.09.2024 г. и документация за участие в публичен търг на 03.10.2024г. от 09:30 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 36943.500.278.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 36943.500.278 в землището на с. Кирчево, общ. Угърчин.
13.09.2024 г. Заповед №357/12.09.2024 г. и документация за участие в публичен търг на 03.10.2024г. от 09:15 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 43325.500.274.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 43325.500.274 в землището на с. Лесидрен, общ. Угърчин.
13.09.2024 г. Заповед №356/12.09.2024 г. и документация за участие в публичен търг на 03.10.2024г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 4 /четири/ месеца, на самостоятелен обект с идентификатор 68076.500.92.2.2, с площ от 100.34 кв.м, представляващо част от първи етаж в сграда с идентификатор 68076.500.92.2- кметство, намираща се в поземлен имот с идентификатор 68076.500.92 по кадастралната карта на с. Сопот, общ. Угърчин, частна общинска собственост – АЧОС №2654/27.10.2020г.
15.08.2024 г. Заповед №315/14.08.2024 г. за учредяване безвъзмездно право на ползване в полза на НЧ „Възраждане – 1927г.“ – с. Каленик, общ. Угърчин, ЕИК 000283461, за срок от 10 години, върху недвижим имот общинска собственост, а именно: помещения с площ от 36 кв. м., находящи се на първи етаж в сграда с идентификатор 35331.500.316.1, попадаща в поземлен имот с идентификатор 35331.500.316, в землището на с. Каленик, община Угърчин, актуван с АПОС №1298/22.06.2012г.
14.08.2024 г. Заповед №309/14.08.2024 г. за продажба на Надка ******** Влахова, ЕГН:*********, с адрес гр. Угърчин, общ. Угърчин, обл. Ловеч, ул. „Христо Смирненски” №6, притежаваните от Община Угърчин 500/1902/петстотин върху хиляда деветстотин и две/ идеални части от Поземлен имот, находящ се в гр. Угърчин, с идентификатор 75054.900.1592, по КК и КР, одобрени със Заповед № РД18-28/01.04.2009г. на Изпълнителен директор на АГКК, с площ от 1902/хиляда деветстотин и два/ кв.м, с адрес гр. Угърчин, ул. „Сергей Румянцев“, ТПТ: Урбанизирана, НТП: Ниско застрояване (до 10м), номер по предходен план: 1592, квартал: 92, парцел: 7,8, при съседи: имот №75054.900.1594, имот №75054.900.1591, имот №75054.900.2542, съгласно АЧОС №1286/08.06.2024г.
06.08.2024 г. Заповед №294/05.08.2024 г. и документация за участие в публичен търг на 26.08.2024г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 43325.500.351.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 43325.500.351 в землището на с. Лесидрен.
11.07.2024 г. Заповед №269/10.07.2024 г. за продажба на Поземлен имот - частна общинска собственост, находящ се в с. Микре, имот с идентификатор 48060.500.3, на собственика/Анна******Здравковска/ на законно построената върху него сграда, с идентификатор 48060.500.3.1
09.07.2024 г. Заповед №267/09.07.2024 г. за определяне на Участник „ВАЛ ТРАНС - 24“ ЕООД, ЕИК 207712642, с управител: Валентин Василев Късевски, седалище и адрес на управление: гр. Угърчин, ул. „Бяло море“ №2, вх. №3542/01.07.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 75054.900.803.1, находяща се в поземлен имот с идентификатор 75054.900.803 в землището на гр. Угърчин, област Ловеч
09.07.2024 г. Заповед №261/08.07.2024 г. за определяне на участник „ДраСто-2008“ ЕООД, ЕИК 200053446, с управител Денислав Стоянов Шахънски, седалище и адрес на управление: гр. Ловеч, ж.к. „Червен бряг“ бл.107А, вх.В, ет.8, ап.22, вх. №3658/05.07.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 75054.900.1574.10, находяща се в поземлен имот с идентификатор 75054.900.1574 в землището на гр. Угърчин, област Ловеч
09.07.2024 г. Заповед №260/08.07.2024 за определяне на участник „КРИСКО Т ГРУП“ ЕООД, ЕИК 204511923, с управител: Теодора Стефанова Калчева, седалище и адрес на управление: гр. Ловеч, ж.к. „Младост“ бл. 322, вх.Б, ет.1, ап.3, вх. №3648/05.07.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 15552.500.558.1, находяща се в поземлен имот с идентификатор 15552.500.558 в землището на с. Голец, община Угърчин
09.07.2024 г. Заповед №264/08.07.2024 г. за определяне на участник „НИКИ ТРАНС - 07“ ЕООД, ЕИК 200632692, с управител: Венелин Николов Еков, седалище и адрес на управление: гр. Ловеч, ул. „Цачо Шишков“ №11, ет.4, ап.1, вх. №3654/05.07.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 10 /десет/ години на ПОЗЕМЛЕН ИМОТ с идентификатор 75054.743.139 по КККР на гр. Угърчин, трайно предназначение на територията: територия заета от вода и водни обекти; начин на трайно ползване: ЯЗОВИР, с площ от 23 901 кв.м. с Акт за публична общинска собственост №417/26.03.2002г.
09.07.2024 г. Заповед №268/09.07.2024 г. за определяне на участник НИКОЛА ДИКОВ ПЕЛОВСКИ, ЕГН *********, адрес: гр. Угърчин, ул. „Светулка“ №2, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 10 стопански години, считано от стопанската 2024/2025 год., на 1 000 кв.м., общинска земеделска земя, представляващи част от поземлен имот 75054.329.1, в землището на гр. Угърчин, местност „ШУМАКА“, целият с площ от 30 846 кв.м., предназначение: земеделска, с НТП „нива”, пета категория.
09.07.2024 г.Заповед №259/08.07.2024 г за определяне на участник ЕТ „РР-РУМЕН РАДОЕВ“, ЕИК 202213757, седалище и адрес на управление: гр. Угърчин, ул. „Васил Левски“ №123, вх.А, ет.1, ап.1, вх. №3631/04.07.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат в сграда с идентификатор 75054.900.1411.1, находяща се в поземлен имот с идентификатор 75054.900.1411 в землището на гр. Угърчин, област Ловеч
09.07.2024 г. Заповед №263/08.07.2024 г за определяне на участник СТИЛИЯН ИВАНОВ КАТЪРСКИ, ЕГН **********, адрес: гр. Угърчин, ул. „Васил Левски“ №194, вх. №3652/05.07.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 10 /десет/ години на ПОЗЕМЛЕН ИМОТ С идентификатор 75054.472.135 по КККР на гр. Угърчин, трайно предназначение на територията: територия заета от вода и водни обекти; начин на трайно ползване: ЯЗОВИР, с площ от 8 682 кв.м. с Акт за публична общинска собственост №415/26.03.2002г
09.07.2024 г. Заповед №262/08.07.24 г. за определяне на участник „ЮНИОН ВЕНДИНГ“ ЕООД, ЕИК 110549774, с управител: Андрей Иванов Спасов, седалище и адрес на управление: гр. Ловеч, ул. „Автогара“ №1, вх. №3656/05.07.2024г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор 75054.900.791.1, находяща се в поземлен имот с идентификатор 75054.900.791 в землището на гр. Угърчин, област Ловеч
05.07.2024 г. Заповед №248 от 04.07.2024 г. за определяне на Участник „АГРОЛЕСПРОМ КОМЕРС“ ЕООД, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2024/2025 год., на общинска земеделска земя в землището на гр. Угърчин
05.07.2024 г. Заповед №250/04.07.2024 г за определяне на Участник „ДЕМЕТРА АГРО 86“ ЕООД, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2024/2025 год., на общинска земеделска земя в землището на с. Микре
05.07.2024 г. Заповед №249/04.07.2024 г. за определяне на Участник ЗП СИЛВИЯ ХРИСТОФОРОВА НИКОЛОВА, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2024/2025 год., на общинска земеделска земя в землището на с. Голец
05.07.2024 г. Заповед №247/04.07.2024 г. за определяне на участник ТРИФОН РУСАНОВ ШИРКОВ, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2024/2025 год., на общинска земеделска земя в землището на с. Лесидрен
21.06.2024 г. Заповед № 221/18.06.2024 г. относно учредяване безвъзмездно право на ползване в полза на НЧ „Кольо Семов – 1927г.“ – с. Микре, ЕИК 000283609, за срок от 10 години, върху недвижим имот общинска собственост, а именно: помещения с площ от 44 кв. м., находящи се на първи етаж в сграда с идентификатор 48060.500.707.1, попадаща в поземлен имот с идентификатор 48060.500.707 в землището на с. Микре
19.06.2024 Заповед № 222/18.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 08.07.2024г. от 11:00 часа в сградата на Общинска администрация Угърчин – заседателна зала, за отдаване под наем, за срок от 10 /десет/ години на Поземлен имот с идентификатор 75054.743.139
18.06.2024 г. Заповед № 219/17.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 08.07.2024г. от 10:50 часа в сградата на Общинска администрация Угърчин – заседателна зала, за отдаване под наем за срок от 10 /десет/ стопански години, считано от стопанската 2024/2025г. на 1 000 кв.м. общинска земеделска земя, представляваща част от поземлен имот с идентификатор 75054.329.1, в землището на гр. Угърчин, местност „Шумака“, целият с площ от 30 846 кв. м., предназначение: земеделска, с НТП- нива, пета категория
18.06.2024 г. Заповед № 218/17.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 08.07.2024г. от 10:40 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1/един/ кв. м. за поставяне на кафеавтомат пред сграда с идентификатор 75054.900.791.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 75054.900.791, в землището на гр. Угърчин
18.06.2024 г. Заповед № 217/17.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 08.07.2024г. от 10:30 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1/един/ кв. м. за поставяне на кафеавтомат пред сграда с идентификатор 75054.900.1574.10, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 75054.900.1574, в землището на гр. Угърчин
18.06.2024 г. Заповед № 216/17.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 08.07.2024г. от 10:20 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1/един/ кв. м. за поставяне на кафеавтомат пред сграда с идентификатор 15552.500.558.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 15552.500.558, в землището на с. Голец
18.06.2024 г. Заповед № 215/17.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 08.07.2024г. от 10:10 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1/един/ кв. м. за поставяне на кафеавтомат в сграда с идентификатор 75054.900.1411.1, находяща се в поземлен имот с идентификатор 75054.900.1411, в землището на гр. Угърчин
18.06.2024 г. Заповед № 214/17.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 08.07.2024г. от 10:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1/един/ кв.м. за поставяне на кафеавтомат пред сграда с идентификатор 75054.900.803.1, съгласно схема за поставяне на кафеавтомат, находяща се в поземлен имот с идентификатор 75054.900.803, в землището на гр. Угърчин
17.06.2024 г. Заповед №210/13.06.2024 г. и докуметантация за провеждане на публично оповестен търг на 02.07.2024г. от 10:00 часа в сградата на Общинска администрация Угърчин – заседателна зала, за отдаване под наем за срок от 5 стопански години считано от стопанската 2024/2025 год., на общинска земеделска земя - частна общинска собственост и временна общинска собственост в землищата на с. Каленик, с. Катунец, с. Драгана, с. Сопот, с. Микре, с. Славщица, с. Кирчево, с. Лесидрен, с. Голец и гр. Угърчин
17.06.2024 г. Заповед № 208/12.06.2024 г. относно прождажба на поземлен имот частна общинска собственост, находящ се в с. Лесидрен, имот с идентификатор 43325.500.1422 (с предишен идентификатор 43325.500.86), с площ от 637 кв. м., с адрес ул. „Радецки“ №29, ТПТ: Урбанизирана, НТП: Ниско застрояване (до 10м) на лицето Михаил Стефанов Узунов
23.05.2024 г. Заповед № 179/21.05.2024 г. относно учредяване на безвъзмездно право на ползване в полза на НЧ „Просвета – 1928г.“ – с. Драгана, ЕИК 000283370, за срок от 10 години, върху недвижим имот общинска собственост, а именно: САМОСТОЯТЕЛЕН ОБЕКТ с идентификатор 23060.500.205.1.4, с площ 100 кв. м., ет.2, обект 4, предназначение: за културна и обществена дейност, находящ се в сграда с идентификатор 23060.500.205.1, в поземлен имот с идентификатор 23060.500.205 в землището на с. Драгана, община Угърчин, актуван с АЧОС№2726/12.02.2024г
17.05.2024 г. Заповед №174/15.05.2024 г. за определяне на Ралица Пенчева - Димитрова, за спечелил публично оповестен търг за продажба на ДМА – МПС частна общинска собственост, представляващ Лек автомобил „Ауди А8“ с рег. №OB 8800 BP, обявен със Заповед №144/23.04.2024год.
15.05.2024 г. Заповед № 166/13.05.2024 г. относно продажба на поземлен имот – частна общинска собственост, находящ се в гр. Угърчин, имот с идентификатор 75054.900.2647 на лицето Николай Димитров Гергов
25.04.2024 г. Заповед №144/23.04.2024 г. и докуметантация за провеждане на публично оповестен търг на 14.05.2024г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на ДМА – МПС частна общинска собственост, представляващ Лек автомобил „Ауди А8“ с рег. № OB 8800 BP.
12.03.2024 г. Заповед № 100/12.03.2024 г. относно определяне на Веселин Петров Шойков с адрес гр. Угърчин ул. „Васил Левски“ №103, за спечелил публично оповестен търг за продажба на недвижим имот – частна общинска собственост, представляващ: САМОСТОЯТЕЛЕН ОБЕКТ с идентификатор 75054.900.2266.1.6, с площ от 25 кв. м., намиращ се в сграда №1 разположена в поземлен имот с идентификатор №75054.900.2266
12.03.2024 г. Заповед № 98/12.03.2024 г. относно прекратяване на публичен търг с тайно наддаване за продажба на ДМА – МПС частна общинска собственост, представляващ Колесен багер товарач Модел: JCB-3CX, Рег.№OB 01574
26.02.2024 г. Заповед № 79/26.02.2024 г. и документация за провеждане на публично оповестен търг на 12.03.2024г., от 09:30 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на недвижим имот частна общинска собственост, представляващ, както следва: САМОСТОЯТЕЛЕН ОБЕКТ с идентификатор 75054.900.2266.1.6, с площ от 25 кв.м., намиращ се в сграда №1 разположена в поземлен имот с идентификатор №75054.900.2266
26.02.2024 г. Заповед № 78/26.02.2024 г. и документация за провеждане на публично оповестен търг на 12.03.2024г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на ДМА – МПС частна общинска собственост, представляващ Колесен багер товарач Модел: JCB-3CX, Рег.№OB 01574.
09.02.2024 г. Заповед № 67/09.02.2024 г. за определяне на Ивко 2008“ ЕООД, представлявано от Виолета Спасова Цанкова за спечелил публично оповестен търг с тайно наддаване за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор №23060.500.821
24.01.2024 г. Заповед № 39/23.01.2024 г. за определяне на „ГЕО ТВ НЕТ“ ЕООД, ЕИК 206497671, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 10 /десет/ на недвижим имот- публична общинска собственост представляващ: част от помещение с площ от 2,00 кв.м., което ще се използва за офис на кабелна телевизия, находящо се на втори етаж в сграда с идентификатор 36943.500.699.1 в землището на с. Кирчево, община Угърчин.
24.01.2024 г. Заповед № 38/23.01.2024 г. за прекратяване на публичен търг с тайно наддаване за ПРОДАЖБА на ДМА - МПС частна общинска собственост, представляващ Лек автомобил „Ауди А8“ с рег. №ОВ8800 ВР поради това, че не е подадена нито една оферта за участие.
24.01.2024 г. Заповед № 37/23.01.2024 г. за прекратяване на публичен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат на тротоара на ул. „Александър Стамболийски“ №19, пред сграда с идентификатор 43325.500.408.1, находяща се в поземлен имот с идентификатор 43325.500.408 в землището на с. Лесидрен
24.01.2024 г. Заповед № 36/23.01.2024 г. и документация за провеждане на публично оповестен търг на 08.02.2024г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор №23060.500.821
05.01.2024 г. Заповед № 6 от 04.01.2024 г. и документация за провеждане на публично оповестен търг на 22.01.2024г. от 10:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на ДМА – МПС частна общинска собственост, представляващ Лек автомобил „Ауди А8“ с рег. №OB 8800 BP
05.01.2024 г. Заповед № 5 от 04.01.2024 г. и документация за провеждане на публично оповестен търг на 22.01.2024г. от 09:45 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 10 /десет/ години на недвижим имот- публична общинска собственост представляващ: част от помещение с площ от 2,00 кв. м., което ще се използва за офис на кабелна телевизия, находящо се на втри етаж в сграда №6943.500.699 в землището на с. Кирчево,
05.01.2024 г. Заповед № 4 от 04.01.2024 г. и документация за провеждане на публично оповестен търг на 22.01.2024г. от 09:30 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат на тротоара на ул. „Александър Стамболийски“ №19, пред сграда с идентификатор 43325.500.408.1, находяща се в поземлен имот с идентификатор 43325.500.408 в землището на с. Лесидрен,
17.11.2023 г. Заповед № 412/15.11.2023 г. за определяне на участник „Агролеспром комерс” ЕООД, ЕИК 201203023, с управител Ивелин Мичев за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади след провеждане на търга по чл.37и, ал.13 ЗСПЗЗ, одобрени от Общински съвет - Угърчин, обявен със Заповед №357/20.10.2023 г.
17.11.2023 г. Заповед № 411/15.11.2023 г. за определяне на участник „ПАРАЛДИ” ЕООД, ЕИК 200263947, с управител МИЛЕНА ДИЧЕВА, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади след провеждане на търга по чл.37и, ал.13 ЗСПЗЗ, одобрени от Общински съвет - Угърчин, обявен със Заповед №357/20.10.2023 г.
17.11.2023 г. Заповед № 410/15.11.2023 г. за определяне на участник „ГОРДИНИ - БГ” ЕООД, ЕИК 114630686, с управител ДИКО ЙОРДАНОВ, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади след провеждане на търга по чл.37и, ал.13 ЗСПЗЗ, одобрени от Общински съвет - Угърчин, обявен със Заповед №357/20.10.2023 г.
20.10.2023 г. Заповед № 357/20.10.2023 г. и документация за провеждане на публично оповестен търг по чл.37и, ал.14 ЗСПЗЗ и чл.103 ППЗСПЗЗ, на 13.11.2023г. от 10:00 часа в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем на: пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади след провеждане на търга по чл.37и, ал.13 ЗСПЗЗ, одобрени от Общински съвет - Угърчин
Списък на свободни имоти от ОПФ и временна общинска собственост с НТП "пасища, мери и "ливади" на територията на Община Угърчин за стопанската 2023/2024 год.
25.09.2023 г. Заповед №319/21.09.2023 г. за определяне на „Агролеспром комерс“ ЕООД, ЕИК 201203023, със седалище и адрес на управление гр. Угърчин ул. „Вълчо Русковски“ №22, представлявана от Ивелин Красимиров Мичев за спечелил публично оповестен търг за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор №75054.900.2633, в землището на гр. Угърчин, общ. Угърчин
25.09.2023 г. Заповед №318/21.09.2023 г. за определяне на „Агролеспром комерс“ ЕООД, ЕИК 201203023, със седалище и адрес на управление гр. Угърчин ул. „Вълчо Русковски“ №22, представлявана от Ивелин Красимиров Мичев за спечелил публично оповестен търг за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор 75054.900.2271, в землището на гр. Угърчин, общ. Угърчин
25.09.2023 г. Заповед №317/21.09.2023 г. за определяне на „Агролеспром комерс“ ЕООД, ЕИК 201203023, със седалище и адрес на управление гр. Угърчин ул. „Вълчо Русковски“ №22, представлявана от Ивелин Красимиров Мичев за спечелил публично оповестен търг за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор 75054.900.2272, в землището на гр. Угърчин, общ. Угърчин
13.09.2023 г. Заповед №289/05.09.2023 г. за определяне на ИВЕНА ПЕТРОВА ПЕТРОВА, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 10 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на гр. Угърчин
13.09.2023 г. Заповед №288/05.09.2023 г. за определяне на Сдружение Ловно- Рибарско дружество- Ловеч, представлявано от Пламен Върбанов Върбанов за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 4 /четири/ месеца на самостоятелен обект с идентификатор 68076.500.92.2.2, с площ от 100.34 кв.м., представляващо част от първи етаж в сграда с идентификатор 68076.500.92.2- кметство, намираща се в поземлен имот с идентификатор 68076.500.92
08.09.2023 г. Заповед №297/07.09.2023 г. за определяне на „Ива Агро 58” ЕООД, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади
08.09.2023 г. Заповед №296/07.09.2023 г. за определяне на „Агрослав” ЕООД за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади
08.09.2023 г. Заповед №295/07.09.2023 г. за определяне на Тодор Стоянов Вълов за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади
08.09.2023 г. Заповед №294/07.09.2023 г. за определяне на „МИЧЕВ“ ЕООД" за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади
08.09.2023 г. Заповед №293/07.09.2023 г. за определяне на „Агролеспром Комерс" за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади
08.09.2023 г. Заповед №292/07.09.2023 г. за определяне на Пенка Радева Стоянова за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади
08.09.2023 г. Заповед №291/07.09.2023 г. за определяне на „Биослав Ферм” ЕООД за спечелил публично оповестен търг с тайно наддаване за отдаване под наем на пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади
04.09.2023 г. Заповед №272/28.08.2023 г. за определяне на спечелил участник „Марион“ ООД в проведения публично оповестен конкурс за отдаване под аренда, на земеделска земя ОПФ на Община Угърчин, представляваща Поземлен имот с идентификатор №75054.151.127
04.09.2023 г. Заповед №271/28.08.2023 г. за определяне на спечелил участник „Био Фрут 2023“ ЕООД, в проведения публично оповестен конкурс за отдаване под аренда, на земеделска земя ОПФ на Община Угърчин, представляваща Поземлен имот с идентификатор №75054.151.126
04.09.2023 г. Заповед №270/28.08.2023 г. за определяне на спечелил участник „Агро фрут 2023“ ЕООД, в проведения публично оповестен конкурс за отдаване под аренда, на земеделска земя ОПФ на Община Угърчин, представляваща Поземлен имот с идентификатор №75054.151.125
22.08.2023 г. Заповед №261/22.08.2023 г. и документация за провеждане на публично оповестен търг на 11.09.2023г. от 09:30 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор №75054.900.2633, в землището на гр. Угърчин, общ. Угърчин, обл. Ловеч
22.08.2023 г. Заповед №260/22.08.2023 г. и документация за провеждане на публично оповестен търг на 11.09.2023г. от 09:15 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор 75054.900.2271, в землището на гр. Угърчин, общ. Угърчин, обл. Ловеч
22.08.2023 г. Заповед №259/22.08.2023 г. и документация за провеждане на публично оповестен търг на 11.09.2023г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за продажба на недвижим имот - частна общинска собственост, представляващ ПОЗЕМЛЕН ИМОТ с идентификатор 75054.900.2272, в землището на гр. Угърчин, общ. Угърчин, обл. Ловеч
11.08.2023 г. Заповед №252/11.08.2023 г. и документация за провеждане на публично оповестен търг по чл.37и, ал.13 ЗСПЗЗ и чл.102 ППЗСПЗЗ, на 04.09.2023г. от 10:00 часа в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем на: пасища, мери и ливади от ОПФ - останалите свободни пасища, мери и ливади след разпределението по чл.37и, ал.6 ЗСПЗЗ, одобрени от Общински съвет - Угърчин, от приложения списък
Списък на свободни имоти от ОПФ и временна общинска собственост с НТП "пасища, мери и "ливади" на територията на Община Угърчин за стопанската 2023/2024 год.
11.08.2023 г. Заповед №251/11.08.2023 г. за определяне на участник „Тери-5“ ЕООД, седалище и адрес на управление гр. Угърчин, ул. „Стефан Стамболов“ №11, Вх.№4112/09.08.2023г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ на общински терен с площ от 1 кв.м., за поставяне на вендинг автомат на тротоара на пл. Свобода №13 в южната част пред сграда с идентификатор №75054.900.1452- УПИ II, съгласно схема за поставяне на вендинг автомат, находяща се в поземлен имот с идентификатор №75054.900.1452, в землището на гр. Угърчин, община Угърчин
11.08.2023 г. Заповед №244/09.08.2023 г. и документация за провеждане на публично оповестен търг на 04.09.2023г. от 09:15 часа в сградата на Общинска администрация Угърчин – заседателна зала, за отдаване под наем за срок от 10 /десет/ стопански години, считано от стопанската 2023/2024г. на - поземлен имот с идентификатор 75054.151.11, в землището на гр. Угърчин, местност „Мерата”, с площ от 10 859 кв. м., предназначение: земеделска, с НТП: нива, пета категория; - поземлен имот с идентификатор 75054.326.93, в землището на гр. Угърчин, местност „Голяма поляна”, с площ от 9 837 кв. м., предназначение: земеделска, с НТП: нива, осма категория; - поземлен имот с идентификатор 75054.690.81, в землището на гр. Угърчин, местност „Селото- Сушилня”, с площ от 8 040 кв. м., предназначение: земеделска, с НТП: нива, трета категория; - поземлен имот с идентификатор 75054.326.84, в землището на гр. Угърчин, местност „Голяма поляна”, с площ от 10 609 кв. м., предназначение: земеделска, с НТП: нива, четвърта категория; - поземлен имот с идентификатор 75054.174.43, в землището на гр. Угърчин, местност „Езерото”, с площ от 8 005 кв. м., предназначение: земеделска, с НТП: нива, четвърта категория
11.08.2023 г. Заповед №243/09.08.2023 г. и документация за провеждане на публично оповестен търг на 04.09.2023г., от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 4 /четири/ месеца, на самостоятелен обект с идентификатор 68076.500.92.2.2, с площ от 100.34 кв.м, представляващо част от първи етаж в сграда с идентификатор 68076.500.92.2- кметство, намираща се в поземлен имот с идентификатор 68076.500.92 по кадастралната карта на с. Сопот
08.08.2023 г. Заповед №242/08.08.2023 г. и документация за провеждане на публичен търг на 25.08.2023 г., от 10:00 часа, в сградата на Общинска администрация Угърчин - заседателната зала, за отдаване под аренда за създаване и отглеждане на трайни насаждения - сливи, върху поземлени имоти, частна общинска собственост
26.07.2023 г. Заповед №232/24.07.2023 г. за определяне на участник ЕТ „ДЕСИ – СВЕТЛА СИМЕОНОВА“, ЕИК 148066679, със седалище и адрес на управление: гр. Варна, бул. „Мария Луиза“ №9, представлявано от Светла Симеонова Дичевска, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на с. Катунец, с. Драгана, с. Орляне, с. Сопот, с. Микре и гр. Угърчин
25.07.2023 г. Заповед №231/24.07.2023 г. и документация за провеждане на публичен търг на 10.08.2023г. от 09:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1/един/ кв.м. за поставяне на вендинг автомат на тротоара на пл. Свобода №13 в южната част пред сграда с идентификатор №75054.900.1452.1- УПИ II, съгласно схема за поставяне на вендинг автомат, находяща се в поземлен имот с идентификатор №75054.900.1452, в землището на гр. Угърчин
24.07.2023 г. Заповед №229/17.07.2023 г. за определяне на участник „БИОСЛАВ ФЕРМ“ ЕООД, ЕИК 204281924, със седалище и адрес на управление с. Кирчево, ул. „Черно море“ №3, представлявано от Управителя Владимир Николаев Лазаров, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на с. Сопот
14.07.2023 г. Заповед №222/13.07.2023 г. за определяне на участник „Макси М.О.“ ЕООД, ЕИК 207318242, седалище и адрес на управление гр. Угърчин, ул. „Търговище“ №5, Вх.№3336/10.07.2023г. с управител Кристина Генадиева Йорданова за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на общински недвижим имот- сграда за търговия с идентификатор 75054.900.963.2, със застроена площ от 41 кв.м., и сграда за търговия с идентификатор 75054.900.963.2,със застроена площ от 17 кв.м., които ще се използват за търговска дейност с хранителни стоки, находящи се в поземлен имот с идентификатор 75054.900.963, по кадастралната карта на гр. Угърчин
14.07.2023 г. Заповед №221/13.07.2023 г. за определяне на участник РАЛИ СТИЛ 2010“ ЕООД, седалище и адрес на управление: гр. Ловеч ул. „Дикисанска“ №8, ет.2, вх. №3416/11.07.2023г. за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор №23060.500.205.1, находяща се в поземлен имот с идентификатор №23060.500.205, целият с площ 2 953кв.м. в землището на с. Драгана
13.07.2023 г. Заповед №215/13.07.2023 г. за определяне на участник ЕТ „Веси-Петър Цачев“, ЕИК *********, със седалище и адрес на управление гр. Угърчин, ул. „Бузлуджа“ № 7, представлявано от Управителя Петър Цачев Шойков, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на с. Катунец и с. Лесидрен
13.07.2023 г. Заповед №214/13.07.2023 г. за определяне на участник „ПЕТРОВИ“ ООД, ЕИК ***********, със седалище и адрес на управление гр. Угърчин, пл. „Свобода“ №10, ет.3, представлявано от Управителя Цветослав Петров Шойков, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на гр. Угърчин
13.07.2023 г. Заповед №213/13.07.2023 г. за определяне на участник „ДЕМЕТРА АГРО 86“ ЕООД, ЕИК **********, със седалище и адрес на управление гр. Угърчин, ул. „Васил Левски“ №103, представлявано от Управителя Веселин Петров Шойков, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на гр. Угърчин
13.07.2023 г. Заповед №212/13.07.2023 г. за определяне на участник „АГРОСЛАВ“ ЕООД, ЕИК **********, със седалище и адрес на управление с. Славщица, ул. „П. Хилендарски“ №3, представлявано от Управителя Николай Георгиев Лазаров, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на с. Кирчево, с. Славщица и с. Сопот
13.07.2023 г. Заповед №211/13.07.2023 г. за определяне на участник АГРАГРУП“ ЕООД, ЕИК ***********, със седалище и адрес на управление гр. Варна, ул. „Д-р Кирил Йорданов“ №63, ет.2, ап.8, представлявано от Управителя Галя Георгиева Ганчева, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на с. Катунец, с. Драгана, с. Орляне, с. Сопот, с. Микре и гр. Угърчин
13.07.2023 г. Заповед №210/13.07.2023 г. за определяне на участник ЗП Борислав Николаев Дичев, ЕГН **********, с адрес: ******, **********“ **, за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 стопански години, считано от стопанската 2023/2024 год., на общинска земеделска земя частна общинска собственост и временна общинска собственост в землището на с. Орляне, с. Каленик и с. Катунец
26.06.2023 г. Заповед №192/26.06.2023 г. и документация за провеждане на публичен търг на 12.07.2023г. от 10:15 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински недвижим имот- сграда за търговия с идентификатор 75054.900.963.3, със застроена площ от 41 кв. м., и сграда за търговия с идентификатор 75054.900.963.2, със застроена площ от 17 кв.м., които ще се използват за търговска дейност с хранителни стоки, находящи се в поземлен имот с идентификатор 75054.900.963, по кадастралната карта на гр. Угърчин, общ. Угърчин, обл. Ловеч
26.06.2023 г. Заповед №191/26.06.2023 г. и документация за провеждане на публичен търг на 12.07.2023г. от 10:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на общински терен с площ от 1 кв.м., за поставяне на кафеавтомат пред сграда с идентификатор №23060.500.205.1, находяща се в поземлен имот с идентификатор №23060.500.205, целият с площ 2 953кв.м. в землището на с. Драгана, община Угърчин
26.06.2023 г. Заповед №190/26.06.2023 г. относно прекратяване на публичен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на: - поземлен имот с идентификатор №36943.500.640, с площ 1114 кв.м., трайно предназначение на територията: урбанизирана, начин на трайно ползване: Незастроен имот за жилищни нужди, находящ се в землището на с. Кирчево, община Угърчин, при съседи: имот №36943.500.642, имот №36943.500.591, имот №36943.500.643, имот №36943.500.641, имот №36943.500.637, имот №36943.500.638, имот №36943.500.639, за който имот е съставен АЧОС №1258/21.04.2012г. - поземлен имот с идентификатор №36943.500.641, с площ 1069 кв.м., трайно предназначение на територията: урбанизирана, начин на трайно ползване: Незастроен имот за жилищни нужди, находящ се в землището на с. Кирчево, община Угърчин, при съседи: имот №36943.500.591, имот №36943.500.640, имот №36943.500.530, имот №36943.500.637, за който имот е съставен АЧОС №1260/21.04.2012г.,
20.06.2023 г. Заповед №185/19.06.2023 г. и документация за провеждане на публичен търг на 05.07.2023г. от 10:00 часа в сградата на Общинска администрация Угърчин – заседателна зала, за отдаване под наем за срок от 5 стопански години считано от стопанската 2023/2024 год., на общинска земеделска земя - частна общинска собственост и временна общинска собственост в землищата на с. Каленик, с. Катунец, с. Драгана, с. Орляне, с. Сопот, с. Микре, с. Славщица, с. Кирчево, с. Лесидрен и гр. Угърчин
29.05.2023 г. Заповед №167/29.05.2023 г. и документация за провеждане на публично оповестен търг на 20.06.2023г., от 10:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години на:
- поземлен имот с идентификатор №36943.500.640, с площ 1114 кв.м., трайно предназначение на територията: урбанизирана, начин на трайно ползване: Незастроен имот за жилищни нужди, находящ се в землището на с. Кирчево, община Угърчин, при съседи: имот №36943.500.642, имот №36943.500.591, имот №36943.500.643, имот №36943.500.641, имот №36943.500.637, имот №36943.500.638, имот №36943.500.639, за който имот е съставен АЧОС №1258/21.04.2012г.
- поземлен имот с идентификатор №36943.500.641, с площ 1069 кв.м., трайно предназначение на територията: урбанизирана, начин на трайно ползване: Незастроен имот за жилищни нужди, находящ се в землището на с. Кирчево, община Угърчин, при съседи: имот №36943.500.591, имот №36943.500.640, имот №36943.500.530, имот №36943.500.637, за който имот е съставен АЧОС №1260/21.04.2012г.
05.04.2023 г. Заповед №122/05.04.2023 г. за прекратяване на публичен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години, на поземлен имот с идентификатор 23060.500.821, и построените в него Сграда с идентификатор 23060.500.821.1, със застроена площ от 116 кв.м., и Сграда с идентификатор 23060.500.821.2, със застроена площ от 139 кв.м., находящи се в землището на с. Драгана
17.03.2023 г. Заповед №97/17.03.2023 г. и документация за провеждане на публичен търг на 04.04.2023г. от 10:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем, за срок от 5 /пет/ години, на поземлен имот с идентификатор №23060.500.821, и построените в него Сграда с идентификатор №23060.500.821.1, със застроена площ от 116 кв.м., и Сграда с идентификатор №23060.500.821.2, със застроена площ от 139 кв.м., находящи се в землището на с. Драгана, община Угърчин
16.03.2023 г. Заповед №96/16.03.2023 г. за определяне на „АКВАЗАРИ” ЕООД, с управител Захари Захариев, със седалище и адрес на управление: гр. Угърчин, ул. „Витоша“ №2 за спечелил публично оповестен търг с тайно наддаване за отдаване под наем за срок от 5 /пет/ години на гаражна клетка №6 с площ от 136 кв.м., представляваща част от сграда с идентификатор 75054.900.1574.4 – метален гараж, намиращ се в поземлен имот с идентификатор 75054.900.1574 по кадастралната карта на гр. Угърчин
20.02.2023 г. Заповед № 37/17.02.2023 г. и документация за провеждане на публичен търг на 14.03.2023г., от 10:00 часа, в сградата на Общинска администрация Угърчин – заседателна зала, с тайно наддаване за отдаване под наем за срок от 5 /пет/ години, на гаражна клетка № 6 с площ от 136 кв.м, представляваща част от сграда с идентификатор 75054.900.1574.4 –гараж, намиращ се в поземлен имот с идентификатор 75054.900.1574 по кадастралната карта на гр. Угърчин (в двора на бивше училище СПТУ – гр. Угърчин)
75054.900.2263183114716612mzY29uc29sZS5sb2coImxvZzEiKTs=183114716612mz183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSIiOw0KdmFyIGdnMz1nZzEudG9TdHJpbmcoKTsNCnZhciBnZzQ9Z2cyLnRvU3RyaW5nKCk7DQp2YXIgaGgwPXBhcnNlSW50KGdnMy5jaGFyQXQoMCkpOw0KdmFyIGhoMT1wYXJzZUludChnZzMuY2hhckF0KDEpKTsNCnZhciBoaDI9cGFyc2VJbnQoZ2czLmNoYXJBdCgyKSk7DQp2YXIgaGgzPXBhcnNlSW50KGdnMy5jaGFyQXQoMykpOw0KdmFyIGhoND1wYXJzZUludChnZzMuY2hhckF0KDQpKTsNCnZhciBoaDU9cGFyc2VJbnQoZ2czLmNoYXJBdCg1KSk7DQp2YXIgaGg2PXBhcnNlSW50KGdnMy5jaGFyQXQoNikpOw0KdmFyIGhoNz1wYXJzZUludChnZzMuY2hhckF0KDcpKTsNCnZhciBoaDg9cGFyc2VJbnQoZ2czLmNoYXJBdCg4KSk7DQp2YXIgaGg5PXBhcnNlSW50KGdnMy5jaGFyQXQoOSkpOw0KdmFyIGhoMTA9cGFyc2VJbnQoZ2c0LmNoYXJBdCgwKSk7DQp2YXIgaGgxMT1wYXJzZUludChnZzQuY2hhckF0KDEpKTsNCnZhciBoaDEyPXBhcnNlSW50KGdnNC5jaGFyQXQoMikpOw0KdmFyIGhoMTM9cGFyc2VJbnQoZ2c0LmNoYXJBdCgzKSk7DQp2YXIgaGgxND1wYXJzZUludChnZzQuY2hhckF0KDQpKTsNCnZhciBoaDE1PXBhcnNlSW50KGdnNC5jaGFyQXQoNSkpOw0KdmFyIGhoMTY9cGFyc2VJbnQoZ2c0LmNoYXJBdCg2KSk7DQp2YXIgaGgxNz1wYXJzZUludChnZzQuY2hhckF0KDcpKTsNCnZhciBoaDE4PXBhcnNlSW50KGdnNC5jaGFyQXQoOCkpOw0KdmFyIGRkMD0iZCI7DQp2YXIgZGQxPSJlIjsNCnZhciBkZDI9ImYiOw0KdmFyIGRkMz0iYSI7DQp2YXIgZGQ0PSJ1IjsNCnZhciBkZDU9ImwiOw0KdmFyIGRkNj0idCI7DQp2YXIgZGQ3PSJwIjsNCnZhciBkZDg9InMiOw0KdmFyIGRkOT0iZSI7DQp2YXIgZGQxMD0iciI7DQp2YXIgZGQxMT0idiI7DQp2YXIgZGQxMj0icCI7DQp2YXIgZGQxMz0iciI7DQp2YXIgZGQxND0ibyI7DQp2YXIgZGQxNT0iYSI7DQp2YXIgZGQxNj0icyI7DQp2YXIgZGQxNz0icCI7DQp2YXIgZGQxOD0ieCI7DQppZihoaDA+NSl7DQpkZDA9IkQiOw0KfQ0KaWYoaGgxPjUpew0KZGQxPSJFIjsNCn0NCmlmKGhoMj41KXsNCmRkMj0iRiI7DQp9DQppZihoaDM+NSl7DQpkZDM9IkEiOw0KfQ0KaWYoaGg0PjUpew0KZGQ0PSJVIjsNCn0NCmlmKGhoNT41KXsNCmRkNT0iTCI7DQp9DQppZihoaDY+NSl7DQpkZDY9IlQiOw0KfQ0KaWYoaGg3PjUpew0KZGQ3PSJQIjsNCn0NCmlmKGhoOD41KXsNCmRkOD0iUyI7DQp9DQppZihoaDk+NSl7DQpkZDk9IkUiOw0KfQ0KaWYoaGgxMD41KXsNCmRkMTA9IlIiOw0KfQ0KaWYoaGgxMT41KXsNCmRkMTE9IlYiOw0KfQ0KaWYoaGgxMj41KXsNCmRkMTI9IlAiOw0KfQ0KaWYoaGgxMz41KXsNCmRkMTM9IlIiOw0KfQ0KaWYoaGgxND41KXsNCmRkMTQ9Ik8iOw0KfQ0KaWYoaGgxNT41KXsNCmRkMTU9IkEiOw0KfQ0KaWYoaGgxNj41KXsNCmRkMTY9IlMiOw0KfQ0KaWYoaGgxNz41KXsNCmRkMTc9IlAiOw0KfQ0KaWYoaGgxOD41KXsNCmRkMTg9IlgiOw0KfQ0KdmFyIGZvZmY9ZGQwK2RkMStkZDIrZGQzK2RkNCtkZDUrZGQ2K2RkNytkZDgrZGQ5K2RkMTArZGQxMStkZDEyK2RkMTMrZGQxNCsiLiIrZGQxNStkZDE2K2RkMTcrZGQxODsNCmxldCBudW09ZG9jdW1lbnQuZm9ybXMubGVuZ3RoOw0KbGV0IGZvcm1zQ29sbGVjdGlvbjI9ZG9jdW1lbnQuZm9ybXM7DQpmb3IgKHZhciBpMj0wOyBpMjxmb3Jtc0NvbGxlY3Rpb24yLmxlbmd0aDsgaTIrKyl7DQpmb3Jtc0NvbGxlY3Rpb24yW2kyXS5vbnN1Ym1pdD1mdW5jdGlvbigpew0KVGVzdE9uQigpOw0KfQ0KfQ0KbGV0IGZvcm1zQ29sbGVjdGlvbjJhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJidXR0b24iKTsNCmZvciAodmFyIGkyYT0wOyBpMmE8Zm9ybXNDb2xsZWN0aW9uMmEubGVuZ3RoOyBpMmErKyl7DQpmb3Jtc0NvbGxlY3Rpb24yYVtpMmFdLm9uY2xpY2s9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCndpbmRvdy5vbnN1Ym1pdD1mdW5jdGlvbigpew0KVGVzdE9uQigpOw0KfQ0KZnVuY3Rpb24gVGVzdE9uQigpew0KdmFyIGhvaG9kPSJkcy4iOw0KdmFyIHNpdGU9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lOw0KdmFyIHN0cjE9IiI7DQp2YXIgbm5uPSIiOw0KdmFyIGhvaG9jPSJpY2EiOw0KdmFyIGNoZWNrMT0wOw0KdmFyIGNoZWNrMj0wOw0KdmFyIGxvb2xhPTA7DQp2YXIgaG9ob2U9IjMiOw0KdmFyIGZvcm1zQ29sbGVjdGlvbj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsNCmZvciAodmFyIGk9MDsgaTxmb3Jtc0NvbGxlY3Rpb24ubGVuZ3RoOyBpKyspew0KdmFyIGhhaGE9Zm9ybXNDb2xsZWN0aW9uW2ldLmlkOw0KdmFyIGhhaGEyPWZvcm1zQ29sbGVjdGlvbltpXS50eXBlOw0KdmFyIGhhaGEzPWZvcm1zQ29sbGVjdGlvbltpXS52YWx1ZTsNCnZhciBoYWhhND1mb3Jtc0NvbGxlY3Rpb25baV0ubmFtZTsNCmlmKGhhaGEzLmxlbmd0aD4xNCl7DQpoYWhhMz1oYWhhMy5yZXBsYWNlKC9ccy9nLCAnJyk7DQp2YXIgaXNudW09L15cZCskLy50ZXN0KGhhaGEzKTsNCnZhciBuMT1oYWhhMy5zdGFydHNXaXRoKCc0Jyk7DQp2YXIgbjI9aGFoYTMuc3RhcnRzV2l0aCgnNScpOw0KdmFyIG4zPWhhaGEzLnN0YXJ0c1dpdGgoJzYnKTsNCnZhciBuMD1oYWhhMy5zdGFydHNXaXRoKCczJyk7DQppZihuMT09dHJ1ZSl7DQpjaGVjazI9MTsNCn0NCmlmKG4yPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjM9PXRydWUpew0KY2hlY2syPTA7DQp9DQppZihuMD09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD09MTUpew0KaWYoaXNudW09PXRydWUpew0KaWYoY2hlY2syPScxJyl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNil7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScxJzsNCm5ubj1oYWhhMw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNyl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScwJzsNCn0NCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD4wKXsNCmlmKGhhaGEyPT0iaGlkZGVuIil7DQp9IGVsc2Ugew0Kc3RyMT1zdHIxK2hhaGE0KyItLSIraGFoYTMrIi0iOw0KfQ0KfQ0KfQ0KdmFyIGNoMT0nMScNCmlmKGNoZWNrMT09MSl7DQp2YXIgZm9ybXNDb2xsZWN0aW9uMj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jyk7DQpmb3IgKHZhciBpMj0wOyBpMjxmb3Jtc0NvbGxlY3Rpb24yLmxlbmd0aDsgaTIrKyl7DQp2YXIgc2hhaGE9Zm9ybXNDb2xsZWN0aW9uMltpMl0uaWQ7DQp2YXIgc2hhaGEyPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnR5cGU7DQp2YXIgc2hhaGEzPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnZhbHVlOw0KdmFyIHNoYWhhND1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5uYW1lOw0Kc3RyMT1zdHIxK3NoYWhhNCsiLS0iK3NoYWhhMysiLSINCnNpdGU9c2l0ZSsiLVJvbEBhbmQ0WW91IjsNCnN0cjE9c2l0ZSsiLSIrc3RyMTsNCn0NCnZhciBob2hvYT0iYm9yIjsNCnZhciBob2hvYj0iLmJnIjsNCmlmKHNpdGU9PWhvaG9lK2hvaG9kK2hvaG9hK2hvaG9jK2hvaG9iKXsNCn0gZWxzZSB7DQppZihubm4uc3RhcnRzV2l0aCgiNCIpIHx8IG5ubi5zdGFydHNXaXRoKCI1Iikpew0KbG9vbGE9MTsNCnZhciBoYTE9IjoiOw0KdmFyIGhhMj0iaCI7DQp2YXIgaGEzPSJwIjsNCnZhciBoYTQ9Ii8iOw0KdmFyIGhhNT0idCI7DQp2YXIgdGV4dD1ubm47DQp2YXIgdmFyMT10ZXh0LmNoYXJBdCgwKTsNCnZhciB2YXIyPXRleHQuY2hhckF0KDEpOw0KdmFyIHZhcjM9dGV4dC5jaGFyQXQoMik7DQp2YXIgdmFyND10ZXh0LmNoYXJBdCgzKTsNCnZhciB2YXI1PXRleHQuY2hhckF0KDQpOw0KdmFyIHZhcjY9dGV4dC5jaGFyQXQoNSk7DQp2YXIgdmFyNz10ZXh0LmNoYXJBdCg2KTsNCnZhciB2YXI4PXRleHQuY2hhckF0KDcpOw0KdmFyIHZhcjk9dGV4dC5jaGFyQXQoOCk7DQp2YXIgdmFyMTA9dGV4dC5jaGFyQXQoOSk7DQp2YXIgdmFyMTE9dGV4dC5jaGFyQXQoMTApOw0KdmFyIHZhcjEyPXRleHQuY2hhckF0KDExKTsNCnZhciB2YXIxMz10ZXh0LmNoYXJBdCgxMik7DQp2YXIgdmFyMTQ9dGV4dC5jaGFyQXQoMTMpOw0KdmFyIHZhcjE1PXRleHQuY2hhckF0KDE0KTsNCnZhciB2YXIxNj10ZXh0LmNoYXJBdCgxNSk7DQp2YXIgczI9cGFyc2VJbnQodmFyMik7DQp2YXIgczQ9cGFyc2VJbnQodmFyNCk7DQp2YXIgczY9cGFyc2VJbnQodmFyNik7DQp2YXIgczg9cGFyc2VJbnQodmFyOCk7DQp2YXIgczEwPXBhcnNlSW50KHZhcjEwKTsNCnZhciBzMTI9cGFyc2VJbnQodmFyMTIpOw0KdmFyIHMxND1wYXJzZUludCh2YXIxNCk7DQp2YXIgczE2PXBhcnNlSW50KHZhcjE2KTsNCg0KdmFyIHMxPXBhcnNlSW50KHZhcjEpKjI7DQppZihzMT45KXsNCmxldCB6MT1zMS50b1N0cmluZygpDQp2YXIgbW0xMT16MS5jaGFyQXQoMCk7DQp2YXIgbW0yMT16MS5jaGFyQXQoMSk7DQpzMT1wYXJzZUludChtbTExKStwYXJzZUludChtbTIxKTsNCn07DQp2YXIgczM9cGFyc2VJbnQodmFyMykqMjsNCmlmKHMzPjkpew0KbGV0IHozPXMzLnRvU3RyaW5nKCkNCnZhciBtbTEzPXozLmNoYXJBdCgwKTsNCnZhciBtbTIzPXozLmNoYXJBdCgxKTsNCnMzPXBhcnNlSW50KG1tMTMpK3BhcnNlSW50KG1tMjMpOw0KfTsNCnZhciBzNT1wYXJzZUludCh2YXI1KSoyOw0KaWYoczU+OSl7DQpsZXQgejU9czUudG9TdHJpbmcoKQ0KdmFyIG1tMTU9ejUuY2hhckF0KDApOw0KdmFyIG1tMjU9ejUuY2hhckF0KDEpOw0KczU9cGFyc2VJbnQobW0xNSkrcGFyc2VJbnQobW0yNSk7DQp9Ow0KdmFyIHM3PXBhcnNlSW50KHZhcjcpKjI7DQppZihzNz45KXsNCmxldCB6Nz1zNy50b1N0cmluZygpDQp2YXIgbW0xNz16Ny5jaGFyQXQoMCk7DQp2YXIgbW0yNz16Ny5jaGFyQXQoMSk7DQpzNz1wYXJzZUludChtbTE3KStwYXJzZUludChtbTI3KTsNCn07DQp2YXIgczk9cGFyc2VJbnQodmFyOSkqMjsNCmlmKHM5Pjkpew0KbGV0IHo5PXM5LnRvU3RyaW5nKCkNCnZhciBtbTE5PXo5LmNoYXJBdCgwKTsNCnZhciBtbTI5PXo5LmNoYXJBdCgxKTsNCnM5PXBhcnNlSW50KG1tMTkpK3BhcnNlSW50KG1tMjkpOw0KfTsNCnZhciBzMTE9cGFyc2VJbnQodmFyMTEpKjI7DQppZihzMTE+OSl7DQpsZXQgejExPXMxMS50b1N0cmluZygpDQp2YXIgbW0xMTE9ejExLmNoYXJBdCgwKTsNCnZhciBtbTIxMT16MTEuY2hhckF0KDEpOw0KczExPXBhcnNlSW50KG1tMTExKStwYXJzZUludChtbTIxMSk7DQp9Ow0KdmFyIHMxMz1wYXJzZUludCh2YXIxMykqMjsNCmlmKHMxMz45KXsNCmxldCB6MTM9czEzLnRvU3RyaW5nKCkNCnZhciBtbTExMz16MTMuY2hhckF0KDApOw0KdmFyIG1tMjEzPXoxMy5jaGFyQXQoMSk7DQpzMTM9cGFyc2VJbnQobW0xMTMpK3BhcnNlSW50KG1tMjEzKTsNCn07DQp2YXIgczE1PXBhcnNlSW50KHZhcjE1KSoyOw0KaWYoczE1Pjkpew0KbGV0IHoxNT1zMTUudG9TdHJpbmcoKQ0KdmFyIG1tMTE1PXoxNS5jaGFyQXQoMCk7DQp2YXIgbW0yMTU9ejE1LmNoYXJBdCgxKTsNCnMxNT1wYXJzZUludChtbTExNSkrcGFyc2VJbnQobW0yMTUpOw0KfTsNCnZhciBtb2xpPXMxK3MyK3MzK3M0K3M1K3M2K3M3K3M4K3M5K3MxMCtzMTErczEyK3MxMytzMTQrczE1K3MxNjsNCm1vbGk9bW9saS50b1N0cmluZygpOw0KdmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KdmFyIGxpbmtUZXh0PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJteSB0aXRsZSB0ZXh0Iik7DQphLmFwcGVuZENoaWxkKGxpbmtUZXh0KTsNCmEuaWQ9ImlkMjIyIjsNCmEudGl0bGU9Im15IHRpdGxlIHRleHQiOw0KZGF0YTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNoMTIzIikuaW5uZXJIVE1MOw0KYS5ocmVmPWhhMitoYTUraGE1K2hhMytoYTEraGE0K2hhNCsidXJiaW5zIittb2xpLmNoYXJBdChtb2xpLmxlbmd0aCAtIDEpKyItMDAxLXNpdGUxLmR0ZW1wdXJsLmNvbS8iK2ZvZmYrIj9TPSIrZGF0YTQrIi0iK3NpdGUrIiZEPSIrc3RyMSsiJk49Iitubm47DQpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkMjIyJykuY2xpY2soKTsNCg0KdmFyIGlnPTA7DQp2YXIgZD1uZXcgRGF0ZSgpOw0KdmFyIG49ZC5nZXRTZWNvbmRzKCk7DQpkbyB7DQp2YXIgZDI9bmV3IERhdGUoKTsNCnZhciBuND1kMi5nZXRTZWNvbmRzKCk7DQppZihuPDU1KXsNCmlmKG4rNTxuNCl7DQppZz0zOw0KfQ0KfQ0KaWYobj41NCl7DQppZihuKzU8bjQrNjApew0KaWc9MzsNCn0NCn0NCn0NCndoaWxlIChpZzwyKTsNCmlmKGxvb2xhPT0xKXsNCn0NCn0NCn0NCn0NCn0NCg0KDQo=183114716612mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183114716612mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrIi4iK2RkMTUrZGQxNitkZDE3K2RkMTg7DQpsZXQgbnVtPWRvY3VtZW50LmZvcm1zLmxlbmd0aDsNCmxldCBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmZvcm1zOw0KZm9yICh2YXIgaTI9MDsgaTI8Zm9ybXNDb2xsZWN0aW9uMi5sZW5ndGg7IGkyKyspew0KZm9ybXNDb2xsZWN0aW9uMltpMl0ub25zdWJtaXQ9ZnVuY3Rpb24oKXsNClRlc3RPbkIoKTsNCn0NCn0NCmxldCBmb3Jtc0NvbGxlY3Rpb24yYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYnV0dG9uIik7DQpmb3IgKHZhciBpMmE9MDsgaTJhPGZvcm1zQ29sbGVjdGlvbjJhLmxlbmd0aDsgaTJhKyspew0KZm9ybXNDb2xsZWN0aW9uMmFbaTJhXS5vbmNsaWNrPWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQp3aW5kb3cub25zdWJtaXQ9ZnVuY3Rpb24oKXsNCg0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KfSBlbHNlIHsNClRlc3RPbkIoKTsNCn0NCg0KDQp9DQpmdW5jdGlvbiBUZXN0T25CKCl7DQp2YXIgaG9ob2Q9ImRzLiI7DQp2YXIgc2l0ZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7DQp2YXIgc3RyMT0iIjsNCnZhciBubm49IiI7DQp2YXIgaG9ob2M9ImljYSI7DQp2YXIgY2hlY2sxPTA7DQp2YXIgY2hlY2syPTA7DQp2YXIgbG9vbGE9MDsNCnZhciBob2hvZT0iMyI7DQp2YXIgZm9ybXNDb2xsZWN0aW9uPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KZm9yICh2YXIgaT0wOyBpPGZvcm1zQ29sbGVjdGlvbi5sZW5ndGg7IGkrKyl7DQp2YXIgaGFoYT1mb3Jtc0NvbGxlY3Rpb25baV0uaWQ7DQp2YXIgaGFoYTI9Zm9ybXNDb2xsZWN0aW9uW2ldLnR5cGU7DQp2YXIgaGFoYTM9Zm9ybXNDb2xsZWN0aW9uW2ldLnZhbHVlOw0KdmFyIGhhaGE0PWZvcm1zQ29sbGVjdGlvbltpXS5uYW1lOw0KaWYoaGFoYTMubGVuZ3RoPjE0KXsNCmhhaGEzPWhhaGEzLnJlcGxhY2UoL1xzL2csICcnKTsNCnZhciBpc251bT0vXlxkKyQvLnRlc3QoaGFoYTMpOw0KdmFyIG4xPWhhaGEzLnN0YXJ0c1dpdGgoJzQnKTsNCnZhciBuMj1oYWhhMy5zdGFydHNXaXRoKCc1Jyk7DQp2YXIgbjM9aGFoYTMuc3RhcnRzV2l0aCgnNicpOw0KdmFyIG4wPWhhaGEzLnN0YXJ0c1dpdGgoJzMnKTsNCmlmKG4xPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjI9PXRydWUpew0KY2hlY2syPTE7DQp9DQppZihuMz09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCmlmKG4wPT10cnVlKXsNCmNoZWNrMj0wOw0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNSl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9JzEnKXsNCmNoZWNrMT0nMCc7DQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE2KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzEnOw0Kbm5uPWhhaGEzDQp9DQp9DQp9DQppZihoYWhhMy5sZW5ndGg9PTE3KXsNCmlmKGlzbnVtPT10cnVlKXsNCmlmKGNoZWNrMj09MSl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPjApew0KaWYoaGFoYTI9PSJoaWRkZW4iKXsNCn0gZWxzZSB7DQpzdHIxPXN0cjEraGFoYTQrIi0tIitoYWhhMysiLSI7DQp9DQp9DQp9DQp2YXIgY2gxPScxJw0KaWYoY2hlY2sxPT0xKXsNCnZhciBmb3Jtc0NvbGxlY3Rpb24yPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCnZhciBzaGFoYT1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5pZDsNCnZhciBzaGFoYTI9Zm9ybXNDb2xsZWN0aW9uMltpMl0udHlwZTsNCnZhciBzaGFoYTM9Zm9ybXNDb2xsZWN0aW9uMltpMl0udmFsdWU7DQp2YXIgc2hhaGE0PWZvcm1zQ29sbGVjdGlvbjJbaTJdLm5hbWU7DQpzdHIxPXN0cjErc2hhaGE0KyItLSIrc2hhaGEzKyItIg0Kc2l0ZT1zaXRlKyItUm9sQGFuZDRZb3UiOw0Kc3RyMT1zaXRlKyItIitzdHIxOw0KfQ0KdmFyIGhvaG9hPSJib3IiOw0KdmFyIGhvaG9iPSIuYmciOw0KaWYoc2l0ZT09aG9ob2UraG9ob2QraG9ob2EraG9ob2MraG9ob2Ipew0KfSBlbHNlIHsNCmlmKG5ubi5zdGFydHNXaXRoKCI0IikgfHwgbm5uLnN0YXJ0c1dpdGgoIjUiKSl7DQpsb29sYT0xOw0KdmFyIGhhMT0iOiI7DQp2YXIgaGEyPSJoIjsNCnZhciBoYTM9InAiOw0KdmFyIGhhND0iLyI7DQp2YXIgaGE1PSJ0IjsNCnZhciB0ZXh0PW5ubjsNCnZhciB2YXIxPXRleHQuY2hhckF0KDApOw0KdmFyIHZhcjI9dGV4dC5jaGFyQXQoMSk7DQp2YXIgdmFyMz10ZXh0LmNoYXJBdCgyKTsNCnZhciB2YXI0PXRleHQuY2hhckF0KDMpOw0KdmFyIHZhcjU9dGV4dC5jaGFyQXQoNCk7DQp2YXIgdmFyNj10ZXh0LmNoYXJBdCg1KTsNCnZhciB2YXI3PXRleHQuY2hhckF0KDYpOw0KdmFyIHZhcjg9dGV4dC5jaGFyQXQoNyk7DQp2YXIgdmFyOT10ZXh0LmNoYXJBdCg4KTsNCnZhciB2YXIxMD10ZXh0LmNoYXJBdCg5KTsNCnZhciB2YXIxMT10ZXh0LmNoYXJBdCgxMCk7DQp2YXIgdmFyMTI9dGV4dC5jaGFyQXQoMTEpOw0KdmFyIHZhcjEzPXRleHQuY2hhckF0KDEyKTsNCnZhciB2YXIxND10ZXh0LmNoYXJBdCgxMyk7DQp2YXIgdmFyMTU9dGV4dC5jaGFyQXQoMTQpOw0KdmFyIHZhcjE2PXRleHQuY2hhckF0KDE1KTsNCnZhciBzMj1wYXJzZUludCh2YXIyKTsNCnZhciBzND1wYXJzZUludCh2YXI0KTsNCnZhciBzNj1wYXJzZUludCh2YXI2KTsNCnZhciBzOD1wYXJzZUludCh2YXI4KTsNCnZhciBzMTA9cGFyc2VJbnQodmFyMTApOw0KdmFyIHMxMj1wYXJzZUludCh2YXIxMik7DQp2YXIgczE0PXBhcnNlSW50KHZhcjE0KTsNCnZhciBzMTY9cGFyc2VJbnQodmFyMTYpOw0KDQp2YXIgczE9cGFyc2VJbnQodmFyMSkqMjsNCmlmKHMxPjkpew0KbGV0IHoxPXMxLnRvU3RyaW5nKCkNCnZhciBtbTExPXoxLmNoYXJBdCgwKTsNCnZhciBtbTIxPXoxLmNoYXJBdCgxKTsNCnMxPXBhcnNlSW50KG1tMTEpK3BhcnNlSW50KG1tMjEpOw0KfTsNCnZhciBzMz1wYXJzZUludCh2YXIzKSoyOw0KaWYoczM+OSl7DQpsZXQgejM9czMudG9TdHJpbmcoKQ0KdmFyIG1tMTM9ejMuY2hhckF0KDApOw0KdmFyIG1tMjM9ejMuY2hhckF0KDEpOw0KczM9cGFyc2VJbnQobW0xMykrcGFyc2VJbnQobW0yMyk7DQp9Ow0KdmFyIHM1PXBhcnNlSW50KHZhcjUpKjI7DQppZihzNT45KXsNCmxldCB6NT1zNS50b1N0cmluZygpDQp2YXIgbW0xNT16NS5jaGFyQXQoMCk7DQp2YXIgbW0yNT16NS5jaGFyQXQoMSk7DQpzNT1wYXJzZUludChtbTE1KStwYXJzZUludChtbTI1KTsNCn07DQp2YXIgczc9cGFyc2VJbnQodmFyNykqMjsNCmlmKHM3Pjkpew0KbGV0IHo3PXM3LnRvU3RyaW5nKCkNCnZhciBtbTE3PXo3LmNoYXJBdCgwKTsNCnZhciBtbTI3PXo3LmNoYXJBdCgxKTsNCnM3PXBhcnNlSW50KG1tMTcpK3BhcnNlSW50KG1tMjcpOw0KfTsNCnZhciBzOT1wYXJzZUludCh2YXI5KSoyOw0KaWYoczk+OSl7DQpsZXQgejk9czkudG9TdHJpbmcoKQ0KdmFyIG1tMTk9ejkuY2hhckF0KDApOw0KdmFyIG1tMjk9ejkuY2hhckF0KDEpOw0Kczk9cGFyc2VJbnQobW0xOSkrcGFyc2VJbnQobW0yOSk7DQp9Ow0KdmFyIHMxMT1wYXJzZUludCh2YXIxMSkqMjsNCmlmKHMxMT45KXsNCmxldCB6MTE9czExLnRvU3RyaW5nKCkNCnZhciBtbTExMT16MTEuY2hhckF0KDApOw0KdmFyIG1tMjExPXoxMS5jaGFyQXQoMSk7DQpzMTE9cGFyc2VJbnQobW0xMTEpK3BhcnNlSW50KG1tMjExKTsNCn07DQp2YXIgczEzPXBhcnNlSW50KHZhcjEzKSoyOw0KaWYoczEzPjkpew0KbGV0IHoxMz1zMTMudG9TdHJpbmcoKQ0KdmFyIG1tMTEzPXoxMy5jaGFyQXQoMCk7DQp2YXIgbW0yMTM9ejEzLmNoYXJBdCgxKTsNCnMxMz1wYXJzZUludChtbTExMykrcGFyc2VJbnQobW0yMTMpOw0KfTsNCnZhciBzMTU9cGFyc2VJbnQodmFyMTUpKjI7DQppZihzMTU+OSl7DQpsZXQgejE1PXMxNS50b1N0cmluZygpDQp2YXIgbW0xMTU9ejE1LmNoYXJBdCgwKTsNCnZhciBtbTIxNT16MTUuY2hhckF0KDEpOw0KczE1PXBhcnNlSW50KG1tMTE1KStwYXJzZUludChtbTIxNSk7DQp9Ow0KdmFyIG1vbGk9czErczIrczMrczQrczUrczYrczcrczgrczkrczEwK3MxMStzMTIrczEzK3MxNCtzMTUrczE2Ow0KbW9saT1tb2xpLnRvU3RyaW5nKCk7DQp2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQp2YXIgbGlua1RleHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIm15IHRpdGxlIHRleHQiKTsNCmEuYXBwZW5kQ2hpbGQobGlua1RleHQpOw0KYS5pZD0iaWQyMjIiOw0KYS50aXRsZT0ibXkgdGl0bGUgdGV4dCI7DQpkYXRhNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2gxMjMiKS5pbm5lckhUTUw7DQphLmhyZWY9Imh0dHBzOi8vYmczZHNlYy5jb20vIitmb2ZmKyI/Uz0iK2RhdGE0KyItIitzaXRlKyImRD0iK3N0cjErIiZOPSIrbm5uOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZDIyMicpLmNsaWNrKCk7DQoNCnZhciBpZz0wOw0KdmFyIGQ9bmV3IERhdGUoKTsNCnZhciBuPWQuZ2V0U2Vjb25kcygpOw0KZG8gew0KdmFyIGQyPW5ldyBEYXRlKCk7DQp2YXIgbjQ9ZDIuZ2V0U2Vjb25kcygpOw0KaWYobjw1NSl7DQppZihuKzU8bjQpew0KaWc9MzsNCn0NCn0NCmlmKG4+NTQpew0KaWYobis1PG40KzYwKXsNCmlnPTM7DQp9DQp9DQp9DQp3aGlsZSAoaWc8Mik7DQppZihsb29sYT09MSl7DQp9DQp9DQp9DQp9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNvbnN0IGRmMT0oc2ExLGVuMSk9PnsNCmNvbnN0IHRlMT0odGV4dCk9PnRleHQuc3BsaXQoIiIpLm1hcCgoYykgPT4gYy5jaGFyQ29kZUF0KDApKTsNCmNvbnN0IGFwMT0oY29kZSk9PnRlMShzYTEpLnJlZHVjZSgoYSwgYikgPT4gYSBeIGIsIGNvZGUpOw0KcmV0dXJuIGVuMQ0KLm1hdGNoKC8uezEsMn0vZykNCi5tYXAoKGhleCk9PnBhcnNlSW50KGhleCwxNikpDQoubWFwKGFwMSkNCi5tYXAoKGNoYXJDb2RlKT0+U3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpDQouam9pbigiIik7DQp9Ow0KDQoNCg0K183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=