1688054432
waR3U4bTeM%3A7519de2cfc3cbbbe087a315c27150f32-291c03cc6230732d0957951ef938318a
s:31428:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NDY6Ildhcm5zIGFib3V0IGNvZGUgdGhhdCBjYW4gbmV2ZXIgYmVlbiBleGVjdXRlZC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjEzOiJHcmVnIFNoZXJ3b29kIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE5OiJnc2hlcndvb2RAc3F1aXoubmV0IjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo5OiJjb3B5cmlnaHQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ0OiIyMDA2LTIwMTUgU3F1aXogUHR5IEx0ZCAoQUJOIDc3IDA4NCA2NzAgNjAwKSI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoibGljZW5zZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6ODA6Imh0dHBzOi8vZ2l0aHViLmNvbS9zcXVpemxhYnMvUEhQX0NvZGVTbmlmZmVyL2Jsb2IvbWFzdGVyL2xpY2VuY2UudHh0IEJTRCBMaWNlbmNlIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiIyOTFjMDNjYzYyMzA3MzJkMDk1Nzk1MWVmOTM4MzE4YSI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI2OiJOb25FeGVjdXRhYmxlQ29kZVNuaWZmLnBocCI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjkwOiJ2ZW5kb3Ivc3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlci9zcmMvU3RhbmRhcmRzL1NxdWl6L1NuaWZmcy9QSFAvTm9uRXhlY3V0YWJsZUNvZGVTbmlmZi5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjEwMzE4OiI8P3BocAovKioKICogV2FybnMgYWJvdXQgY29kZSB0aGF0IGNhbiBuZXZlciBiZWVuIGV4ZWN1dGVkLgogKgogKiBAYXV0aG9yICAgIEdyZWcgU2hlcndvb2QgPGdzaGVyd29vZEBzcXVpei5uZXQ+CiAqIEBjb3B5cmlnaHQgMjAwNi0yMDE1IFNxdWl6IFB0eSBMdGQgKEFCTiA3NyAwODQgNjcwIDYwMCkKICogQGxpY2Vuc2UgICBodHRwczovL2dpdGh1Yi5jb20vc3F1aXpsYWJzL1BIUF9Db2RlU25pZmZlci9ibG9iL21hc3Rlci9saWNlbmNlLnR4dCBCU0QgTGljZW5jZQogKi8KCm5hbWVzcGFjZSBQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xQSFA7Cgp1c2UgUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGU7CnVzZSBQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmOwp1c2UgUEhQX0NvZGVTbmlmZmVyXFV0aWxcVG9rZW5zOwoKY2xhc3MgTm9uRXhlY3V0YWJsZUNvZGVTbmlmZiBpbXBsZW1lbnRzIFNuaWZmCnsKCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHRva2VucyB0aGlzIHRlc3Qgd2FudHMgdG8gbGlzdGVuIGZvci4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3RlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgVF9CUkVBSywKICAgICAgICAgICAgVF9DT05USU5VRSwKICAgICAgICAgICAgVF9SRVRVUk4sCiAgICAgICAgICAgIFRfVEhST1csCiAgICAgICAgICAgIFRfRVhJVCwKICAgICAgICAgICAgVF9HT1RPLAogICAgICAgIF07CgogICAgfS8vZW5kIHJlZ2lzdGVyKCkKCgogICAgLyoqCiAgICAgKiBQcm9jZXNzZXMgdGhpcyB0ZXN0LCB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLgogICAgICoKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUgJHBocGNzRmlsZSBUaGUgZmlsZSBiZWluZyBzY2FubmVkLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIgIFRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbiBpbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoRmlsZSAkcGhwY3NGaWxlLCAkc3RhY2tQdHIpCiAgICB7CiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwoKICAgICAgICAvLyBJZiB0aGlzIHRva2VuIGlzIHByZWNlZGVkIHdpdGggYW4gIm9yIiwgaXQgb25seSByZWxhdGVzIHRvIG9uZSBsaW5lCiAgICAgICAgLy8gYW5kIHNob3VsZCBiZSBpZ25vcmVkLiBGb3IgZXhhbXBsZTogZm9wZW4oKSBvciBkaWUoKS4KICAgICAgICAkcHJldiA9ICRwaHBjc0ZpbGUtPmZpbmRQcmV2aW91cyhUb2tlbnM6OiRlbXB0eVRva2VucywgKCRzdGFja1B0ciAtIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICBpZiAoJHRva2Vuc1skcHJldl1bJ2NvZGUnXSA9PT0gVF9MT0dJQ0FMX09SIHx8ICR0b2tlbnNbJHByZXZdWydjb2RlJ10gPT09IFRfQk9PTEVBTl9PUikgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHRva2VuIGlzIGFjdHVhbGx5IHBhcnQgb2YgYSBvbmUtbGluZSBJRiBvciBFTFNFIHN0YXRlbWVudC4KICAgICAgICBmb3IgKCRpID0gKCRzdGFja1B0ciAtIDEpOyAkaSA+IDA7ICRpLS0pIHsKICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGldWydjb2RlJ10gPT09IFRfQ0xPU0VfUEFSRU5USEVTSVMpIHsKICAgICAgICAgICAgICAgICRpID0gJHRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX29wZW5lciddOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNzZXQoVG9rZW5zOjokZW1wdHlUb2tlbnNbJHRva2Vuc1skaV1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9JRgogICAgICAgICAgICB8fCAkdG9rZW5zWyRpXVsnY29kZSddID09PSBUX0VMU0UKICAgICAgICAgICAgfHwgJHRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9FTFNFSUYKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddID09PSBUX1JFVFVSTikgewogICAgICAgICAgICAkbmV4dCA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KFRfV0hJVEVTUEFDRSwgKCRzdGFja1B0ciArIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCR0b2tlbnNbJG5leHRdWydjb2RlJ10gPT09IFRfU0VNSUNPTE9OKSB7CiAgICAgICAgICAgICAgICAkbmV4dCA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KFRfV0hJVEVTUEFDRSwgKCRuZXh0ICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJG5leHRdWydjb2RlJ10gPT09IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCkgewogICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGNsb3NpbmcgYnJhY2Ugb2YgYSBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gdGhpcyByZXR1cm4gc3RhdGVtZW50IGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nCiAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGlzIG5vdCByZXF1aXJlZCBhbnl3YXkuCiAgICAgICAgICAgICAgICAgICAgJG93bmVyID0gJHRva2Vuc1skbmV4dF1bJ3Njb3BlX2NvbmRpdGlvbiddOwogICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRvd25lcl1bJ2NvZGUnXSA9PT0gVF9GVU5DVElPTikgewogICAgICAgICAgICAgICAgICAgICAgICAkd2FybmluZyA9ICdFbXB0eSByZXR1cm4gc3RhdGVtZW50IG5vdCByZXF1aXJlZCBoZXJlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkV2FybmluZygkd2FybmluZywgJHN0YWNrUHRyLCAnUmV0dXJuTm90UmVxdWlyZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfb3BlbmVyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICRvd25lciA9ICR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfY29uZGl0aW9uJ107CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRvd25lcl1bJ2NvZGUnXSA9PT0gVF9DQVNFIHx8ICR0b2tlbnNbJG93bmVyXVsnY29kZSddID09PSBUX0RFRkFVTFQpIHsKICAgICAgICAgICAgICAgIC8vIFRoaXMgdG9rZW4gY2xvc2VzIHRoZSBzY29wZSBvZiBhIENBU0Ugb3IgREVGQVVMVCBzdGF0ZW1lbnQKICAgICAgICAgICAgICAgIC8vIHNvIGFueSBjb2RlIGJldHdlZW4gdGhpcyBzdGF0ZW1lbnQgYW5kIHRoZSBuZXh0IENBU0UsIERFRkFVTFQgb3IKICAgICAgICAgICAgICAgIC8vIGVuZCBvZiBTV0lUQ0ggdG9rZW4gd2lsbCBub3QgYmUgZXhlY3V0YWJsZS4KICAgICAgICAgICAgICAgICRlbmQgID0gJHBocGNzRmlsZS0+ZmluZEVuZE9mU3RhdGVtZW50KCRzdGFja1B0cik7CiAgICAgICAgICAgICAgICAkbmV4dCA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KAogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgVF9DQVNFLAogICAgICAgICAgICAgICAgICAgICAgICBUX0RFRkFVTFQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgVF9FTkRTV0lUQ0gsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAoJGVuZCArIDEpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkbmV4dCAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdExpbmUgPSAkdG9rZW5zWyRlbmRdWydsaW5lJ107CiAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9ICgkc3RhY2tQdHIgKyAxKTsgJGkgPCAkbmV4dDsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoVG9rZW5zOjokZW1wdHlUb2tlbnNbJHRva2Vuc1skaV1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSAkdG9rZW5zWyRpXVsnbGluZSddOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxpbmUgPiAkbGFzdExpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlICAgID0gc3Vic3RyKCR0b2tlbnNbJHN0YWNrUHRyXVsndHlwZSddLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3YXJuaW5nID0gJ0NvZGUgYWZ0ZXIgdGhlICVzIHN0YXRlbWVudCBvbiBsaW5lICVzIGNhbm5vdCBiZSBleGVjdXRlZCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSAgICA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRXYXJuaW5nKCR3YXJuaW5nLCAkaSwgJ1VucmVhY2hhYmxlJywgJGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RMaW5lID0gJGxpbmU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgICAgICAvLyBUaGF0J3MgYWxsIHdlIGhhdmUgdG8gY2hlY2sgZm9yIHRoZXNlIHR5cGVzIG9mIHN0YXRlbWVudHMuCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAvLyBUaGlzIHRva2VuIG1heSBiZSBwYXJ0IG9mIGFuIGlubGluZSBjb25kaXRpb24uCiAgICAgICAgLy8gSWYgd2UgZmluZCBhIGNsb3NpbmcgcGFyZW50aGVzaXMgdGhhdCBiZWxvbmdzIHRvIGEgY29uZGl0aW9uCiAgICAgICAgLy8gd2Ugc2hvdWxkIGlnbm9yZSB0aGlzIHRva2VuLgogICAgICAgICRwcmV2ID0gJHBocGNzRmlsZS0+ZmluZFByZXZpb3VzKFRva2Vuczo6JGVtcHR5VG9rZW5zLCAoJHN0YWNrUHRyIC0gMSksIG51bGwsIHRydWUpOwogICAgICAgIGlmIChpc3NldCgkdG9rZW5zWyRwcmV2XVsncGFyZW50aGVzaXNfb3duZXInXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgJG93bmVyICA9ICR0b2tlbnNbJHByZXZdWydwYXJlbnRoZXNpc19vd25lciddOwogICAgICAgICAgICAkaWdub3JlID0gWwogICAgICAgICAgICAgICAgVF9JRiAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfRUxTRSAgID0+IHRydWUsCiAgICAgICAgICAgICAgICBUX0VMU0VJRiA9PiB0cnVlLAogICAgICAgICAgICBdOwogICAgICAgICAgICBpZiAoaXNzZXQoJGlnbm9yZVskdG9rZW5zWyRvd25lcl1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRvdXJDb25kaXRpb25zID0gYXJyYXlfa2V5cygkdG9rZW5zWyRzdGFja1B0cl1bJ2NvbmRpdGlvbnMnXSk7CgogICAgICAgIGlmIChlbXB0eSgkb3VyQ29uZGl0aW9ucykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRjb25kaXRpb24gPSBhcnJheV9wb3AoJG91ckNvbmRpdGlvbnMpOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJGNvbmRpdGlvbl1bJ3Njb3BlX2Nsb3NlciddKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBCUkVBSyBzdGF0ZW1lbnRzIHNpdHRpbmcgZGlyZWN0bHkgaW5zaWRlIFNXSVRDSAogICAgICAgICAgICAvLyBzdGF0ZW1lbnRzLiBJZiB3ZSBnZXQgdG8gdGhpcyBwb2ludCwgd2Uga25vdyB0aGUgQlJFQUsgaXMgbm90IGJlaW5nCiAgICAgICAgICAgIC8vIHVzZWQgdG8gY2xvc2UgYSBDQVNFIHN0YXRlbWVudCwgc28gaXQgaXMgbW9zdCBsaWtlbHkgbm9uLWV4ZWN1dGFibGUKICAgICAgICAgICAgLy8gY29kZSBpdHNlbGYgKGFzIGlzIHRoZSBjYXNlIHdoZW4geW91IHB1dCByZXR1cm47IGJyZWFrOyBhdCB0aGUgZW5kIG9mCiAgICAgICAgICAgIC8vIGEgY2FzZSkuIFNvIHdlIG5lZWQgdG8gaWdub3JlIHRoaXMgdG9rZW4uCiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRjb25kaXRpb25dWydjb2RlJ10gPT09IFRfU1dJVENICiAgICAgICAgICAgICAgICAmJiAkdG9rZW5zWyRzdGFja1B0cl1bJ2NvZGUnXSA9PT0gVF9CUkVBSwogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNsb3NlciA9ICR0b2tlbnNbJGNvbmRpdGlvbl1bJ3Njb3BlX2Nsb3NlciddOwoKICAgICAgICAgICAgLy8gSWYgdGhlIGNsb3NlciBmb3Igb3VyIGNvbmRpdGlvbiBpcyBzaGFyZWQgd2l0aCBvdGhlciBvcGVuZXJzLAogICAgICAgICAgICAvLyB3ZSB3aWxsIG5lZWQgdG8gdGhyb3cgZXJyb3JzIGZyb20gdGhpcyB0b2tlbiB0byB0aGUgbmV4dAogICAgICAgICAgICAvLyBzaGFyZWQgb3BlbmVyIChpZiB0aGVyZSBpcyBvbmUpLCBub3QgdG8gdGhlIHNjb3BlIGNsb3Nlci4KICAgICAgICAgICAgJG5leHRPcGVuZXIgPSBudWxsOwogICAgICAgICAgICBmb3IgKCRpID0gKCRzdGFja1B0ciArIDEpOyAkaSA8ICRjbG9zZXI7ICRpKyspIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdG9rZW5zWyRpXVsnc2NvcGVfY2xvc2VyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJGldWydzY29wZV9jbG9zZXInXSA9PT0gJGNsb3NlcikgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhbiBvcGVuZXIgdGhhdCBzaGFyZXMgdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xvc2luZyB0b2tlbiBhcyB1cy4KICAgICAgICAgICAgICAgICAgICAgICAgJG5leHRPcGVuZXIgPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Ly9lbmQgZm9yCgogICAgICAgICAgICBpZiAoJG5leHRPcGVuZXIgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRlbmQgPSAkY2xvc2VyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGVuZCA9ICgkbmV4dE9wZW5lciAtIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gVGhpcyB0b2tlbiBpcyBpbiB0aGUgZ2xvYmFsIHNjb3BlLgogICAgICAgICAgICBpZiAoJHRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10gPT09IFRfQlJFQUspIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gVGhyb3cgYW4gZXJyb3IgZm9yIGFsbCBsaW5lcyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBmaWxlLgogICAgICAgICAgICAkZW5kID0gKCRwaHBjc0ZpbGUtPm51bVRva2VucyAtIDEpOwogICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAvLyBGaW5kIHRoZSBzZW1pY29sb24gdGhhdCBlbmRzIHRoaXMgc3RhdGVtZW50LCBza2lwcGluZwogICAgICAgIC8vIG5lc3RlZCBzdGF0ZW1lbnRzIGxpa2UgRk9SIGxvb3BzIGFuZCBjbG9zdXJlcy4KICAgICAgICBmb3IgKCRzdGFydCA9ICgkc3RhY2tQdHIgKyAxKTsgJHN0YXJ0IDwgJHBocGNzRmlsZS0+bnVtVG9rZW5zOyAkc3RhcnQrKykgewogICAgICAgICAgICBpZiAoJHN0YXJ0ID09PSAkZW5kKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJHN0YXJ0XVsncGFyZW50aGVzaXNfY2xvc2VyJ10pID09PSB0cnVlCiAgICAgICAgICAgICAgICAmJiAkdG9rZW5zWyRzdGFydF1bJ2NvZGUnXSA9PT0gVF9PUEVOX1BBUkVOVEhFU0lTCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHRva2Vuc1skc3RhcnRdWydwYXJlbnRoZXNpc19jbG9zZXInXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoJHRva2Vuc1skc3RhcnRdWydicmFja2V0X2Nsb3NlciddKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgJiYgJHRva2Vuc1skc3RhcnRdWydjb2RlJ10gPT09IFRfT1BFTl9DVVJMWV9CUkFDS0VUCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHRva2Vuc1skc3RhcnRdWydicmFja2V0X2Nsb3NlciddOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRzdGFydF1bJ2NvZGUnXSA9PT0gVF9TRU1JQ09MT04pIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfS8vZW5kIGZvcgoKICAgICAgICBpZiAoaXNzZXQoJHRva2Vuc1skc3RhcnRdKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGxhc3RMaW5lID0gJHRva2Vuc1skc3RhcnRdWydsaW5lJ107CiAgICAgICAgZm9yICgkaSA9ICgkc3RhcnQgKyAxKTsgJGkgPCAkZW5kOyAkaSsrKSB7CiAgICAgICAgICAgIGlmIChpc3NldChUb2tlbnM6OiRlbXB0eVRva2Vuc1skdG9rZW5zWyRpXVsnY29kZSddXSkgPT09IHRydWUKICAgICAgICAgICAgICAgIHx8IGlzc2V0KFRva2Vuczo6JGJyYWNrZXRUb2tlbnNbJHRva2Vuc1skaV1bJ2NvZGUnXV0pID09PSB0cnVlCiAgICAgICAgICAgICAgICB8fCAkdG9rZW5zWyRpXVsnY29kZSddID09PSBUX1NFTUlDT0xPTgogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTa2lwIHdob2xlIGZ1bmN0aW9ucyBhbmQgY2xhc3Nlcy9pbnRlcmZhY2VzIGJlY2F1c2UgdGhleSBhcmUgbm90CiAgICAgICAgICAgIC8vIHRlY2huaWNhbGx5IGV4ZWN1dGVkIGNvZGUsIGJ1dCByYXRoZXIgZGVjbGFyYXRpb25zIHRoYXQgbWF5IGJlIHVzZWQuCiAgICAgICAgICAgIGlmIChpc3NldChUb2tlbnM6OiRvb1Njb3BlVG9rZW5zWyR0b2tlbnNbJGldWydjb2RlJ11dKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgfHwgJHRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9GVU5DVElPTgogICAgICAgICAgICAgICAgfHwgJHRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9DTE9TVVJFCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJGldWydzY29wZV9jbG9zZXInXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgZXJyb3IvTGl2ZSBjb2RpbmcuCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRpID0gJHRva2Vuc1skaV1bJ3Njb3BlX2Nsb3NlciddOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRsaW5lID0gJHRva2Vuc1skaV1bJ2xpbmUnXTsKICAgICAgICAgICAgaWYgKCRsaW5lID4gJGxhc3RMaW5lKSB7CiAgICAgICAgICAgICAgICAkdHlwZSAgICA9IHN1YnN0cigkdG9rZW5zWyRzdGFja1B0cl1bJ3R5cGUnXSwgMik7CiAgICAgICAgICAgICAgICAkd2FybmluZyA9ICdDb2RlIGFmdGVyIHRoZSAlcyBzdGF0ZW1lbnQgb24gbGluZSAlcyBjYW5ub3QgYmUgZXhlY3V0ZWQnOwogICAgICAgICAgICAgICAgJGRhdGEgICAgPSBbCiAgICAgICAgICAgICAgICAgICAgJHR5cGUsCiAgICAgICAgICAgICAgICAgICAgJHRva2Vuc1skc3RhY2tQdHJdWydsaW5lJ10sCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkV2FybmluZygkd2FybmluZywgJGksICdVbnJlYWNoYWJsZScsICRkYXRhKTsKICAgICAgICAgICAgICAgICRsYXN0TGluZSA9ICRsaW5lOwogICAgICAgICAgICB9CiAgICAgICAgfS8vZW5kIGZvcgoKICAgIH0vL2VuZCBwcm9jZXNzKCkKCgp9Ly9lbmQgY2xhc3MKIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWVzcGFjZXMiO2E6MTp7czo0MzoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXFBIUCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQzOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcUEhQIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MzoiUEhQIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6NjY6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xQSFBcTm9uRXhlY3V0YWJsZUNvZGVTbmlmZiI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjEzOntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NjoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXFBIUFxOb25FeGVjdXRhYmxlQ29kZVNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjI6Ik5vbkV4ZWN1dGFibGVDb2RlU25pZmYiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YToxOntzOjI5OiJcUEhQX0NvZGVTbmlmZmVyXFNuaWZmc1xTbmlmZiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI5OiJcUEhQX0NvZGVTbmlmZmVyXFNuaWZmc1xTbmlmZiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjU6IlNuaWZmIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0aG9kcyI7YToyOntzOjc4OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcUEhQXE5vbkV4ZWN1dGFibGVDb2RlU25pZmY6OnJlZ2lzdGVyKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1NzoiUmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMgdGhpcyB0ZXN0IHdhbnRzIHRvIGxpc3RlbiBmb3IuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQyOiJQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xQSFAiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjM6e3M6NDoiRmlsZSI7czoyNjoiUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6NToiU25pZmYiO3M6Mjg6IlBIUF9Db2RlU25pZmZlclxTbmlmZnNcU25pZmYiO3M6NjoiVG9rZW5zIjtzOjI3OiJQSFBfQ29kZVNuaWZmZXJcVXRpbFxUb2tlbnMiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3ODoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXFBIUFxOb25FeGVjdXRhYmxlQ29kZVNuaWZmOjpyZWdpc3RlcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoicmVnaXN0ZXIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6Nzc6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xQSFBcTm9uRXhlY3V0YWJsZUNvZGVTbmlmZjo6cHJvY2VzcygpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTk6IlByb2Nlc3NlcyB0aGlzIHRlc3QsIHdoZW4gb25lIG9mIGl0cyB0b2tlbnMgaXMgZW5jb3VudGVyZWQuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjM6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NjU6IlRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbiBpbgp0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3NjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc3OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcUEhQXE5vbkV4ZWN1dGFibGVDb2RlU25pZmY6OnByb2Nlc3MoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6InByb2Nlc3MiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6OToicGhwY3NGaWxlIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI3NDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI3NztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";