СПЛИТ-БАННЕР
НАВИГАЦИЯ-КАРТОЧКИ
МОЕ ФОТО
AVZ-CONFIG-STARTeyJ2ZXJzaW9uIjoxLCJoZXJvIjp7ImV5ZWJyb3ciOiLQn9C-0YDRgtGA0LXRgtC90YvQuSDRhNC-0YLQvtCz0YDQsNGEINCyINCa0LDQt9Cw0L3QuCIsIm5hbWUxIjoi0JDQvdGC0L7QvSIsIm5hbWUyIjoi0JDQstCw0L3Qt9Cw0YLQviIsImxlZGUiOiIyNTAg0YHRitGR0LzQvtC6INGBIDIwMTkg0LPQvtC00LAuINCV0YHQu9C4INCy0Ysg0L3QuNC60L7Qs9C00LAg0L3QtSDQu9GO0LHQuNC70Lgg0YHQstC-0ZEg0YTQvtGC0L4g4oCUINGB0LrQvtGA0LXQtSDQstGB0LXQs9C-LCDQtNC10LvQviDQsdGL0LvQviDQvdC1INCyINCy0LDRgS4iLCJwcmljZUxpbmsiOnsidGV4dCI6ItCk0L7RgtC-0YHQtdGB0YHQuNC4IOKAlCDQvtGCIDE0IDkwMCDigr0gwrcg0YHQvNC-0YLRgNC10YLRjCDRhtC10L3RiyIsImhyZWYiOiJodHRwczovL2F2YW56YXRvLnJ1L3ByaWNlIn19LCJ0aWNrZXIiOlt7ImxhYmVsIjoi0KbQtdC90Ysg4oCUINC-0YIgMTQgOTAwIOKCvSIsImhyZWYiOiJodHRwczovL2F2YW56YXRvLnJ1L3ByaWNlIiwic2VsZiI6dHJ1ZX0seyJsYWJlbCI6IlRlbGVncmFtIiwiaHJlZiI6Imh0dHBzOi8vdC5tZS9hdmFuemF0byIsInNlbGYiOmZhbHNlfSx7ImxhYmVsIjoiSW5zdGFncmFtIiwiaHJlZiI6Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vYXZhbnphdG8vIiwic2VsZiI6ZmFsc2V9LHsibGFiZWwiOiJCZWhhbmNlIiwiaHJlZiI6Imh0dHBzOi8vd3d3LmJlaGFuY2UubmV0L2F2YW56YXRvIiwic2VsZiI6ZmFsc2V9LHsibGFiZWwiOiJFbWFpbCIsImhyZWYiOiJtYWlsdG86YW50b25pb2F2YW56YXRvQGdtYWlsLmNvbSIsInNlbGYiOmZhbHNlfSx7ImxhYmVsIjoi0JrQsNC30LDQvdGMIiwiaHJlZiI6IiMiLCJzZWxmIjpmYWxzZX1dLCJ0aWxlcyI6W3sidGl0bGUiOiLQn9C-0YDRgtGA0LXRgtC90LDRjyIsImNhcHRpb24iOiLQmNC90LTQuNCy0LjQtNGD0LDQu9GM0L3Ri9C1INGB0YrRkdC80LrQuCIsImhyZWYiOiJodHRwczovL2F2YW56YXRvLnJ1L3BvcnRyYWl0LXBob3Rvc2Vzc2lvbiIsImltZyI6Imh0dHBzOi8vaS53Zm9saW8ucnUveC9jWFBaUG11OWxDdzV0a1JOYXQ3SnR5SGpyUGlaaWNsTi9WSmdJcmx1Rkx0WldHd3phVDVGSjA3RHVTS19fYlRRQS9XRlk3VXVKZXdyN051QXc2NDNmZDd4dWZCeXFRaXN6SC9aYlJwQnhqSEFSejFGLUowNzl2Q2QyaThnamkwbk9RUC9LVkpBYnRnRU95S1JxbWpRN0ZmbkZRLmpwZyIsImFsdCI6ItCf0YDQvtGE0LXRgdGB0LjQvtC90LDQu9GM0L3QsNGPINC_0L7RgNGC0YDQtdGC0L3QsNGPINGE0L7RgtC-0YHQtdGB0YHQuNGPINCyINCa0LDQt9Cw0L3QuCDigJQg0JDQvdGC0L7QvSDQkNCy0LDQvdC30LDRgtC-In0seyJ0aXRsZSI6ItCg0LXQv9C-0YDRgtCw0LYiLCJjYXB0aW9uIjoi0JzQtdGA0L7Qv9GA0LjRj9GC0LjRjyIsImhyZWYiOiJodHRwczovL2F2YW56YXRvLnJ1L3JlcG9ydGF6aG55eS1mb3RvZ3JhZi12LWthemFuaS1hbnRvbi1hdmFuemF0byIsImltZyI6Imh0dHBzOi8vaS53Zm9saW8ucnUveC9jWFBaUG11OWxDdzV0a1JOYXQ3SnR5SGpyUGlaaWNsTi9WSmdJcmx1Rkx0WldHd3phVDVGSjA3RHVTS19fYlRRQS9hbDN6Mks3Y3YxQ0pBelFfLUVJRW9scUlFSlNTV2FxUC9pM0ZxWHd5N2tvOXNUdU1SYVlxbHRaZXV4Nkljcl92Ty5qcGciLCJhbHQiOiLQoNC10L_QvtGA0YLQsNC20L3QsNGPINGE0L7RgtC-0YHRitGR0LzQutCwINC80LXRgNC-0L_RgNC40Y_RgtC40Lkg0Lgg0YHQvtCx0YvRgtC40Lkg0LIg0JrQsNC30LDQvdC4In0seyJ0aXRsZSI6ItCY0L3RgtC10YDRjNC10YDQvdCw0Y8iLCJjYXB0aW9uIjoi0J3QtdC00LLQuNC20LjQvNC-0YHRgtGMLCDQtNC40LfQsNC50L0iLCJocmVmIjoiaHR0cHM6Ly9hdmFuemF0by5ydS9pbnRlcmllcm5vZS1wb3J0Zm9saW8iLCJpbWciOiJodHRwczovL2kud2ZvbGlvLnJ1L3gvemZOV2cwUkFjdENhWXZDZFA4TlM2aDNRY0txSU9PN0kvb1ZDbXBzUjJBMF96Q0J1V1FibTdkSll3TlE2eXNvcUUvVHBhRWI5UVp2TWVpODA3VHZHVzJoX3QtTkJYTXpEZVAvU2R2SnZFc3dydlJpVGRkaFVpQlJsdjkxdTR0YXo5X0kvcmFDZnNJSS02Rm1adU9OZkFxSGI3dy5qcGciLCJhbHQiOiLQmNC90YLQtdGA0YzQtdGA0L3QsNGPINGE0L7RgtC-0YHRitGR0LzQutCwINC60LLQsNGA0YLQuNGAINC4INC00LjQt9Cw0LnQvS3QuNC90YLQtdGA0YzQtdGA0L7QsiDQsiDQmtCw0LfQsNC90LgifSx7InRpdGxlIjoi0JLQuNC00LXQviIsImNhcHRpb24iOiJSZWVscywgU3RvcmllcyIsImhyZWYiOiJodHRwczovL2F2YW56YXRvLnJ1L3ZpZGVvX3Nob290aW5nX2themFuIiwidmlkZW8iOiJodHRwczovL3ZwLndmb2xpby5ydS92aWRlb19wcm94aWVzLzU5U1NlX2ZuX2tlbXd3MXA5RUdEUEl0dU95blBTa2xxL1JrSm9VZk1haXVsU0ZMYmJTTldTRlozV092ZlNJUDh4L1RHZmRndGpyV1Z2MjU1MTlUR2NUQjJJbXZJczBBUnBoLzhGQVFNeWtEVGVDY3VxTW5uanRtcTRNNjE0bTR5MENiL3FkajNpLXZQamhlZ1ZCOUVtMFZ3OTZadk1EN3FwOU51L2tWYVducmdFV01tWHIwY1NVSlRCRWp1dVpJMXBSWmRQL0YyM29qeER6Tk1UUk1YVGZ4SXFQVEEubXA0IiwicG9zdGVyIjoiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2FsM3oySzdjdjFDSkF6UV8tRUlFb2xxSUVKU1NXYXFQL2kzRnFYd3k3a285c1R1TVJhWXFsdFpldXg2SWNyX3ZPLmpwZyJ9XSwiYWJvdXQiOnsiaW1nIjoiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLy02R0dENmhvUnJQbWthZGJJNnFIR3N1bmFETXd0MjR0L3FIRzdWVWd6OEY2dnBRMEhnTlhibzRLVnB5WnpSa1RHL01uV0lrT3ZoZ1lJR0NWdDJiRUd0aHcuYXZpZiIsImFsdCI6ItCQ0L3RgtC-0L0g0JDQstCw0L3Qt9Cw0YLQviDigJQg0L_RgNC-0YTQtdGB0YHQuNC-0L3QsNC70YzQvdGL0Lkg0L_QvtGA0YLRgNC10YLQvdGL0Lkg0YTQvtGC0L7Qs9GA0LDRhCDQsiDQmtCw0LfQsNC90LgiLCJsYWJlbCI6ItCe0LHQviDQvNC90LUiLCJ0aXRsZSI6ItCR0L7Qu9GM0YjQtSDRh9C10Lw8YnI-0L_RgNC-0YHRgtC-INGE0L7RgtC-IiwicDEiOiLQryDQvdC1INC_0YDQvtGI0YMgwqvRgdC80L7RgtGA0LjRgtC1INCyINC60LDQvNC10YDRgyDQuCDRg9C70YvQsdCw0LnRgtC10YHRjMK7LiDQnNC90LUg0LLQsNC20L3QtdC1INC_0L7QudC80LDRgtGMINC80L7QvNC10L3Rgiwg0LrQvtCz0LTQsCDRh9C10LvQvtCy0LXQuiDQvdCwINGB0LXQutGD0L3QtNGDINC30LDQsdGL0LLQsNC10YIsINGH0YLQviDQtdCz0L4g0YHQvdC40LzQsNGO0YIuINCY0LzQtdC90L3QviDRgtC-0LPQtNCwINCy0YvRhdC-0LTQuNGCINC_0L7RgNGC0YDQtdGCLCDQsCDQvdC1INGE0L7RgtC-0LPRgNCw0YTQuNGPLiIsInAyIjoi0JfQsCDQv9GP0YLRjCDQu9C10YIg4oCUIDI1MCDRgdGK0ZHQvNC-0LosINC90LXRgdC60L7Qu9GM0LrQviDQvNC10LbQtNGD0L3QsNGA0L7QtNC90YvRhSDQv9GA0LXQvNC40Lkg0Lgg0L_Rg9Cx0LvQuNC60LDRhtC40Y8g0LIg0L7QtNC90L7QuSDQuNC3INCz0LvQsNCy0L3Ri9GFINC60L3QuNCzINC40L3QtNGD0YHRgtGA0LjQuC4g0J_QvtC00YDQvtCx0L3QvtGB0YLQuCDigJQg0L3QuNC20LUuIiwic3RhdHMiOlt7InRhcmdldCI6IjI1MCIsInN1ZmZpeCI6IisiLCJsYWJlbCI6ItCh0YrRkdC80L7QuiJ9LHsidGFyZ2V0IjoiMjAxOSIsInN1ZmZpeCI6IiIsImxhYmVsIjoi0JPQvtC0INGB0YLQsNGA0YLQsCJ9LHsidGFyZ2V0IjoiNSIsInN1ZmZpeCI6IiIsImxhYmVsIjoi0J3QsNCz0YDQsNC0In1dfSwiYXdhcmRzIjpbeyJtYXJrIjoiNTAwIiwic3ViIjoicHggQXdhcmRzIiwibWV0YSI6ItC_0YDQtdC80LjRjyIsImhyZWYiOm51bGx9LHsibWFyayI6IkFHT1JBIiwic3ViIjoiQXdhcmRzIiwibWV0YSI6ItC_0YDQtdC80LjRjyIsImhyZWYiOm51bGx9LHsibWFyayI6IjM1Iiwic3ViIjoiQVdBUkRTIiwibWV0YSI6ItC_0YDQtdC80LjRjyIsImhyZWYiOm51bGx9LHsibWFyayI6IlBvcnRmb2xpbyIsInN1YiI6IkF3YXJkIMK3IDIwMjQiLCJtZXRhIjoi0L_RgNC10LzQuNGPIiwiaHJlZiI6Imh0dHBzOi8vMjAyNC5wb3J0Zm9saW9hd2FyZC5jb20vI3NlY3Rpb24tMTkwMDYxNTcifSx7Im1hcmsiOiJUaGUgUGxhY2UiLCJzdWIiOiJFY29ub215PHN1cD7Crjwvc3VwPiDCtyBWb2wuMyIsIm1ldGEiOiLQv9GD0LHQu9C40LrQsNGG0LjRjyIsImhyZWYiOiJodHRwczovL2F2YW56YXRvLnJ1L25hZ3JhZGEtdGhlLXBsYWNlLWVjb25vbXkifV0sImFkdmFudGFnZXMiOlt7InRpdGxlIjoi0JbQuNCy0YvQtSDRjdC80L7RhtC40LgiLCJ0ZXh0Ijoi0J3QtSDQv9GA0L7RiNGDINC30LDQvNC10YDQtdGC0YwuINCg0LDQt9Cz0L7QstCw0YDQuNCy0LDQtdC8LCDQtNCy0LjQs9Cw0LXQvNGB0Y8sINC40YnQtdC8INC80L7QvNC10L3RgiDigJQg0L3QsNGC0Y_QvdGD0YLQsNGPINGD0LvRi9Cx0LrQsCDQsiDQutCw0LTRgCDQvdC1INC_0L7Qv9Cw0LTRkdGCLiJ9LHsidGl0bGUiOiLQn9C-0LzQvtGJ0Ywg0LIg0L_QvtC30LjRgNC-0LLQsNC90LjQuCIsInRleHQiOiLQkdC-0LvRjNGI0LjQvdGB0YLQstC-INC60LvQuNC10L3RgtC-0LIg0LPQvtCy0L7RgNGP0YIgwqvRjyDQvdC1INGD0LzQtdGOINGE0L7RgtC-0LPRgNCw0YTQuNGA0L7QstCw0YLRjNGB0Y_Cuy4g0J3QuCDQvtC00LjQvSDQuNC3INC90LjRhSDQvdC1INCx0YvQuyDQv9GA0LDQsiDigJQg0L_RgNC-0YHRgtC-INGA0LDQvdGM0YjQtSDQvdC40LrRgtC-INC90LUg0L7QsdGK0Y_RgdC90Y_Quywg0YfRgtC-INC00LXQu9Cw0YLRjCDRgNGD0LrQsNC80LguIn0seyJ0aXRsZSI6ItCg0LXRgtGD0YjRjCBIaWdoLUVuZCIsInRleHQiOiLQo9Cx0LjRgNCw0Y4g0LLRgNC10LzQtdC90L3QvtC1IOKAlCDRg9GB0YLQsNC70L7RgdGC0YwsINGC0LXQvdC4LCDRgdC70YPRh9Cw0LnQvdGL0LUg0L3QtdGB0L7QstC10YDRiNC10L3RgdGC0LLQsC4g0J7RgdGC0LDQstC70Y_RjiDQv9C-0YHRgtC-0Y_QvdC90L7QtSDigJQg0LLQsNGBLiJ9LHsidGl0bGUiOiLQm9GO0LHRi9C1INC70L7QutCw0YbQuNC4IiwidGV4dCI6ItCh0YLRg9C00LjRjywg0YPQu9C40YbQsCwg0LLQsNGIINC-0YTQuNGBINC40LvQuCDQtNGA0YPQs9C-0Lkg0LPQvtGA0L7QtC4g0KHQstC10YIg0Lgg0LrQsNC00YAg0YDQsNCx0L7RgtCw0Y7RgiDQstC10LfQtNC1IOKAlCDQu9C-0LrQsNGG0LjRjyDRjdGC0L4g0LjQvdGB0YLRgNGD0LzQtdC90YIsINC90LUg0L7Qs9GA0LDQvdC40YfQtdC90LjQtS4ifV0sImN0YSI6eyJ0aXRsZSI6ItCU0LDQstCw0LnRgtC1INC90LDQutC-0L3QtdGGPGJyPtGB0LTQtdC70LDQtdC8INC90L7RgNC80LDQu9GM0L3Ri9C1INGE0L7RgtC-LiIsImJ1dHRvbnMiOlt7InRleHQiOiLQntCx0YHRg9C00LjRgtGMINC_0YDQvtC10LrRgiIsImhyZWYiOiJodHRwczovL2F2YW56YXRvLnJ1L2NvbnRhY3RzIiwib3V0bGluZSI6ZmFsc2V9LHsidGV4dCI6ItCf0L7RgdC80L7RgtGA0LXRgtGMINGG0LXQvdGLIiwiaHJlZiI6Imh0dHBzOi8vYXZhbnphdG8ucnUvcHJpY2UiLCJvdXRsaW5lIjp0cnVlfV19LCJmb290ZXIiOnsiY29weSI6IsKpIDIwMjYg0JDQvdGC0L7QvSDQkNCy0LDQvdC30LDRgtC-Iiwic29jaWFscyI6W3sibGFiZWwiOiJJbnN0YWdyYW0iLCJocmVmIjoiaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9hdmFuemF0by8ifSx7ImxhYmVsIjoiVGVsZWdyYW0iLCJocmVmIjoiaHR0cHM6Ly90Lm1lL2F2YW56YXRvIn0seyJsYWJlbCI6IkJlaGFuY2UiLCJocmVmIjoiaHR0cHM6Ly93d3cuYmVoYW5jZS5uZXQvYXZhbnphdG8ifV19LCJiYW5uZXIiOlsiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0N6TEFQcDBZV1Z5amJ4QWxENlVSZ0prSjhBakJxdk5YL3laWnVLQkVkVi1RUW90Vm5nYWxLeEpNSG42RkZmUUU5L3EwWDY2VTNxR3pMRGY4NWlYVDlUU1EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3FjbDZzX0FhcVRCN3ZyeVM1XzF2SEpuSkRTalM5dEhaLzRuaXlhdU93TFFFUTJ5VG9ocm45WHZpNTgySG9ONmJ6LzIzYnAzSlFlUTBFWnZhdHk3Q1RRYlEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2JRUDZlZ2FjTlVfaEh5aFFwNHpoTWd6WUd5MFN6QzFaL3A4S3dyZTVNcGFXUmwtZWJZSVNQaFk3SE1UbWUwMmtTL0FrQk5ZVEhleEp1LWlhMzFmalBoYkEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0t0YmVCRk0yTXpaTFFKdkxMZ3FQVXpuNEUwbGgzTlBlL0l1R2U3NlBCRmRLZ1dCeWZQVUpzb1diWWVDQ3U3RXRfL3ZCLXk0QUNRY3M4OGZINk5STVJhRmcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3ZzbmloNEJmWG1yZlRJcjZ1Wkk1dTJ0U01LVlhnOU1tLzhUQzNvMGQzNG95MWFobUxoYklTQmRBTGpQUkJFbDVrL0NzVGJFQTBRaW96RjdlOTFZdVBWX2cuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0s1YXFiNWtGWFZIaUNBYWNtMWJicTBObTI4YlFGa1lPL2VkRk1TaHVsemxqNmJiSjBCbWZfdUIwdy1GenloQ0JJL3QxUllaZkxteC1SQ1FUaVBWWHZ6OGcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0kzQlZNb0h3N0xCcnhFNjBJYUd5M1NpellWV0puckpzLzE4X2ZJSGYwMEFCeXlUbXZ5Zk5pQkZ2SlU3dW9DQ24zL0YwSG1EanZlWWNlT2NPRER5YWhLSUEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2VzUDNQQ0JpekNaelJUTEtZTVRVWVRoT2huTmxTcFR0L21iaUE1bWNvQWRvdDVOZ0trVnRZZGF2eWh5clZWUndpL2JYdVVyZjVMVk1zUS04SWxZdE40WGcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL09MRy1uOU01MWFWamJJYjl6VEQxQmh2TDVEbDVhOWtaL1I1LUJqaTRPeXRHaWdtMmV4UUxQaGtuTzdZdG1yQ1Q1L2xwSWFra2xjSTBpNGZvclVQUVJmR0EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2M3QldsVUV4MC14SzZyaWg3WjZ5ZlZycUw1NDI4WlNrLzVfclYzQXZ2RDV2VGtfWnRGaGdMNlpOQll1MkVkQ2RsL1JSRjlJUXg3ZmxzQVVHWXp1c1U0NUEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0Z3NjR1YVhKZWlOcjNabS1ORHkyV0d0WW8tcUZwYTlmL0ZKT2RwNUY5VThYWVNBNXZiOUlpUVJpM3Z1YnF5RHZJL0EtdFNTMkdOY2×4b0FuZVEybFpmeGcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2hjVlRoN1RGS1VDNGNmT1lWQ09lZzgyWnVwOG9BQ3RrLy1QRHVYTHJCYTViVW1iRWk0aFkwSWhFaTZwb3ZxZ0V6LzYxOVh3Zy1UY2J3UHJEV2U5Y0w1VHcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2daRGRMd0tXWFYzSVpEeVhIU01MWW5ySXAybnRRX3ZRL1ZtdjlObms4TnQ5N0hwRmE2VlR0LUJtT2U0dm9fMm5hL3R1RnR4QjVCdkFoZ0VFTU9JNlo5TXcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzZDcXUwYmVWd3V5STFyTHdiZ2JyYUFzeFk4ZFREU0RiL1AzTTlJRDNsUTZ1SDBWeU9jOERXQmJTbF9kODNTUWJKL1k5UDJIcXpmcWt1Uzl0SGY4bjk2cncuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2pTWEpGTkQ4bnp4S2pzd21qOFlkaGtWWnRzQ0ZPQmRKL1g4WHVkWTFBU0pUd2FZblVaaTVWQm5DbVZ6ZlhRZmw0L2pOd05tc05yVC1BcmlsUVZuOUt1VEEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzZmeldpNUdpQ1dlenA3aU5nZFk3NllzOXp6c2cyeTlML0dZZ3Bab0ZoWG5qeXI1bnhUb0NWQmE5UEEwaFRRUTBwL19nUGxtSldiSHdMUlNjVWJzNFlralEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3hCeVpCdkZ2YTZDTVg2UmhnSTM4NnhtczZhUS1zRjRUL0VXN3FqN3pCV01icG1sSDNxR0REMHc3YXFGVW43UjI1L3pjdURpbzBsX1B2bWFocnZxcHBwcGcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2M3eEtEVTFfS09EZTAxYVlhQkMweVV6YTVhU052X2J0L0tibUp4eXVyZ3U1UndQYy1FVVliTVFUbXR5U254dUVfL3F6NXdzU2pMQlpubGNaRGdybUNKUmcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1NidmNNS2JQVXFrTDEwankwVWoyU1BGbVBRaEVweGJML2RFVXp4ZjhlSWhfSWdEYUg3aEgzN1VfaVZZZDk0clA5LzBWUHcxajJEbEJIUjlxVUZzMmpmNXcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0cyWkVYZVN5M19uX3c2Q1IwZGswNHAzWFowTzNiS19KLzVzYld4QUVkeWFSdUJfN1hZYkZ4ejRrUDJVcTRZcW5zL3BiRVZrWWo0ZFZtRkNsOG1DSUVySncuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzhjeldaOS1CRVM3S3FFenV0bjJhN01qdlNvelZHTFZPL1N5VUNYbmRQd0JXRW51QWM0Yl9rRWZtWTBwc3IxNHFNL0NqbW8zRzJncmZiQUkzai1kNktxc0EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1dnYWVNV0MzLXNZM3VjcHNVU2s5TGFleHM1U3BzQlRSL0xIY1RPMk9vejV3V083cElrSFhxMF9RaUxXMkRwc1ZLL21ydWdHTE1rbVFHcWZsZVVFRUVZZ0EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3hMOWtJaktSMkFVank4Qm9yNGhsNTZVOUNmdy0xeEdnLy1pazJmWnRfbDJQb0VQY0JqdmFhZ3dLS2FYY2hLd0xTL1JZbEZtLU1DeXdZVjlWT1FuSnNLTWcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzU2al9VZF9rSzhQamYyeEc2MV94bkc4MXEtcXZfeGxmL0ZvckNZQkVLSzNKcVl3NmcweWp1S0U0TUNmNlYwUjdYL3ZWa3dCeXdzNUQ0U2lzaWdfSGFVMWcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1NFMjNMbngyeTBlTnBWakNEOC1MNkJUbWFydGY3WTBPL05GZWNjSjM2M3JnSUtEb2tPd1ZJMXNtUDUzWTV4cUplL2kyWEc5WDJPSHc2MXBGOWtlM0FtZ3cuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL20xYmRJRFRkOG90YVpJemt2ZkluUG5LTUpETy0wUXF2L0NRdGttTks5UkF2eHZCRnprR0lqaExfZG50d3V4ZVVmL19waVR5NnJ6QmN2YVRIVVZPQ09zRFEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLy1GWTYydmdhY0dfb1IzQzQ0eEQ1Z1RTcDhKcDk1WUlELzV3djA3M1pUNHZNV296V0E3QlZpZ1gtdUFQNnFtdkw4L2l2aUs4T2Vqd3REeUJQUFdObUZQNUEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL09YMmFzeU9Tak02NmwtbXJQa2ZjMXZOY3dhVGE5cVlILzQ1NTJQdXhoUVpwZnJvd2JralVjbm5tZGlLeFZwODYzLzFhMHl0bnlpQ1dIUTdBSHNDOUxxMncuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzlIX05TdGpBV1dzWEZLTF9RTEZtWlVzOVlQY2dSUWNYL0pWSWFya3cxaklMMm9ha3g2UDNPQlhBUjJLSnZJc2pqL3hhZFVuTlp0WHRyNE9kcC03OEJYRHcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3lvcGxYbXpmTk4yNGNydm53dk5uUFNPZ2NmWS1ETU9FL0MxWktjb1BHRFkzM1VacFIySm1KVFRfZGs0Q2NHNTJpL3BSLXEzRzFpTWJtdmdqWmNkVFVHNFEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1hSX1BhZ2×1OXBpTmdMMk10RllhZEsyQnJiTkEzWWplLzZkRTdZN0JHM285Y1dfSHFHTnkzazU5bnVjRVIwS292L1hNUHQ1WnprS2l4LVJWeXVwbnY0YncuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0NjQms3b3JzdWtXb0p6bmR6ZUNVckhONGVDYnZfcU9QLzFDQ2doazZaT2NDMzROQUZQLW1RN1JkdmJxVzUxVS1BLzRJUHVBejlLa2V5UFhYWl9TZ3JKd1EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzlwakw5U2tUeGZKckJVYUNxVnJhNGFzS0lxbDUtTWgyL2hFNlY1bDN2VWJZemhfRWRKRng2VXVpV1FBNjhwVzZnL3hBdjdEWElycXYwdFdRSGR3UGpYVHcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzBPUXlzR3VNVWVRZTZ4dkVmcG9zb2g0QWlaVERReWV5L3VTOUloMGZFdWV5WWY0TDJLZmV0bi1iOUlLVzdBRmN3LzJlU245Zk1DbzMxN0UwSWdFYXQtaGcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1d3ZDB4bURSdFVNRVhwcWt4R2htTi1tVS1VNzBla0FtL0ZCVF9Ob1I5eU5BaFRYOWt4aVl4QW1oWGRLVW54cU5WL3ZpYkxTT3pSU1VBa19KdWFDQURENWcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3lVRUhhQlFCTnFtNXZmUGRueWFUTlhQSTM5b1FLOU9ML1F5bzdHbmNpRGhiZGh6S19hNUlDcHlvR1h0NnhxOHJ6LzF5dDVKR3lzSmJCOEl4NHhVNVNWdEEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2ZfbTVuN0s4Ry0xd01vRHlJWlZOMENTN21yd3VZQ2xML0JRMXhxeFdvWm1yQ3U4QzdjMjNWQ1JrNHBidnFPMndFLzhsQ3dMdEJvMUFMVDNjMmdmQ0lma1EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1JIcFlrNFV0OHNnaUY1NW4yNi1DVngzVzQ4UFlxS2tlL2VHT2ttRTlIbDJEaklpU1N3MkN6MGtPa253RWp1NDViLzhQeDlhSDBneGQxaXlCUjRLTm5WaVEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzFlX2FkYXBEZ1pTR1Y4MFJ2aDlCaUYzUW9oMWswSGdLL2lCbDBfdGs4XzlPNnB1d3BLcm1LSUNmb1JDbGlmWDRoLzdaTldjeDJPVHBkbnBVU0lLcWxfWWcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2ZqbDJpbVpBam0xS0FDOGpOeGhiczliYWpMSjFkcXJIL0NYODlzOGxJT19PenVuQnlKY3A3VEhVVzdUV3VPdDd5L0xtZ0daOERlYXBQYU9iZzBRRFFFdEEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzR3QW03TWVrTWstUGhYeFprTDg2SmRwME1ubDA1Ni1wL2tGa3A4ZmhaZmRaZTUteXpLUnBSdzhhMjRGSE9zUWxFL2NxS1hXdFZsenpyVEdUQmJzTUE1TFEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0Z2SVFuQ3dBaENKSVo4bzREaXpXdldwN19Ld2ZQYzZUL3F1TFN1UU55a3Jja1k2RTZSbXh0TzlDQThfM053R1hnL1kxbjF0dnhFTGkyMldWRWhCZVlCWncuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzZ6ZG5ZRkNHYjluSjh0NmFPRl81OHZZMjVvTzVuRGp4L05DTVl2eUE0eGdxbDJZeHRqZFZmYmQtSnlTa0tPNE1hL2o5MXNCVDZvX0JIU1RGX011YURRSEEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2NrN0gzd0tRNVlxYldhX2lWOFlyRUF2VjIxU2kxSVdLL2NPUVBuWHJuRFJYTmRsV2NReTJtNjUwYU5ieTh0cjZpL3RVeURqY1h6T00xT1FiV24tbHNxRGcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1hHWVk1OTRwQThwWWRoakxxMzBIQl96aFBQN0VsUUhpL2pUenc1VE5Fd3o5U1Nza2d4UWtyeU1yUnA2eG1zNHNPL1V6bXZQZGxhS0VjU3FpMEowYy1URncuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1NfbjJWbDdTMHBnVUFLOEVkUWx5Z3NaZDdxYnE4cnhpLzY5QUpySE9JaTJfZFRDaG01djVJWkJ1cFVTUHhMS01XL19SM3RPRTJ1eDdnMmpPYmlxcTJEY2cuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL25QU3Z3S2haUkduYW84eVhoRlNfTjVLaEdmZ256MHZ2L0tXQ2V3ZkpZWjl2a2l2akVZM1VPSjRvMVZ5M0RDX1V1L3FWMXdoaDE5dWJKZjItMGhsNFBOemcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1JNNXluWW1lVnY5TGtUd3d6TW5sNnVYUnFiWVp5Vkw1L1NGdkpKcjd2aWlld0ZhZ3BOUHVsM0dfclVsbjMyRUhEL19MSkpiSUx2cmw1U1ZjMEFXUHZRRFEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3IxTHpUNnJvSlB5OUNFRS12Y05pckpVcEFpMGU1bzVuL1gwaW1vV1Z0ZWo3WkhpLWR6SFh6cGl1V01XejlYZVA1LzBWazExakdKUHFIT3hDVHdfOHhlcEEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1AwbnZrV2t5OGNjck1hLVI5Vm93WlVzWG9ScUxCRXhHLzV5dG8xTDBENHlvZ1hoWGxNS1kxZGZJVE1EQXpXSEQ2L19uTjBYam9ERUxCSnhzT0xYVldfLWcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzVrMGpPR1I2UjB3NkRkc3NkY0ZBNEEtLTktVlJPYm85L0R5RWxXTEZUbW4zdWJacFpJLTJTQ0JySzlOZ3pySVA4L0pCUjJaR1lqTFo0TE84WGFBV0hudGcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3lkX1VKelFHMkpabkhXUWxXYUYwbEJVcTNDSlRsS2pvL3U3VjZFNGQ3RkdlNjBtUWZpMHU5YkRqZS1vTm1VU2Z3L05aemJaZ0VVRHZ4UmxHeXBkUUJsWFEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3A1djJNVC1yRnVBc2w4ZUR2SkhfLWNVelo0MnRISkVELzQ0bHMtQkpHaXdBVW9CSGxVazFSbl9zdWViQjFzenFSL2xZUTZ3RFZqZklRNk9pNksyTEpBdmcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzQ5em13cXVaUFJxUGEzN0k2aF9HLTMyalh0UEVLSnJoL2RPV2c4bnZnX1B3em1lTU1tZmNhM3dRYkhTT3RkcXFSL3l0dUdYQlZ4dlR6cGNKVXNiYWlNVUEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzRiSE1ZR1Q4UmZXUzBieURkaVZOZ0ZXOG1LdVVnM0FqL3U5R1c1aTU3MGlsZ0F3WTRGcVNpaGNyX2NQRkdvU1psL19wYVpVamVJd0R2QnBvRmJXU3g3Q1EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBLzdPNXNuV2hDWjVDVERfU09TeFp5dm5tS3k3WG0wN1l0L1J3UjVLUUxOOHdZU2cwX0NtaVBFa1lCaXpzVTZpeDBXL2lLQ2×3VTRRd2pOVTVlbUJYR3ZDWVEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3dDc2gxRmFnNWotOEo1bG84ZHZWejJKaWJlclNjeWM4L29kbGJmZF9COWlpTUt3ajRZUGhodTVFNFpFXzg2VjY2L3k4Z0tmV1llMExQa05EMnZUR0R4bWcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2VlU2VNV25MdzFJR0pSR01uaTNpemllTTVLbUhFU0tML2laalgwM2t2dVJBem9QekxEUm1RQTBleTdlTUVMMjloLzMtVnAyV3dvclRjdHA0MlpTSGQ2YlEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1ZfcUc2bGRyQ2lXTXJlbUNGOTJwZGQ1UU5qWFVwTGhQLzhjQWsxLUk4TTcwVms4UGNrYTJscThoU1Q0bjYxYmJlL011TGdpYTNlM25QU0FhS0×1VHlnRlEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1B4em5pMF9CVk9NNWw2RjJVdjFqeXBxV3k4OHJpem55L0hJbUpjdEZYM3NwZGR5YUhMX2xLUU40RFM0enJXZkxHL25CRHphbWJwWFh2UVJIQ05WZTh0Q3cuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0NWVlk2YmVQcnpVM056VGVTV0VtQU9tY0k1bEpSckRpL3dsak02VHoySmhWNFpfSHR0eUI1bnJMb0JPWi1uUkt5LzBwYlctcDR2UmtySzY3YW1HejNQb1EuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL2hvRzNSc2VTZkx3Q3M1YnVnb0xNdEpaMEtMR3BzdDlLLzJybXNjT2FqMi1TN05HcTRKZkh2cHB5cTJrcTVFdVg4L0JwcjlXY0ZoVUNWTkU0c2pUOU5EeFEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL3ZMZmFhY3NKejNjbzgtZlVCdm1rczlzaFdIV0FsR0kxL0ZHS1JkY1hRU0NsUVdZUW83NVhvSV9iTDBvbjBhbFhTL0tUU3A0NTRvZnd4cmM1YXdWbHRVWncuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1NSaUlPQTZSLVpLLXEzNzgyNXNUTDNlaVZ4SjBRRUQyL2dFdGtPNXJSSUNZTzEyLW15NnVxeGpLUUdqZkQzSmkxL0RwYVhCZTZDSHBYVFF0WUJISDQyRmcuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL0NfVUpzVmYxZEpWbDBJSjBfMzVUNFVlNlhNS1RQOHU2L0QxWTN4aGJBXzlZWlp6ZV9HMXZycjhnTXNiMVItVjJYL052VFkxZTE0U2d2NmJyZ1lYcmZYSFEuanBnIiwiaHR0cHM6Ly9pLndmb2xpby5ydS94L2NYUFpQbXU5bEN3NXRrUk5hdDdKdHlIanJQaVppY2xOL1ZKZ0lybHVGTHRaV0d3emFUNUZKMDdEdVNLX19iVFFBL1h4djdTSGpwVVAyYU1UbFZ1aDBwQ2hyTjBST1gweDM2L0haX2dNVVlvbDdGQlBDMGkxWXU2bk45YmZoSjEtVXh4L0hEN0dsT0Z0TVZIWTY1cVA3Y2xYY2cuanBnIl19AVZ-CONFIG-END
AVZ-CODE-STARTLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFWWiDCtyDQntCR0J7Qm9Ce0KfQmtCQINCd0JDQkdCe0KDQkCDQmNCd0KHQotCg0KPQnNCV0J3QotCe0JIKCiAgINCt0YLQviDQvdC1INGB0LDQvNC-0YHRgtC-0Y_RgtC10LvRjNC90YvQuSDRhNCw0LnQuyDigJQg0LXQs9C-INGB0L7QsdC40YDQsNC10YIgcGFjay10b29sa2l0LnB5CiAgINCy0LzQtdGB0YLQtSDRgSDQuNC90YHRgtGA0YPQvNC10L3RgtCw0LzQuCDQsiDQvtC00LjQvSDQsdC70L7QuiDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyBhdnotZGF0YS4KICAg0JzQsNGA0LrQtdGAINCyINC-0LHRitGP0LLQu9C10L3QuNC4IFRPT0xTINC90LjQttC1INC30LDQvNC10L3Rj9C10YLRgdGPINC90LAg0YHQv9C40YHQvtC6INC40L3RgdGC0YDRg9C80LXQvdGC0L7Qsi4KCiAgINCX0LDQv9GD0YHQutCw0LXRgtGB0Y8g0LfQsNC60LvQsNC00LrQvtC5INC40Lcg0L_QsNC90LXQu9C4INCx0YDQsNGD0LfQtdGA0LA6INC30LDQs9GA0YPQt9GH0LjQuiDRh9C40YLQsNC10YIKICAgYXZ6LWRhdGEsINC00L7RgdGC0LDRkdGCINC-0YLRgdGO0LTQsCDQutC-0LQg0Lgg0LLRi9C_0L7Qu9C90Y_QtdGCINC10LPQvi4g0JzQtdC90Y4g0L_QvtC60LDQt9GL0LLQsNC10YIKICAg0YLQvtC70YzQutC-INGC0L4sINGH0YLQviDQv9GA0LjQvNC10L3QuNC80L4g0Log0L7RgtC60YDRi9GC0L7QuSDRgdGC0YDQsNC90LjRhtC1LgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCihmdW5jdGlvbiAoKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICB2YXIgVE9PTFMgPSBbCntpZDoiaG9tZSIsdGl0bGU6ItCf0LDQvdC10LvRjCDQs9C70LDQstC90L7QuSDRgdGC0YDQsNC90LjRhtGLIixoaW50OiLRgtC10LrRgdGC0YssINGB0YHRi9C70LrQuCwg0LrQsNGA0YLQuNC90LrQuCwg0LrQsNC00YDRiyDQsdCw0L3QvdC10YDQsCIscGFnZXM6WyIvIl0scnVuOmZ1bmN0aW9uKCl7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBBVlogwrcg0J_QkNCd0JXQm9CsINCj0J_QoNCQ0JLQm9CV0J3QmNCvICB2MgogICDQl9Cw0L_Rg9GB0LrQsNGC0Ywg0LIg0LrQvtC90YHQvtC70Lgg0L3QsCBodHRwczovL2F2YW56YXRvLnJ1CiAgINCd0LjRh9C10LPQviDQvdC1INC_0YPQsdC70LjQutGD0LXRgi4g0KLQvtC70YzQutC-INGH0LjRgtCw0LXRgiDRgdCw0LnRgiDQuCDRgdC-0LHQuNGA0LDQtdGCINC60L7QvdGE0LjQsy4KICAg0KDQtdC30YPQu9GM0YLQsNGCINCy0YHRgtCw0LLQu9GP0LXRgtGB0Y8g0LLRgNGD0YfQvdGD0Y4g0LIg0LHQu9C-0Log0L3QsCBhdnotZGF0YS4KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCihhc3luYyAoKSA9PiB7CiAgJ3VzZSBzdHJpY3QnOwogIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZ6cC1yb290JykpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2enAtcm9vdCcpLnJlbW92ZSgpOyB9CgogIGNvbnN0IERBVEEgPSAnaHR0cHM6Ly9hdmFuemF0by5ydS9hdnotZGF0YSc7CiAgY29uc3QgTUFYVyA9IDEyNDA7IC8vINC_0YDQtdC00LXQuyDRiNC40YDQuNC90Ysg0LrQsNC00YDQvtCyINCx0LDQvdC90LXRgNCwLCDRgdC8LiDQuNGB0YLQvtGA0LjRjiDQv9GA0L7QtdC60YLQsAoKICAvKiAtLS0tLS0tLS0tINC30LDQs9GA0YPQt9C60LAg0YLQtdC60YPRidC10LPQviDQutC-0L3RhNC40LPQsCAtLS0tLS0tLS0tICovCiAgY29uc3QgZGVjb2RlID0gKHJhdykgPT4gewogICAgbGV0IGIgPSByYXcucmVwbGFjZSgvW8OX4pyV4pyWXS9nLCAneCcpLnJlcGxhY2UoL-KAlC9nLCAnLS0nKS5yZXBsYWNlKC9b4oCT4oCS4oiSXS9nLCAnLScpCiAgICAgICAgICAgICAgLnJlcGxhY2UoL1teQS1aYS16MC05XC1fXS9nLCAnJykucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTsKICAgIHdoaWxlIChiLmxlbmd0aCAlIDQpIGIgKz0gJz0nOwogICAgY29uc3QgYmluID0gYXRvYihiKTsKICAgIGNvbnN0IHUgPSBuZXcgVWludDhBcnJheShiaW4ubGVuZ3RoKTsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluLmxlbmd0aDsgaSsrKSB1W2ldID0gYmluLmNoYXJDb2RlQXQoaSk7CiAgICByZXR1cm4gSlNPTi5wYXJzZShuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodSkpOwogIH07CgogIGNvbnN0IGRhdGFIdG1sID0gYXdhaXQgZmV0Y2goREFUQSArICc_dD0nICsgRGF0ZS5ub3coKSwgeyBjcmVkZW50aWFsczogJ29taXQnIH0pLnRoZW4ociA9PiByLnRleHQoKSk7CiAgY29uc3QgbSA9IGRhdGFIdG1sLm1hdGNoKC9BVlotQ09ORklHLVNUQVJUKFtcc1xTXSo_KUFWWi1DT05GSUctRU5ELyk7CiAgaWYgKCFtKSB7IGFsZXJ0KCfQmtC-0L3RhNC40LMg0L3QsCBhdnotZGF0YSDQvdC1INC90LDQudC00LXQvS4g0J_RgNC-0LLQtdGA0YzRgtC1INC80LDRgNC60LXRgNGLLicpOyByZXR1cm47IH0KCiAgbGV0IGNmZzsKICB0cnkgewogICAgY29uc3QgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBib3guaW5uZXJIVE1MID0gbVsxXTsKICAgIGNmZyA9IGRlY29kZShib3gudGV4dENvbnRlbnQpOwogIH0gY2F0Y2ggKGUpIHsgYWxlcnQoJ9Ca0L7QvdGE0LjQsyDQvdC1INGH0LjRgtCw0LXRgtGB0Y86ICcgKyBlLm1lc3NhZ2UpOyByZXR1cm47IH0KCiAgLyogLS0tLS0tLS0tLSDRgdGB0YvQu9C60Lgg0LjQtyDQs9Cw0LvQtdGA0LXQuSBhdnotZGF0YSAtLS0tLS0tLS0tICovCiAgY29uc3QgZGF0YURvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoZGF0YUh0bWwsICd0ZXh0L2h0bWwnKTsKICBjb25zdCBwaWNrID0gKGltZykgPT4gewogICAgY29uc3QgcyA9IGltZy5nZXRBdHRyaWJ1dGUoJ3NyY3NldCcpIHx8IGltZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3Jjc2V0JykgfHwgJyc7CiAgICBpZiAoIXMpIHJldHVybiBpbWcuZ2V0QXR0cmlidXRlKCdzcmMnKSB8fCAnJzsKICAgIGNvbnN0IGxpc3QgPSBzLnNwbGl0KCcsJykubWFwKHggPT4gewogICAgICBjb25zdCBwID0geC50cmltKCkuc3BsaXQoL1xzKy8pOwogICAgICByZXR1cm4geyB1OiBwWzBdLCB3OiBwYXJzZUludChwWzFdKSB8fCAwIH07CiAgICB9KS5zb3J0KChhLCBiKSA9PiBiLncgLSBhLncpOwogICAgY29uc3QgYiA9IGxpc3QuZmlsdGVyKHAgPT4gcC53IDw9IE1BWFcpWzBdIHx8IGxpc3RbbGlzdC5sZW5ndGggLSAxXTsKICAgIHJldHVybiBiLnUuaW5kZXhPZignLy8nKSA9PT0gMCA_ICdodHRwczonICsgYi51IDogYi51OwogIH07CiAgY29uc3QgdGh1bWIgPSAoaW1nKSA9PiB7CiAgICBjb25zdCBzID0gaW1nLmdldEF0dHJpYnV0ZSgnc3Jjc2V0JykgfHwgaW1nLmdldEF0dHJpYnV0ZSgnZGF0YS1zcmNzZXQnKSB8fCAnJzsKICAgIGlmICghcykgcmV0dXJuIHBpY2soaW1nKTsKICAgIGNvbnN0IGxpc3QgPSBzLnNwbGl0KCcsJykubWFwKHggPT4gewogICAgICBjb25zdCBwID0geC50cmltKCkuc3BsaXQoL1xzKy8pOwogICAgICByZXR1cm4geyB1OiBwWzBdLCB3OiBwYXJzZUludChwWzFdKSB8fCAwIH07CiAgICB9KS5zb3J0KChhLCBiKSA9PiBhLncgLSBiLncpOwogICAgY29uc3QgYiA9IGxpc3QuZmlsdGVyKHAgPT4gcC53ID49IDI4MClbMF0gfHwgbGlzdFswXTsKICAgIHJldHVybiBiLnUuaW5kZXhPZignLy8nKSA9PT0gMCA_ICdodHRwczonICsgYi51IDogYi51OwogIH07CgogIGNvbnN0IGdhbGxlcnlJbWdzID0gWy4uLmRhdGFEb2MucXVlcnlTZWxlY3RvckFsbCgnaW1nJyldLmZpbHRlcihpID0-CiAgICAoaS5nZXRBdHRyaWJ1dGUoJ3NyY3NldCcpIHx8IGkuZ2V0QXR0cmlidXRlKCdkYXRhLXNyY3NldCcpIHx8ICcnKS5pbmRleE9mKCdpLndmb2xpby5ydScpID49IDApOwogIGNvbnN0IGdhbGxlcnkgPSBnYWxsZXJ5SW1ncy5tYXAoaSA9PiAoeyBmdWxsOiBwaWNrKGkpLCBzbWFsbDogdGh1bWIoaSkgfSkpOwoKICAvKiAtLS0tLS0tLS0tINCy0ZHRgNGB0YLQutCwIC0tLS0tLS0tLS0gKi8KICBjb25zdCBjc3MgPSBgCiAgLyog0KHRgtC40LvQuCDRgdCw0LnRgtCwINC_0LXRgNC10LHQuNCy0LDRjtGCINC_0LDQvdC10LvRjCDigJQg0LfQsNC00LDRkdC8INCy0YHRkSDRj9Cy0L3QviDQuCDRgSDQv9GA0LjQvtGA0LjRgtC10YLQvtC8LiAqLwogICNhdnpwLXJvb3QsICNhdnpwLXJvb3QgKntjb2xvcjojMWQxZDFmICFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxzeXN0ZW0tdWksc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgbGV0dGVyLXNwYWNpbmc6bm9ybWFsICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06bm9uZSAhaW1wb3J0YW50O2JveC1zaXppbmc6Ym9yZGVyLWJveH0KICAjYXZ6cC1yb290IGlucHV0LCNhdnpwLXJvb3QgdGV4dGFyZWF7YmFja2dyb3VuZDojZmZmICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IzFkMWQxZiAhaW1wb3J0YW50OwogICAgb3BhY2l0eToxICFpbXBvcnRhbnQ7Zm9udC1zaXplOjE0cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjQgIWltcG9ydGFudH0KICAjYXZ6cC1yb290IGJ1dHRvbntiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzFkMWQxZiAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxNHB4ICFpbXBvcnRhbnR9CiAgI2F2enAtcm9vdCAuYXZ6cC1iLnB7YmFja2dyb3VuZDojMWQxZDFmICFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiNmZmYgIWltcG9ydGFudH0KICAjYXZ6cC1yb290e3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoyMTQ3NDgzNjQ3O2JhY2tncm91bmQ6cmdiYSgyMCwyMCwyMiwuNTUpOwogICAgZm9udDoxNHB4LzEuNSAtYXBwbGUtc3lzdGVtLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOiMxZDFkMWY7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzoyNHB4fQogICNhdnpwLXdpbntiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czoxNHB4O3dpZHRoOm1pbig5ODBweCwxMDAlKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uOwogICAgYm94LXNoYWRvdzowIDMwcHggODBweCByZ2JhKDAsMCwwLC4zNSk7b3ZlcmZsb3c6aGlkZGVufQogICNhdnpwLWhlYWR7cGFkZGluZzoxNnB4IDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U2ZTZlOTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwfQogICNhdnpwLWhlYWQgaDJ7bWFyZ2luOjA7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2ZsZXg6MX0KICAjYXZ6cC1ib2R5e2ZsZXg6MTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6OHB4IDIwcHggMjRweH0KICAjYXZ6cC1mb290e3BhZGRpbmc6MTRweCAyMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTk7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcH0KICAuYXZ6cC1ie2ZvbnQ6aW5oZXJpdDtwYWRkaW5nOjlweCAxNnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgI2QyZDJkNztiYWNrZ3JvdW5kOiNmZmY7Y3Vyc29yOnBvaW50ZXJ9CiAgLmF2enAtYjpob3Zlcntib3JkZXItY29sb3I6Izg2ODY4Yn0KICAuYXZ6cC1iLnB7YmFja2dyb3VuZDojMWQxZDFmO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiMxZDFkMWZ9CiAgLmF2enAtYi5wOmhvdmVye2JhY2tncm91bmQ6IzMzM30KICAuYXZ6cC1zZWN7Ym9yZGVyOjFweCBzb2xpZCAjZTZlNmU5O2JvcmRlci1yYWRpdXM6MTBweDttYXJnaW4tdG9wOjE0cHg7b3ZlcmZsb3c6aGlkZGVufQogIC5hdnpwLXNlYz5zdW1tYXJ5e3BhZGRpbmc6MTJweCAxNHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYwMDtiYWNrZ3JvdW5kOiNmYWZhZmE7bGlzdC1zdHlsZTpub25lfQogIC5hdnpwLXNlYz5zdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vye2Rpc3BsYXk6bm9uZX0KICAuYXZ6cC1zZWM-c3VtbWFyeTo6YmVmb3Jle2NvbnRlbnQ6IuKWuCAiO2NvbG9yOiM4Njg2OGJ9CiAgLmF2enAtc2VjW29wZW5dPnN1bW1hcnk6OmJlZm9yZXtjb250ZW50OiLilr4gIn0KICAuYXZ6cC1pbntwYWRkaW5nOjE0cHh9CiAgLmF2enAtZnttYXJnaW4tYm90dG9tOjEycHh9CiAgLmF2enAtZiBsYWJlbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMXB4O2NvbG9yOiM4Njg2OGIgIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjRweH0KICAuYXZ6cC1mIGlucHV0LC5hdnpwLWYgdGV4dGFyZWF7d2lkdGg6MTAwJTtmb250OmluaGVyaXQ7cGFkZGluZzo4cHggMTBweDtib3JkZXI6MXB4IHNvbGlkICNkMmQyZDc7Ym9yZGVyLXJhZGl1czo3cHg7YmFja2dyb3VuZDojZmZmfQogIC5hdnpwLWYgdGV4dGFyZWF7bWluLWhlaWdodDo3MHB4O3Jlc2l6ZTp2ZXJ0aWNhbH0KICAuYXZ6cC1yb3d7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxMnB4fQogIC8qINC90LAg0YLQtdC70LXRhNC-0L3QtSDQv9Cw0YDQvdGL0LUg0L_QvtC70Y8g0LLRgdGC0LDRjtGCINC00YDRg9CzINC_0L7QtCDQtNGA0YPQs9CwIOKAlCDQuNC90LDRh9C1INC_0L4gMTgwcHgg0L3QsCDQv9C-0LvQtSAqLwogIEBtZWRpYSAobWF4LXdpZHRoOjU2MHB4KXsKICAgIC5hdnpwLXJvd3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfQogICAgI2F2enAtd2lue2JvcmRlci1yYWRpdXM6MH0KICB9CiAgLmF2enAtY2FyZHtib3JkZXI6MXB4IHNvbGlkICNlY2VjZWY7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoxMnB4O21hcmdpbi1ib3R0b206MTJweDtiYWNrZ3JvdW5kOiNmY2ZjZmR9CiAgLmF2enAtY2FyZCBoNHttYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjEycHg7Y29sb3I6Izg2ODY4YiAhaW1wb3J0YW50fQogIC5hdnpwLWltZ3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0KICAuYXZ6cC1pbWcgaW1ne3dpZHRoOjc4cHg7aGVpZ2h0Ojk4cHg7b2JqZWN0LWZpdDpjb3Zlcjtib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOiNlY2VjZWM7ZmxleDpub25lfQogIC5hdnpwLWltZyBpbWcuYmFke291dGxpbmU6MnB4IHNvbGlkICNjMDM5MmJ9CiAgLmF2enAtaW1nIC5ne2ZsZXg6MX0KICAuYXZ6cC1ub3Rle2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM4Njg2OGI7bWFyZ2luOjZweCAwIDB9CiAgLmF2enAtZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2×1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDg0cHgsMWZyKSk7Z2FwOjhweDttYXgtaGVpZ2h0OjMyMHB4O292ZXJmbG93OmF1dG87CiAgICBib3JkZXI6MXB4IHNvbGlkICNlY2VjZWY7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoxMHB4fQogIC5hdnpwLWdyaWQgZmlndXJle21hcmdpbjowO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlfQogIC5hdnpwLWdyaWQgaW1ne3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjMvNDtvYmplY3QtZml0OmNvdmVyO2JvcmRlci1yYWRpdXM6NXB4O2Rpc3BsYXk6YmxvY2t9CiAgLmF2enAtZ3JpZCBmaWd1cmUuc2VsOjphZnRlcntjb250ZW50OiLinJMiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOwogICAgYmFja2dyb3VuZDpyZ2JhKDI5LDI5LDMxLC41NSk7Y29sb3I6I2ZmZjtmb250LXNpemU6MjJweDtib3JkZXItcmFkaXVzOjVweH0KICAjYXZ6cC1vdXR7d2lkdGg6MTAwJTtoZWlnaHQ6MTEwcHg7Zm9udDoxMXB4LzEuNCB1aS1tb25vc3BhY2UsbW9ub3NwYWNlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkICNkMmQyZDc7Ym9yZGVyLXJhZGl1czo4cHh9CiAgI2F2enAtbXNne2NvbG9yOiMxZDdhM2U7Zm9udC1zaXplOjEzcHh9CiAgYDsKCiAgY29uc3QgZXNjID0gKHMpID0-IFN0cmluZyhzID09IG51bGwgPyAnJyA6IHMpCiAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpLnJlcGxhY2UoLyIvZywgJyZxdW90OycpOwoKICBjb25zdCBmaWVsZCA9IChsYWJlbCwgcGF0aCwgdmFsLCB0eXBlKSA9PiB7CiAgICBjb25zdCB0YWcgPSB0eXBlID09PSAnYXJlYScKICAgICAgPyBgPHRleHRhcmVhIGRhdGEtcD0iJHtwYXRofSI-JHtlc2ModmFsKX08L3RleHRhcmVhPmAKICAgICAgOiBgPGlucHV0IGRhdGEtcD0iJHtwYXRofSIgdmFsdWU9IiR7ZXNjKHZhbCl9Ij5gOwogICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJhdnpwLWYiPjxsYWJlbD4ke2xhYmVsfTwvbGFiZWw-JHt0YWd9PC9kaXY-YDsKICB9OwoKICBjb25zdCBpbWdGaWVsZCA9IChsYWJlbCwgcGF0aCwgdmFsKSA9PiBgCiAgICA8ZGl2IGNsYXNzPSJhdnpwLWYiPjxsYWJlbD4ke2xhYmVsfTwvbGFiZWw-CiAgICAgIDxkaXYgY2xhc3M9ImF2enAtaW1nIj4KICAgICAgICA8aW1nIHNyYz0iJHtlc2ModmFsKX0iIGRhdGEtcHJldj0iJHtwYXRofSIgb25lcnJvcj0idGhpcy5jbGFzc0xpc3QuYWRkKCdiYWQnKSI-CiAgICAgICAgPGRpdiBjbGFzcz0iZyI-CiAgICAgICAgICA8aW5wdXQgZGF0YS1wPSIke3BhdGh9IiB2YWx1ZT0iJHtlc2ModmFsKX0iPgogICAgICAgICAgPHAgY2xhc3M9ImF2enAtbm90ZSI-PGJ1dHRvbiBjbGFzcz0iYXZ6cC1iIiBkYXRhLWNob29zZT0iJHtwYXRofSIgc3R5bGU9InBhZGRpbmc6NXB4IDEwcHg7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDo2cHgiPtCS0YvQsdGA0LDRgtGMINC40Lcg0LPQsNC70LXRgNC10Lg8L2J1dHRvbj48L3A-CiAgICAgICAgPC9kaXY-CiAgICAgIDwvZGl2PgogICAgPC9kaXY-YDsKCiAgbGV0IGh0bWwgPSBgPHN0eWxlPiR7Y3NzfTwvc3R5bGU-PGRpdiBpZD0iYXZ6cC13aW4iPgogICAgPGRpdiBpZD0iYXZ6cC1oZWFkIj4KICAgICAgPGgyPtCf0LDQvdC10LvRjCBBdmFuemF0bzwvaDI-CiAgICAgIDxidXR0b24gY2xhc3M9ImF2enAtYiIgaWQ9ImF2enAtY2xvc2UiPtCX0LDQutGA0YvRgtGMPC9idXR0b24-CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImF2enAtYm9keSI-YDsKCiAgLyogSEVSTyAqLwogIGh0bWwgKz0gYDxkZXRhaWxzIGNsYXNzPSJhdnpwLXNlYyIgb3Blbj48c3VtbWFyeT7QqNCw0L_QutCwPC9zdW1tYXJ5PjxkaXYgY2xhc3M9ImF2enAtaW4iPgogICAgJHtmaWVsZCgn0J3QsNC00LfQsNCz0L7Qu9C-0LLQvtC6JywgJ2hlcm8uZXllYnJvdycsIGNmZy5oZXJvLmV5ZWJyb3cpfQogICAgPGRpdiBjbGFzcz0iYXZ6cC1yb3ciPiR7ZmllbGQoJ9CY0LzRjywg0YHRgtGA0L7QutCwIDEnLCAnaGVyby5uYW1lMScsIGNmZy5oZXJvLm5hbWUxKX0ke2ZpZWxkKCfQmNC80Y8sINGB0YLRgNC-0LrQsCAyJywgJ2hlcm8ubmFtZTInLCBjZmcuaGVyby5uYW1lMil9PC9kaXY-CiAgICAke2ZpZWxkKCfQn9C-0LTQt9Cw0LPQvtC70L7QstC-0LonLCAnaGVyby5sZWRlJywgY2ZnLmhlcm8ubGVkZSwgJ2FyZWEnKX0KICAgIDxkaXYgY2xhc3M9ImF2enAtcm93Ij4ke2ZpZWxkKCfQodGB0YvQu9C60LAg0L3QsCDRhtC10L3RiyDigJQg0YLQtdC60YHRgicsICdoZXJvLnByaWNlTGluay50ZXh0JywgY2ZnLmhlcm8ucHJpY2VMaW5rLnRleHQpfSR7ZmllbGQoJ9Ch0YHRi9C70LrQsCDQvdCwINGG0LXQvdGLIOKAlCDQsNC00YDQtdGBJywgJ2hlcm8ucHJpY2VMaW5rLmhyZWYnLCBjZmcuaGVyby5wcmljZUxpbmsuaHJlZil9PC9kaXY-CiAgPC9kaXY-PC9kZXRhaWxzPmA7CgogIC8qINCi0JjQmtCV0KAgKi8KICBodG1sICs9IGA8ZGV0YWlscyBjbGFzcz0iYXZ6cC1zZWMiPjxzdW1tYXJ5PtCR0LXQs9GD0YnQsNGPINGB0YLRgNC-0LrQsCAoJHtjZmcudGlja2VyLmxlbmd0aH0pPC9zdW1tYXJ5PjxkaXYgY2xhc3M9ImF2enAtaW4iPmA7CiAgY2ZnLnRpY2tlci5mb3JFYWNoKCh0LCBpKSA9PiB7CiAgICBodG1sICs9IGA8ZGl2IGNsYXNzPSJhdnpwLWNhcmQiPjxoND7Qn9GD0L3QutGCICR7aSArIDF9PC9oND4KICAgICAgPGRpdiBjbGFzcz0iYXZ6cC1yb3ciPiR7ZmllbGQoJ9Ci0LXQutGB0YInLCBgdGlja2VyLiR7aX0ubGFiZWxgLCB0LmxhYmVsKX0ke2ZpZWxkKCfQkNC00YDQtdGBJywgYHRpY2tlci4ke2l9LmhyZWZgLCB0LmhyZWYpfTwvZGl2PjwvZGl2PmA7CiAgfSk7CiAgaHRtbCArPSBgPC9kaXY-PC9kZXRhaWxzPmA7CgogIC8qINCf0JvQmNCi0JrQmCAqLwogIGh0bWwgKz0gYDxkZXRhaWxzIGNsYXNzPSJhdnpwLXNlYyI-PHN1bW1hcnk-0J_Qu9C40YLQutC4INC_0L7RgNGC0YTQvtC70LjQviAoJHtjZmcudGlsZXMubGVuZ3RofSk8L3N1bW1hcnk-PGRpdiBjbGFzcz0iYXZ6cC1pbiI-YDsKICBjZmcudGlsZXMuZm9yRWFjaCgodCwgaSkgPT4gewogICAgaHRtbCArPSBgPGRpdiBjbGFzcz0iYXZ6cC1jYXJkIj48aDQ-0J_Qu9C40YLQutCwICR7aSArIDF9PC9oND4KICAgICAgPGRpdiBjbGFzcz0iYXZ6cC1yb3ciPiR7ZmllbGQoJ9CX0LDQs9C-0LvQvtCy0L7QuicsIGB0aWxlcy4ke2l9LnRpdGxlYCwgdC50aXRsZSl9JHtmaWVsZCgn0J_QvtC00L_QuNGB0YwnLCBgdGlsZXMuJHtpfS5jYXB0aW9uYCwgdC5jYXB0aW9uKX08L2Rpdj4KICAgICAgJHtmaWVsZCgn0KHRgdGL0LvQutCwJywgYHRpbGVzLiR7aX0uaHJlZmAsIHQuaHJlZil9CiAgICAgICR7dC5pbWcgIT09IHVuZGVmaW5lZCA_IGltZ0ZpZWxkKCfQmtCw0YDRgtC40L3QutCwJywgYHRpbGVzLiR7aX0uaW1nYCwgdC5pbWcpICsgZmllbGQoJ0FsdC3RgtC10LrRgdGCJywgYHRpbGVzLiR7aX0uYWx0YCwgdC5hbHQpIDogJyd9CiAgICAgICR7dC52aWRlbyAhPT0gdW5kZWZpbmVkID8gZmllbGQoJ9CS0LjQtNC10L4gKNC80LXQvdGP0YLRjCDQvdC1INC90YPQttC90L4pJywgYHRpbGVzLiR7aX0udmlkZW9gLCB0LnZpZGVvKSA6ICcnfQogICAgPC9kaXY-YDsKICB9KTsKICBodG1sICs9IGA8L2Rpdj48L2RldGFpbHM-YDsKCiAgLyog0J7QkdCeINCc0J3QlSAqLwogIGh0bWwgKz0gYDxkZXRhaWxzIGNsYXNzPSJhdnpwLXNlYyI-PHN1bW1hcnk-0J7QsdC-INC80L3QtTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJhdnpwLWluIj4KICAgICR7aW1nRmllbGQoJ9Ck0L7RgtC-0LPRgNCw0YTQuNGPJywgJ2Fib3V0LmltZycsIGNmZy5hYm91dC5pbWcpfQogICAgJHtmaWVsZCgnQWx0LdGC0LXQutGB0YInLCAnYWJvdXQuYWx0JywgY2ZnLmFib3V0LmFsdCl9CiAgICA8ZGl2IGNsYXNzPSJhdnpwLXJvdyI-JHtmaWVsZCgn0J3QsNC00L_QuNGB0YwnLCAnYWJvdXQubGFiZWwnLCBjZmcuYWJvdXQubGFiZWwpfSR7ZmllbGQoJ9CX0LDQs9C-0LvQvtCy0L7QuiAo0LzQvtC20L3QviAmbHQ7YnImZ3Q7KScsICdhYm91dC50aXRsZScsIGNmZy5hYm91dC50aXRsZSl9PC9kaXY-CiAgICAke2ZpZWxkKCfQkNCx0LfQsNGGIDEnLCAnYWJvdXQucDEnLCBjZmcuYWJvdXQucDEsICdhcmVhJyl9CiAgICAke2ZpZWxkKCfQkNCx0LfQsNGGIDInLCAnYWJvdXQucDInLCBjZmcuYWJvdXQucDIsICdhcmVhJyl9YDsKICBjZmcuYWJvdXQuc3RhdHMuZm9yRWFjaCgocywgaSkgPT4gewogICAgaHRtbCArPSBgPGRpdiBjbGFzcz0iYXZ6cC1jYXJkIj48aDQ-0KbQuNGE0YDQsCAke2kgKyAxfTwvaDQ-PGRpdiBjbGFzcz0iYXZ6cC1yb3ciPgogICAgICAke2ZpZWxkKCfQl9C90LDRh9C10L3QuNC1JywgYGFib3V0LnN0YXRzLiR7aX0udGFyZ2V0YCwgcy50YXJnZXQpfQogICAgICAke2ZpZWxkKCfQodGD0YTRhNC40LrRgScsIGBhYm91dC5zdGF0cy4ke2l9LnN1ZmZpeGAsIHMuc3VmZml4KX08L2Rpdj4KICAgICAgJHtmaWVsZCgn0J_QvtC00L_QuNGB0YwnLCBgYWJvdXQuc3RhdHMuJHtpfS5sYWJlbGAsIHMubGFiZWwpfTwvZGl2PmA7CiAgfSk7CiAgaHRtbCArPSBgPC9kaXY-PC9kZXRhaWxzPmA7CgogIC8qINCd0JDQk9Cg0JDQlNCrICovCiAgaHRtbCArPSBgPGRldGFpbHMgY2xhc3M9ImF2enAtc2VjIj48c3VtbWFyeT7QndCw0LPRgNCw0LTRiyAoJHtjZmcuYXdhcmRzLmxlbmd0aH0pPC9zdW1tYXJ5PjxkaXYgY2xhc3M9ImF2enAtaW4iPmA7CiAgY2ZnLmF3YXJkcy5mb3JFYWNoKChhLCBpKSA9PiB7CiAgICBodG1sICs9IGA8ZGl2IGNsYXNzPSJhdnpwLWNhcmQiPjxoND7QndCw0LPRgNCw0LTQsCAke2kgKyAxfTwvaDQ-CiAgICAgIDxkaXYgY2xhc3M9ImF2enAtcm93Ij4ke2ZpZWxkKCfQndCw0LfQstCw0L3QuNC1JywgYGF3YXJkcy4ke2l9Lm1hcmtgLCBhLm1hcmspfSR7ZmllbGQoJ9Cf0L7Rj9GB0L3QtdC90LjQtScsIGBhd2FyZHMuJHtpfS5zdWJgLCBhLnN1Yil9PC9kaXY-CiAgICAgIDxkaXYgY2xhc3M9ImF2enAtcm93Ij4ke2ZpZWxkKCfQotC40L8nLCBgYXdhcmRzLiR7aX0ubWV0YWAsIGEubWV0YSl9JHtmaWVsZCgn0KHRgdGL0LvQutCwICjQv9GD0YHRgtC-IOKAlCDQsdC10Lcg0YHRgdGL0LvQutC4KScsIGBhd2FyZHMuJHtpfS5ocmVmYCwgYS5ocmVmIHx8ICcnKX08L2Rpdj48L2Rpdj5gOwogIH0pOwogIGh0bWwgKz0gYDwvZGl2PjwvZGV0YWlscz5gOwoKICAvKiDQn9Cg0JXQmNCc0KPQqdCV0KHQotCS0JAgKi8KICBodG1sICs9IGA8ZGV0YWlscyBjbGFzcz0iYXZ6cC1zZWMiPjxzdW1tYXJ5PtCf0YDQtdC40LzRg9GJ0LXRgdGC0LLQsCAoJHtjZmcuYWR2YW50YWdlcy5sZW5ndGh9KTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJhdnpwLWluIj5gOwogIGNmZy5hZHZhbnRhZ2VzLmZvckVhY2goKGEsIGkpID0-IHsKICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9ImF2enAtY2FyZCI-PGg0PtCf0YPQvdC60YIgJHtpICsgMX08L2g0PgogICAgICAke2ZpZWxkKCfQl9Cw0LPQvtC70L7QstC-0LonLCBgYWR2YW50YWdlcy4ke2l9LnRpdGxlYCwgYS50aXRsZSl9CiAgICAgICR7ZmllbGQoJ9Ci0LXQutGB0YInLCBgYWR2YW50YWdlcy4ke2l9LnRleHRgLCBhLnRleHQsICdhcmVhJyl9PC9kaXY-YDsKICB9KTsKICBodG1sICs9IGA8L2Rpdj48L2RldGFpbHM-YDsKCiAgLyogQ1RBICsg0KTQo9Ci0JXQoCAqLwogIGh0bWwgKz0gYDxkZXRhaWxzIGNsYXNzPSJhdnpwLXNlYyI-PHN1bW1hcnk-0J_RgNC40LfRi9CyINC4INGE0YPRgtC10YA8L3N1bW1hcnk-PGRpdiBjbGFzcz0iYXZ6cC1pbiI-CiAgICAke2ZpZWxkKCfQl9Cw0LPQvtC70L7QstC-0Log0L_RgNC40LfRi9Cy0LAgKNC80L7QttC90L4gJmx0O2JyJmd0OyknLCAnY3RhLnRpdGxlJywgY2ZnLmN0YS50aXRsZSl9YDsKICBjZmcuY3RhLmJ1dHRvbnMuZm9yRWFjaCgoYiwgaSkgPT4gewogICAgaHRtbCArPSBgPGRpdiBjbGFzcz0iYXZ6cC1jYXJkIj48aDQ-0JrQvdC-0L_QutCwICR7aSArIDF9PC9oND48ZGl2IGNsYXNzPSJhdnpwLXJvdyI-CiAgICAgICR7ZmllbGQoJ9Ci0LXQutGB0YInLCBgY3RhLmJ1dHRvbnMuJHtpfS50ZXh0YCwgYi50ZXh0KX0ke2ZpZWxkKCfQkNC00YDQtdGBJywgYGN0YS5idXR0b25zLiR7aX0uaHJlZmAsIGIuaHJlZil9PC9kaXY-PC9kaXY-YDsKICB9KTsKICBodG1sICs9IGZpZWxkKCfQmtC-0L_QuNGA0LDQudGCJywgJ2Zvb3Rlci5jb3B5JywgY2ZnLmZvb3Rlci5jb3B5KTsKICBjZmcuZm9vdGVyLnNvY2lhbHMuZm9yRWFjaCgocywgaSkgPT4gewogICAgaHRtbCArPSBgPGRpdiBjbGFzcz0iYXZ6cC1jYXJkIj48aDQ-0KHQvtGG0YHQtdGC0YwgJHtpICsgMX08L2g0PjxkaXYgY2xhc3M9ImF2enAtcm93Ij4KICAgICAgJHtmaWVsZCgn0J3QsNC30LLQsNC90LjQtScsIGBmb290ZXIuc29jaWFscy4ke2l9LmxhYmVsYCwgcy5sYWJlbCl9JHtmaWVsZCgn0JDQtNGA0LXRgScsIGBmb290ZXIuc29jaWFscy4ke2l9LmhyZWZgLCBzLmhyZWYpfTwvZGl2PjwvZGl2PmA7CiAgfSk7CiAgaHRtbCArPSBgPC9kaXY-PC9kZXRhaWxzPmA7CgogIC8qINCR0JDQndCd0JXQoCAqLwogIGh0bWwgKz0gYDxkZXRhaWxzIGNsYXNzPSJhdnpwLXNlYyI-PHN1bW1hcnk-0JrQsNC00YDRiyDQsdCw0L3QvdC10YDQsCAoJHtjZmcuYmFubmVyLmxlbmd0aH0g0LjQtyAke2dhbGxlcnkubGVuZ3RofSDQsiDQs9Cw0LvQtdGA0LXRj9GFKTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJhdnpwLWluIj4KICAgIDxwIGNsYXNzPSJhdnpwLW5vdGUiPtCe0YLQvNC10YfQtdC90L3Ri9C1INCz0LDQu9C-0YfQutC-0Lkg0YPRh9Cw0YHRgtCy0YPRjtGCINCyINGB0LvQsNC50LTQtdGA0LUuINCd0LDQttC80LjRgtC1INC90LAg0YHQvdC40LzQvtC6LCDRh9GC0L7QsdGLINCy0LrQu9GO0YfQuNGC0Ywg0LjQu9C4INCy0YvQutC70Y7Rh9C40YLRjC48L3A-CiAgICA8ZGl2IGNsYXNzPSJhdnpwLWdyaWQiIGlkPSJhdnpwLWJncmlkIj48L2Rpdj4KICAgIDxwIGNsYXNzPSJhdnpwLW5vdGUiIGlkPSJhdnpwLWJjb3VudCI-PC9wPgogIDwvZGl2PjwvZGV0YWlscz5gOwoKICBodG1sICs9IGA8L2Rpdj4KICAgIDxkaXYgaWQ9ImF2enAtZm9vdCI-CiAgICAgIDxidXR0b24gY2xhc3M9ImF2enAtYiBwIiBpZD0iYXZ6cC1idWlsZCI-0KHQvtCx0YDQsNGC0Ywg0Lgg0YHQutC-0L_QuNGA0L7QstCw0YLRjDwvYnV0dG9uPgogICAgICA8c3BhbiBpZD0iYXZ6cC1tc2ciPjwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0icGFkZGluZzowIDIwcHggMThweCI-PHRleHRhcmVhIGlkPSJhdnpwLW91dCIgc3BlbGxjaGVjaz0iZmFsc2UiIHBsYWNlaG9sZGVyPSLQl9C00LXRgdGMINC_0L7Rj9Cy0LjRgtGB0Y8g0LrQvtC90YTQuNCzIj48L3RleHRhcmVhPjwvZGl2PgogIDwvZGl2PmA7CgogIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICByb290LmlkID0gJ2F2enAtcm9vdCc7CiAgcm9vdC5pbm5lckhUTUwgPSBodG1sOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocm9vdCk7CgogIC8qIC0tLS0tLS0tLS0g0YHQtdGC0LrQsCDQsdCw0L3QvdC10YDQsCAtLS0tLS0tLS0tICovCiAgY29uc3QgY2hvc2VuID0gbmV3IFNldChjZmcuYmFubmVyKTsKICBjb25zdCBiZ3JpZCA9IHJvb3QucXVlcnlTZWxlY3RvcignI2F2enAtYmdyaWQnKTsKICBjb25zdCBiY291bnQgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNhdnpwLWJjb3VudCcpOwogIGNvbnN0IGRyYXdDb3VudCA9ICgpID0-IHsgYmNvdW50LnRleHRDb250ZW50ID0gJ9CS0YvQsdGA0LDQvdC-INC60LDQtNGA0L7QsjogJyArIGNob3Nlbi5zaXplOyB9OwogIGdhbGxlcnkuZm9yRWFjaCgoZykgPT4gewogICAgY29uc3QgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ZpZ3VyZScpOwogICAgaWYgKGNob3Nlbi5oYXMoZy5mdWxsKSkgZi5jbGFzc05hbWUgPSAnc2VsJzsKICAgIGYuaW5uZXJIVE1MID0gYDxpbWcgc3JjPSIke2cuc21hbGx9IiBsb2FkaW5nPSJsYXp5Ij5gOwogICAgZi5vbmNsaWNrID0gKCkgPT4gewogICAgICBpZiAoY2hvc2VuLmhhcyhnLmZ1bGwpKSB7IGNob3Nlbi5kZWxldGUoZy5mdWxsKTsgZi5jbGFzc05hbWUgPSAnJzsgfQogICAgICBlbHNlIHsgY2hvc2VuLmFkZChnLmZ1bGwpOyBmLmNsYXNzTmFtZSA9ICdzZWwnOyB9CiAgICAgIGRyYXdDb3VudCgpOwogICAgfTsKICAgIGJncmlkLmFwcGVuZENoaWxkKGYpOwogIH0pOwogIGRyYXdDb3VudCgpOwoKICAvKiAtLS0tLS0tLS0tINC_0YDQtdCy0YzRjiDQutCw0YDRgtC40L3QvtC6IC0tLS0tLS0tLS0gKi8KICByb290LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0-IHsKICAgIGNvbnN0IHAgPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcCcpOwogICAgaWYgKCFwKSByZXR1cm47CiAgICBjb25zdCBwcmV2ID0gcm9vdC5xdWVyeVNlbGVjdG9yKGBpbWdbZGF0YS1wcmV2PSIke3B9Il1gKTsKICAgIGlmIChwcmV2KSB7IHByZXYuY2xhc3NMaXN0LnJlbW92ZSgnYmFkJyk7IHByZXYuc3JjID0gZS50YXJnZXQudmFsdWU7IH0KICB9KTsKCiAgLyogLS0tLS0tLS0tLSDQstGL0LHQvtGAINC60LDRgNGC0LjQvdC60Lgg0LjQtyDQs9Cw0LvQtdGA0LXQuCAtLS0tLS0tLS0tICovCiAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7CiAgICBjb25zdCBwID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWNob29zZScpOwogICAgaWYgKCFwKSByZXR1cm47CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBjb25zdCBwYW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBwYW5lLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246Zml4ZWQ7aW5zZXQ6OCU7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6MTJweDt6LWluZGV4OjIxNDc0ODM2NDc7cGFkZGluZzoxNnB4O292ZXJmbG93OmF1dG87Ym94LXNoYWRvdzowIDMwcHggODBweCByZ2JhKDAsMCwwLC40KSc7CiAgICBwYW5lLmlubmVySFRNTCA9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMHB4Ij7QktGL0LHQtdGA0LjRgtC1INGB0L3QuNC80L7QujwvcD48ZGl2IGNsYXNzPSJhdnpwLWdyaWQiPjwvZGl2Pic7CiAgICBjb25zdCBnID0gcGFuZS5xdWVyeVNlbGVjdG9yKCcuYXZ6cC1ncmlkJyk7CiAgICBnLnN0eWxlLm1heEhlaWdodCA9ICdub25lJzsKICAgIGdhbGxlcnkuZm9yRWFjaCgoaXQpID0-IHsKICAgICAgY29uc3QgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ZpZ3VyZScpOwogICAgICBmLmlubmVySFRNTCA9IGA8aW1nIHNyYz0iJHtpdC5zbWFsbH0iIGxvYWRpbmc9ImxhenkiPmA7CiAgICAgIGYub25jbGljayA9ICgpID0-IHsKICAgICAgICBjb25zdCBpbnAgPSByb290LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W2RhdGEtcD0iJHtwfSJdYCk7CiAgICAgICAgaW5wLnZhbHVlID0gaXQuZnVsbDsKICAgICAgICBjb25zdCBwcmV2ID0gcm9vdC5xdWVyeVNlbGVjdG9yKGBpbWdbZGF0YS1wcmV2PSIke3B9Il1gKTsKICAgICAgICBpZiAocHJldikgeyBwcmV2LmNsYXNzTGlzdC5yZW1vdmUoJ2JhZCcpOyBwcmV2LnNyYyA9IGl0LmZ1bGw7IH0KICAgICAgICBwYW5lLnJlbW92ZSgpOwogICAgICB9OwogICAgICBnLmFwcGVuZENoaWxkKGYpOwogICAgfSk7CiAgICBjb25zdCBjbG9zZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgY2xvc2UuY2xhc3NOYW1lID0gJ2F2enAtYic7CiAgICBjbG9zZS50ZXh0Q29udGVudCA9ICfQntGC0LzQtdC90LAnOwogICAgY2xvc2Uub25jbGljayA9ICgpID0-IHBhbmUucmVtb3ZlKCk7CiAgICBwYW5lLmFwcGVuZENoaWxkKGNsb3NlKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZSk7CiAgfSk7CgogIC8qIC0tLS0tLS0tLS0g0YHQsdC-0YDQutCwIC0tLS0tLS0tLS0gKi8KICBjb25zdCBzZXRQYXRoID0gKG9iaiwgcGF0aCwgdmFsKSA9PiB7CiAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTsKICAgIGxldCBvID0gb2JqOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIG8gPSBvW3BhcnRzW2ldXTsKICAgIG9bcGFydHNbcGFydHMubGVuZ3RoIC0gMV1dID0gdmFsOwogIH07CgogIHJvb3QucXVlcnlTZWxlY3RvcignI2F2enAtY2xvc2UnKS5vbmNsaWNrID0gKCkgPT4gcm9vdC5yZW1vdmUoKTsKCiAgcm9vdC5xdWVyeVNlbGVjdG9yKCcjYXZ6cC1idWlsZCcpLm9uY2xpY2sgPSBhc3luYyAoKSA9PiB7CiAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXBdJykuZm9yRWFjaCgoZWwpID0-IHsKICAgICAgY29uc3QgcCA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1wJyk7CiAgICAgIGxldCB2ID0gZWwudmFsdWU7CiAgICAgIGlmICgvXmF3YXJkc1wuXGQrXC5ocmVmJC8udGVzdChwKSAmJiB2LnRyaW0oKSA9PT0gJycpIHYgPSBudWxsOwogICAgICBzZXRQYXRoKGNmZywgcCwgdik7CiAgICB9KTsKICAgIGNmZy5iYW5uZXIgPSBbLi4uY2hvc2VuXTsKCiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoY2ZnKTsKICAgIGNvbnN0IGJ5dGVzID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGpzb24pOwogICAgbGV0IGJpbiA9ICcnOwogICAgYnl0ZXMuZm9yRWFjaChiID0-IHsgYmluICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7IH0pOwogICAgY29uc3QgYjY0ID0gYnRvYShiaW4pLnJlcGxhY2UoL1wrL2csICctJykucmVwbGFjZSgvXC8vZywgJ18nKS5yZXBsYWNlKC89KyQvLCAnJyk7CiAgICBjb25zdCBvdXQgPSAnQVZaLUNPTkZJRy1TVEFSVCcgKyBiNjQgKyAnQVZaLUNPTkZJRy1FTkQnOwoKICAgIGNvbnN0IHRhID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjYXZ6cC1vdXQnKTsKICAgIHRhLnZhbHVlID0gb3V0OwogICAgdGEuc2VsZWN0KCk7CiAgICBsZXQgb2sgPSBmYWxzZTsKICAgIHRyeSB7IG9rID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsgfSBjYXRjaCAoZSkge30KICAgIGlmICghb2spIHsgdHJ5IHsgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQob3V0KTsgb2sgPSB0cnVlOyB9IGNhdGNoIChlKSB7fSB9CiAgICByb290LnF1ZXJ5U2VsZWN0b3IoJyNhdnpwLW1zZycpLnRleHRDb250ZW50ID0gb2sKICAgICAgPyAn0KHQutC-0L_QuNGA0L7QstCw0L3Qvi4g0JLRgdGC0LDQstGM0YLQtSDQvdCwIGF2ei1kYXRhINCy0LzQtdGB0YLQviDRgdGC0LDRgNC-0LPQviDQutC-0L3RhNC40LPQsCDQuCDRgdC-0YXRgNCw0L3QuNGC0LUuJwogICAgICA6ICfQktGL0LTQtdC70LjRgtC1INGC0LXQutGB0YIg0L3QuNC20LUg0Lgg0YHQutC-0L_QuNGA0YPQudGC0LUg0LLRgNGD0YfQvdGD0Y4gKENtZCtDKS4nOwogIH07CgogIHJldHVybiAn0J_QsNC90LXQu9GMINC-0YLQutGA0YvRgtCwLic7Cn0pKCk7Cgp9fSwKe2lkOiJncmlkIix0aXRsZToi0KHQsdC-0YDRidC40Log0YHRgtCw0YLQuNGH0LXRgdC60L7QuSDRgdC10YLQutC4IixoaW50OiLQv9C10YDQtdGB0L7QsdGA0LDRgtGMINC60LDRgNGC0L7Rh9C60Lgg0LDQu9GM0LHQvtC80L7QsiDQuNC3INC70LjRgdGC0LjQvdCz0LAiLHBhZ2VzOlsiL3BvcnRyYWl0LXBob3Rvc2Vzc2lvbiJdLHJ1bjpmdW5jdGlvbigpewovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQVZaIMK3INCh0JHQntCg0KnQmNCaINCh0KLQkNCi0JjQp9CV0KHQmtCe0Jkg0KHQldCi0JrQmCDQkNCb0KzQkdCe0JzQntCSCgogICDQp9GC0L4g0LTQtdC70LDQtdGCOiDRh9C40YLQsNC10YIg0YjRgtCw0YLQvdGL0Lkg0LvQuNGB0YLQuNC90LMgd2ZvbGlvINC4INCy0YvQtNCw0ZHRgiDQs9C-0YLQvtCy0YPRjgogICDRgNCw0LfQvNC10YLQutGDINCy0YHQtdGFINC60LDRgNGC0L7Rh9C10Log0L7QtNC90LjQvCDQutGD0YHQutC-0Lwg4oCUINGC0YMg0LbQtSwg0YfRgtC-INGD0LbQtSDQstGI0LjRgtCwCiAgINCyINC60L7QtCDRgdGC0YDQsNC90LjRhtGLLiDQoNCw0Lcg0LIg0LrQstCw0YDRgtCw0Lsg0L_QtdGA0LXRgdC-0LHQuNGA0LDQtdGC0LUg0YHQtdGC0LrRgywg0LLRgdGC0LDQstC70Y_QtdGC0LUKICAg0LIg0LHQu9C-0Log0YHRgtGA0LDQvdC40YbRiywg0Lgg0L_QvtC00YLRj9C90YPRgtGL0LUg0YHQutGA0LjQv9GC0L7QvCDQsNC70YzQsdC-0LzRiyDRgdGC0LDQvdC-0LLRj9GC0YHRjwogICDRgdGC0LDRgtC40YfQtdGB0LrQuNC80Lg6INC40YUg0LLQuNC00Y_RgiDQutGA0LDRg9C70LXRgNGLINCY0JgsINC60L7RgtC-0YDRi9C1INC90LUg0LLRi9C_0L7Qu9C90Y_RjtGCIEpTLgoKICAg0JrQsNC6INC_0L7Qu9GM0LfQvtCy0LDRgtGM0YHRjzoKICAgICAxLiDQntGC0LrRgNGL0YLRjCBodHRwczovL2F2YW56YXRvLnJ1L3BvcnRyYWl0LXBob3Rvc2Vzc2lvbgogICAgIDIuINCa0L7QvdGB0L7Qu9GMINCx0YDQsNGD0LfQtdGA0LAg4oaSINCy0YHRgtCw0LLQuNGC0Ywg0Y3RgtC-0YIg0YTQsNC50Lsg4oaSIEVudGVyCiAgICAgMy4g0JTQvtC20LTQsNGC0YzRgdGPINC-0YLRh9GR0YLQsCwg0L3QsNC20LDRgtGMIMKr0KHQutC-0L_QuNGA0L7QstCw0YLRjCDRgdC10YLQutGDwrsKICAgICA0LiDQkiDQutC-0L3RgdGC0YDRg9C60YLQvtGA0LUg0LfQsNC80LXQvdC40YLRjCDRgdC-0LTQtdGA0LbQuNC80L7QtSA8ZGl2IGNsYXNzPSJncmlkIHdyYXAiCiAgICAgICAgaWQ9InB0LWdyaWQiPiAuLi4gPC9kaXY-INC90LAg0YHQutC-0L_QuNGA0L7QstCw0L3QvdC-0LUKICAgICA1LiDQldGB0LvQuCDQvNC10L3Rj9C70L7RgdGMINGH0LjRgdC70L4g0YHRitGR0LzQvtC6IOKAlCDQvtCx0L3QvtCy0LjRgtGMINC10YnRkSDRgtGA0Lgg0LzQtdGB0YLQsCwKICAgICAgICDQutC-0YLQvtGA0YvQtSDRgdCx0L7RgNGJ0LjQuiDRgtC-0LbQtSDQutC70LDQtNGR0YIg0LIg0LHRg9GE0LXRgCDQvtGC0LTQtdC70YzQvdC-0Lkg0LrQvdC-0L_QutC-0Lk6CiAgICAgICAg0YLQtdC60YHRgiAubGVkZSwgbnVtYmVyT2ZJdGVtcyDQuCBpdGVtTGlzdEVsZW1lbnQg0LIgSlNPTi1MRAoKICAg0J_RgNC-0LLQtdGA0LXQvdC-OiDQvdCwINGC0LXQutGD0YnQuNGFINC00LDQvdC90YvRhSDRgdCx0L7RgNGJ0LjQuiDQstGL0LTQsNGR0YIg0YDQsNC30LzQtdGC0LrRgywKICAg0L_QvtCx0LDQudGC0L7QstC-INGB0L7QstC_0LDQtNCw0Y7RidGD0Y4g0YEg0YLQvtC5LCDRh9GC0L4g0YHRgtC-0LjRgiDQvdCwINGB0YLRgNCw0L3QuNGG0LUg0YHQtdC50YfQsNGBLgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCihmdW5jdGlvbiAoKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICB2YXIgTElTVElOR19VUkwgPSAnL3BvcnRyYWl0LXBob3Rvc2Vzc2lvbi1hbGJ1bSc7CiAgdmFyIFNJWkVTID0gJyhtYXgtd2lkdGg6NDIwcHgpIDkydncsIChtYXgtd2lkdGg6NzYwcHgpIDQ2dncsIChtYXgtd2lkdGg6MTIwMHB4KSAzMXZ3LCAyM3Z3JzsKICB2YXIgU0NIRU1BX0lURU1TID0gMzA7ICAgLyog0YHQutC-0LvRjNC60L4g0YHRitGR0LzQvtC6INC_0LXRgNC10YfQuNGB0LvRj9GC0Ywg0LIgSlNPTi1MRCBJdGVtTGlzdCAqLwoKICAvKiDQotC1INC20LUg0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwLCDRh9GC0L4g0LIg0LTQstC40LbQutC1INGB0YLRgNCw0L3QuNGG0YsuINCc0LXQvdGP0LXRgtC1INC30LTQtdGB0Ywg4oCUCiAgICAg0L_QvtC80LXQvdGP0LnRgtC1INC4INCyIHN5bmNGcm9tTGlzdGluZywg0LjQvdCw0YfQtSDQutCw0YLQtdCz0L7RgNC40Lgg0YDQsNC30YrQtdC00YPRgtGB0Y8uICovCiAgdmFyIENBVF9XT1JEUyA9IFsKICAgIFsnc3RyZWV0JywgICBbJ9GD0LvQuNGHJywn0L_RgNC-0LPRg9C70L7Rh9C9Jywn0L_RgNC-0LPRg9C70LonLCfQv9Cw0YDQuicsJ9C90LDQsdC10YDQtdC20L0nLCfRhtC10L3RgtGAINC60LDQt9Cw0L0nLCfQv9C-INGG0LXQvdGC0YDRgycsJ9Cz0L7RgNC-0LQnLCfQtNCw0LzQsScsJ9GB0LrQstC10YAnLCfQtNCy0L7RgCcsJ9C60YDRi9GIJywn0LvQtdGBJywn0L_QvtC70LUnLCfQvtC30LXRgCcsJ9C60YDQtdC80LsnLCfRgNGL0L3QuicsJ9GB0YLRgNC-0LnQuicsJ9C80L7RgdGCJywn0LLQvtC60LfQsNC7Jywn0YPQu9C40YYnXV0sCiAgICBbJ3N0dWRpbycsICAgWyfRgdGC0YPQtNC4Jywn0YbQuNC60LvQvtGA0LDQvCcsJ9C_0LDQstC40LvRjNC-0L0nXV0sCiAgICBbJ2ludGVyaW9yJywgWyfQutC-0YTQtdC50L0nLCfQutC-0YTQtScsJ9C60LDRhNC1Jywn0YDQtdGB0YLQvtGA0LDQvScsJ9C-0YLQtdC7Jywn0LjQvdGC0LXRgNGM0LXRgCcsJ9Cw0YDRgiDQv9GA0L7RgdGC0YDQsNC9Jywn0LrQstCw0YDRgtC40YAnLCfQsNC_0LDRgNGC0LDQvNC10L3RgicsJ9C70L7RhNGCJywn0LHQuNCx0LvQuNC-0YLQtdC6Jywn0LTQvtC80LDRiNC9Jywn0LTQvtC80LAg0LIg0LrQsNC30LDQvdC4Jywn0YMg0L3QtdC1INC00L7QvNCwJywn0YMg0L3QtdGRINC00L7QvNCwJ11dLAogICAgWydtYWxlJywgICAgIFsn0LzRg9C20YHQuicsJ9C80YPQttGH0LjQvSddXSwKICAgIFsnZmFtaWx5JywgICBbJ9GB0LXQvNC10LknLCfQstC00LLQvtGR0LwnLCfQstC00LLQvtC10LwnLCfQstC70Y7QsdC7Jywn0LTQtdGCJywnbG92ZSBzdG9yeScsJ9C70LDQstGB0YLQvtGA0LgnLCfRgdC10YHRgtGAJywn0L_QvtC00YDRg9CzJ11dLAogICAgWydidXNpbmVzcycsIFsn0LTQtdC70L7QsicsJ9Cx0LjQt9C90LXRgScsJ9C70LjRh9C90L7Qs9C-INCx0YDQtdC90LTQsCcsJ9C70LjRh9C90YvQuSDQsdGA0LXQvdC0Jywn0L7RhNC40YEnLCfRgNC10LfRjtC80LUnLCfRgtCy0L7RgNGH0LXRgdC60L7Qs9C-INCx0YDQtdC90LTQsCddXQogIF07CgogIGZ1bmN0aW9uIGRldGVjdENhdHModGl0bGUpIHsKICAgIHZhciBsb3cgPSAodGl0bGUgfHwgJycpLnRvTG93ZXJDYXNlKCksIGZvdW5kID0gW107CiAgICBDQVRfV09SRFMuZm9yRWFjaChmdW5jdGlvbiAocGFpcikgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJbMV0ubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAobG93LmluZGV4T2YocGFpclsxXVtpXSkgPiAtMSkgeyBmb3VuZC5wdXNoKHBhaXJbMF0pOyByZXR1cm47IH0KICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZm91bmQ7CiAgfQoKICBmdW5jdGlvbiBwaWNrV2lkdGgoc3Jjc2V0LCB3YW50KSB7CiAgICB2YXIgcGFydHMgPSAoc3Jjc2V0IHx8ICcnKS5zcGxpdCgnLCcpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcCA9IHBhcnRzW2ldLnRyaW0oKTsKICAgICAgaWYgKHAuc2xpY2UoLShTdHJpbmcod2FudCkubGVuZ3RoICsgMikpID09PSAnICcgKyB3YW50ICsgJ3cnKSB7CiAgICAgICAgcmV0dXJuICdodHRwczonICsgcC5zbGljZSgwLCBwLmxhc3RJbmRleE9mKCcgJykpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CgogIC8qIGFsdCDQsiDRgNCw0LfQvNC10YLQutC1INGF0YDQsNC90LjRgiDQvdC10YDQsNC30YDRi9Cy0L3Ri9C1INC_0YDQvtCx0LXQu9GLINC60LDQuiAmbmJzcDssCiAgICAg0LAg0LLQuNC00LjQvNGL0Lkg0LfQsNCz0L7Qu9C-0LLQvtC6IOKAlCDQvtCx0YvRh9C90YvQvNC4LiDQotCw0Log0YHQtNC10LvQsNC90L4g0LIg0LjRgdGF0L7QtNC90L7QvCDQutC-0LTQtS4gKi8KICBmdW5jdGlvbiBhdHRyKHMpIHsKICAgIHJldHVybiBTdHJpbmcocykKICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykKICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8-L2csICcmZ3Q7JykKICAgICAgLnJlcGxhY2UoL8KgL2csICcmbmJzcDsnKTsKICB9CiAgZnVuY3Rpb24gdGV4dChzKSB7CiAgICByZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTsKICB9CgogIGZ1bmN0aW9uIGNhcmQoZCkgewogICAgcmV0dXJuICcgICAgPGEgY2xhc3M9ImNhcmQiIGhyZWY9IicgKyBkLmhyZWYgKyAnIiBkYXRhLWNhdD0iJyArIGQuY2F0cy5qb2luKCcgJykgKyAnIj5cbicgKwogICAgICAgICAgICcgICAgICA8c3BhbiBjbGFzcz0iY2FyZC1zaG90IiBzdHlsZT0iYmFja2dyb3VuZDonICsgZC5iZyArICciPlxuJyArCiAgICAgICAgICAgJyAgICAgICAgPGltZyBzcmM9IicgKyBkLnNyYyArICciXG4nICsKICAgICAgICAgICAnICAgICAgICAgICAgIHNyY3NldD0iJyArIGQuc3Jjc2V0ICsgJyJcbicgKwogICAgICAgICAgICcgICAgICAgICAgICAgc2l6ZXM9IicgKyBTSVpFUyArICciXG4nICsKICAgICAgICAgICAnICAgICAgICAgICAgIGFsdD0iJyArIGF0dHIoZC5hbHRSYXcpICsgJyIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiIGxvYWRpbmc9ImxhenkiIGRlY29kaW5nPSJhc3luYyI–XG4nICsKICAgICAgICAgICAnICAgICAgPC9zcGFuPlxuJyArCiAgICAgICAgICAgJyAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLXRpdGxlIj4nICsgdGV4dChkLnRpdGxlKSArICc8L3NwYW4-XG4nICsKICAgICAgICAgICAnICAgIDwvYT4nOwogIH0KCiAgLyog0KbQstC10YIt0LfQsNCz0LvRg9GI0LrRgyDQsdC10YDRkdC8INC40Lcg0LjRgdGF0L7QtNC90L7Qs9C-INCw0YLRgNC40LHRg9GC0LA6INCx0YDQsNGD0LfQtdGAINC-0YLQtNCw0Lsg0LHRiwogICAgIHN0eWxlLmJhY2tncm91bmRDb2xvciDQutCw0LogcmdiKDEyNSwgMTIxLCAxMTgpLCDQsCDQsiDRgNCw0LfQvNC10YLQutC1CiAgICAg0YHRgtGA0LDQvdC40YbRiyDQvtC9INC30LDQv9C40YHQsNC9INC60LDQuiAjN2Q3OTc2IOKAlCDQtNC10YDQttC40Lwg0L7QtNC40L0g0YTQvtGA0LzQsNGCLiAqLwogIGZ1bmN0aW9uIGJnQ29sb3IoY2FudmFzKSB7CiAgICBpZiAoIWNhbnZhcykgcmV0dXJuICcjZWNlY2VjJzsKICAgIHZhciByYXcgPSBjYW52YXMuZ2V0QXR0cmlidXRlKCdzdHlsZScpIHx8ICcnOwogICAgdmFyIGhleCA9IHJhdy5tYXRjaCgvI1swLTlhLWZdezMsOH0vaSk7CiAgICBpZiAoaGV4KSByZXR1cm4gaGV4WzBdLnRvTG93ZXJDYXNlKCk7CiAgICB2YXIgcmdiID0gcmF3Lm1hdGNoKC9yZ2JhP1woXHMqKFxkKylcRCsoXGQrKVxEKyhcZCspL2kpIHx8CiAgICAgICAgICAgICAgKGNhbnZhcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgfHwgJycpLm1hdGNoKC9yZ2JhP1woXHMqKFxkKylcRCsoXGQrKVxEKyhcZCspL2kpOwogICAgaWYgKCFyZ2IpIHJldHVybiAnI2VjZWNlYyc7CiAgICByZXR1cm4gJyMnICsgW3JnYlsxXSwgcmdiWzJdLCByZ2JbM11dLm1hcChmdW5jdGlvbiAobikgewogICAgICByZXR1cm4gKCcwJyArIHBhcnNlSW50KG4sIDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTsKICAgIH0pLmpvaW4oJycpOwogIH0KCiAgLyog0JrQsNGC0LXQs9C-0YDQuNC4LCDQv9GA0L7RgdGC0LDQstC70LXQvdC90YvQtSDQstGA0YPRh9C90YPRjiDQvdCwINGC0LXQutGD0YnQtdC5INGB0YLRgNCw0L3QuNGG0LUsINCy0LDQttC90LXQtQogICAgINCw0LLRgtC-0LzQsNGC0LjRh9C10YHQutC40YU6INC40YUg0L3QtSDQtNC-0LvQttC90L4g0YHRgtC40YDQsNGC0Ywg0L_QtdGA0LXRgdCx0L7RgNC60L7QuS4gKi8KICBmdW5jdGlvbiBjdXJyZW50T3ZlcnJpZGVzKCkgewogICAgdmFyIG1hcCA9IHt9LCBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3B0LWdyaWQnKTsKICAgIGlmICghZ3JpZCkgcmV0dXJuIG1hcDsKICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCdhLmNhcmQnKSwgZnVuY3Rpb24gKGVsKSB7CiAgICAgIHZhciBocmVmID0gKGVsLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnKS5yZXBsYWNlKC9cLyQvLCAnJyk7CiAgICAgIHZhciB0aXRsZSA9IChlbC5xdWVyeVNlbGVjdG9yKCcuY2FyZC10aXRsZScpIHx8IHt9KS50ZXh0Q29udGVudCB8fCAnJzsKICAgICAgdmFyIHdhcyA9IChlbC5kYXRhc2V0LmNhdCB8fCAnJykudHJpbSgpOwogICAgICAvKiDRgdC-0YXRgNCw0L3Rj9C10Lwg0YLQvtC70YzQutC-INGC0L4sINGH0YLQviDQvtGC0LvQuNGH0LDQtdGC0YHRjyDQvtGCINCw0LLRgtC-0L7Qv9GA0LXQtNC10LvQtdC90LjRjyAqLwogICAgICBpZiAoaHJlZiAmJiB3YXMgIT09IGRldGVjdENhdHModGl0bGUpLmpvaW4oJyAnKSkgbWFwW2hyZWZdID0gd2FzOwogICAgfSk7CiAgICByZXR1cm4gbWFwOwogIH0KCiAgZnVuY3Rpb24gcGFuZWwoaHRtbCwgc2NoZW1hLCBzdGF0cykgewogICAgdmFyIG9sZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdnotYnVpbGQtcGFuZWwnKTsKICAgIGlmIChvbGQpIG9sZC5yZW1vdmUoKTsKCiAgICB2YXIgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBib3guaWQgPSAnYXZ6LWJ1aWxkLXBhbmVsJzsKICAgIGJveC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MjE0NzQ4MzY0NztyaWdodDoyMHB4O2JvdHRvbToyMHB4O3dpZHRoOjM0MHB4OycgKwogICAgICAncGFkZGluZzoxOHB4IDIwcHg7Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6IzFkMWQxZjtjb2xvcjojZmZmOycgKwogICAgICAnZm9udDoxNHB4LzEuNSAtYXBwbGUtc3lzdGVtLHN5c3RlbS11aSxzYW5zLXNlcmlmO2JveC1zaGFkb3c6MCAxMnB4IDQwcHggcmdiYSgwLDAsMCwuNDUpJzsKCiAgICB2YXIgbGluZXMgPSBzdGF0cy5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuICc8ZGl2PicgKyBzICsgJzwvZGl2Pic7IH0pLmpvaW4oJycpOwogICAgYm94LmlubmVySFRNTCA9CiAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTFweDtsZXR0ZXItc3BhY2luZzouMjRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7b3BhY2l0eTouNTU7JyArCiAgICAgICdtYXJnaW4tYm90dG9tOjEycHgiPtCh0LHQvtGA0YnQuNC6INGB0LXRgtC60Lg8L2Rpdj4nICsgbGluZXMgKwogICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7bWFyZ2luLXRvcDoxNnB4O2ZsZXgtd3JhcDp3cmFwIj4nICsKICAgICAgJzxidXR0b24gaWQ9ImF2ei1jb3B5LWdyaWQiIHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEzMHB4O3BhZGRpbmc6MTBweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjhweDsnICsKICAgICAgJ2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMWQxZDFmO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTNweDtjdXJzb3I6cG9pbnRlciI-0KHQutC-0L_QuNGA0L7QstCw0YLRjCDRgdC10YLQutGDPC9idXR0b24-JyArCiAgICAgICc8YnV0dG9uIGlkPSJhdnotY29weS1zY2hlbWEiIHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEzMHB4O3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjI4KTsnICsKICAgICAgJ2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6I2ZmZjtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEzcHg7Y3Vyc29yOnBvaW50ZXIiPkpTT04tTEQ8L2J1dHRvbj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGJ1dHRvbiBpZD0iYXZ6LWNsb3NlIiBzdHlsZT0ibWFyZ2luLXRvcDo4cHg7d2lkdGg6MTAwJTtwYWRkaW5nOjhweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjhweDsnICsKICAgICAgJ2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMnB4O2N1cnNvcjpwb2ludGVyIj7Ql9Cw0LrRgNGL0YLRjDwvYnV0dG9uPic7CgogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChib3gpOwoKICAgIGZ1bmN0aW9uIGNvcHkoc3RyLCBidG4sIGxhYmVsKSB7CiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHN0cikudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHQgPSBidG4udGV4dENvbnRlbnQ7IGJ0bi50ZXh0Q29udGVudCA9ICfQodC60L7Qv9C40YDQvtCy0LDQvdC-JzsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgYnRuLnRleHRDb250ZW50ID0gdDsgfSwgMTYwMCk7CiAgICAgIH0sIGZ1bmN0aW9uICgpIHsKICAgICAgICBjb25zb2xlLmxvZygnJWMnICsgbGFiZWwgKyAnIOKAlCDRgdC60L7Qv9C40YDRg9C50YLQtSDQuNC3INC60L7QvdGB0L7Qu9C4OicsICdmb250LXdlaWdodDpib2xkJyk7CiAgICAgICAgY29uc29sZS5sb2coc3RyKTsKICAgICAgICBidG4udGV4dENvbnRlbnQgPSAn0KHQvC4g0LrQvtC90YHQvtC70YwnOwogICAgICB9KTsKICAgIH0KCiAgICBib3gucXVlcnlTZWxlY3RvcignI2F2ei1jb3B5LWdyaWQnKS5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBjb3B5KGh0bWwsIHRoaXMsICfQodC10YLQutCwJyk7IH07CiAgICBib3gucXVlcnlTZWxlY3RvcignI2F2ei1jb3B5LXNjaGVtYScpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IGNvcHkoc2NoZW1hLCB0aGlzLCAnSlNPTi1MRCcpOyB9OwogICAgYm94LnF1ZXJ5U2VsZWN0b3IoJyNhdnotY2xvc2UnKS5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBib3gucmVtb3ZlKCk7IH07CgogICAgd2luZG93LkFWWl9HUklEID0gaHRtbDsKICAgIHdpbmRvdy5BVlpfU0NIRU1BID0gc2NoZW1hOwogIH0KCiAgY29uc29sZS5sb2coJ0FWWjog0YfQuNGC0LDRjiDQu9C40YHRgtC40L3QsyAnICsgTElTVElOR19VUkwgKyAnIOKApicpOwoKICBmZXRjaChMSVNUSU5HX1VSTCwgeyBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyB9KQogICAgLnRoZW4oZnVuY3Rpb24gKHIpIHsgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ9C70LjRgdGC0LjQvdCzINCy0LXRgNC90YPQuyAnICsgci5zdGF0dXMpOyByZXR1cm4gci50ZXh0KCk7IH0pCiAgICAudGhlbihmdW5jdGlvbiAoc3JjKSB7CiAgICAgIHZhciBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHNyYywgJ3RleHQvaHRtbCcpOwogICAgICB2YXIgaXRlbXMgPSBkb2MucXVlcnlTZWxlY3RvckFsbCgnLmxpc3RpbmctaXRlbScpOwogICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCfQsiDQu9C40YHRgtC40L3Qs9C1INC90LXRgiAubGlzdGluZy1pdGVtIOKAlCDQstGR0YDRgdGC0LrQsCB3Zm9saW8g0LjQt9C80LXQvdC40LvQsNGB0YwnKTsKCiAgICAgIHZhciBvdmVycmlkZXMgPSBjdXJyZW50T3ZlcnJpZGVzKCk7CiAgICAgIHZhciBvdXQgPSBbXSwgc2tpcHBlZCA9IFtdLCBtYW51YWwgPSAwLCBzZWVuID0ge307CgogICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGl0ZW1zLCBmdW5jdGlvbiAoaXQpIHsKICAgICAgICB2YXIgbGluayA9IGl0LnF1ZXJ5U2VsZWN0b3IoJ2FbaHJlZl0nKTsKICAgICAgICB2YXIgaW1nID0gaXQucXVlcnlTZWxlY3RvcignaW1nJyk7CiAgICAgICAgaWYgKCFsaW5rIHx8ICFpbWcpIHJldHVybjsKCiAgICAgICAgdmFyIGhyZWYgPSAobGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJykucmVwbGFjZSgvXC8kLywgJycpOwogICAgICAgIGlmICghaHJlZiB8fCBzZWVuW2hyZWZdKSByZXR1cm47CiAgICAgICAgc2VlbltocmVmXSA9IHRydWU7CgogICAgICAgIHZhciBhbHRSYXcgPSBpbWcuZ2V0QXR0cmlidXRlKCdhbHQnKSB8fCAnJzsKICAgICAgICB2YXIgdGl0bGUgPSBhbHRSYXcucmVwbGFjZSgvJm5ic3A7L2dpLCAnICcpLnJlcGxhY2UoL8KgL2csICcgJykudHJpbSgpOwogICAgICAgIHZhciBzcyA9IGltZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3Jjc2V0JykgfHwgaW1nLmdldEF0dHJpYnV0ZSgnc3Jjc2V0JykgfHwgJyc7CiAgICAgICAgdmFyIGNhbnZhcyA9IGl0LnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOwoKICAgICAgICB2YXIgdTQ0MCA9IHBpY2tXaWR0aChzcywgNDQwKSwgdTYwMCA9IHBpY2tXaWR0aChzcywgNjAwKSwgdTEyNDAgPSBwaWNrV2lkdGgoc3MsIDEyNDApOwogICAgICAgIHZhciBzZXQgPSBbXTsKICAgICAgICBpZiAodTQ0MCkgc2V0LnB1c2godTQ0MCArICcgNDQwdycpOwogICAgICAgIGlmICh1NjAwKSBzZXQucHVzaCh1NjAwICsgJyA2MDB3Jyk7CiAgICAgICAgaWYgKHUxMjQwKSBzZXQucHVzaCh1MTI0MCArICcgMTI0MHcnKTsKICAgICAgICAvKiAxMjQwIOKAlCDQv9C-0YLQvtC70L7QuiDRgdC-0LfQvdCw0YLQtdC70YzQvdC-OiAyNTIwdyDQstC10YHQuNGCIDEsNiDQnNCRINC90LAg0LrQsNC00YAgKi8KICAgICAgICBpZiAoIXU2MDApIHsgc2tpcHBlZC5wdXNoKGhyZWYpOyByZXR1cm47IH0KCiAgICAgICAgdmFyIGNhdHMgPSBkZXRlY3RDYXRzKHRpdGxlKTsKICAgICAgICBpZiAob3ZlcnJpZGVzW2hyZWZdICE9PSB1bmRlZmluZWQpIHsgY2F0cyA9IG92ZXJyaWRlc1tocmVmXS5zcGxpdCgnICcpLmZpbHRlcihCb29sZWFuKTsgbWFudWFsKys7IH0KCiAgICAgICAgb3V0LnB1c2goewogICAgICAgICAgaHJlZjogaHJlZiwKICAgICAgICAgIHRpdGxlOiB0aXRsZSwKICAgICAgICAgIGFsdFJhdzogYWx0UmF3LAogICAgICAgICAgc3JjOiB1NjAwLAogICAgICAgICAgc3Jjc2V0OiBzZXQuam9pbignLCAnKSwKICAgICAgICAgIGJnOiBiZ0NvbG9yKGNhbnZhcyksCiAgICAgICAgICBjYXRzOiBjYXRzCiAgICAgICAgfSk7CiAgICAgIH0pOwoKICAgICAgdmFyIGh0bWwgPSBvdXQubWFwKGNhcmQpLmpvaW4oJ1xuJyk7CgogICAgICB2YXIgc2NoZW1hID0gSlNPTi5zdHJpbmdpZnkoewogICAgICAgIG51bWJlck9mSXRlbXM6IG91dC5sZW5ndGgsCiAgICAgICAgaXRlbUxpc3RFbGVtZW50OiBvdXQuc2xpY2UoMCwgU0NIRU1BX0lURU1TKS5tYXAoZnVuY3Rpb24gKGQsIGkpIHsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsCiAgICAgICAgICAgIHBvc2l0aW9uOiBpICsgMSwKICAgICAgICAgICAgbmFtZTogZC50aXRsZSwKICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hdmFuemF0by5ydScgKyBkLmhyZWYKICAgICAgICAgIH07CiAgICAgICAgfSkKICAgICAgfSwgbnVsbCwgMik7CgogICAgICB2YXIgYnlDYXQgPSB7fTsKICAgICAgb3V0LmZvckVhY2goZnVuY3Rpb24gKGQpIHsKICAgICAgICBpZiAoIWQuY2F0cy5sZW5ndGgpIGJ5Q2F0WyfigJQg0LHQtdC3INC60LDRgtC10LPQvtGA0LjQuCddID0gKGJ5Q2F0WyfigJQg0LHQtdC3INC60LDRgtC10LPQvtGA0LjQuCddIHx8IDApICsgMTsKICAgICAgICBkLmNhdHMuZm9yRWFjaChmdW5jdGlvbiAoYykgeyBieUNhdFtjXSA9IChieUNhdFtjXSB8fCAwKSArIDE7IH0pOwogICAgICB9KTsKCiAgICAgIHZhciBvblBhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjcHQtZ3JpZCBhLmNhcmQnKS5sZW5ndGg7CiAgICAgIHZhciBzdGF0cyA9IFsKICAgICAgICAnPGI-JyArIG91dC5sZW5ndGggKyAnPC9iPiDRgdGK0ZHQvNC-0Log0LIg0LvQuNGB0YLQuNC90LPQtScsCiAgICAgICAgJ9C90LAg0YHRgtGA0LDQvdC40YbQtSDRgdC10LnRh9Cw0YE6IDxiPicgKyBvblBhZ2UgKyAnPC9iPicgKwogICAgICAgICAgKG91dC5sZW5ndGggPiBvblBhZ2UgPyAnIOKGkiDQvdC-0LLRi9GFOiA8Yj4nICsgKG91dC5sZW5ndGggLSBvblBhZ2UpICsgJzwvYj4nIDogJycpLAogICAgICAgICfQutCw0YLQtdCz0L7RgNC40Lgg0LLRgNGD0YfQvdGD0Y4g0YHQvtGF0YDQsNC90LXQvdGLOiA8Yj4nICsgbWFudWFsICsgJzwvYj4nCiAgICAgIF07CiAgICAgIGlmIChza2lwcGVkLmxlbmd0aCkgc3RhdHMucHVzaCgnPHNwYW4gc3R5bGU9ImNvbG9yOiNmZmI0YTIiPtC_0YDQvtC_0YPRidC10L3QviDQsdC10Lcg0L7QsdC70L7QttC60Lg6ICcgKyBza2lwcGVkLmxlbmd0aCArICc8L3NwYW4-Jyk7CgogICAgICBjb25zb2xlLmxvZygnQVZaOiDRgdC-0LHRgNCw0L3QviAnICsgb3V0Lmxlbmd0aCArICcg0LrQsNGA0YLQvtGH0LXQui4g0J_QviDQutCw0YLQtdCz0L7RgNC40Y_QvDonLCBieUNhdCk7CiAgICAgIGlmIChza2lwcGVkLmxlbmd0aCkgY29uc29sZS53YXJuKCdBVlo6INC_0YDQvtC_0YPRidC10L3RiyAo0L3QtdGCINC-0LHQu9C-0LbQutC4IDYwMHcpOicsIHNraXBwZWQpOwogICAgICBjb25zb2xlLmxvZygnQVZaOiDRgNCw0LfQvNC10YLQutCwINGC0LDQutC20LUg0LvQtdC20LjRgiDQsiB3aW5kb3cuQVZaX0dSSUQsIEpTT04tTEQg4oCUINCyIHdpbmRvdy5BVlpfU0NIRU1BJyk7CgogICAgICBwYW5lbChodG1sLCBzY2hlbWEsIHN0YXRzKTsKICAgIH0pCiAgICAuY2F0Y2goZnVuY3Rpb24gKGUpIHsKICAgICAgY29uc29sZS5lcnJvcignQVZaOiDQvdC1INGB0L7QsdGA0LDQu9C-0YHRjCDigJQgJyArIGUubWVzc2FnZSk7CiAgICAgIGFsZXJ0KCfQodCx0L7RgNGJ0LjQuiDQvdC1INC-0YLRgNCw0LHQvtGC0LDQuzogJyArIGUubWVzc2FnZSk7CiAgICB9KTsKfSkoKTsKCn19LAp7aWQ6InByaWNlIix0aXRsZToi0J_QsNC90LXQu9GMINGB0YLRgNCw0L3QuNGG0Ysg0YbQtdC9IixoaW50OiLRhtC10L3Riywg0L_QsNC60LXRgtGLLCDRgtC10LrRgdGC0Ysg0LrQsNGA0YLQvtGH0LXQuiwg0LrQvdC-0L_QutC4IixwYWdlczpbIi9wcmljZSIsICIvYXZ6LXRlc3QiXSxydW46ZnVuY3Rpb24oKXsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIEFWWiDCtyDQn9CQ0J3QldCb0Kwg0KHQotCg0JDQndCY0KbQqyDQptCV0J0gIHYyIOKAlCDQs9C10L3QtdGA0LDRgtC-0YAg0LrQvtC00LAKICAg0KDQsNCx0L7RgtCw0LXRgiDQvdCwIGh0dHBzOi8vYXZhbnphdG8ucnUvcHJpY2UKCiAgINCd0LjRh9C10LPQviDQvdC1INC_0YPQsdC70LjQutGD0LXRgiDQuCDQvdC1INC80LXQvdGP0LXRgiDQttC40LLRg9GOINGB0YLRgNCw0L3QuNGG0YMuINCn0LjRgtCw0LXRgiDQuNGB0YXQvtC00L3Ri9C5CiAgIEhUTUwg0YHRgtGA0LDQvdC40YbRiywg0L_QvtC00YHRgtCw0LLQu9GP0LXRgiDQt9C90LDRh9C10L3QuNGPINC40Lcg0YTQvtGA0LzRiyDQuCDQstGL0LTQsNGR0YIg0LTQstCwINC60YPRgdC60LAKICAg0LTQu9GPINCy0YHRgtCw0LLQutC4INCyINC60L7QtCDRgdGC0YDQsNC90LjRhtGLOgoKICAgICAxLiDQsdC70L7QuiA8ZGl2IGNsYXNzPSJhdi1wcmljZXMiPiDigKYgPC9kaXY-IOKAlCDRgtC-LCDRh9GC0L4g0LLQuNC00LjRgiDRh9C10LvQvtCy0LXQugogICAgIDIuINGB0L7QtNC10YDQttC40LzQvtC1IDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI–IOKAlCDRgtC-LCDRh9GC0L4g0LLQuNC00Y_RggogICAgICAgINC_0L7QuNGB0LrQvtCy0LjQutC4INC4INC60YDQsNGD0LvQtdGA0Ysg0JjQmAoKICAg0J_QvtGH0LXQvNGDINGB0YLQsNGC0LjQutC-0LksINCwINC90LUg0LrQvtC90YTQuNCz0L7QvDog0YbQtdC90Ysg0LzQtdC90Y_RjtGC0YHRjyDRgNCw0Lcg0LIg0LPQvtC0LCDQvdC-INC40YUKICAg0LTQvtC70LbQvdGLINCy0LjQtNC10YLRjCDQstGB0LUsINCy0LrQu9GO0YfQsNGPINC60YDQsNGD0LvQtdGA0Ysg0JjQmCwg0LrQvtGC0L7RgNGL0LUg0L3QtSDQstGL0L_QvtC70L3Rj9GO0YIgSlMuCiAgINCa0L7QvdGE0LjQsyDRgSDQtNCy0LjQttC60L7QvCDQvtGB0YLQsNCy0LvRj9C7INCx0Ysg0LIg0LjRgdGF0L7QtNC90L7QvCDQutC-0LTQtSDRgdGC0LDRgNGL0LUg0YfQuNGB0LvQsC4KCiAgINCg0LDQt9C80LXRgtC60YMg0LHQtdGA0ZHQvCDQvdC1INC40Lcg0LbQuNCy0L7Qs9C-IERPTSwg0LAg0LjQtyDRgdCy0LXQttC10LfQsNCz0YDRg9C20LXQvdC90L7Qs9C-INC40YHRhdC-0LTQvdC40LrQsAogICDRgdGC0YDQsNC90LjRhtGLIOKAlCDRgtCw0Log0L3QsCDRgNC10LfRg9C70YzRgtCw0YIg0L3QtSDQstC70LjRj9C10YIg0L3QuNGH0LXQs9C-LCDRh9GC0L4g0YPQttC1INC-0YLRgNCw0LHQvtGC0LDQu9C-CiAgINCyINCx0YDQsNGD0LfQtdGA0LUuCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgdmFyIG9sZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdnpwci1yb290Jyk7CiAgaWYgKG9sZCkgb2xkLnJlbW92ZSgpOwoKICB2YXIgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdi1wcmljZXMnKTsKICBpZiAoIXJvb3QpIHsgYWxlcnQoJ0FWWjog0L3QsCDRjdGC0L7QuSDRgdGC0YDQsNC90LjRhtC1INC90LXRgiDQsdC70L7QutCwINGG0LXQvSAoLmF2LXByaWNlcyknKTsgcmV0dXJuOyB9CgogIC8qIC0tLS0tLS0tLS0g0YfRgtC10L3QuNC1INGA0LDQt9C80LXRgtC60LggLS0tLS0tLS0tLSAqLwoKICBmdW5jdGlvbiBvbmUoZWwsIHNlbCkgeyB0cnkgeyByZXR1cm4gZWwucXVlcnlTZWxlY3RvcihzZWwpOyB9IGNhdGNoIChlKSB7IHJldHVybiBudWxsOyB9IH0KICBmdW5jdGlvbiBhbGwoZWwsIHNlbCkgeyB0cnkgeyByZXR1cm4gW10uc2xpY2UuY2FsbChlbC5xdWVyeVNlbGVjdG9yQWxsKHNlbCkpOyB9IGNhdGNoIChlKSB7IHJldHVybiBbXTsgfSB9CiAgZnVuY3Rpb24gdChlbCkgeyByZXR1cm4gZWwgPyBlbC50ZXh0Q29udGVudC5yZXBsYWNlKC9ccysvZywgJyAnKS50cmltKCkgOiAnJzsgfQoKICAvKiDRgtC10LrRgdGCINCx0LXQtyDQstC70L7QttC10L3QvdGL0YUg0Y3Qu9C10LzQtdC90YLQvtCyIOKAlCDRgtC-0LvRjNC60L4g0YHQvtCx0YHRgtCy0LXQvdC90YvQtSDRgtC10LrRgdGC0L7QstGL0LUg0YPQt9C70YsuCiAgICAg0L3Rg9C20LXQvSDRgtCw0LwsINCz0LTQtSDRgNGP0LTQvtC8INC70LXQttC40YIg0LjQutC-0L3QutCwINC40LvQuCDQt9C90LDRh9C-0Log0LLQsNC70Y7RgtGLICovCiAgZnVuY3Rpb24gb3duVGV4dChlbCkgewogICAgaWYgKCFlbCkgcmV0dXJuICcnOwogICAgdmFyIHMgPSAnJzsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoZWwuY2hpbGROb2Rlc1tpXS5ub2RlVHlwZSA9PT0gMykgcyArPSBlbC5jaGlsZE5vZGVzW2ldLm5vZGVWYWx1ZTsKICAgIH0KICAgIHJldHVybiBzLnJlcGxhY2UoL1xzKy9nLCAnICcpLnRyaW0oKTsKICB9CgogIGZ1bmN0aW9uIHJlYWRDYXJkKGVsKSB7CiAgICB2YXIgaXRlbXMgPSBhbGwoZWwsICcucGMtbGlzdCBsaScpLm1hcChmdW5jdGlvbiAobGkpIHsKICAgICAgdmFyIHNwYW5zID0gYWxsKGxpLCAnc3BhbicpLmZpbHRlcihmdW5jdGlvbiAocykgeyByZXR1cm4gcy5jbGFzc05hbWUuaW5kZXhPZignaWNvbicpID09PSAtMTsgfSk7CiAgICAgIHJldHVybiB0KHNwYW5zW3NwYW5zLmxlbmd0aCAtIDFdKTsKICAgIH0pOwogICAgdmFyIG5vdGUgPSBhbGwoZWwsICcucGMtbm90ZSBzcGFuJyk7CiAgICB2YXIgYnRuID0gb25lKGVsLCAnLmJ0bi1jYXJkJyk7CiAgICB2YXIgYnRuU3BhbnMgPSBidG4gPyBhbGwoYnRuLCAnc3BhbicpLmZpbHRlcihmdW5jdGlvbiAocykgeyByZXR1cm4gcy5jbGFzc05hbWUuaW5kZXhPZignaWNvbicpID09PSAtMTsgfSkgOiBbXTsKCiAgICByZXR1cm4gewogICAgICBuYW1lOiB0KG9uZShlbCwgJy5wYy1uYW1lJykpLAogICAgICB0YWc6IHQob25lKGVsLCAnLnBjLXRhZyAubnVtJykpLAogICAgICBwcmljZTogb3duVGV4dChvbmUoZWwsICcucGMtcHJpY2UnKSksCiAgICAgIHN1YjogdChvbmUoZWwsICcucGMtcHJpY2Utc3ViJykpLAogICAgICBwb3A6IHQob25lKGVsLCAnLnBjLXBvcCcpKSwKICAgICAgYmFkZ2U6IG93blRleHQob25lKGVsLCAnLmxvZ2lzdGljcy1iYWRnZScpKSwKICAgICAgaXRlbXM6IGl0ZW1zLAogICAgICBub3RlOiBub3RlLmxlbmd0aCA_IHsgbGFiZWw6IHQobm90ZVswXSksIHZhbHVlOiB0KG5vdGVbMV0pIH0gOiBudWxsLAogICAgICBidG46IGJ0biA_IHsgdGV4dDogdChidG5TcGFuc1swXSksIGhyZWY6IGJ0bi5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJyB9IDogbnVsbAogICAgfTsKICB9CgogIGZ1bmN0aW9uIHJlYWRQYW5lbChpZCkgewogICAgdmFyIHAgPSBvbmUocm9vdCwgJyNhdi1wYW5lbC0nICsgaWQpOwogICAgaWYgKCFwKSByZXR1cm4gbnVsbDsKICAgIHZhciBsYiA9IG9uZShwLCAnLmxvZ2lzdGljcy1iYW5uZXInKTsKICAgIHJldHVybiB7CiAgICAgIHNlY3Rpb25zOiBhbGwocCwgJy5zZWN0aW9uLWxhYmVsJykubWFwKGZ1bmN0aW9uIChzKSB7CiAgICAgICAgcmV0dXJuIHsgdGl0bGU6IHQob25lKHMsICdoMicpKSwgYXNpZGU6IG93blRleHQob25lKHMsICcuc2wtYXNpZGUnKSkgfTsKICAgICAgfSksCiAgICAgIGNhcmRzOiBhbGwocCwgJy5wcmljZS1jYXJkJykubWFwKHJlYWRDYXJkKSwKICAgICAgbG9naXN0aWNzOiBsYiA_IHsKICAgICAgICB0aXRsZTogdChvbmUobGIsICdoNCcpKSwKICAgICAgICB0ZXh0OiB0KG9uZShsYiwgJ3AnKSksCiAgICAgICAgc3RhdE51bTogdChvbmUobGIsICcubGItc3RhdC1udW0nKSksCiAgICAgICAgc3RhdExhYmVsOiB0KG9uZShsYiwgJy5sYi1zdGF0LWxibCcpKQogICAgICB9IDogbnVsbAogICAgfTsKICB9CgogIHZhciBjZmcgPSB7CiAgICB2ZXJzaW9uOiAxLAogICAgaGVybzogewogICAgICBleWVicm93OiB0KG9uZShyb290LCAnLmhlcm8tZXllYnJvdycpKSwKICAgICAgbGluZXM6IGFsbChyb290LCAnLmhlcm8tdGl0bGUtaW5uZXInKS5tYXAoZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgdmFyIGVtID0gb25lKGVsLCAnZW0nKTsKICAgICAgICByZXR1cm4gdChlbSB8fCBlbCk7CiAgICAgIH0pCiAgICB9LAogICAgdGFic0hlYWQ6IHsKICAgICAgbGFiZWw6IHQob25lKHJvb3QsICcudGFicy1oZWFkIC5oLWxhYmVsJykpLAogICAgICBoaW50OiBvd25UZXh0KG9uZShyb290LCAnLnRhYnMtaGVhZCAuaC1oaW50JykpCiAgICB9LAogICAgdGFiczogYWxsKHJvb3QsICcudGFicy11aSAuY2hpcCcpLm1hcChmdW5jdGlvbiAoY2gpIHsKICAgICAgdmFyIG1ldGEgPSBhbGwoY2gsICcuY2hpcC1tZXRhID4gc3BhbicpOwogICAgICByZXR1cm4gewogICAgICAgIG51bTogdChvbmUoY2gsICcuY2hpcC1udW0nKSksCiAgICAgICAgbmFtZTogdChvbmUoY2gsICcuY2hpcC1uYW1lJykpLAogICAgICAgIHBpbjogb3duVGV4dChtZXRhWzBdKSwKICAgICAgICBtZXRhOiB0KG1ldGFbMV0pCiAgICAgIH07CiAgICB9KSwKICAgIGt6bjogcmVhZFBhbmVsKCdrem4nKSwKICAgIG1zazogcmVhZFBhbmVsKCdtc2snKQogIH07CgogIC8qINC40YHRhdC-0LTQvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDigJQg0L3Rg9C20L3Riywg0YfRgtC-0LHRiyDQv9C-0L3Rj9GC0YwsINC60LDQutC40LUg0YbQtdC90Ysg0LjQt9C80LXQvdC40LvQuNGB0YwsCiAgICAg0Lgg0L_QvtC00YHRgtCw0LLQuNGC0Ywg0LjRhSDQsiDRgNCw0LfQvNC10YLQutGDINC00LvRjyDQv9C-0LjRgdC60L7QstC40LrQvtCyICovCiAgdmFyIE9SSUcgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNmZykpOwoKICAvKiAtLS0tLS0tLS0tINGE0L7RgNC80LAgLS0tLS0tLS0tLSAqLwoKICB2YXIgY3NzID0gWwogICAgLyog0KLQtdC80LAgd2ZvbGlvINC60YDQsNGB0LjRgiDQv9C-0LvRjyDQuCDRgtC10LrRgdGCINC_0L7QtCDRgdC10LHRjyDigJQg0L_QsNC90LXQu9GMINC_0YDQuNGF0L7QtNC40YLRgdGPCiAgICAgICDQt9Cw0YnQuNGJ0LDRgtGMINCyINC70L7QsS4g0JHQtdC3INGN0YLQvtCz0L4g0L_QvtC70Y8g0LHQtdC70YvQtSDQvdCwINCx0LXQu9C-0Lw6INC30L3QsNGH0LXQvdC40Y8g0LXRgdGC0YwsCiAgICAgICDQvdC-INC40YUg0L3QtSDQstC40LTQvdC-LiAqLwogICAgJyNhdnpwci1yb290LCNhdnpwci1yb290ICp7Y29sb3I6IzFkMWQxZiAhaW1wb3J0YW50O2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sc3lzdGVtLXVpLHNhbnMtc2VyaWYgIWltcG9ydGFudDsnLAogICAgJ2xldHRlci1zcGFjaW5nOm5vcm1hbCAhaW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOm5vbmUgIWltcG9ydGFudDtib3gtc2l6aW5nOmJvcmRlci1ib3h9JywKICAgICcjYXZ6cHItcm9vdCBpbnB1dCwjYXZ6cHItcm9vdCB0ZXh0YXJlYXtiYWNrZ3JvdW5kOiNmZmYgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjojMWQxZDFmICFpbXBvcnRhbnQ7JywKICAgICdvcGFjaXR5OjEgIWltcG9ydGFudDtmb250LXNpemU6MTRweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuNCAhaW1wb3J0YW50fScsCiAgICAnI2F2enByLXJvb3QgYnV0dG9ue2ZvbnQtc2l6ZToxNHB4ICFpbXBvcnRhbnR9JywKICAgICcjYXZ6cHItcm9vdHtwb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6MjE0NzQ4MzY0NztiYWNrZ3JvdW5kOnJnYmEoMjAsMjAsMjIsLjU1KTsnLAogICAgJ2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250OjE0cHgvMS41IC1hcHBsZS1zeXN0ZW0sc3lzdGVtLXVpLHNhbnMtc2VyaWZ9JywKICAgICcjYXZ6cHItd2lue2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjE0cHg7d2lkdGg6bWluKDEwNDBweCwxMDAlKTttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA0MHB4KTsnLAogICAgJ2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2×1bW47b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAzMHB4IDgwcHggcmdiYSgwLDAsMCwuNCl9JywKICAgICcjYXZ6cHItaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MTZweCAyMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTd9JywKICAgICcjYXZ6cHItaGVhZCBie2ZvbnQtd2VpZ2h0OjUwMH0nLAogICAgJyNhdnpwci1ib2R5e292ZXJmbG93OmF1dG87cGFkZGluZzoxNnB4IDIwcHg7ZmxleDoxfScsCiAgICAnI2F2enByLWZvb3R7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNztwYWRkaW5nOjE0cHggMjBweDtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfScsCiAgICAnLmF2enByLXNlY3tib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTc7Ym9yZGVyLXJhZGl1czoxMHB4O21hcmdpbi1ib3R0b206MTJweDtvdmVyZmxvdzpoaWRkZW59JywKICAgICcuYXZ6cHItc2VjPnN1bW1hcnl7cGFkZGluZzoxMnB4IDE0cHg7YmFja2dyb3VuZDojZjdmNmYzO2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjUwMDtsaXN0LXN0eWxlOm5vbmV9JywKICAgICcuYXZ6cHItc2VjPnN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7ZGlzcGxheTpub25lfScsCiAgICAnLmF2enByLWlue3BhZGRpbmc6MTRweH0nLAogICAgJy5hdnpwci1me21hcmdpbi1ib3R0b206MTJweH0nLAogICAgJyNhdnpwci1yb290IC5hdnpwci1mIGxhYmVse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjExcHg7Y29sb3I6Izg2ODY4YiAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206NHB4fScsCiAgICAnLmF2enByLWYgaW5wdXQsLmF2enByLWYgdGV4dGFyZWF7d2lkdGg6MTAwJTtmb250OmluaGVyaXQ7cGFkZGluZzo4cHggMTBweDtib3JkZXI6MXB4IHNvbGlkICNkMmQyZDc7Ym9yZGVyLXJhZGl1czo3cHg7YmFja2dyb3VuZDojZmZmfScsCiAgICAnLmF2enByLXJvd3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2×1bW5zOjFmciAxZnI7Z2FwOjEycHh9JywKICAgICcuYXZ6cHItY2FyZHtib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTc7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoxMnB4O21hcmdpbi1ib3R0b206MTBweH0nLAogICAgJyNhdnpwci1yb290IC5hdnpwci1jYXJkPmg0e2ZvbnQtc2l6ZToxMnB4O2xldHRlci1zcGFjaW5nOi4xNGVtICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlICFpbXBvcnRhbnQ7Y29sb3I6Izg2ODY4YiAhaW1wb3J0YW50O21hcmdpbi1ib3R0b206MTBweDtmb250LXdlaWdodDo1MDB9JywKICAgICcjYXZ6cHItb3V0e3dpZHRoOjEwMCU7aGVpZ2h0Ojk2cHg7Zm9udDoxMXB4LzEuNCB1aS1tb25vc3BhY2UsbW9ub3NwYWNlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkICNkMmQyZDc7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luLXRvcDoxMHB4fScsCiAgICAnI2F2enByLXJvb3QgI2F2enByLW1zZ3tmb250LXNpemU6MTJweDtjb2xvcjojODY4NjhiICFpbXBvcnRhbnR9JywKICAgICcjYXZ6cHItcm9vdCAuYXZ6cHItYnRue3BhZGRpbmc6MTBweCAxNnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6IzFkMWQxZiAhaW1wb3J0YW50OycsCiAgICAnY29sb3I6I2ZmZiAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiNmZmYgIWltcG9ydGFudDtmb250OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXJ9JywKICAgICcjYXZ6cHItcm9vdCAuYXZ6cHItYnRuLmdob3N0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtjb2xvcjojMWQxZDFmICFpbXBvcnRhbnQ7JywKICAgICctd2Via2l0LXRleHQtZmlsbC1jb2xvcjojMWQxZDFmICFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCAjZDJkMmQ3fScsCiAgICAnLmF2enByLXdhcm57YmFja2dyb3VuZDojZmZmNGU1O2JvcmRlcjoxcHggc29saWQgI2ZmZDhhODtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTJweDtmb250LXNpemU6MTJweDttYXJnaW4tYm90dG9tOjEycHh9JywKICAgICdAbWVkaWEgKG1heC13aWR0aDo1NjBweCl7LmF2enByLXJvd3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfSNhdnpwci13aW57Ym9yZGVyLXJhZGl1czowO21heC1oZWlnaHQ6MTAwdmh9fScKICBdLmpvaW4oJycpOwoKICB2YXIgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgYm94LmlkID0gJ2F2enByLXJvb3QnOwogIGJveC5pbm5lckhUTUwgPSAnPHN0eWxlPicgKyBjc3MgKyAnPC9zdHlsZT4nICsKICAgICc8ZGl2IGlkPSJhdnpwci13aW4iPicgKwogICAgICAnPGRpdiBpZD0iYXZ6cHItaGVhZCI-PGI-0J_QsNC90LXQu9GMINGB0YLRgNCw0L3QuNGG0Ysg0YbQtdC9PC9iPicgKwogICAgICAnPGJ1dHRvbiBjbGFzcz0iYXZ6cHItYnRuIGdob3N0IiBpZD0iYXZ6cHItY2xvc2UiPtCX0LDQutGA0YvRgtGMPC9idXR0b24-PC9kaXY-JyArCiAgICAgICc8ZGl2IGlkPSJhdnpwci1ib2R5Ij48ZGl2IGNsYXNzPSJhdnpwci13YXJuIj7QmtC90L7Qv9C60LAg0LLQvdC40LfRgyDRgdC-0LHQuNGA0LDQtdGCIDxiPtCy0LXRgdGMINC60L7QtCDRgdGC0YDQsNC90LjRhtGLPC9iPiAnICsKICAgICAgJ9GBINC90L7QstGL0LzQuCDQt9C90LDRh9C10L3QuNGP0LzQuCDigJQg0LLQvNC10YHRgtC1INGB0L4g0YHRgtC40LvRj9C80LgsINGB0LrRgNC40L_RgtC-0Lwg0LLQutC70LDQtNC-0Log0Lgg0YDQsNC30LzQtdGC0LrQvtC5INC00LvRjyDQv9C-0LjRgdC60L7QstC40LrQvtCyLiAnICsKICAgICAgJ9CSINC60L7QvdGB0YLRgNGD0LrRgtC-0YDQtSDQstGL0LTQtdC70LjRgtC1INGB0L7QtNC10YDQttC40LzQvtC1IEhUTUwt0LHQu9C-0LrQsCAvcHJpY2Ug0YbQtdC70LjQutC-0Lwg0Lgg0LLRgdGC0LDQstGM0YLQtSDQv9C-0LLQtdGA0YUuPC9kaXY-PC9kaXY-JyArCiAgICAgICc8ZGl2IGlkPSJhdnpwci1mb290Ij4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYXZ6cHItYnRuIiBpZD0iYXZ6cHItYnVpbGQiPtCh0L7QsdGA0LDRgtGMINC60L7QtCDRgdGC0YDQsNC90LjRhtGLPC9idXR0b24-JyArCiAgICAgICAgJzxzcGFuIGlkPSJhdnpwci1tc2ciPjwvc3Bhbj4nICsKICAgICAgICAnPHRleHRhcmVhIGlkPSJhdnpwci1vdXQiIHBsYWNlaG9sZGVyPSLQl9C00LXRgdGMINC_0L7Rj9Cy0LjRgtGB0Y8g0LrQvtC0INC00LvRjyDQstGB0YLQsNCy0LrQuCI-PC90ZXh0YXJlYT4nICsKICAgICAgJzwvZGl2PicgKwogICAgJzwvZGl2Pic7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChib3gpOwoKICB2YXIgYm9keSA9IGJveC5xdWVyeVNlbGVjdG9yKCcjYXZ6cHItYm9keScpOwogIHZhciBmaWVsZHMgPSBbXTsgICAvKiB7cGF0aCwgaW5wdXR9ICovCgogIGZ1bmN0aW9uIGdldChwYXRoKSB7CiAgICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG8sIGspIHsgcmV0dXJuIChvID09IG51bGwpID8gbyA6IG9ba107IH0sIGNmZyk7CiAgfQogIGZ1bmN0aW9uIHNldChwYXRoLCB2KSB7CiAgICB2YXIgbyA9IGNmZzsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGggLSAxOyBpKyspIG8gPSBvW3BhdGhbaV1dOwogICAgb1twYXRoW3BhdGgubGVuZ3RoIC0gMV1dID0gdjsKICB9CgogIGZ1bmN0aW9uIGZpZWxkKHBhcmVudCwgbGFiZWwsIHBhdGgsIG11bHRpbGluZSkgewogICAgdmFyIHYgPSBnZXQocGF0aCk7CiAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKSByZXR1cm47CiAgICB2YXIgdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgdy5jbGFzc05hbWUgPSAnYXZ6cHItZic7CiAgICB2YXIgaWQgPSAnZicgKyBmaWVsZHMubGVuZ3RoOwogICAgdy5pbm5lckhUTUwgPSAnPGxhYmVsIGZvcj0iJyArIGlkICsgJyI-JyArIGxhYmVsICsgJzwvbGFiZWw-JyArCiAgICAgIChtdWx0aWxpbmUgPyAnPHRleHRhcmVhIGlkPSInICsgaWQgKyAnIiByb3dzPSIyIj48L3RleHRhcmVhPicKICAgICAgICAgICAgICAgICA6ICc8aW5wdXQgaWQ9IicgKyBpZCArICciIHR5cGU9InRleHQiPicpOwogICAgcGFyZW50LmFwcGVuZENoaWxkKHcpOwogICAgdmFyIGlucHV0ID0gdy5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTsKICAgIGlucHV0LnZhbHVlID0gdjsKICAgIGZpZWxkcy5wdXNoKHsgcGF0aDogcGF0aCwgaW5wdXQ6IGlucHV0IH0pOwogIH0KCiAgZnVuY3Rpb24gc2VjdGlvbih0aXRsZSwgb3BlbikgewogICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkZXRhaWxzJyk7CiAgICBkLmNsYXNzTmFtZSA9ICdhdnpwci1zZWMnOwogICAgaWYgKG9wZW4pIGQub3BlbiA9IHRydWU7CiAgICBkLmlubmVySFRNTCA9ICc8c3VtbWFyeT4nICsgdGl0bGUgKyAnPC9zdW1tYXJ5Pic7CiAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGlubmVyLmNsYXNzTmFtZSA9ICdhdnpwci1pbic7CiAgICBkLmFwcGVuZENoaWxkKGlubmVyKTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQoZCk7CiAgICByZXR1cm4gaW5uZXI7CiAgfQoKICBmdW5jdGlvbiByb3cocGFyZW50KSB7CiAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgci5jbGFzc05hbWUgPSAnYXZ6cHItcm93JzsKICAgIHBhcmVudC5hcHBlbmRDaGlsZChyKTsKICAgIHJldHVybiByOwogIH0KCiAgLyogLS0tLS0tLS0tLSDRiNCw0L_QutCwINC4INCy0LrQu9Cw0LTQutC4IC0tLS0tLS0tLS0gKi8KICB2YXIgcyA9IHNlY3Rpb24oJ9Co0LDQv9C60LAg0Lgg0LLQutC70LDQtNC60LgnLCB0cnVlKTsKICBmaWVsZChzLCAn0J3QsNC00LfQsNCz0L7Qu9C-0LLQvtC6JywgWydoZXJvJywgJ2V5ZWJyb3cnXSk7CiAgY2ZnLmhlcm8ubGluZXMuZm9yRWFjaChmdW5jdGlvbiAoXywgaSkgewogICAgZmllbGQocywgJ9CX0LDQs9C-0LvQvtCy0L7Quiwg0YHRgtGA0L7QutCwICcgKyAoaSArIDEpLCBbJ2hlcm8nLCAnbGluZXMnLCBpXSk7CiAgfSk7CiAgdmFyIHIwID0gcm93KHMpOwogIGZpZWxkKHIwLCAn0J_QvtC00L_QuNGB0Ywg0L3QsNC0INCy0LrQu9Cw0LTQutCw0LzQuCcsIFsndGFic0hlYWQnLCAnbGFiZWwnXSk7CiAgZmllbGQocjAsICfQn9C-0LTRgdC60LDQt9C60LAg0YHQv9GA0LDQstCwJywgWyd0YWJzSGVhZCcsICdoaW50J10pOwogIGNmZy50YWJzLmZvckVhY2goZnVuY3Rpb24gKHRhYiwgaSkgewogICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGMuY2xhc3NOYW1lID0gJ2F2enByLWNhcmQnOwogICAgYy5pbm5lckhUTUwgPSAnPGg0PtCS0LrQu9Cw0LTQutCwICcgKyAoaSArIDEpICsgJzwvaDQ-JzsKICAgIHMuYXBwZW5kQ2hpbGQoYyk7CiAgICB2YXIgciA9IHJvdyhjKTsKICAgIGZpZWxkKHIsICfQndC-0LzQtdGAJywgWyd0YWJzJywgaSwgJ251bSddKTsKICAgIGZpZWxkKHIsICfQk9C-0YDQvtC0JywgWyd0YWJzJywgaSwgJ25hbWUnXSk7CiAgICB2YXIgcjIgPSByb3coYyk7CiAgICBmaWVsZChyMiwgJ9Ca0L7QtCDQs9C-0YDQvtC00LAnLCBbJ3RhYnMnLCBpLCAncGluJ10pOwogICAgZmllbGQocjIsICfQn9C-0LTQv9C40YHRjCcsIFsndGFicycsIGksICdtZXRhJ10pOwogIH0pOwoKICAvKiAtLS0tLS0tLS0tINC_0LDQvdC10LvQuCDQs9C-0YDQvtC00L7QsiAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcGFuZWxVSShrZXksIHRpdGxlKSB7CiAgICB2YXIgZGF0YSA9IGNmZ1trZXldOwogICAgaWYgKCFkYXRhKSByZXR1cm47CiAgICB2YXIgc2VjID0gc2VjdGlvbih0aXRsZSArICcg4oCUINC60LDRgNGC0L7Rh9C10Lo6ICcgKyBkYXRhLmNhcmRzLmxlbmd0aCk7CgogICAgaWYgKGRhdGEubG9naXN0aWNzKSB7CiAgICAgIHZhciBsYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBsYy5jbGFzc05hbWUgPSAnYXZ6cHItY2FyZCc7CiAgICAgIGxjLmlubmVySFRNTCA9ICc8aDQ-0JHQsNC90L3QtdGAINC70L7Qs9C40YHRgtC40LrQuDwvaDQ-JzsKICAgICAgc2VjLmFwcGVuZENoaWxkKGxjKTsKICAgICAgZmllbGQobGMsICfQl9Cw0LPQvtC70L7QstC-0LonLCBba2V5LCAnbG9naXN0aWNzJywgJ3RpdGxlJ10pOwogICAgICBmaWVsZChsYywgJ9Ci0LXQutGB0YInLCBba2V5LCAnbG9naXN0aWNzJywgJ3RleHQnXSwgdHJ1ZSk7CiAgICAgIHZhciBsciA9IHJvdyhsYyk7CiAgICAgIGZpZWxkKGxyLCAn0JrRgNGD0L_QvdCw0Y8g0L3QsNC00L_QuNGB0YwnLCBba2V5LCAnbG9naXN0aWNzJywgJ3N0YXROdW0nXSk7CiAgICAgIGZpZWxkKGxyLCAn0J_QvtC00L_QuNGB0Ywg0L_QvtC0INC90LXQuScsIFtrZXksICdsb2dpc3RpY3MnLCAnc3RhdExhYmVsJ10pOwogICAgfQoKICAgIGRhdGEuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoc2MsIGkpIHsKICAgICAgdmFyIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgYy5jbGFzc05hbWUgPSAnYXZ6cHItY2FyZCc7CiAgICAgIGMuaW5uZXJIVE1MID0gJzxoND7Ql9Cw0LPQvtC70L7QstC-0Log0YDQsNC30LTQtdC70LAgJyArIChpICsgMSkgKyAnPC9oND4nOwogICAgICBzZWMuYXBwZW5kQ2hpbGQoYyk7CiAgICAgIHZhciByID0gcm93KGMpOwogICAgICBmaWVsZChyLCAn0KLQtdC60YHRgicsIFtrZXksICdzZWN0aW9ucycsIGksICd0aXRsZSddKTsKICAgICAgZmllbGQociwgJ9Cc0LXRgtC60LAg0YHQv9GA0LDQstCwJywgW2tleSwgJ3NlY3Rpb25zJywgaSwgJ2FzaWRlJ10pOwogICAgfSk7CgogICAgZGF0YS5jYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjZCwgaSkgewogICAgICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBjLmNsYXNzTmFtZSA9ICdhdnpwci1jYXJkJzsKICAgICAgYy5pbm5lckhUTUwgPSAnPGg0PtCa0LDRgNGC0L7Rh9C60LAgJyArIChpICsgMSkgKyAnIMK3ICcgKyAoY2QubmFtZSB8fCAn4oCUJykgKyAnPC9oND4nOwogICAgICBzZWMuYXBwZW5kQ2hpbGQoYyk7CgogICAgICB2YXIgcjEgPSByb3coYyk7CiAgICAgIGZpZWxkKHIxLCAn0J3QsNC30LLQsNC90LjQtScsIFtrZXksICdjYXJkcycsIGksICduYW1lJ10pOwogICAgICBmaWVsZChyMSwgJ9Cd0L7QvNC10YAg0LIg0LrRgNGD0LbQutC1JywgW2tleSwgJ2NhcmRzJywgaSwgJ3RhZyddKTsKCiAgICAgIHZhciByMiA9IHJvdyhjKTsKICAgICAgZmllbGQocjIsICfQptC10L3QsCAo0LHQtdC3INC30L3QsNC60LAg4oK9KScsIFtrZXksICdjYXJkcycsIGksICdwcmljZSddKTsKICAgICAgZmllbGQocjIsICfQn9C70LDRiNC60LAgwqvQn9C-0L_Rg9C70Y_RgNC90L7QtcK7JywgW2tleSwgJ2NhcmRzJywgaSwgJ3BvcCddKTsKCiAgICAgIGZpZWxkKGMsICfQn9C-0LTQv9C40YHRjCDQv9C-0LQg0YbQtdC90L7QuScsIFtrZXksICdjYXJkcycsIGksICdzdWInXSwgdHJ1ZSk7CiAgICAgIGZpZWxkKGMsICfQkdC10LnQtNC2IMKr0JLRgdGRINCy0LrQu9GO0YfQtdC90L7CuycsIFtrZXksICdjYXJkcycsIGksICdiYWRnZSddKTsKCiAgICAgIGNkLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKF8sIGspIHsKICAgICAgICBmaWVsZChjLCAn0J_Rg9C90LrRgiAnICsgKGsgKyAxKSwgW2tleSwgJ2NhcmRzJywgaSwgJ2l0ZW1zJywga10pOwogICAgICB9KTsKCiAgICAgIGlmIChjZC5ub3RlKSB7CiAgICAgICAgdmFyIHIzID0gcm93KGMpOwogICAgICAgIGZpZWxkKHIzLCAn0KHQvdC-0YHQutCwIOKAlCDRgtC10LrRgdGCJywgW2tleSwgJ2NhcmRzJywgaSwgJ25vdGUnLCAnbGFiZWwnXSk7CiAgICAgICAgZmllbGQocjMsICfQodC90L7RgdC60LAg4oCUINC30L3QsNGH0LXQvdC40LUnLCBba2V5LCAnY2FyZHMnLCBpLCAnbm90ZScsICd2YWx1ZSddKTsKICAgICAgfQogICAgICBpZiAoY2QuYnRuKSB7CiAgICAgICAgdmFyIHI0ID0gcm93KGMpOwogICAgICAgIGZpZWxkKHI0LCAn0JrQvdC-0L_QutCwIOKAlCDRgtC10LrRgdGCJywgW2tleSwgJ2NhcmRzJywgaSwgJ2J0bicsICd0ZXh0J10pOwogICAgICAgIGZpZWxkKHI0LCAn0JrQvdC-0L_QutCwIOKAlCDQsNC00YDQtdGBJywgW2tleSwgJ2NhcmRzJywgaSwgJ2J0bicsICdocmVmJ10pOwogICAgICB9CiAgICB9KTsKICB9CgogIHBhbmVsVUkoJ2t6bicsICfQmtCw0LfQsNC90YwnKTsKICBwYW5lbFVJKCdtc2snLCAn0JzQvtGB0LrQstCwJyk7CgogIC8qIC0tLS0tLS0tLS0g0LfQsNC_0LjRgdGMINC30L3QsNGH0LXQvdC40Lkg0LIg0YDQsNC30LzQtdGC0LrRgyAtLS0tLS0tLS0tCiAgICAg0J_QvtC70L3QvtGB0YLRjNGOINC_0L7QstGC0L7RgNGP0LXRgiDQu9C-0LPQuNC60YMsINC_0L4g0LrQvtGC0L7RgNC-0Lkg0L_QsNC90LXQu9GMINGH0LjRgtCw0LvQsCDRgdGC0YDQsNC90LjRhtGDLgogICAgINCg0LDQsdC-0YLQsNC10YIg0L3QsCDQvtGC0LTQtdC70YzQvdC-0Lkg0LrQvtC_0LjQuCDQtNC-0LrRg9C80LXQvdGC0LAsINC20LjQstGD0Y4g0YHRgtGA0LDQvdC40YbRgyDQvdC1INGC0YDQvtCz0LDQtdGCLiAqLwoKICBmdW5jdGlvbiB0eHQoZWwsIHYpIHsKICAgIGlmIChlbCAmJiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdiAhPT0gJycpIGVsLnRleHRDb250ZW50ID0gdjsKICB9CiAgZnVuY3Rpb24gc2V0QXR0cihlbCwgbmFtZSwgdikgewogICAgaWYgKGVsICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2ICE9PSAnJykgZWwuc2V0QXR0cmlidXRlKG5hbWUsIHYpOwogIH0KCiAgLyog0J_RgNCw0LLQuNGCINGC0LXQutGB0YIsINC90LUg0YLRgNC-0LPQsNGPINCy0LvQvtC20LXQvdC90YPRjiDQuNC60L7QvdC60YMg0LjQu9C4INC30L3QsNGH0L7QuiDQstCw0LvRjtGC0YsuCiAgICAg0JXRgdC70Lgg0L_QtdGA0LXQtCDRgtC10LrRgdGC0L7QvCDRgdGC0L7QuNGCINGN0LvQtdC80LXQvdGCIOKAlCDRjdGC0L4g0LjQutC-0L3QutCwLCDQuCDQtdGRINC-0YIg0L_QvtC00L_QuNGB0LgKICAgICDQvtGC0LTQtdC70Y_QtdGCINC_0YDQvtCx0LXQuzsg0L_QsNC90LXQu9GMINC-0YLQtNCw0ZHRgiDRgtC10LrRgdGCINC-0LHRgNC10LfQsNC90L3Ri9C8LCDQv9C-0Y3RgtC-0LzRgyDQv9GA0L7QsdC10LsKICAgICDQstC-0LfQstGA0LDRidCw0LXQvCDQt9C00LXRgdGMLCDQuNC90LDRh9C1INC40LrQvtC90LrQsCDRgdC70LjQv9C90LXRgtGB0Y8g0YEg0L3QsNC00L_QuNGB0YzRji4gKi8KICBmdW5jdGlvbiB0eHRLZWVwKGVsLCB2KSB7CiAgICBpZiAoIWVsIHx8IHR5cGVvZiB2ICE9PSAnc3RyaW5nJyB8fCB2ID09PSAnJykgcmV0dXJuOwogICAgdmFyIGRvbmUgPSBmYWxzZSwgc2VlbkVsID0gZmFsc2UsIGksIG47CiAgICBmb3IgKGkgPSAwOyBpIDwgZWwuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgewogICAgICBuID0gZWwuY2hpbGROb2Rlc1tpXTsKICAgICAgaWYgKG4ubm9kZVR5cGUgPT09IDEpIHsgc2VlbkVsID0gdHJ1ZTsgY29udGludWU7IH0KICAgICAgaWYgKG4ubm9kZVR5cGUgPT09IDMpIHsKICAgICAgICBpZiAoIWRvbmUgJiYgbi5ub2RlVmFsdWUudHJpbSgpICE9PSAnJykgeyBuLm5vZGVWYWx1ZSA9IChzZWVuRWwgPyAnICcgOiAnJykgKyB2OyBkb25lID0gdHJ1ZTsgfQogICAgICAgIGVsc2UgaWYgKGRvbmUpIHsgbi5ub2RlVmFsdWUgPSAnJzsgfQogICAgICB9CiAgICB9CiAgICBpZiAoIWRvbmUpIGVsLmluc2VydEJlZm9yZShlbC5vd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHYpLCBlbC5maXJzdENoaWxkKTsKICB9CgogIGZ1bmN0aW9uIHdyaXRlQ2FyZChlbCwgYykgewogICAgaWYgKCFlbCB8fCAhYykgcmV0dXJuOwogICAgdHh0KG9uZShlbCwgJy5wYy1uYW1lJyksIGMubmFtZSk7CiAgICB0eHQob25lKGVsLCAnLnBjLXRhZyAubnVtJyksIGMudGFnKTsKICAgIHR4dEtlZXAob25lKGVsLCAnLnBjLXByaWNlJyksIGMucHJpY2UpOwogICAgdHh0KG9uZShlbCwgJy5wYy1wcmljZS1zdWInKSwgYy5zdWIpOwogICAgdHh0KG9uZShlbCwgJy5wYy1wb3AnKSwgYy5wb3ApOwogICAgdHh0S2VlcChvbmUoZWwsICcubG9naXN0aWNzLWJhZGdlJyksIGMuYmFkZ2UpOwoKICAgIGlmIChBcnJheS5pc0FycmF5KGMuaXRlbXMpKSB7CiAgICAgIHZhciBsaXMgPSBhbGwoZWwsICcucGMtbGlzdCBsaScpOwogICAgICBjLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHR4LCBpKSB7CiAgICAgICAgdmFyIGxpID0gbGlzW2ldOwogICAgICAgIGlmICghbGkpIHJldHVybjsKICAgICAgICB2YXIgc3BhbnMgPSBhbGwobGksICdzcGFuJyk7CiAgICAgICAgdmFyIHRhcmdldCA9IHNwYW5zLmxlbmd0aCA-IDEgPyBzcGFuc1tzcGFucy5sZW5ndGggLSAxXSA6IG51bGw7CiAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ2ljb24nKSA9PT0gLTEpIHR4dCh0YXJnZXQsIHR4KTsKICAgICAgfSk7CiAgICB9CiAgICBpZiAoYy5ub3RlKSB7CiAgICAgIHZhciBub3RlID0gYWxsKGVsLCAnLnBjLW5vdGUgc3BhbicpOwogICAgICB0eHQobm90ZVswXSwgYy5ub3RlLmxhYmVsKTsKICAgICAgdHh0KG5vdGVbMV0sIGMubm90ZS52YWx1ZSk7CiAgICB9CiAgICBpZiAoYy5idG4pIHsKICAgICAgdmFyIGJ0biA9IG9uZShlbCwgJy5idG4tY2FyZCcpOwogICAgICBpZiAoYnRuKSB7CiAgICAgICAgc2V0QXR0cihidG4sICdocmVmJywgYy5idG4uaHJlZik7CiAgICAgICAgdmFyIGJzID0gYWxsKGJ0biwgJ3NwYW4nKTsKICAgICAgICBpZiAoYnNbMF0gJiYgYnNbMF0uY2xhc3NOYW1lLmluZGV4T2YoJ2ljb24nKSA9PT0gLTEpIHR4dChic1swXSwgYy5idG4udGV4dCk7CiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIHdyaXRlUGFuZWwoc2NvcGUsIGlkLCBkYXRhKSB7CiAgICBpZiAoIWRhdGEpIHJldHVybjsKICAgIHZhciBwID0gb25lKHNjb3BlLCAnI2F2LXBhbmVsLScgKyBpZCk7CiAgICBpZiAoIXApIHJldHVybjsKCiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLnNlY3Rpb25zKSkgewogICAgICB2YXIgaGVhZHMgPSBhbGwocCwgJy5zZWN0aW9uLWxhYmVsJyk7CiAgICAgIGRhdGEuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoc2MsIGkpIHsKICAgICAgICB2YXIgaGQgPSBoZWFkc1tpXTsKICAgICAgICBpZiAoIWhkKSByZXR1cm47CiAgICAgICAgdHh0KG9uZShoZCwgJ2gyJyksIHNjLnRpdGxlKTsKICAgICAgICB0eHRLZWVwKG9uZShoZCwgJy5zbC1hc2lkZScpLCBzYy5hc2lkZSk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5jYXJkcykpIHsKICAgICAgdmFyIGNhcmRzID0gYWxsKHAsICcucHJpY2UtY2FyZCcpOwogICAgICBkYXRhLmNhcmRzLmZvckVhY2goZnVuY3Rpb24gKGMsIGkpIHsgd3JpdGVDYXJkKGNhcmRzW2ldLCBjKTsgfSk7CiAgICB9CiAgICBpZiAoZGF0YS5sb2dpc3RpY3MpIHsKICAgICAgdmFyIGxiID0gb25lKHAsICcubG9naXN0aWNzLWJhbm5lcicpOwogICAgICBpZiAobGIpIHsKICAgICAgICB0eHQob25lKGxiLCAnaDQnKSwgZGF0YS5sb2dpc3RpY3MudGl0bGUpOwogICAgICAgIHR4dChvbmUobGIsICdwJyksIGRhdGEubG9naXN0aWNzLnRleHQpOwogICAgICAgIHR4dChvbmUobGIsICcubGItc3RhdC1udW0nKSwgZGF0YS5sb2dpc3RpY3Muc3RhdE51bSk7CiAgICAgICAgdHh0KG9uZShsYiwgJy5sYi1zdGF0LWxibCcpLCBkYXRhLmxvZ2lzdGljcy5zdGF0TGFiZWwpOwogICAgICB9CiAgICB9CiAgfQoKICBmdW5jdGlvbiB3cml0ZUFsbChzY29wZSwgZGF0YSkgewogICAgdHh0KG9uZShzY29wZSwgJy5oZXJvLWV5ZWJyb3cnKSwgZGF0YS5oZXJvLmV5ZWJyb3cpOwogICAgdmFyIGlubmVycyA9IGFsbChzY29wZSwgJy5oZXJvLXRpdGxlLWlubmVyJyk7CiAgICBkYXRhLmhlcm8ubGluZXMuZm9yRWFjaChmdW5jdGlvbiAobGluZSwgaSkgewogICAgICB2YXIgZWwgPSBpbm5lcnNbaV07CiAgICAgIGlmICghZWwpIHJldHVybjsKICAgICAgdHh0KG9uZShlbCwgJ2VtJykgfHwgZWwsIGxpbmUpOwogICAgfSk7CiAgICB0eHQob25lKHNjb3BlLCAnLnRhYnMtaGVhZCAuaC1sYWJlbCcpLCBkYXRhLnRhYnNIZWFkLmxhYmVsKTsKICAgIHR4dEtlZXAob25lKHNjb3BlLCAnLnRhYnMtaGVhZCAuaC1oaW50JyksIGRhdGEudGFic0hlYWQuaGludCk7CgogICAgdmFyIGNoaXBzID0gYWxsKHNjb3BlLCAnLnRhYnMtdWkgLmNoaXAnKTsKICAgIGRhdGEudGFicy5mb3JFYWNoKGZ1bmN0aW9uICh0YiwgaSkgewogICAgICB2YXIgY2ggPSBjaGlwc1tpXTsKICAgICAgaWYgKCFjaCkgcmV0dXJuOwogICAgICB0eHQob25lKGNoLCAnLmNoaXAtbnVtJyksIHRiLm51bSk7CiAgICAgIHR4dChvbmUoY2gsICcuY2hpcC1uYW1lJyksIHRiLm5hbWUpOwogICAgICB2YXIgbWV0YSA9IGFsbChjaCwgJy5jaGlwLW1ldGEgPiBzcGFuJyk7CiAgICAgIHR4dEtlZXAobWV0YVswXSwgdGIucGluKTsKICAgICAgdHh0KG1ldGFbMV0sIHRiLm1ldGEpOwogICAgfSk7CgogICAgd3JpdGVQYW5lbChzY29wZSwgJ2t6bicsIGRhdGEua3puKTsKICAgIHdyaXRlUGFuZWwoc2NvcGUsICdtc2snLCBkYXRhLm1zayk7CiAgfQoKICAvKiAtLS0tLS0tLS0tINGB0LHQvtGA0LrQsCAtLS0tLS0tLS0tICovCgogIGZ1bmN0aW9uIGNvbGxlY3QoKSB7CiAgICBmaWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZikgeyBzZXQoZi5wYXRoLCBmLmlucHV0LnZhbHVlKTsgfSk7CiAgICByZXR1cm4gY2ZnOwogIH0KCiAgZnVuY3Rpb24gZGlnaXRzKHMyKSB7IHJldHVybiAoczIgfHwgJycpLnJlcGxhY2UoL1teXGRdL2csICcnKTsgfQogIGZ1bmN0aW9uIG1zZyhzMikgeyBib3gucXVlcnlTZWxlY3RvcignI2F2enByLW1zZycpLnRleHRDb250ZW50ID0gczI7IH0KCiAgdmFyIHNyY0NhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBwYWdlU291cmNlKCkgewogICAgaWYgKHNyY0NhY2hlKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNyY0NhY2hlKTsKICAgIHJldHVybiBmZXRjaChsb2NhdGlvbi5wYXRobmFtZSArICc_YXZ6PScgKyBEYXRlLm5vdygpLCB7IGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nIH0pCiAgICAgIC50aGVuKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnRleHQoKTsgfSkKICAgICAgLnRoZW4oZnVuY3Rpb24gKGgpIHsgc3JjQ2FjaGUgPSBoOyByZXR1cm4gaDsgfSk7CiAgfQoKICBmdW5jdGlvbiBjb3B5KHN0ciwgbm90ZSkgewogICAgdmFyIHRhID0gYm94LnF1ZXJ5U2VsZWN0b3IoJyNhdnpwci1vdXQnKTsKICAgIHRhLnZhbHVlID0gc3RyOwogICAgdGEuc2VsZWN0KCk7CiAgICB2YXIgb2sgPSBmYWxzZTsKICAgIHRyeSB7IG9rID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsgfSBjYXRjaCAoZSkge30KICAgIGlmICghb2sgJiYgbmF2aWdhdG9yLmNsaXBib2FyZCkgewogICAgICByZXR1cm4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc3RyKS50aGVuKAogICAgICAgIGZ1bmN0aW9uICgpIHsgbXNnKG5vdGUpOyB9LCBmdW5jdGlvbiAoKSB7IG1zZygn0JLRi9C00LXQu9C40YLQtSDRgtC10LrRgdGCINC90LjQttC1INC4INGB0LrQvtC_0LjRgNGD0LnRgtC1INCy0YDRg9GH0L3Rg9GOLicpOyB9KTsKICAgIH0KICAgIG1zZyhvayA_IG5vdGUgOiAn0JLRi9C00LXQu9C40YLQtSDRgtC10LrRgdGCINC90LjQttC1INC4INGB0LrQvtC_0LjRgNGD0LnRgtC1INCy0YDRg9GH0L3Rg9GOLicpOwogIH0KCiAgYm94LnF1ZXJ5U2VsZWN0b3IoJyNhdnpwci1jbG9zZScpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IGJveC5yZW1vdmUoKTsgfTsKCiAgLyogLS0tLS0tLS0tLSDRgdCx0L7RgNC60LAg0LHQu9C-0LrQsCDRhtC10LvQuNC60L7QvCAtLS0tLS0tLS0tCiAgICAg0JLRgdC1INC90LXQuNC30LzQtdC90Y_QtdC80YvQtSDRh9Cw0YHRgtC4ICjRgdGC0LjQu9C4LCDRgdC60YDQuNC_0YIg0LLQutC70LDQtNC-0LosINGB0YHRi9C70LrQuCDQvdCwINGI0YDQuNGE0YLRiykKICAgICDQsdC10YDRkdC8INC40Lcg0LjRgdGF0L7QtNC90L7Qs9C-INC60L7QtNCwINGB0YLRgNCw0L3QuNGG0YssINCwINC90LUg0LjQtyDRiNCw0LHQu9C-0L3QsCDQstC90YPRgtGA0Lgg0L_QsNC90LXQu9C4LgogICAgINCi0LDQuiDRgNGD0YfQvdGL0LUg0L_RgNCw0LLQutC4INC00LjQt9Cw0LnQvdCwINC_0LXRgNC10LbQuNCy0LDRjtGCINC_0LXRgNC10YHQsdC-0YDQutGDLiAqLwoKICBmdW5jdGlvbiBsZFdpdGhOZXdQcmljZXMoZG9jLCBkYXRhKSB7CiAgICB2YXIgc2MgPSBhbGwoZG9jLCAnc2NyaXB0W3R5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iXScpLmZpbHRlcihmdW5jdGlvbiAoeCkgewogICAgICByZXR1cm4geC50ZXh0Q29udGVudC5pbmRleE9mKCdwcmljZUN1cnJlbmN5JykgPiAtMTsKICAgIH0pWzBdOwogICAgaWYgKCFzYykgcmV0dXJuIHsgdGV4dDogbnVsbCwgaGl0czogMCwgd2FybjogWyfQsdC70L7QuiBsZCtqc29uINGBINGG0LXQvdCw0LzQuCDQvdC1INC90LDQudC00LXQvSddIH07CgogICAgdmFyIHRleHQgPSBzYy50ZXh0Q29udGVudCwgaGl0cyA9IDAsIHdhcm4gPSBbXSwgY2hhbmdlcyA9IFtdOwoKICAgIFsna3puJywgJ21zayddLmZvckVhY2goZnVuY3Rpb24gKGNpdHkpIHsKICAgICAgaWYgKCFkYXRhW2NpdHldIHx8ICFPUklHW2NpdHldKSByZXR1cm47CiAgICAgIGRhdGFbY2l0eV0uY2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoYywgaSkgewogICAgICAgIHZhciBvID0gT1JJR1tjaXR5XS5jYXJkc1tpXTsKICAgICAgICBpZiAoIW8pIHJldHVybjsKICAgICAgICBpZiAoZGlnaXRzKGMucHJpY2UpICE9PSBkaWdpdHMoby5wcmljZSkpIGNoYW5nZXMucHVzaCh7IG9sZDogby5wcmljZSwgbmV1OiBjLnByaWNlIH0pOwogICAgICAgIGlmIChjLm5vdGUgJiYgby5ub3RlICYmIGRpZ2l0cyhjLm5vdGUudmFsdWUpICE9PSBkaWdpdHMoby5ub3RlLnZhbHVlKSkgewogICAgICAgICAgY2hhbmdlcy5wdXNoKHsgb2xkOiBvLm5vdGUudmFsdWUsIG5ldTogYy5ub3RlLnZhbHVlIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKCiAgICBjaGFuZ2VzLmZvckVhY2goZnVuY3Rpb24gKGNoKSB7CiAgICAgIHZhciBvZCA9IGRpZ2l0cyhjaC5vbGQpLCBuZCA9IGRpZ2l0cyhjaC5uZXUpOwogICAgICBpZiAoIW9kIHx8ICFuZCkgcmV0dXJuOwoKICAgICAgLyog0L_QvtC70LUgcHJpY2Ug4oCUINGG0LjRhNGA0Ysg0L_QvtC00YDRj9C0LCDQsdC10Lcg0L_RgNC-0LHQtdC70L7QsiAqLwogICAgICB2YXIgcmVQID0gbmV3IFJlZ0V4cCgnKCJwcmljZSJcXHMqOlxccyoiKScgKyBvZCArICcoIiknLCAnZycpOwogICAgICB2YXIgbjEgPSAodGV4dC5tYXRjaChyZVApIHx8IFtdKS5sZW5ndGg7CiAgICAgIGlmIChuMSA-IDEpIHdhcm4ucHVzaChjaC5vbGQgKyAnINGB0YLQvtC40YIg0LIgJyArIG4xICsgJyDQv9GA0LXQtNC70L7QttC10L3QuNGP0YUg4oCUINGB0LLQtdGA0YzRgtC1INCz0LvQsNC30LDQvNC4Jyk7CiAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UocmVQLCAnJDEnICsgbmQgKyAnJDInKTsKCiAgICAgIC8qINGC0LAg0LbQtSDRhtC10L3QsCDQv9GA0L7Qv9C40YHRjNGOINCyINC-0L_QuNGB0LDQvdC40Y_RhTogwqvQvtGCIDE0IDkwMCDigr3CuyAqLwogICAgICB2YXIgaHVtYW4gPSBvZC5yZXBsYWNlKC9cQig_PShcZHszfSkrKD8hXGQpKS9nLCAnW1xcc1xcdTAwYTBdPycpOwogICAgICB2YXIgcHJldHR5ID0gbmQucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg_IVxkKSkvZywgJyAnKTsKICAgICAgdmFyIG4yID0gKHRleHQubWF0Y2gobmV3IFJlZ0V4cChodW1hbiwgJ2cnKSkgfHwgW10pLmxlbmd0aDsKICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShuZXcgUmVnRXhwKGh1bWFuLCAnZycpLCBwcmV0dHkpOwoKICAgICAgaGl0cyArPSBuMSArIG4yOwogICAgfSk7CgogICAgdHJ5IHsgSlNPTi5wYXJzZSh0ZXh0KTsgfQogICAgY2F0Y2ggKGUpIHsgcmV0dXJuIHsgdGV4dDogbnVsbCwgaGl0czogaGl0cywgd2FybjogWyfQv9C-0YHQu9C1INC_0L7QtNGB0YLQsNC90L7QstC60LggbGQranNvbiDRgdGC0LDQuyDQvdC10LLQsNC70LjQtNC90YvQvDogJyArIGUubWVzc2FnZV0gfTsgfQoKICAgIHJldHVybiB7IHRleHQ6IHRleHQsIGhpdHM6IGhpdHMsIHdhcm46IHdhcm4sIGNoYW5nZWQ6IGNoYW5nZXMubGVuZ3RoIH07CiAgfQoKICBib3gucXVlcnlTZWxlY3RvcignI2F2enByLWJ1aWxkJykub25jbGljayA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBkYXRhID0gY29sbGVjdCgpOwogICAgbXNnKCfQp9C40YLQsNGOINC40YHRhdC-0LTQvdGL0Lkg0LrQvtC0INGB0YLRgNCw0L3QuNGG0YvigKYnKTsKCiAgICBwYWdlU291cmNlKCkudGhlbihmdW5jdGlvbiAoaCkgewogICAgICB2YXIgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhoLCAndGV4dC9odG1sJyk7CgogICAgICB2YXIgc2NvcGUgPSBkb2MucXVlcnlTZWxlY3RvcignLmF2LXByaWNlcycpOwogICAgICBpZiAoIXNjb3BlKSB7IG1zZygn0JIg0LrQvtC00LUg0YHRgtGA0LDQvdC40YbRiyDQvdC1INC90LDQudC00LXQvSDQsdC70L7QuiAuYXYtcHJpY2VzJyk7IHJldHVybjsgfQogICAgICB3cml0ZUFsbChzY29wZSwgZGF0YSk7CgogICAgICB2YXIgc3R5bGUgPSBhbGwoZG9jLCAnc3R5bGUnKS5maWx0ZXIoZnVuY3Rpb24gKHgpIHsKICAgICAgICByZXR1cm4geC50ZXh0Q29udGVudC5pbmRleE9mKCcuYXYtcHJpY2VzJykgPiAtMTsKICAgICAgfSlbMF07CiAgICAgIHZhciB0YWJTY3JpcHQgPSBhbGwoZG9jLCAnc2NyaXB0Om5vdChbdHlwZV0pJykuZmlsdGVyKGZ1bmN0aW9uICh4KSB7CiAgICAgICAgcmV0dXJuIHgudGV4dENvbnRlbnQuaW5kZXhPZignd2FpdEZvckRPTScpID4gLTE7CiAgICAgIH0pWzBdOwogICAgICB2YXIgZm9udExpbmsgPSBkb2MucXVlcnlTZWxlY3RvcignbGlua1tocmVmKj0iY3NzMj9mYW1pbHk9Il0nKTsKCiAgICAgIHZhciBtaXNzaW5nID0gW107CiAgICAgIGlmICghc3R5bGUpIG1pc3NpbmcucHVzaCgnPHN0eWxlPiDQsdC70L7QutCwINGG0LXQvScpOwogICAgICBpZiAoIXRhYlNjcmlwdCkgbWlzc2luZy5wdXNoKCc8c2NyaXB0PiDQstC60LvQsNC00L7QuicpOwogICAgICBpZiAoIWZvbnRMaW5rKSBtaXNzaW5nLnB1c2goJzxsaW5rPiDRiNGA0LjRhNGC0L7QsicpOwogICAgICBpZiAobWlzc2luZy5sZW5ndGgpIHsgbXNnKCfQndC1INC90LDQudC00LXQvdC-INCyINC60L7QtNC1INGB0YLRgNCw0L3QuNGG0Ys6ICcgKyBtaXNzaW5nLmpvaW4oJywgJykgKyAnLiDQmtC-0LQg0L3QtSDRgdC-0LHRgNCw0L0uJyk7IHJldHVybjsgfQoKICAgICAgdmFyIGxkID0gbGRXaXRoTmV3UHJpY2VzKGRvYywgZGF0YSk7CiAgICAgIGlmICghbGQudGV4dCkgeyBtc2coJ9Cg0LDQt9C80LXRgtC60LAg0LTQu9GPINC_0L7QuNGB0LrQvtCy0LjQutC-0LI6ICcgKyBsZC53YXJuLmpvaW4oJzsgJykgKyAnLiDQmtC-0LQg0L3QtSDRgdC-0LHRgNCw0L0uJyk7IHJldHVybjsgfQoKICAgICAgdmFyIG91dCA9IFsKICAgICAgICAvKiDRgNC-0LLQvdC-INGC0LUg0YHRgtGA0L7QutC4LCDRh9GC0L4g0YHRgtC-0Y_RgiDQsiDQsdC70L7QutC1IC9wcmljZSDigJQg0L3QuNGH0LXQs9C-INC90LUg0LTQvtCx0LDQstC70Y_QtdC8LgogICAgICAgICAgIHByZWNvbm5lY3Qg0LogaS53Zm9saW8ucnUg0LfQtNC10YHRjCDQvdC10YIsINC4INCy0YvQtNGD0LzRi9Cy0LDRgtGMINC10LPQviDQvdC10LvRjNC30Y8gKi8KICAgICAgICAnPG1ldGEgY2hhcnNldD0idXRmLTgiPicsCiAgICAgICAgJzxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSI-JywKICAgICAgICAnPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4nLAogICAgICAgIGZvbnRMaW5rLm91dGVySFRNTCwKICAgICAgICAnJywKICAgICAgICBzdHlsZS5vdXRlckhUTUwsCiAgICAgICAgJycsCiAgICAgICAgc2NvcGUub3V0ZXJIVE1MLAogICAgICAgICcnLAogICAgICAgIHRhYlNjcmlwdC5vdXRlckhUTUwsCiAgICAgICAgJycsCiAgICAgICAgJzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI-JywKICAgICAgICBsZC50ZXh0LnRyaW0oKSwKICAgICAgICAnPCcgKyAnL3NjcmlwdD4nCiAgICAgIF0uam9pbignXG4nKTsKCiAgICAgIHZhciBub3RlID0gJ9Ch0LrQvtC_0LjRgNC-0LLQsNC9INC60L7QtCDRgdGC0YDQsNC90LjRhtGLINGG0LXQu9C40LrQvtC8ICgnICsgb3V0Lmxlbmd0aCArICcg0YHQuNC80LLQvtC70L7QsikuICcgKwogICAgICAgICAgICAgICAgICfQkiDQutC-0L3RgdGC0YDRg9C60YLQvtGA0LUg0LLRi9C00LXQu9C40YLQtSDQstC10YHRjCBIVE1MLdCx0LvQvtC6IC9wcmljZSDQuCDQstGB0YLQsNCy0YzRgtC1INC_0L7QstC10YDRhS4nOwogICAgICBpZiAobGQuY2hhbmdlZCkgbm90ZSArPSAnINCm0LXQvSDQvtCx0L3QvtCy0LvQtdC90L4g0LIg0YDQsNC30LzQtdGC0LrQtSDQtNC70Y8g0L_QvtC40YHQutC-0LLQuNC60L7QsjogJyArIGxkLmhpdHMgKyAnLic7CiAgICAgIGVsc2Ugbm90ZSArPSAnINCm0LXQvdGLINC90LUg0LzQtdC90Y_Qu9C40YHRjC4nOwogICAgICBpZiAobGQud2Fybi5sZW5ndGgpIG5vdGUgKz0gJyDQktCd0JjQnNCQ0J3QmNCVOiAnICsgbGQud2Fybi5qb2luKCc7ICcpOwoKICAgICAgY29weShvdXQsIG5vdGUpOwogICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHsgbXNnKCfQndC1INGD0LTQsNC70L7RgdGMINC_0YDQvtGH0LjRgtCw0YLRjCDRgdGC0YDQsNC90LjRhtGDOiAnICsgZS5tZXNzYWdlKTsgfSk7CiAgfTsKCiAgcmV0dXJuICfQn9Cw0L3QtdC70Ywg0YbQtdC9INC-0YLQutGA0YvRgtCwLic7Cn0pKCk7Cgp9fQpdOwoKICB2YXIgcGF0aCA9IGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL1wvKyQvLCAnJykgfHwgJy8nOwoKICBmdW5jdGlvbiBmaXRzKHRvb2wpIHsKICAgIHJldHVybiB0b29sLnBhZ2VzLnNvbWUoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHAgPT09IHBhdGg7IH0pOwogIH0KCiAgZnVuY3Rpb24gY2xvc2UoKSB7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZ6LW1lbnUnKTsKICAgIGlmIChlbCkgZWwucmVtb3ZlKCk7CiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXkpOwogIH0KCiAgZnVuY3Rpb24gb25LZXkoZSkgeyBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSBjbG9zZSgpOyB9CgogIGZ1bmN0aW9uIHJ1bih0b29sKSB7CiAgICBjbG9zZSgpOwogICAgdHJ5IHsKICAgICAgdG9vbC5ydW4oKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgY29uc29sZS5lcnJvcignQVZaOiDQuNC90YHRgtGA0YPQvNC10L3RgiDCqycgKyB0b29sLnRpdGxlICsgJ8K7INGD0L_QsNC7IOKAlCcsIGUpOwogICAgICBhbGVydCgn0JjQvdGB0YLRgNGD0LzQtdC90YIg0L3QtSDQt9Cw0L_Rg9GB0YLQuNC70YHRjzogJyArIGUubWVzc2FnZSArICdcbtCf0L7QtNGA0L7QsdC90L7RgdGC0Lgg0LIg0LrQvtC90YHQvtC70LguJyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvcGVuKCkgewogICAgY2xvc2UoKTsKCiAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgd3JhcC5pZCA9ICdhdnotbWVudSc7CiAgICB3cmFwLnN0eWxlLmNzc1RleHQgPQogICAgICAncG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDt6LWluZGV4OjIxNDc0ODM2NDc7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjsnICsKICAgICAgJ2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDpyZ2JhKDIwLDIwLDIyLC41NSk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoM3B4KTsnICsKICAgICAgJ2ZvbnQ6MTRweC8xLjUgLWFwcGxlLXN5c3RlbSxzeXN0ZW0tdWksc2Fucy1zZXJpZic7CgogICAgdmFyIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgYm94LnN0eWxlLmNzc1RleHQgPQogICAgICAnd2lkdGg6bWluKDQyMHB4LGNhbGMoMTAwdncgLSA0MHB4KSk7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gODBweCk7b3ZlcmZsb3c6YXV0bzsnICsKICAgICAgJ3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDojMWQxZDFmO2NvbG9yOiNmZmY7JyArCiAgICAgICdib3gtc2hhZG93OjAgMjBweCA2MHB4IHJnYmEoMCwwLDAsLjUpJzsKCiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgaGVhZC5zdHlsZS5jc3NUZXh0ID0KICAgICAgJ2ZvbnQtc2l6ZToxMXB4O2xldHRlci1zcGFjaW5nOi4yNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtvcGFjaXR5Oi41NTttYXJnaW4tYm90dG9tOjRweCc7CiAgICBoZWFkLnRleHRDb250ZW50ID0gJ9CY0L3RgdGC0YDRg9C80LXQvdGC0YsgYXZhbnphdG8nOwogICAgYm94LmFwcGVuZENoaWxkKGhlYWQpOwoKICAgIHZhciB3aGVyZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgd2hlcmUuc3R5bGUuY3NzVGV4dCA9ICdmb250LXNpemU6MTJweDtvcGFjaXR5Oi40NTttYXJnaW4tYm90dG9tOjE4cHg7d29yZC1icmVhazpicmVhay1hbGwnOwogICAgd2hlcmUudGV4dENvbnRlbnQgPSBwYXRoOwogICAgYm94LmFwcGVuZENoaWxkKHdoZXJlKTsKCiAgICB2YXIgaGVyZSA9IFRPT0xTLmZpbHRlcihmaXRzKTsKICAgIHZhciByZXN0ID0gVE9PTFMuZmlsdGVyKGZ1bmN0aW9uICh0KSB7IHJldHVybiAhZml0cyh0KTsgfSk7CgogICAgaWYgKCFoZXJlLmxlbmd0aCkgewogICAgICB2YXIgbm9uZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBub25lLnN0eWxlLmNzc1RleHQgPSAncGFkZGluZzoxNHB4IDAgNHB4O29wYWNpdHk6LjY7Zm9udC1zaXplOjEzcHgnOwogICAgICBub25lLnRleHRDb250ZW50ID0gJ9CU0LvRjyDRjdGC0L7QuSDRgdGC0YDQsNC90LjRhtGLINC40L3RgdGC0YDRg9C80LXQvdGC0L7QsiDQv9C-0LrQsCDQvdC10YIuJzsKICAgICAgYm94LmFwcGVuZENoaWxkKG5vbmUpOwogICAgfQoKICAgIGhlcmUuZm9yRWFjaChmdW5jdGlvbiAodCkgeyBib3guYXBwZW5kQ2hpbGQoYnV0dG9uKHQsIHRydWUpKTsgfSk7CgogICAgaWYgKHJlc3QubGVuZ3RoKSB7CiAgICAgIHZhciBzZXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgc2VwLnN0eWxlLmNzc1RleHQgPQogICAgICAgICdtYXJnaW46MThweCAwIDEwcHg7Zm9udC1zaXplOjExcHg7bGV0dGVyLXNwYWNpbmc6LjJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7b3BhY2l0eTouMzUnOwogICAgICBzZXAudGV4dENvbnRlbnQgPSAn0JTQu9GPINC00YDRg9Cz0LjRhSDRgdGC0YDQsNC90LjRhic7CiAgICAgIGJveC5hcHBlbmRDaGlsZChzZXApOwogICAgICByZXN0LmZvckVhY2goZnVuY3Rpb24gKHQpIHsgYm94LmFwcGVuZENoaWxkKGJ1dHRvbih0LCBmYWxzZSkpOyB9KTsKICAgIH0KCiAgICB2YXIgZXNjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICBlc2MudHlwZSA9ICdidXR0b24nOwogICAgZXNjLnRleHRDb250ZW50ID0gJ9CX0LDQutGA0YvRgtGMJzsKICAgIGVzYy5zdHlsZS5jc3NUZXh0ID0KICAgICAgJ21hcmdpbi10b3A6MThweDt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OycgKwogICAgICAnY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMnB4O2N1cnNvcjpwb2ludGVyJzsKICAgIGVzYy5vbmNsaWNrID0gY2xvc2U7CiAgICBib3guYXBwZW5kQ2hpbGQoZXNjKTsKCiAgICB3cmFwLmFwcGVuZENoaWxkKGJveCk7CiAgICB3cmFwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsgaWYgKGUudGFyZ2V0ID09PSB3cmFwKSBjbG9zZSgpOyB9KTsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleSk7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHdyYXApOwogIH0KCiAgZnVuY3Rpb24gYnV0dG9uKHRvb2wsIGFjdGl2ZSkgewogICAgdmFyIGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgYi5zdHlsZS5jc3NUZXh0ID0KICAgICAgJ2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luLWJvdHRvbTo4cHg7cGFkZGluZzoxNHB4IDE2cHg7JyArCiAgICAgICdib3JkZXItcmFkaXVzOjEwcHg7Zm9udDppbmhlcml0O2N1cnNvcjonICsgKGFjdGl2ZSA_ICdwb2ludGVyJyA6ICdkZWZhdWx0JykgKyAnOycgKwogICAgICAnYm9yZGVyOjFweCBzb2xpZCAnICsgKGFjdGl2ZSA_ICd0cmFuc3BhcmVudCcgOiAncmdiYSgyNTUsMjU1LDI1NSwuMTQpJykgKyAnOycgKwogICAgICAnYmFja2dyb3VuZDonICsgKGFjdGl2ZSA_ICcjZmZmJyA6ICd0cmFuc3BhcmVudCcpICsgJzsnICsKICAgICAgJ2NvbG9yOicgKyAoYWN0aXZlID8gJyMxZDFkMWYnIDogJ3JnYmEoMjU1LDI1NSwyNTUsLjQ1KScpOwoKICAgIGIuaW5uZXJIVE1MID0KICAgICAgJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4Ij4nICsgdG9vbC50aXRsZSArICc8L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O29wYWNpdHk6LjY7bWFyZ2luLXRvcDoycHgiPicgKwogICAgICAoYWN0aXZlID8gdG9vbC5oaW50IDogJ9C-0YLQutGA0YvRgtGMICcgKyB0b29sLnBhZ2VzWzBdKSArICc8L2Rpdj4nOwoKICAgIGlmIChhY3RpdmUpIGIub25jbGljayA9IGZ1bmN0aW9uICgpIHsgcnVuKHRvb2wpOyB9OwogICAgZWxzZSBiLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IGxvY2F0aW9uLmhyZWYgPSB0b29sLnBhZ2VzWzBdOyB9OwogICAgcmV0dXJuIGI7CiAgfQoKICBvcGVuKCk7Cn0pKCk7CgAVZ-CODE-END




































































