1688054432
waR3U4bTeM%3A78b9a775c7c6640178aa100eaa1c666f-08af8965d1cf2d574192e1b9d93e9000
s:110492:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTE6IlBhcnNlcyBhbmQgdmVyaWZpZXMgdGhlIGRvYyBjb21tZW50cyBmb3IgZnVuY3Rpb25zLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTozOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTM6IkdyZWcgU2hlcndvb2QiO3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yRW1haWwiO3M6MTk6ImdzaGVyd29vZEBzcXVpei5uZXQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtOO31pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjk6ImNvcHlyaWdodCI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NDQ6IjIwMDYtMjAxNSBTcXVpeiBQdHkgTHRkIChBQk4gNzcgMDg0IDY3MCA2MDApIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo3OiJsaWNlbnNlIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo4MDoiaHR0cHM6Ly9naXRodWIuY29tL3NxdWl6bGFicy9QSFBfQ29kZVNuaWZmZXIvYmxvYi9tYXN0ZXIvbGljZW5jZS50eHQgQlNEIExpY2VuY2UiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czowOiIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6IjA4YWY4OTY1ZDFjZjJkNTc0MTkyZTFiOWQ5M2U5MDAwIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWUiO3M6MjQ6IkZ1bmN0aW9uQ29tbWVudFNuaWZmLnBocCI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjk1OiJ2ZW5kb3Ivc3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlci9zcmMvU3RhbmRhcmRzL1NxdWl6L1NuaWZmcy9Db21tZW50aW5nL0Z1bmN0aW9uQ29tbWVudFNuaWZmLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6MzIzNDU6Ijw/cGhwCi8qKgogKiBQYXJzZXMgYW5kIHZlcmlmaWVzIHRoZSBkb2MgY29tbWVudHMgZm9yIGZ1bmN0aW9ucy4KICoKICogQGF1dGhvciAgICBHcmVnIFNoZXJ3b29kIDxnc2hlcndvb2RAc3F1aXoubmV0PgogKiBAY29weXJpZ2h0IDIwMDYtMjAxNSBTcXVpeiBQdHkgTHRkIChBQk4gNzcgMDg0IDY3MCA2MDApCiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9naXRodWIuY29tL3NxdWl6bGFicy9QSFBfQ29kZVNuaWZmZXIvYmxvYi9tYXN0ZXIvbGljZW5jZS50eHQgQlNEIExpY2VuY2UKICovCgpuYW1lc3BhY2UgUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZzsKCnVzZSBQSFBfQ29kZVNuaWZmZXJcQ29uZmlnOwp1c2UgUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGU7CnVzZSBQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFBFQVJcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50U25pZmYgYXMgUEVBUkZ1bmN0aW9uQ29tbWVudFNuaWZmOwp1c2UgUEhQX0NvZGVTbmlmZmVyXFV0aWxcQ29tbW9uOwoKY2xhc3MgRnVuY3Rpb25Db21tZW50U25pZmYgZXh0ZW5kcyBQRUFSRnVuY3Rpb25Db21tZW50U25pZmYKewoKICAgIC8qKgogICAgICogV2hldGhlciB0byBza2lwIGluaGVyaXRkb2MgY29tbWVudHMuCiAgICAgKgogICAgICogQHZhciBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyAkc2tpcElmSW5oZXJpdGRvYyA9IGZhbHNlOwoKICAgIC8qKgogICAgICogVGhlIGN1cnJlbnQgUEhQIHZlcnNpb24uCiAgICAgKgogICAgICogQHZhciBpbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHBocFZlcnNpb24gPSBudWxsOwoKCiAgICAvKioKICAgICAqIFByb2Nlc3MgdGhlIHJldHVybiBjb21tZW50IG9mIHRoaXMgZnVuY3Rpb24gY29tbWVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlICRwaHBjc0ZpbGUgICAgVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyICAgICBUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgdG9rZW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50U3RhcnQgVGhlIHBvc2l0aW9uIGluIHRoZSBzdGFjayB3aGVyZSB0aGUgY29tbWVudCBzdGFydGVkLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJvY2Vzc1JldHVybihGaWxlICRwaHBjc0ZpbGUsICRzdGFja1B0ciwgJGNvbW1lbnRTdGFydCkKICAgIHsKICAgICAgICAkdG9rZW5zID0gJHBocGNzRmlsZS0+Z2V0VG9rZW5zKCk7CiAgICAgICAgJHJldHVybiA9IG51bGw7CgogICAgICAgIGlmICgkdGhpcy0+c2tpcElmSW5oZXJpdGRvYyA9PT0gdHJ1ZSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmNoZWNrSW5oZXJpdGRvYygkcGhwY3NGaWxlLCAkc3RhY2tQdHIsICRjb21tZW50U3RhcnQpID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0b2tlbnNbJGNvbW1lbnRTdGFydF1bJ2NvbW1lbnRfdGFncyddIGFzICR0YWcpIHsKICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHRhZ11bJ2NvbnRlbnQnXSA9PT0gJ0ByZXR1cm4nKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJldHVybiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdPbmx5IDEgQHJldHVybiB0YWcgaXMgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIGNvbW1lbnQnOwogICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHRhZywgJ0R1cGxpY2F0ZVJldHVybicpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcmV0dXJuID0gJHRhZzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gU2tpcCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3Rvci4KICAgICAgICAkbWV0aG9kTmFtZSAgICAgID0gJHBocGNzRmlsZS0+Z2V0RGVjbGFyYXRpb25OYW1lKCRzdGFja1B0cik7CiAgICAgICAgJGlzU3BlY2lhbE1ldGhvZCA9IGluX2FycmF5KCRtZXRob2ROYW1lLCAgJHRoaXMtPnNwZWNpYWxNZXRob2RzLCB0cnVlKTsKCiAgICAgICAgaWYgKCRyZXR1cm4gIT09IG51bGwpIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSAkdG9rZW5zWygkcmV0dXJuICsgMildWydjb250ZW50J107CiAgICAgICAgICAgIGlmIChlbXB0eSgkY29udGVudCkgPT09IHRydWUgfHwgJHRva2Vuc1soJHJldHVybiArIDIpXVsnY29kZSddICE9PSBUX0RPQ19DT01NRU5UX1NUUklORykgewogICAgICAgICAgICAgICAgJGVycm9yID0gJ1JldHVybiB0eXBlIG1pc3NpbmcgZm9yIEByZXR1cm4gdGFnIGluIGZ1bmN0aW9uIGNvbW1lbnQnOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkcmV0dXJuLCAnTWlzc2luZ1JldHVyblR5cGUnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIFN1cHBvcnQgYm90aCBhIHJldHVybiB0eXBlIGFuZCBhIGRlc2NyaXB0aW9uLgogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgnYF4oKD86XHw/KD86YXJyYXlcKFteXCldKlwpfFtcXFxcYS16MC05XFtcXV0rKSkqKSggLiopP2BpJywgJGNvbnRlbnQsICRyZXR1cm5QYXJ0cyk7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHJldHVyblBhcnRzWzFdKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHJldHVyblR5cGUgPSAkcmV0dXJuUGFydHNbMV07CgogICAgICAgICAgICAgICAgLy8gQ2hlY2sgcmV0dXJuIHR5cGUgKGNhbiBiZSBtdWx0aXBsZSwgc2VwYXJhdGVkIGJ5ICd8JykuCiAgICAgICAgICAgICAgICAkdHlwZU5hbWVzICAgICAgPSBleHBsb2RlKCd8JywgJHJldHVyblR5cGUpOwogICAgICAgICAgICAgICAgJHN1Z2dlc3RlZE5hbWVzID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdHlwZU5hbWVzIGFzICRpID0+ICR0eXBlTmFtZSkgewogICAgICAgICAgICAgICAgICAgICRzdWdnZXN0ZWROYW1lID0gQ29tbW9uOjpzdWdnZXN0VHlwZSgkdHlwZU5hbWUpOwogICAgICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkc3VnZ2VzdGVkTmFtZSwgJHN1Z2dlc3RlZE5hbWVzLCB0cnVlKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Z2dlc3RlZE5hbWVzW10gPSAkc3VnZ2VzdGVkTmFtZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGUgPSBpbXBsb2RlKCd8JywgJHN1Z2dlc3RlZE5hbWVzKTsKICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSAhPT0gJHN1Z2dlc3RlZFR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnRXhwZWN0ZWQgIiVzIiBidXQgZm91bmQgIiVzIiBmb3IgZnVuY3Rpb24gcmV0dXJuIHR5cGUnOwogICAgICAgICAgICAgICAgICAgICRkYXRhICA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5UeXBlLAogICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJHJldHVybiwgJ0ludmFsaWRSZXR1cm4nLCAkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50ID0gJHN1Z2dlc3RlZFR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkcmV0dXJuUGFydHNbMl0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50IC49ICRyZXR1cm5QYXJ0c1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigoJHJldHVybiArIDIpLCAkcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmV0dXJuIHR5cGUgaXMgdm9pZCwgbWFrZSBzdXJlIHRoZXJlIGlzCiAgICAgICAgICAgICAgICAvLyBubyByZXR1cm4gc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvbi4KICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSA9PT0gJ3ZvaWQnKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfY2xvc2VyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbmRUb2tlbiA9ICR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJHJldHVyblRva2VuID0gJHN0YWNrUHRyOyAkcmV0dXJuVG9rZW4gPCAkZW5kVG9rZW47ICRyZXR1cm5Ub2tlbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skcmV0dXJuVG9rZW5dWydjb2RlJ10gPT09IFRfQ0xPU1VSRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2tlbnNbJHJldHVyblRva2VuXVsnY29kZSddID09PSBUX0FOT05fQ0xBU1MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5Ub2tlbiA9ICR0b2tlbnNbJHJldHVyblRva2VuXVsnc2NvcGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHJldHVyblRva2VuXVsnY29kZSddID09PSBUX1JFVFVSTgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2tlbnNbJHJldHVyblRva2VuXVsnY29kZSddID09PSBUX1lJRUxECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRva2Vuc1skcmV0dXJuVG9rZW5dWydjb2RlJ10gPT09IFRfWUlFTERfRlJPTQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVG9rZW4gIT09ICRlbmRUb2tlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCByZXR1cm5pbmcgYW55dGhpbmcsIGp1c3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4aXRpbmcsIHRoZW4gdGhlcmUgaXMgbm8gcHJvYmxlbS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZW1pY29sb24gPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUX1dISVRFU1BBQ0UsICgkcmV0dXJuVG9rZW4gKyAxKSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skc2VtaWNvbG9uXVsnY29kZSddICE9PSBUX1NFTUlDT0xPTikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdGdW5jdGlvbiByZXR1cm4gdHlwZSBpcyB2b2lkLCBidXQgZnVuY3Rpb24gY29udGFpbnMgcmV0dXJuIHN0YXRlbWVudCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkcmV0dXJuLCAnSW52YWxpZFJldHVyblZvaWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkcmV0dXJuVHlwZSAhPT0gJ21peGVkJyAmJiBpbl9hcnJheSgndm9pZCcsICR0eXBlTmFtZXMsIHRydWUpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIC8vIElmIHJldHVybiB0eXBlIGlzIG5vdCB2b2lkLCB0aGVyZSBuZWVkcyB0byBiZSBhIHJldHVybiBzdGF0ZW1lbnQKICAgICAgICAgICAgICAgICAgICAvLyBzb21ld2hlcmUgaW4gdGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBzb21ldGhpbmcuCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfY2xvc2VyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbmRUb2tlbiA9ICR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJHJldHVyblRva2VuID0gJHN0YWNrUHRyOyAkcmV0dXJuVG9rZW4gPCAkZW5kVG9rZW47ICRyZXR1cm5Ub2tlbisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skcmV0dXJuVG9rZW5dWydjb2RlJ10gPT09IFRfQ0xPU1VSRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2tlbnNbJHJldHVyblRva2VuXVsnY29kZSddID09PSBUX0FOT05fQ0xBU1MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5Ub2tlbiA9ICR0b2tlbnNbJHJldHVyblRva2VuXVsnc2NvcGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHJldHVyblRva2VuXVsnY29kZSddID09PSBUX1JFVFVSTgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2tlbnNbJHJldHVyblRva2VuXVsnY29kZSddID09PSBUX1lJRUxECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRva2Vuc1skcmV0dXJuVG9rZW5dWydjb2RlJ10gPT09IFRfWUlFTERfRlJPTQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVG9rZW4gPT09ICRlbmRUb2tlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVycm9yID0gJ0Z1bmN0aW9uIHJldHVybiB0eXBlIGlzIG5vdCB2b2lkLCBidXQgZnVuY3Rpb24gaGFzIG5vIHJldHVybiBzdGF0ZW1lbnQnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkcmV0dXJuLCAnSW52YWxpZE5vUmV0dXJuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VtaWNvbG9uID0gJHBocGNzRmlsZS0+ZmluZE5leHQoVF9XSElURVNQQUNFLCAoJHJldHVyblRva2VuICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHNlbWljb2xvbl1bJ2NvZGUnXSA9PT0gVF9TRU1JQ09MT04pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnRnVuY3Rpb24gcmV0dXJuIHR5cGUgaXMgbm90IHZvaWQsIGJ1dCBmdW5jdGlvbiBpcyByZXR1cm5pbmcgdm9pZCBoZXJlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICRyZXR1cm5Ub2tlbiwgJ0ludmFsaWRSZXR1cm5Ob3RWb2lkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoJGlzU3BlY2lhbE1ldGhvZCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZXJyb3IgPSAnTWlzc2luZyBAcmV0dXJuIHRhZyBpbiBmdW5jdGlvbiBjb21tZW50JzsKICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkdG9rZW5zWyRjb21tZW50U3RhcnRdWydjb21tZW50X2Nsb3NlciddLCAnTWlzc2luZ1JldHVybicpOwogICAgICAgIH0vL2VuZCBpZgoKICAgIH0vL2VuZCBwcm9jZXNzUmV0dXJuKCkKCgogICAgLyoqCiAgICAgKiBQcm9jZXNzIGFueSB0aHJvdyB0YWdzIHRoYXQgdGhpcyBmdW5jdGlvbiBjb21tZW50IGhhcy4KICAgICAqCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlICRwaHBjc0ZpbGUgICAgVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyICAgICBUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgdG9rZW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50U3RhcnQgVGhlIHBvc2l0aW9uIGluIHRoZSBzdGFjayB3aGVyZSB0aGUgY29tbWVudCBzdGFydGVkLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJvY2Vzc1Rocm93cyhGaWxlICRwaHBjc0ZpbGUsICRzdGFja1B0ciwgJGNvbW1lbnRTdGFydCkKICAgIHsKICAgICAgICAkdG9rZW5zID0gJHBocGNzRmlsZS0+Z2V0VG9rZW5zKCk7CgogICAgICAgIGlmICgkdGhpcy0+c2tpcElmSW5oZXJpdGRvYyA9PT0gdHJ1ZSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmNoZWNrSW5oZXJpdGRvYygkcGhwY3NGaWxlLCAkc3RhY2tQdHIsICRjb21tZW50U3RhcnQpID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0b2tlbnNbJGNvbW1lbnRTdGFydF1bJ2NvbW1lbnRfdGFncyddIGFzICRwb3MgPT4gJHRhZykgewogICAgICAgICAgICBpZiAoJHRva2Vuc1skdGFnXVsnY29udGVudCddICE9PSAnQHRocm93cycpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZXhjZXB0aW9uID0gbnVsbDsKICAgICAgICAgICAgJGNvbW1lbnQgICA9IG51bGw7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWygkdGFnICsgMildWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAkbWF0Y2hlcyA9IFtdOwogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgnLyhbXlxzXSspKD86XHMrKC4qKSk/LycsICR0b2tlbnNbKCR0YWcgKyAyKV1bJ2NvbnRlbnQnXSwgJG1hdGNoZXMpOwogICAgICAgICAgICAgICAgJGV4Y2VwdGlvbiA9ICRtYXRjaGVzWzFdOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRtYXRjaGVzWzJdKSA9PT0gdHJ1ZSAmJiB0cmltKCRtYXRjaGVzWzJdKSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAkY29tbWVudCA9ICRtYXRjaGVzWzJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGV4Y2VwdGlvbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGVycm9yID0gJ0V4Y2VwdGlvbiB0eXBlIGFuZCBjb21tZW50IG1pc3NpbmcgZm9yIEB0aHJvd3MgdGFnIGluIGZ1bmN0aW9uIGNvbW1lbnQnOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkdGFnLCAnSW52YWxpZFRocm93cycpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCRjb21tZW50ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnQ29tbWVudCBtaXNzaW5nIGZvciBAdGhyb3dzIHRhZyBpbiBmdW5jdGlvbiBjb21tZW50JzsKICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHRhZywgJ0VtcHR5VGhyb3dzJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBBbnkgc3RyaW5ncyB1bnRpbCB0aGUgbmV4dCB0YWcgYmVsb25nIHRvIHRoaXMgY29tbWVudC4KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdG9rZW5zWyRjb21tZW50U3RhcnRdWydjb21tZW50X3RhZ3MnXVsoJHBvcyArIDEpXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAkZW5kID0gJHRva2Vuc1skY29tbWVudFN0YXJ0XVsnY29tbWVudF90YWdzJ11bKCRwb3MgKyAxKV07CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRlbmQgPSAkdG9rZW5zWyRjb21tZW50U3RhcnRdWydjb21tZW50X2Nsb3NlciddOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAoJHRhZyArIDMpOyAkaSA8ICRlbmQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9ET0NfQ09NTUVOVF9TVFJJTkcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1lbnQgLj0gJyAnLiR0b2tlbnNbJGldWydjb250ZW50J107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjb21tZW50ID0gdHJpbSgkY29tbWVudCk7CgogICAgICAgICAgICAgICAgLy8gU3RhcnRzIHdpdGggYSBjYXBpdGFsIGxldHRlciBhbmQgZW5kcyB3aXRoIGEgZnVsbHN0b3AuCiAgICAgICAgICAgICAgICAkZmlyc3RDaGFyID0gJGNvbW1lbnRbMF07CiAgICAgICAgICAgICAgICBpZiAoc3RydG91cHBlcigkZmlyc3RDaGFyKSAhPT0gJGZpcnN0Q2hhcikgewogICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdAdGhyb3dzIHRhZyBjb21tZW50IG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJzsKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICgkdGFnICsgMiksICdUaHJvd3NOb3RDYXBpdGFsJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxhc3RDaGFyID0gc3Vic3RyKCRjb21tZW50LCAtMSk7CiAgICAgICAgICAgICAgICBpZiAoJGxhc3RDaGFyICE9PSAnLicpIHsKICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnQHRocm93cyB0YWcgY29tbWVudCBtdXN0IGVuZCB3aXRoIGEgZnVsbCBzdG9wJzsKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICgkdGFnICsgMiksICdUaHJvd3NOb0Z1bGxTdG9wJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgIH0vL2VuZCBmb3JlYWNoCgogICAgfS8vZW5kIHByb2Nlc3NUaHJvd3MoKQoKCiAgICAvKioKICAgICAqIFByb2Nlc3MgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlciBjb21tZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlICRwaHBjc0ZpbGUgICAgVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyICAgICBUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgdG9rZW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50U3RhcnQgVGhlIHBvc2l0aW9uIGluIHRoZSBzdGFjayB3aGVyZSB0aGUgY29tbWVudCBzdGFydGVkLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJvY2Vzc1BhcmFtcyhGaWxlICRwaHBjc0ZpbGUsICRzdGFja1B0ciwgJGNvbW1lbnRTdGFydCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnBocFZlcnNpb24gPT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPnBocFZlcnNpb24gPSBDb25maWc6OmdldENvbmZpZ0RhdGEoJ3BocF92ZXJzaW9uJyk7CiAgICAgICAgICAgIGlmICgkdGhpcy0+cGhwVmVyc2lvbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPnBocFZlcnNpb24gPSBQSFBfVkVSU0lPTl9JRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwoKICAgICAgICBpZiAoJHRoaXMtPnNraXBJZkluaGVyaXRkb2MgPT09IHRydWUpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5jaGVja0luaGVyaXRkb2MoJHBocGNzRmlsZSwgJHN0YWNrUHRyLCAkY29tbWVudFN0YXJ0KSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcGFyYW1zICA9IFtdOwogICAgICAgICRtYXhUeXBlID0gMDsKICAgICAgICAkbWF4VmFyICA9IDA7CiAgICAgICAgZm9yZWFjaCAoJHRva2Vuc1skY29tbWVudFN0YXJ0XVsnY29tbWVudF90YWdzJ10gYXMgJHBvcyA9PiAkdGFnKSB7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyR0YWddWydjb250ZW50J10gIT09ICdAcGFyYW0nKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHR5cGUgICAgICAgICA9ICcnOwogICAgICAgICAgICAkdHlwZVNwYWNlICAgID0gMDsKICAgICAgICAgICAgJHZhciAgICAgICAgICA9ICcnOwogICAgICAgICAgICAkdmFyU3BhY2UgICAgID0gMDsKICAgICAgICAgICAgJGNvbW1lbnQgICAgICA9ICcnOwogICAgICAgICAgICAkY29tbWVudExpbmVzID0gW107CiAgICAgICAgICAgIGlmICgkdG9rZW5zWygkdGFnICsgMildWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAkbWF0Y2hlcyA9IFtdOwogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgnLyhbXiQmLl0rKSg/OigoPzpcLlwuXC4pPyg/OlwkfCYpW15cc10rKSg/OihccyspKC4qKSk/KT8vJywgJHRva2Vuc1soJHRhZyArIDIpXVsnY29udGVudCddLCAkbWF0Y2hlcyk7CgogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRtYXRjaGVzKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZUxlbiAgID0gc3RybGVuKCRtYXRjaGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICAkdHlwZSAgICAgID0gdHJpbSgkbWF0Y2hlc1sxXSk7CiAgICAgICAgICAgICAgICAgICAgJHR5cGVTcGFjZSA9ICgkdHlwZUxlbiAtIHN0cmxlbigkdHlwZSkpOwogICAgICAgICAgICAgICAgICAgICR0eXBlTGVuICAgPSBzdHJsZW4oJHR5cGUpOwogICAgICAgICAgICAgICAgICAgIGlmICgkdHlwZUxlbiA+ICRtYXhUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtYXhUeXBlID0gJHR5cGVMZW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbWF0Y2hlc1syXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAkdmFyICAgID0gJG1hdGNoZXNbMl07CiAgICAgICAgICAgICAgICAgICAgJHZhckxlbiA9IHN0cmxlbigkdmFyKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhckxlbiA+ICRtYXhWYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1heFZhciA9ICR2YXJMZW47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG1hdGNoZXNbNF0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2YXJTcGFjZSAgICAgICA9IHN0cmxlbigkbWF0Y2hlc1szXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50ICAgICAgICA9ICRtYXRjaGVzWzRdOwogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudExpbmVzW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbWVudCcgPT4gJGNvbW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9rZW4nICAgPT4gKCR0YWcgKyAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmRlbnQnICA9PiAkdmFyU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBBbnkgc3RyaW5ncyB1bnRpbCB0aGUgbmV4dCB0YWcgYmVsb25nIHRvIHRoaXMgY29tbWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJGNvbW1lbnRTdGFydF1bJ2NvbW1lbnRfdGFncyddWygkcG9zICsgMSldKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVuZCA9ICR0b2tlbnNbJGNvbW1lbnRTdGFydF1bJ2NvbW1lbnRfdGFncyddWygkcG9zICsgMSldOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVuZCA9ICR0b2tlbnNbJGNvbW1lbnRTdGFydF1bJ2NvbW1lbnRfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJGkgPSAoJHRhZyArIDMpOyAkaSA8ICRlbmQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRpXVsnY29kZSddID09PSBUX0RPQ19DT01NRU5UX1NUUklORykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRlbnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWygkaSAtIDEpXVsnY29kZSddID09PSBUX0RPQ19DT01NRU5UX1dISVRFU1BBQ0UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGVudCA9ICR0b2tlbnNbKCRpIC0gMSldWydsZW5ndGgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50ICAgICAgIC49ICcgJy4kdG9rZW5zWyRpXVsnY29udGVudCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50TGluZXNbXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW1lbnQnID0+ICR0b2tlbnNbJGldWydjb250ZW50J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2tlbicgICA9PiAkaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZGVudCcgID0+ICRpbmRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdNaXNzaW5nIHBhcmFtZXRlciBjb21tZW50JzsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkdGFnLCAnTWlzc2luZ1BhcmFtQ29tbWVudCcpOwogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudExpbmVzW10gPSBbJ2NvbW1lbnQnID0+ICcnXTsKICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGVycm9yID0gJ01pc3NpbmcgcGFyYW1ldGVyIG5hbWUnOwogICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHRhZywgJ01pc3NpbmdQYXJhbU5hbWUnKTsKICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGVycm9yID0gJ01pc3NpbmcgcGFyYW1ldGVyIHR5cGUnOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkdGFnLCAnTWlzc2luZ1BhcmFtVHlwZScpOwogICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgICRwYXJhbXNbXSA9IFsKICAgICAgICAgICAgICAgICd0YWcnICAgICAgICAgID0+ICR0YWcsCiAgICAgICAgICAgICAgICAndHlwZScgICAgICAgICA9PiAkdHlwZSwKICAgICAgICAgICAgICAgICd2YXInICAgICAgICAgID0+ICR2YXIsCiAgICAgICAgICAgICAgICAnY29tbWVudCcgICAgICA9PiAkY29tbWVudCwKICAgICAgICAgICAgICAgICdjb21tZW50TGluZXMnID0+ICRjb21tZW50TGluZXMsCiAgICAgICAgICAgICAgICAndHlwZV9zcGFjZScgICA9PiAkdHlwZVNwYWNlLAogICAgICAgICAgICAgICAgJ3Zhcl9zcGFjZScgICAgPT4gJHZhclNwYWNlLAogICAgICAgICAgICBdOwogICAgICAgIH0vL2VuZCBmb3JlYWNoCgogICAgICAgICRyZWFsUGFyYW1zICA9ICRwaHBjc0ZpbGUtPmdldE1ldGhvZFBhcmFtZXRlcnMoJHN0YWNrUHRyKTsKICAgICAgICAkZm91bmRQYXJhbXMgPSBbXTsKCiAgICAgICAgLy8gV2Ugd2FudCB0byB1c2UgLi4uIGZvciBhbGwgdmFyaWFibGUgbGVuZ3RoIGFyZ3VtZW50cywgc28gYWRkZWQKICAgICAgICAvLyB0aGlzIHByZWZpeCB0byB0aGUgdmFyaWFibGUgbmFtZSBzbyBjb21wYXJpc29ucyBhcmUgZWFzaWVyLgogICAgICAgIGZvcmVhY2ggKCRyZWFsUGFyYW1zIGFzICRwb3MgPT4gJHBhcmFtKSB7CiAgICAgICAgICAgIGlmICgkcGFyYW1bJ3ZhcmlhYmxlX2xlbmd0aCddID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkcmVhbFBhcmFtc1skcG9zXVsnbmFtZSddID0gJy4uLicuJHJlYWxQYXJhbXNbJHBvc11bJ25hbWUnXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtcyBhcyAkcG9zID0+ICRwYXJhbSkgewogICAgICAgICAgICAvLyBJZiB0aGUgdHlwZSBpcyBlbXB0eSwgdGhlIHdob2xlIGxpbmUgaXMgZW1wdHkuCiAgICAgICAgICAgIGlmICgkcGFyYW1bJ3R5cGUnXSA9PT0gJycpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDaGVjayB0aGUgcGFyYW0gdHlwZSB2YWx1ZS4KICAgICAgICAgICAgJHR5cGVOYW1lcyAgICAgICAgICA9IGV4cGxvZGUoJ3wnLCAkcGFyYW1bJ3R5cGUnXSk7CiAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlTmFtZXMgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCR0eXBlTmFtZXMgYXMgJHR5cGVOYW1lKSB7CiAgICAgICAgICAgICAgICAvLyBTdHJpcCBudWxsYWJsZSBvcGVyYXRvci4KICAgICAgICAgICAgICAgIGlmICgkdHlwZU5hbWVbMF0gPT09ICc/JykgewogICAgICAgICAgICAgICAgICAgICR0eXBlTmFtZSA9IHN1YnN0cigkdHlwZU5hbWUsIDEpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRzdWdnZXN0ZWROYW1lICAgICAgICA9IENvbW1vbjo6c3VnZ2VzdFR5cGUoJHR5cGVOYW1lKTsKICAgICAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlTmFtZXNbXSA9ICRzdWdnZXN0ZWROYW1lOwoKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkdHlwZU5hbWVzKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBDaGVjayB0eXBlIGhpbnQgZm9yIGFycmF5IGFuZCBjdXN0b20gdHlwZS4KICAgICAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlSGludCA9ICcnOwogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkc3VnZ2VzdGVkTmFtZSwgJ2FycmF5JykgIT09IGZhbHNlIHx8IHN1YnN0cigkc3VnZ2VzdGVkTmFtZSwgLTIpID09PSAnW10nKSB7CiAgICAgICAgICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGVIaW50ID0gJ2FycmF5JzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RycG9zKCRzdWdnZXN0ZWROYW1lLCAnY2FsbGFibGUnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkc3VnZ2VzdGVkVHlwZUhpbnQgPSAnY2FsbGFibGUnOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJwb3MoJHN1Z2dlc3RlZE5hbWUsICdjYWxsYmFjaycpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlSGludCA9ICdjYWxsYWJsZSc7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluX2FycmF5KCRzdWdnZXN0ZWROYW1lLCBDb21tb246OiRhbGxvd2VkVHlwZXMsIHRydWUpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlSGludCA9ICRzdWdnZXN0ZWROYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+cGhwVmVyc2lvbiA+PSA3MDAwMCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkc3VnZ2VzdGVkTmFtZSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGVIaW50ID0gJ3N0cmluZyc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkc3VnZ2VzdGVkTmFtZSA9PT0gJ2ludCcgfHwgJHN1Z2dlc3RlZE5hbWUgPT09ICdpbnRlZ2VyJykgewogICAgICAgICAgICAgICAgICAgICAgICAkc3VnZ2VzdGVkVHlwZUhpbnQgPSAnaW50JzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRzdWdnZXN0ZWROYW1lID09PSAnZmxvYXQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlSGludCA9ICdmbG9hdCc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkc3VnZ2VzdGVkTmFtZSA9PT0gJ2Jvb2wnIHx8ICRzdWdnZXN0ZWROYW1lID09PSAnYm9vbGVhbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGVIaW50ID0gJ2Jvb2wnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnBocFZlcnNpb24gPj0gNzAyMDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHN1Z2dlc3RlZE5hbWUgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlSGludCA9ICdvYmplY3QnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnBocFZlcnNpb24gPj0gODAwMDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHN1Z2dlc3RlZE5hbWUgPT09ICdtaXhlZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGVIaW50ID0gJ21peGVkJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRzdWdnZXN0ZWRUeXBlSGludCAhPT0gJycgJiYgaXNzZXQoJHJlYWxQYXJhbXNbJHBvc10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGVIaW50ID0gJHJlYWxQYXJhbXNbJHBvc11bJ3R5cGVfaGludCddOwoKICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgbmFtZXNwYWNlIHByZWZpeGVzIHdoZW4gY29tcGFyaW5nLgogICAgICAgICAgICAgICAgICAgICRjb21wYXJlVHlwZUhpbnQgPSBzdWJzdHIoJHN1Z2dlc3RlZFR5cGVIaW50LCAoc3RybGVuKCR0eXBlSGludCkgKiAtMSkpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHR5cGVIaW50ID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnVHlwZSBoaW50ICIlcyIgbWlzc2luZyBmb3IgJXMnOwogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSAgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3VnZ2VzdGVkVHlwZUhpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1bJ3ZhciddLAogICAgICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgJGVycm9yQ29kZSA9ICdUeXBlSGludE1pc3NpbmcnOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHN1Z2dlc3RlZFR5cGVIaW50ID09PSAnc3RyaW5nJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHN1Z2dlc3RlZFR5cGVIaW50ID09PSAnaW50JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHN1Z2dlc3RlZFR5cGVIaW50ID09PSAnZmxvYXQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkc3VnZ2VzdGVkVHlwZUhpbnQgPT09ICdib29sJwogICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvckNvZGUgPSAnU2NhbGFyJy4kZXJyb3JDb2RlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICRzdGFja1B0ciwgJGVycm9yQ29kZSwgJGRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJHR5cGVIaW50ICE9PSAkY29tcGFyZVR5cGVIaW50ICYmICR0eXBlSGludCAhPT0gJz8nLiRjb21wYXJlVHlwZUhpbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVycm9yID0gJ0V4cGVjdGVkIHR5cGUgaGludCAiJXMiOyBmb3VuZCAiJXMiIGZvciAlcyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhICA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdWdnZXN0ZWRUeXBlSGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlSGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbVsndmFyJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHN0YWNrUHRyLCAnSW5jb3JyZWN0VHlwZUhpbnQnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRzdWdnZXN0ZWRUeXBlSGludCA9PT0gJycgJiYgaXNzZXQoJHJlYWxQYXJhbXNbJHBvc10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGVIaW50ID0gJHJlYWxQYXJhbXNbJHBvc11bJ3R5cGVfaGludCddOwogICAgICAgICAgICAgICAgICAgIGlmICgkdHlwZUhpbnQgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdVbmtub3duIHR5cGUgaGludCAiJXMiIGZvdW5kIGZvciAlcyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhICA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlSGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbVsndmFyJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHN0YWNrUHRyLCAnSW52YWxpZFR5cGVIaW50JywgJGRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICB9Ly9lbmQgZm9yZWFjaAoKICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGUgPSBpbXBsb2RlKCd8JywgJHN1Z2dlc3RlZFR5cGVOYW1lcyk7CiAgICAgICAgICAgIGlmICgkcGFyYW1bJ3R5cGUnXSAhPT0gJHN1Z2dlc3RlZFR5cGUpIHsKICAgICAgICAgICAgICAgICRlcnJvciA9ICdFeHBlY3RlZCAiJXMiIGJ1dCBmb3VuZCAiJXMiIGZvciBwYXJhbWV0ZXIgdHlwZSc7CiAgICAgICAgICAgICAgICAkZGF0YSAgPSBbCiAgICAgICAgICAgICAgICAgICAgJHN1Z2dlc3RlZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgJHBhcmFtWyd0eXBlJ10sCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICRmaXggPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkcGFyYW1bJ3RhZyddLCAnSW5jb3JyZWN0UGFyYW1WYXJOYW1lJywgJGRhdGEpOwogICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YmVnaW5DaGFuZ2VzZXQoKTsKCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgID0gJHN1Z2dlc3RlZFR5cGU7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gc3RyX3JlcGVhdCgnICcsICRwYXJhbVsndHlwZV9zcGFjZSddKTsKICAgICAgICAgICAgICAgICAgICAkY29udGVudCAuPSAkcGFyYW1bJ3ZhciddOwogICAgICAgICAgICAgICAgICAgICRjb250ZW50IC49IHN0cl9yZXBlYXQoJyAnLCAkcGFyYW1bJ3Zhcl9zcGFjZSddKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHBhcmFtWydjb21tZW50TGluZXMnXVswXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gJHBhcmFtWydjb21tZW50TGluZXMnXVswXVsnY29tbWVudCddOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigoJHBhcmFtWyd0YWcnXSArIDIpLCAkY29udGVudCk7CgogICAgICAgICAgICAgICAgICAgIC8vIEZpeCB1cCB0aGUgaW5kZW50IG9mIGFkZGl0aW9uYWwgY29tbWVudCBsaW5lcy4KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1bJ2NvbW1lbnRMaW5lcyddIGFzICRsaW5lTnVtID0+ICRsaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGluZU51bSA9PT0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHBhcmFtWydjb21tZW50TGluZXMnXVskbGluZU51bV1bJ2luZGVudCddID09PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRkaWZmICAgICAgPSAoc3RybGVuKCRwYXJhbVsndHlwZSddKSAtIHN0cmxlbigkc3VnZ2VzdGVkVHlwZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAkbmV3SW5kZW50ID0gKCRwYXJhbVsnY29tbWVudExpbmVzJ11bJGxpbmVOdW1dWydpbmRlbnQnXSAtICRkaWZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkcGFyYW1bJ2NvbW1lbnRMaW5lcyddWyRsaW5lTnVtXVsndG9rZW4nXSAtIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX3JlcGVhdCgnICcsICRuZXdJbmRlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+ZW5kQ2hhbmdlc2V0KCk7CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICBpZiAoJHBhcmFtWyd2YXInXSA9PT0gJycpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZm91bmRQYXJhbXNbXSA9ICRwYXJhbVsndmFyJ107CgogICAgICAgICAgICAvLyBDaGVjayBudW1iZXIgb2Ygc3BhY2VzIGFmdGVyIHRoZSB0eXBlLgogICAgICAgICAgICAkdGhpcy0+Y2hlY2tTcGFjaW5nQWZ0ZXJQYXJhbVR5cGUoJHBocGNzRmlsZSwgJHBhcmFtLCAkbWF4VHlwZSk7CgogICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHBhcmFtIG5hbWUgaXMgY29ycmVjdC4KICAgICAgICAgICAgaWYgKGlzc2V0KCRyZWFsUGFyYW1zWyRwb3NdKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHJlYWxOYW1lID0gJHJlYWxQYXJhbXNbJHBvc11bJ25hbWUnXTsKICAgICAgICAgICAgICAgIGlmICgkcmVhbE5hbWUgIT09ICRwYXJhbVsndmFyJ10pIHsKICAgICAgICAgICAgICAgICAgICAkY29kZSA9ICdQYXJhbU5hbWVOb01hdGNoJzsKICAgICAgICAgICAgICAgICAgICAkZGF0YSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtWyd2YXInXSwKICAgICAgICAgICAgICAgICAgICAgICAgJHJlYWxOYW1lLAogICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICRlcnJvciA9ICdEb2MgY29tbWVudCBmb3IgcGFyYW1ldGVyICVzIGRvZXMgbm90IG1hdGNoICc7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoJHBhcmFtWyd2YXInXSkgPT09IHN0cnRvbG93ZXIoJHJlYWxOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgLj0gJ2Nhc2Ugb2YgJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGUgICA9ICdQYXJhbU5hbWVOb0Nhc2VNYXRjaCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkZXJyb3IgLj0gJ2FjdHVhbCB2YXJpYWJsZSBuYW1lICVzJzsKCiAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkcGFyYW1bJ3RhZyddLCAkY29kZSwgJGRhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKHN1YnN0cigkcGFyYW1bJ3ZhciddLCAtNCkgIT09ICcsLi4uJykgewogICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZlIGFuIGV4dHJhIHBhcmFtZXRlciBjb21tZW50LgogICAgICAgICAgICAgICAgJGVycm9yID0gJ1N1cGVyZmx1b3VzIHBhcmFtZXRlciBjb21tZW50JzsKICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHBhcmFtWyd0YWcnXSwgJ0V4dHJhUGFyYW1Db21tZW50Jyk7CiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgaWYgKCRwYXJhbVsnY29tbWVudCddID09PSAnJykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIENoZWNrIG51bWJlciBvZiBzcGFjZXMgYWZ0ZXIgdGhlIHZhciBuYW1lLgogICAgICAgICAgICAkdGhpcy0+Y2hlY2tTcGFjaW5nQWZ0ZXJQYXJhbU5hbWUoJHBocGNzRmlsZSwgJHBhcmFtLCAkbWF4VmFyKTsKCiAgICAgICAgICAgIC8vIFBhcmFtIGNvbW1lbnRzIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyIGFuZCBlbmQgd2l0aCBhIGZ1bGwgc3RvcC4KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eKFxwe0xsfXxcUHtMfSkvdScsICRwYXJhbVsnY29tbWVudCddKSA9PT0gMSkgewogICAgICAgICAgICAgICAgJGVycm9yID0gJ1BhcmFtZXRlciBjb21tZW50IG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJzsKICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHBhcmFtWyd0YWcnXSwgJ1BhcmFtQ29tbWVudE5vdENhcGl0YWwnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxhc3RDaGFyID0gc3Vic3RyKCRwYXJhbVsnY29tbWVudCddLCAtMSk7CiAgICAgICAgICAgIGlmICgkbGFzdENoYXIgIT09ICcuJykgewogICAgICAgICAgICAgICAgJGVycm9yID0gJ1BhcmFtZXRlciBjb21tZW50IG11c3QgZW5kIHdpdGggYSBmdWxsIHN0b3AnOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkcGFyYW1bJ3RhZyddLCAnUGFyYW1Db21tZW50RnVsbFN0b3AnKTsKICAgICAgICAgICAgfQogICAgICAgIH0vL2VuZCBmb3JlYWNoCgogICAgICAgICRyZWFsTmFtZXMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkcmVhbFBhcmFtcyBhcyAkcmVhbFBhcmFtKSB7CiAgICAgICAgICAgICRyZWFsTmFtZXNbXSA9ICRyZWFsUGFyYW1bJ25hbWUnXTsKICAgICAgICB9CgogICAgICAgIC8vIFJlcG9ydCBtaXNzaW5nIGNvbW1lbnRzLgogICAgICAgICRkaWZmID0gYXJyYXlfZGlmZigkcmVhbE5hbWVzLCAkZm91bmRQYXJhbXMpOwogICAgICAgIGZvcmVhY2ggKCRkaWZmIGFzICRuZWVkZWRQYXJhbSkgewogICAgICAgICAgICAkZXJyb3IgPSAnRG9jIGNvbW1lbnQgZm9yIHBhcmFtZXRlciAiJXMiIG1pc3NpbmcnOwogICAgICAgICAgICAkZGF0YSAgPSBbJG5lZWRlZFBhcmFtXTsKICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkY29tbWVudFN0YXJ0LCAnTWlzc2luZ1BhcmFtVGFnJywgJGRhdGEpOwogICAgICAgIH0KCiAgICB9Ly9lbmQgcHJvY2Vzc1BhcmFtcygpCgoKICAgIC8qKgogICAgICogQ2hlY2sgdGhlIHNwYWNpbmcgYWZ0ZXIgdGhlIHR5cGUgb2YgYSBwYXJhbWV0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIFxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSAkcGhwY3NGaWxlIFRoZSBmaWxlIGJlaW5nIHNjYW5uZWQuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbSAgICAgVGhlIHBhcmFtZXRlciB0byBiZSBjaGVja2VkLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkbWF4VHlwZSAgIFRoZSBtYXhsZW5ndGggb2YgdGhlIGxvbmdlc3QgcGFyYW1ldGVyIHR5cGUuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICRzcGFjaW5nICAgVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gYWRkIGFmdGVyIHRoZSB0eXBlLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tTcGFjaW5nQWZ0ZXJQYXJhbVR5cGUoRmlsZSAkcGhwY3NGaWxlLCAkcGFyYW0sICRtYXhUeXBlLCAkc3BhY2luZz0xKQogICAgewogICAgICAgIC8vIENoZWNrIG51bWJlciBvZiBzcGFjZXMgYWZ0ZXIgdGhlIHR5cGUuCiAgICAgICAgJHNwYWNlcyA9ICgkbWF4VHlwZSAtIHN0cmxlbigkcGFyYW1bJ3R5cGUnXSkgKyAkc3BhY2luZyk7CiAgICAgICAgaWYgKCRwYXJhbVsndHlwZV9zcGFjZSddICE9PSAkc3BhY2VzKSB7CiAgICAgICAgICAgICRlcnJvciA9ICdFeHBlY3RlZCAlcyBzcGFjZXMgYWZ0ZXIgcGFyYW1ldGVyIHR5cGU7ICVzIGZvdW5kJzsKICAgICAgICAgICAgJGRhdGEgID0gWwogICAgICAgICAgICAgICAgJHNwYWNlcywKICAgICAgICAgICAgICAgICRwYXJhbVsndHlwZV9zcGFjZSddLAogICAgICAgICAgICBdOwoKICAgICAgICAgICAgJGZpeCA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRwYXJhbVsndGFnJ10sICdTcGFjaW5nQWZ0ZXJQYXJhbVR5cGUnLCAkZGF0YSk7CiAgICAgICAgICAgIGlmICgkZml4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YmVnaW5DaGFuZ2VzZXQoKTsKCiAgICAgICAgICAgICAgICAkY29udGVudCAgPSAkcGFyYW1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICRjb250ZW50IC49IHN0cl9yZXBlYXQoJyAnLCAkc3BhY2VzKTsKICAgICAgICAgICAgICAgICRjb250ZW50IC49ICRwYXJhbVsndmFyJ107CiAgICAgICAgICAgICAgICAkY29udGVudCAuPSBzdHJfcmVwZWF0KCcgJywgJHBhcmFtWyd2YXJfc3BhY2UnXSk7CiAgICAgICAgICAgICAgICAkY29udGVudCAuPSAkcGFyYW1bJ2NvbW1lbnRMaW5lcyddWzBdWydjb21tZW50J107CiAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCgkcGFyYW1bJ3RhZyddICsgMiksICRjb250ZW50KTsKCiAgICAgICAgICAgICAgICAvLyBGaXggdXAgdGhlIGluZGVudCBvZiBhZGRpdGlvbmFsIGNvbW1lbnQgbGluZXMuCiAgICAgICAgICAgICAgICAkZGlmZiA9ICgkcGFyYW1bJ3R5cGVfc3BhY2UnXSAtICRzcGFjZXMpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtWydjb21tZW50TGluZXMnXSBhcyAkbGluZU51bSA9PiAkbGluZSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkbGluZU51bSA9PT0gMAogICAgICAgICAgICAgICAgICAgICAgICB8fCAkcGFyYW1bJ2NvbW1lbnRMaW5lcyddWyRsaW5lTnVtXVsnaW5kZW50J10gPT09IDAKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkbmV3SW5kZW50ID0gKCRwYXJhbVsnY29tbWVudExpbmVzJ11bJGxpbmVOdW1dWydpbmRlbnQnXSAtICRkaWZmKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJG5ld0luZGVudCA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigKICAgICAgICAgICAgICAgICAgICAgICAgKCRwYXJhbVsnY29tbWVudExpbmVzJ11bJGxpbmVOdW1dWyd0b2tlbiddIC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cl9yZXBlYXQoJyAnLCAkbmV3SW5kZW50KQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICB9Ly9lbmQgaWYKCiAgICB9Ly9lbmQgY2hlY2tTcGFjaW5nQWZ0ZXJQYXJhbVR5cGUoKQoKCiAgICAvKioKICAgICAqIENoZWNrIHRoZSBzcGFjaW5nIGFmdGVyIHRoZSBuYW1lIG9mIGEgcGFyYW1ldGVyLgogICAgICoKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUgJHBocGNzRmlsZSBUaGUgZmlsZSBiZWluZyBzY2FubmVkLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW0gICAgIFRoZSBwYXJhbWV0ZXIgdG8gYmUgY2hlY2tlZC4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgJG1heFZhciAgICBUaGUgbWF4bGVuZ3RoIG9mIHRoZSBsb25nZXN0IHBhcmFtZXRlciBuYW1lLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkc3BhY2luZyAgIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCBhZnRlciB0aGUgdHlwZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrU3BhY2luZ0FmdGVyUGFyYW1OYW1lKEZpbGUgJHBocGNzRmlsZSwgJHBhcmFtLCAkbWF4VmFyLCAkc3BhY2luZz0xKQogICAgewogICAgICAgIC8vIENoZWNrIG51bWJlciBvZiBzcGFjZXMgYWZ0ZXIgdGhlIHZhciBuYW1lLgogICAgICAgICRzcGFjZXMgPSAoJG1heFZhciAtIHN0cmxlbigkcGFyYW1bJ3ZhciddKSArICRzcGFjaW5nKTsKICAgICAgICBpZiAoJHBhcmFtWyd2YXJfc3BhY2UnXSAhPT0gJHNwYWNlcykgewogICAgICAgICAgICAkZXJyb3IgPSAnRXhwZWN0ZWQgJXMgc3BhY2VzIGFmdGVyIHBhcmFtZXRlciBuYW1lOyAlcyBmb3VuZCc7CiAgICAgICAgICAgICRkYXRhICA9IFsKICAgICAgICAgICAgICAgICRzcGFjZXMsCiAgICAgICAgICAgICAgICAkcGFyYW1bJ3Zhcl9zcGFjZSddLAogICAgICAgICAgICBdOwoKICAgICAgICAgICAgJGZpeCA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRwYXJhbVsndGFnJ10sICdTcGFjaW5nQWZ0ZXJQYXJhbU5hbWUnLCAkZGF0YSk7CiAgICAgICAgICAgIGlmICgkZml4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+YmVnaW5DaGFuZ2VzZXQoKTsKCiAgICAgICAgICAgICAgICAkY29udGVudCAgPSAkcGFyYW1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICRjb250ZW50IC49IHN0cl9yZXBlYXQoJyAnLCAkcGFyYW1bJ3R5cGVfc3BhY2UnXSk7CiAgICAgICAgICAgICAgICAkY29udGVudCAuPSAkcGFyYW1bJ3ZhciddOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gc3RyX3JlcGVhdCgnICcsICRzcGFjZXMpOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gJHBhcmFtWydjb21tZW50TGluZXMnXVswXVsnY29tbWVudCddOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigoJHBhcmFtWyd0YWcnXSArIDIpLCAkY29udGVudCk7CgogICAgICAgICAgICAgICAgLy8gRml4IHVwIHRoZSBpbmRlbnQgb2YgYWRkaXRpb25hbCBjb21tZW50IGxpbmVzLgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtWydjb21tZW50TGluZXMnXSBhcyAkbGluZU51bSA9PiAkbGluZSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkbGluZU51bSA9PT0gMAogICAgICAgICAgICAgICAgICAgICAgICB8fCAkcGFyYW1bJ2NvbW1lbnRMaW5lcyddWyRsaW5lTnVtXVsnaW5kZW50J10gPT09IDAKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkZGlmZiAgICAgID0gKCRwYXJhbVsndmFyX3NwYWNlJ10gLSAkc3BhY2VzKTsKICAgICAgICAgICAgICAgICAgICAkbmV3SW5kZW50ID0gKCRwYXJhbVsnY29tbWVudExpbmVzJ11bJGxpbmVOdW1dWydpbmRlbnQnXSAtICRkaWZmKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJG5ld0luZGVudCA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigKICAgICAgICAgICAgICAgICAgICAgICAgKCRwYXJhbVsnY29tbWVudExpbmVzJ11bJGxpbmVOdW1dWyd0b2tlbiddIC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cl9yZXBlYXQoJyAnLCAkbmV3SW5kZW50KQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICB9Ly9lbmQgaWYKCiAgICB9Ly9lbmQgY2hlY2tTcGFjaW5nQWZ0ZXJQYXJhbU5hbWUoKQoKCiAgICAvKioKICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgd2hvbGUgY29tbWVudCBpcyBhbiBpbmhlcml0ZG9jIGNvbW1lbnQuCiAgICAgKgogICAgICogQHBhcmFtIFxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSAkcGhwY3NGaWxlICAgIFRoZSBmaWxlIGJlaW5nIHNjYW5uZWQuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFja1B0ciAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHN0YWNrIHBhc3NlZCBpbiAkdG9rZW5zLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudFN0YXJ0IFRoZSBwb3NpdGlvbiBpbiB0aGUgc3RhY2sgd2hlcmUgdGhlIGNvbW1lbnQgc3RhcnRlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gVFJVRSBpZiB0aGUgZG9jYmxvY2sgY29udGFpbnMgb25seSB7QGluaGVyaXRkb2N9IChjYXNlLWluc2Vuc2l0aXZlKS4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrSW5oZXJpdGRvYyhGaWxlICRwaHBjc0ZpbGUsICRzdGFja1B0ciwgJGNvbW1lbnRTdGFydCkKICAgIHsKICAgICAgICAkdG9rZW5zID0gJHBocGNzRmlsZS0+Z2V0VG9rZW5zKCk7CgogICAgICAgICRhbGxvd2VkVG9rZW5zID0gWwogICAgICAgICAgICBUX0RPQ19DT01NRU5UX09QRU5fVEFHLAogICAgICAgICAgICBUX0RPQ19DT01NRU5UX1dISVRFU1BBQ0UsCiAgICAgICAgICAgIFRfRE9DX0NPTU1FTlRfU1RBUiwKICAgICAgICBdOwogICAgICAgIGZvciAoJGkgPSAkY29tbWVudFN0YXJ0OyAkaSA8PSAkdG9rZW5zWyRjb21tZW50U3RhcnRdWydjb21tZW50X2Nsb3NlciddOyAkaSsrKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkdG9rZW5zWyRpXVsnY29kZSddLCAkYWxsb3dlZFRva2VucykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkdHJpbW1lZENvbnRlbnQgPSBzdHJ0b2xvd2VyKHRyaW0oJHRva2Vuc1skaV1bJ2NvbnRlbnQnXSkpOwoKICAgICAgICAgICAgICAgIGlmICgkdHJpbW1lZENvbnRlbnQgPT09ICd7QGluaGVyaXRkb2N9JykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICB9Ly9lbmQgY2hlY2tJbmhlcml0ZG9jKCkKCgp9Ly9lbmQgY2xhc3MKIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWVzcGFjZXMiO2E6MTp7czo1MDoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmciO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MDoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmciO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMDoiQ29tbWVudGluZyI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjcxOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZ1xGdW5jdGlvbkNvbW1lbnRTbmlmZiI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjEzOntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3MToiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50U25pZmYiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMDoiRnVuY3Rpb25Db21tZW50U25pZmYiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjcwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQRUFSXFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjA6IkZ1bmN0aW9uQ29tbWVudFNuaWZmIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGltcGxlbWVudHMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjI6e3M6OTA6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjokc2tpcElmSW5oZXJpdGRvYyI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eSI6MTE6e3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6OTA6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjokc2tpcElmSW5oZXJpdGRvYyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJza2lwSWZJbmhlcml0ZG9jIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjM2OiJXaGV0aGVyIHRvIHNraXAgaW5oZXJpdGRvYyBjb21tZW50cy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFZhcl8iOjQ6e3M6MTU6IgAqAHZhcmlhYmxlTmFtZSI7czowOiIiO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjc6IgAqAG5hbWUiO3M6MzoidmFyIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czo0OToiUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6NDp7czo2OiJDb25maWciO3M6MjI6IlBIUF9Db2RlU25pZmZlclxDb25maWciO3M6NDoiRmlsZSI7czoyNjoiUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MjQ6IlBFQVJGdW5jdGlvbkNvbW1lbnRTbmlmZiI7czo2OToiUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xQRUFSXFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmIjtzOjY6IkNvbW1vbiI7czoyNzoiUEhQX0NvZGVTbmlmZmVyXFV0aWxcQ29tbW9uIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO3M6NToiZmFsc2UiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHN0YXRpYyI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQByZWFkT25seSI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e319czo4NDoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50U25pZmY6OiRwaHBWZXJzaW9uIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4NDoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50U25pZmY6OiRwaHBWZXJzaW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTA6InBocFZlcnNpb24iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MjQ6IlRoZSBjdXJyZW50IFBIUCB2ZXJzaW9uLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVmFyXyI6NDp7czoxNToiACoAdmFyaWFibGVOYW1lIjtzOjA6IiI7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzE7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7czo0OiJudWxsIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjMyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozMjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHJlYWRPbmx5IjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbWV0YWRhdGEiO2E6MDp7fX19czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6Njp7czo4ODoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50U25pZmY6OnByb2Nlc3NSZXR1cm4oKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjUyOiJQcm9jZXNzIHRoZSByZXR1cm4gY29tbWVudCBvZiB0aGlzIGZ1bmN0aW9uIGNvbW1lbnQuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjQ6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NjU6IlRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbgppbiB0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjEyOiJjb21tZW50U3RhcnQiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NTI6IlRoZSBwb3NpdGlvbiBpbiB0aGUgc3RhY2sgd2hlcmUgdGhlIGNvbW1lbnQgc3RhcnRlZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjM7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcxO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODg6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjpwcm9jZXNzUmV0dXJuKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMzoicHJvY2Vzc1JldHVybiI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJzdGFja1B0ciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjEyOiJjb21tZW50U3RhcnQiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE4OTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6ODg6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjpwcm9jZXNzVGhyb3dzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1NDoiUHJvY2VzcyBhbnkgdGhyb3cgdGFncyB0aGF0IHRoaXMgZnVuY3Rpb24gY29tbWVudCBoYXMuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjQ6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NjU6IlRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbgppbiB0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjEyOiJjb21tZW50U3RhcnQiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NTI6IlRoZSBwb3NpdGlvbiBpbiB0aGUgc3RhY2sgd2hlcmUgdGhlIGNvbW1lbnQgc3RhcnRlZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjM7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcxO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODg6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjpwcm9jZXNzVGhyb3dzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMzoicHJvY2Vzc1Rocm93cyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJzdGFja1B0ciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjEyOiJjb21tZW50U3RhcnQiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMDI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjg4OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZ1xGdW5jdGlvbkNvbW1lbnRTbmlmZjo6cHJvY2Vzc1BhcmFtcygpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NDA6IlByb2Nlc3MgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlciBjb21tZW50cy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6NDp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjk6InBocGNzRmlsZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzOiJUaGUgZmlsZSBiZWluZyBzY2FubmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo4OiJzdGFja1B0ciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo2NToiVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuCmluIHRoZSBzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6MTI6ImNvbW1lbnRTdGFydCI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo1MjoiVGhlIHBvc2l0aW9uIGluIHRoZSBzdGFjayB3aGVyZSB0aGUgY29tbWVudCBzdGFydGVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MztPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzE7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4ODoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50U25pZmY6OnByb2Nlc3NQYXJhbXMoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEzOiJwcm9jZXNzUGFyYW1zIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjM6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6InN0YWNrUHRyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTI6ImNvbW1lbnRTdGFydCI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI3ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjYxMTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6MTAxOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZ1xGdW5jdGlvbkNvbW1lbnRTbmlmZjo6Y2hlY2tTcGFjaW5nQWZ0ZXJQYXJhbVR5cGUoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjQ4OiJDaGVjayB0aGUgc3BhY2luZyBhZnRlciB0aGUgdHlwZSBvZiBhIHBhcmFtZXRlci4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6NTp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjk6InBocGNzRmlsZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzOiJUaGUgZmlsZSBiZWluZyBzY2FubmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo1OiJwYXJhbSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Mjg6IlRoZSBwYXJhbWV0ZXIgdG8gYmUgY2hlY2tlZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NzoibWF4VHlwZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0NDoiVGhlIG1heGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBwYXJhbWV0ZXIgdHlwZS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjM7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6Nzoic3BhY2luZyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0MzoiVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gYWRkIGFmdGVyIHRoZSB0eXBlLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6NDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzE7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxMDE6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjpjaGVja1NwYWNpbmdBZnRlclBhcmFtVHlwZSgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjY6ImNoZWNrU3BhY2luZ0FmdGVyUGFyYW1UeXBlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjQ6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6InBhcmFtIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoibWF4VHlwZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MztPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjc6InNwYWNpbmciO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtzOjE6IjEiO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2MjQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2NzA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjEwMToiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50U25pZmY6OmNoZWNrU3BhY2luZ0FmdGVyUGFyYW1OYW1lKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0ODoiQ2hlY2sgdGhlIHNwYWNpbmcgYWZ0ZXIgdGhlIG5hbWUgb2YgYSBwYXJhbWV0ZXIuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjU6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NToicGFyYW0iO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjI4OiJUaGUgcGFyYW1ldGVyIHRvIGJlIGNoZWNrZWQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjY6Im1heFZhciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0NDoiVGhlIG1heGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBwYXJhbWV0ZXIgbmFtZS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjM7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6Nzoic3BhY2luZyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0MzoiVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gYWRkIGFmdGVyIHRoZSB0eXBlLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6NDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzE7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxMDE6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjpjaGVja1NwYWNpbmdBZnRlclBhcmFtTmFtZSgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjY6ImNoZWNrU3BhY2luZ0FmdGVyUGFyYW1OYW1lIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjQ6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6InBhcmFtIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoibWF4VmFyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aTozO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6Nzoic3BhY2luZyI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO3M6MToiMSI7czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjY4MztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjcyOTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6OTA6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFNuaWZmOjpjaGVja0luaGVyaXRkb2MoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjYyOiJEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHdob2xlIGNvbW1lbnQgaXMgYW4gaW5oZXJpdGRvYyBjb21tZW50LiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTo0OntpOjA7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6OToicGhwY3NGaWxlIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjM6IlRoZSBmaWxlIGJlaW5nIHNjYW5uZWQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjg6InN0YWNrUHRyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjY1OiJUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgdG9rZW4KaW4gdGhlIHN0YWNrIHBhc3NlZCBpbiAkdG9rZW5zLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czoxMjoiY29tbWVudFN0YXJ0IjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjUyOiJUaGUgcG9zaXRpb24gaW4gdGhlIHN0YWNrIHdoZXJlIHRoZSBjb21tZW50IHN0YXJ0ZWQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTozO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo1OToiVFJVRSBpZiB0aGUgZG9jYmxvY2sgY29udGFpbnMgb25seSAlMSRzIChjYXNlLWluc2Vuc2l0aXZlKS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YToxOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjEwOiJpbmhlcml0ZG9jIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3MTtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjkwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZ1xGdW5jdGlvbkNvbW1lbnRTbmlmZjo6Y2hlY2tJbmhlcml0ZG9jKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNToiY2hlY2tJbmhlcml0ZG9jIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjM6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6InN0YWNrUHRyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTI6ImNvbW1lbnRTdGFydCI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjc0MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjc2NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjc2ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";