1688054432
waR3U4bTeM%3A1b567170f5633c2000519c072c39b63a-39d45965f2b71317b2fda26052688102
s:49180:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTE6IlRlc3RzIHRoYXQgYWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBhcmUgYnJhY2tldGVkLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTozOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTM6IkdyZWcgU2hlcndvb2QiO3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yRW1haWwiO3M6MTk6ImdzaGVyd29vZEBzcXVpei5uZXQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtOO31pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjk6ImNvcHlyaWdodCI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NDQ6IjIwMDYtMjAxNSBTcXVpeiBQdHkgTHRkIChBQk4gNzcgMDg0IDY3MCA2MDApIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo3OiJsaWNlbnNlIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo4MDoiaHR0cHM6Ly9naXRodWIuY29tL3NxdWl6bGFicy9QSFBfQ29kZVNuaWZmZXIvYmxvYi9tYXN0ZXIvbGljZW5jZS50eHQgQlNEIExpY2VuY2UiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czowOiIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6IjM5ZDQ1OTY1ZjJiNzEzMTdiMmZkYTI2MDUyNjg4MTAyIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWUiO3M6MjQ6Ik9wZXJhdG9yQnJhY2tldFNuaWZmLnBocCI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjk1OiJ2ZW5kb3Ivc3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlci9zcmMvU3RhbmRhcmRzL1NxdWl6L1NuaWZmcy9Gb3JtYXR0aW5nL09wZXJhdG9yQnJhY2tldFNuaWZmLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6MTU2NjQ6Ijw/cGhwCi8qKgogKiBUZXN0cyB0aGF0IGFsbCBhcml0aG1ldGljIG9wZXJhdGlvbnMgYXJlIGJyYWNrZXRlZC4KICoKICogQGF1dGhvciAgICBHcmVnIFNoZXJ3b29kIDxnc2hlcndvb2RAc3F1aXoubmV0PgogKiBAY29weXJpZ2h0IDIwMDYtMjAxNSBTcXVpeiBQdHkgTHRkIChBQk4gNzcgMDg0IDY3MCA2MDApCiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9naXRodWIuY29tL3NxdWl6bGFicy9QSFBfQ29kZVNuaWZmZXIvYmxvYi9tYXN0ZXIvbGljZW5jZS50eHQgQlNEIExpY2VuY2UKICovCgpuYW1lc3BhY2UgUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcRm9ybWF0dGluZzsKCnVzZSBQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZTsKdXNlIFBIUF9Db2RlU25pZmZlclxTbmlmZnNcU25pZmY7CnVzZSBQSFBfQ29kZVNuaWZmZXJcVXRpbFxUb2tlbnM7CgpjbGFzcyBPcGVyYXRvckJyYWNrZXRTbmlmZiBpbXBsZW1lbnRzIFNuaWZmCnsKCiAgICAvKioKICAgICAqIEEgbGlzdCBvZiB0b2tlbml6ZXJzIHRoaXMgc25pZmYgc3VwcG9ydHMuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJHN1cHBvcnRlZFRva2VuaXplcnMgPSBbCiAgICAgICAgJ1BIUCcsCiAgICAgICAgJ0pTJywKICAgIF07CgoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMgdGhpcyB0ZXN0IHdhbnRzIHRvIGxpc3RlbiBmb3IuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXIoKQogICAgewogICAgICAgIHJldHVybiBUb2tlbnM6OiRvcGVyYXRvcnM7CgogICAgfS8vZW5kIHJlZ2lzdGVyKCkKCgogICAgLyoqCiAgICAgKiBQcm9jZXNzZXMgdGhpcyB0ZXN0LCB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLgogICAgICoKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUgJHBocGNzRmlsZSBUaGUgZmlsZSBiZWluZyBzY2FubmVkLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIgIFRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbiBpbiB0aGUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoRmlsZSAkcGhwY3NGaWxlLCAkc3RhY2tQdHIpCiAgICB7CiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwoKICAgICAgICBpZiAoJHBocGNzRmlsZS0+dG9rZW5pemVyVHlwZSA9PT0gJ0pTJyAmJiAkdG9rZW5zWyRzdGFja1B0cl1bJ2NvZGUnXSA9PT0gVF9QTFVTKSB7CiAgICAgICAgICAgIC8vIEphdmFTY3JpcHQgdXNlcyB0aGUgcGx1cyBvcGVyYXRvciBmb3Igc3RyaW5nIGNvbmNhdGVuYXRpb24gYXMgd2VsbAogICAgICAgICAgICAvLyBzbyB3ZSBjYW5ub3QgYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgaXQgaXMgYSBzdHJpbmcgY29uY2F0IG9yIGFkZGl0aW9uLgogICAgICAgICAgICAvLyBTbyBqdXN0IGlnbm9yZSBpdC4KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlICYgaXMgYSByZWZlcmVuY2UsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBjaGVjayBmb3IgYnJhY2tldHMuCiAgICAgICAgaWYgKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddID09PSBUX0JJVFdJU0VfQU5EICYmICRwaHBjc0ZpbGUtPmlzUmVmZXJlbmNlKCRzdGFja1B0cikgPT09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gVGhlcmUgaXMgb25lIGluc3RhbmNlIHdoZXJlIGJyYWNrZXRzIGFyZW4ndCBuZWVkZWQsIHdoaWNoIGludm9sdmVzCiAgICAgICAgLy8gdGhlIG1pbnVzIHNpZ24gYmVpbmcgdXNlZCB0byBhc3NpZ24gYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSB2YXJpYWJsZS4KICAgICAgICBpZiAoJHRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10gPT09IFRfTUlOVVMpIHsKICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGFyZSB0cnlpbmcgdG8gcmV0dXJuIC1uLgogICAgICAgICAgICAkcHJldiA9ICRwaHBjc0ZpbGUtPmZpbmRQcmV2aW91cyhUb2tlbnM6OiRlbXB0eVRva2VucywgKCRzdGFja1B0ciAtIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHByZXZdWydjb2RlJ10gPT09IFRfUkVUVVJOKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRudW1iZXIgPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUX1dISVRFU1BBQ0UsICgkc3RhY2tQdHIgKyAxKSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRudW1iZXJdWydjb2RlJ10gPT09IFRfTE5VTUJFUiB8fCAkdG9rZW5zWyRudW1iZXJdWydjb2RlJ10gPT09IFRfRE5VTUJFUikgewogICAgICAgICAgICAgICAgJHByZXZpb3VzID0gJHBocGNzRmlsZS0+ZmluZFByZXZpb3VzKFRfV0hJVEVTUEFDRSwgKCRzdGFja1B0ciAtIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgIGlmICgkcHJldmlvdXMgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJGlzQXNzaWdubWVudCA9IGlzc2V0KFRva2Vuczo6JGFzc2lnbm1lbnRUb2tlbnNbJHRva2Vuc1skcHJldmlvdXNdWydjb2RlJ11dKTsKICAgICAgICAgICAgICAgICAgICAkaXNFcXVhbGl0eSAgID0gaXNzZXQoVG9rZW5zOjokZXF1YWxpdHlUb2tlbnNbJHRva2Vuc1skcHJldmlvdXNdWydjb2RlJ11dKTsKICAgICAgICAgICAgICAgICAgICAkaXNDb21wYXJpc29uID0gaXNzZXQoVG9rZW5zOjokY29tcGFyaXNvblRva2Vuc1skdG9rZW5zWyRwcmV2aW91c11bJ2NvZGUnXV0pOwogICAgICAgICAgICAgICAgICAgICRpc1VuYXJ5ICAgICAgPSBpc3NldChUb2tlbnM6OiRvcGVyYXRvcnNbJHRva2Vuc1skcHJldmlvdXNdWydjb2RlJ11dKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGlzQXNzaWdubWVudCA9PT0gdHJ1ZSB8fCAkaXNFcXVhbGl0eSA9PT0gdHJ1ZSB8fCAkaXNDb21wYXJpc29uID09PSB0cnVlIHx8ICRpc1VuYXJ5ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZWdhdGl2ZSBhc3NpZ25tZW50IG9yIGNvbXBhcmlzb24uCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgbWludXMgYW5kIHRoZSBudW1iZXIgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkamFjZW50LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRudW1iZXIgLSAkc3RhY2tQdHIpICE9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAnTm8gc3BhY2UgYWxsb3dlZCBiZXR3ZWVuIG1pbnVzIHNpZ24gYW5kIG51bWJlcic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICRzdGFja1B0ciwgJ1NwYWNpbmdBZnRlck1pbnVzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgJHByZXZpb3VzVG9rZW4gPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoVF9XSElURVNQQUNFLCAoJHN0YWNrUHRyIC0gMSksIG51bGwsIHRydWUsIG51bGwsIHRydWUpOwogICAgICAgIGlmICgkcHJldmlvdXNUb2tlbiAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgLy8gQSBsaXN0IG9mIHRva2VucyB0aGF0IGluZGljYXRlIHRoYXQgdGhlIHRva2VuIGlzIG5vdAogICAgICAgICAgICAvLyBwYXJ0IG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0aW9uLgogICAgICAgICAgICAkaW52YWxpZFRva2VucyA9IFsKICAgICAgICAgICAgICAgIFRfQ09NTUEgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICAgICAgVF9DT0xPTiAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICBUX09QRU5fUEFSRU5USEVTSVMgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfT1BFTl9TUVVBUkVfQlJBQ0tFVCA9PiB0cnVlLAogICAgICAgICAgICAgICAgVF9PUEVOX0NVUkxZX0JSQUNLRVQgID0+IHRydWUsCiAgICAgICAgICAgICAgICBUX09QRU5fU0hPUlRfQVJSQVkgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfQ0FTRSAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICAgICAgVF9FWElUICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgIF07CgogICAgICAgICAgICBpZiAoaXNzZXQoJGludmFsaWRUb2tlbnNbJHRva2Vuc1skcHJldmlvdXNUb2tlbl1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkdG9rZW5zWyRzdGFja1B0cl1bJ2NvZGUnXSA9PT0gVF9CSVRXSVNFX09SCiAgICAgICAgICAgICYmIGlzc2V0KCR0b2tlbnNbJHN0YWNrUHRyXVsnbmVzdGVkX3BhcmVudGhlc2lzJ10pID09PSB0cnVlCiAgICAgICAgKSB7CiAgICAgICAgICAgICRicmFja2V0cyAgICA9ICR0b2tlbnNbJHN0YWNrUHRyXVsnbmVzdGVkX3BhcmVudGhlc2lzJ107CiAgICAgICAgICAgICRsYXN0QnJhY2tldCA9IGFycmF5X3BvcCgkYnJhY2tldHMpOwogICAgICAgICAgICBpZiAoaXNzZXQoJHRva2Vuc1skbGFzdEJyYWNrZXRdWydwYXJlbnRoZXNpc19vd25lciddKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgJiYgJHRva2Vuc1skdG9rZW5zWyRsYXN0QnJhY2tldF1bJ3BhcmVudGhlc2lzX293bmVyJ11dWydjb2RlJ10gPT09IFRfQ0FUQ0gKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcGlwZSBjaGFyYWN0ZXIgaW5zaWRlIGEgY2F0Y2ggc3RhdGVtZW50LCBzbyBpdCBpcyBhY3RpbmcKICAgICAgICAgICAgICAgIC8vIGFzIGFuIGV4Y2VwdGlvbiB0eXBlIHNlcGFyYXRvciBhbmQgbm90IGFuIGFyaXRobWV0aWMgb3BlcmF0aW9uLgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBUb2tlbnMgdGhhdCBhcmUgYWxsb3dlZCBpbnNpZGUgYSBicmFja2V0ZWQgb3BlcmF0aW9uLgogICAgICAgICRhbGxvd2VkID0gWwogICAgICAgICAgICBUX1ZBUklBQkxFLAogICAgICAgICAgICBUX0xOVU1CRVIsCiAgICAgICAgICAgIFRfRE5VTUJFUiwKICAgICAgICAgICAgVF9TVFJJTkcsCiAgICAgICAgICAgIFRfV0hJVEVTUEFDRSwKICAgICAgICAgICAgVF9OU19TRVBBUkFUT1IsCiAgICAgICAgICAgIFRfVEhJUywKICAgICAgICAgICAgVF9TRUxGLAogICAgICAgICAgICBUX1NUQVRJQywKICAgICAgICAgICAgVF9PQkpFQ1RfT1BFUkFUT1IsCiAgICAgICAgICAgIFRfTlVMTFNBRkVfT0JKRUNUX09QRVJBVE9SLAogICAgICAgICAgICBUX0RPVUJMRV9DT0xPTiwKICAgICAgICAgICAgVF9PUEVOX1NRVUFSRV9CUkFDS0VULAogICAgICAgICAgICBUX0NMT1NFX1NRVUFSRV9CUkFDS0VULAogICAgICAgICAgICBUX01PRFVMVVMsCiAgICAgICAgICAgIFRfTk9ORSwKICAgICAgICAgICAgVF9CSVRXSVNFX05PVCwKICAgICAgICBdOwoKICAgICAgICAkYWxsb3dlZCArPSBUb2tlbnM6OiRvcGVyYXRvcnM7CgogICAgICAgICRsYXN0QnJhY2tldCA9IGZhbHNlOwogICAgICAgIGlmIChpc3NldCgkdG9rZW5zWyRzdGFja1B0cl1bJ25lc3RlZF9wYXJlbnRoZXNpcyddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAkcGFyZW50aGVzaXMgPSBhcnJheV9yZXZlcnNlKCR0b2tlbnNbJHN0YWNrUHRyXVsnbmVzdGVkX3BhcmVudGhlc2lzJ10sIHRydWUpOwogICAgICAgICAgICBmb3JlYWNoICgkcGFyZW50aGVzaXMgYXMgJGJyYWNrZXQgPT4gJGVuZEJyYWNrZXQpIHsKICAgICAgICAgICAgICAgICRwcmV2VG9rZW4gPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoVF9XSElURVNQQUNFLCAoJGJyYWNrZXQgLSAxKSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAkcHJldkNvZGUgID0gJHRva2Vuc1skcHJldlRva2VuXVsnY29kZSddOwoKICAgICAgICAgICAgICAgIGlmICgkcHJldkNvZGUgPT09IFRfSVNTRVQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9wZXJhdGlvbiBpcyBpbnNpZGUgYW4gaXNzZXQoKSBjYWxsLCBidXQgaGFzCiAgICAgICAgICAgICAgICAgICAgLy8gbm8gYnJhY2tldCBvZiBpdCdzIG93bi4KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJHByZXZDb2RlID09PSBUX1NUUklORyB8fCAkcHJldkNvZGUgPT09IFRfU1dJVENIIHx8ICRwcmV2Q29kZSA9PT0gVF9NQVRDSCkgewogICAgICAgICAgICAgICAgICAgIC8vIFdlIGFsbG93IHNpbXBsZSBvcGVyYXRpb25zIHRvIG5vdCBiZSBicmFja2V0ZWQuCiAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIGNlaWwoJG9uZSAvICR0d28pLgogICAgICAgICAgICAgICAgICAgIGZvciAoJHByZXYgPSAoJHN0YWNrUHRyIC0gMSk7ICRwcmV2ID4gJGJyYWNrZXQ7ICRwcmV2LS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCR0b2tlbnNbJHByZXZdWydjb2RlJ10sICRhbGxvd2VkLCB0cnVlKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRwcmV2XVsnY29kZSddID09PSBUX0NMT1NFX1BBUkVOVEhFU0lTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJldiA9ICR0b2tlbnNbJHByZXZdWydwYXJlbnRoZXNpc19vcGVuZXInXTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJHByZXYgIT09ICRicmFja2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZm9yICgkbmV4dCA9ICgkc3RhY2tQdHIgKyAxKTsgJG5leHQgPCAkZW5kQnJhY2tldDsgJG5leHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHRva2Vuc1skbmV4dF1bJ2NvZGUnXSwgJGFsbG93ZWQsIHRydWUpID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJG5leHRdWydjb2RlJ10gPT09IFRfT1BFTl9QQVJFTlRIRVNJUykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5leHQgPSAkdG9rZW5zWyRuZXh0XVsncGFyZW50aGVzaXNfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCRuZXh0ICE9PSAkZW5kQnJhY2tldCkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHByZXZDb2RlLCBUb2tlbnM6OiRzY29wZU9wZW5lcnMsIHRydWUpID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgaW5zaWRlIGEgY29udHJvbCBzdHJ1Y3R1cmUgbGlrZSBGT1JFQUNICiAgICAgICAgICAgICAgICAgICAgLy8gb3IgSUYsIGJ1dCBoYXMgbm8gYnJhY2tldCBvZiBpdCdzIG93bi4KICAgICAgICAgICAgICAgICAgICAvLyBUaGUgb25seSBjb250cm9sIHN0cnVjdHVyZXMgYWxsb3dlZCB0byBkbyB0aGlzIGFyZSBTV0lUQ0ggYW5kIE1BVENILgogICAgICAgICAgICAgICAgICAgIGlmICgkcHJldkNvZGUgIT09IFRfU1dJVENIICYmICRwcmV2Q29kZSAhPT0gVF9NQVRDSCkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRwcmV2Q29kZSA9PT0gVF9PUEVOX1BBUkVOVEhFU0lTKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgYXJlIHR3byBvcGVuIHBhcmVudGhlc2lzIGluIGEgcm93LiBJZiB0aGUgY3VycmVudAogICAgICAgICAgICAgICAgICAgIC8vIG9uZSBkb2Vzbid0IGVuY2xvc2UgdGhlIG9wZXJhdG9yLCBnbyB0byB0aGUgcHJldmlvdXMgb25lLgogICAgICAgICAgICAgICAgICAgIGlmICgkZW5kQnJhY2tldCA8ICRzdGFja1B0cikgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxhc3RCcmFja2V0ID0gJGJyYWNrZXQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfS8vZW5kIGZvcmVhY2gKICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgaWYgKCRsYXN0QnJhY2tldCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgLy8gSXQgaXMgbm90IGluIGEgYnJhY2tldGVkIHN0YXRlbWVudCBhdCBhbGwuCiAgICAgICAgICAgICR0aGlzLT5hZGRNaXNzaW5nQnJhY2tldHNFcnJvcigkcGhwY3NGaWxlLCAkc3RhY2tQdHIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIGlmICgkdG9rZW5zWyRsYXN0QnJhY2tldF1bJ3BhcmVudGhlc2lzX2Nsb3NlciddIDwgJHN0YWNrUHRyKSB7CiAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBhIHNldCBvZiBicmFja2V0cyBpbiBmcm9udCBvZiBpdCB0aGF0IGRvbid0IGluY2x1ZGUgaXQuCiAgICAgICAgICAgICR0aGlzLT5hZGRNaXNzaW5nQnJhY2tldHNFcnJvcigkcGhwY3NGaWxlLCAkc3RhY2tQdHIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gV2UgYXJlIGVuY2xvc2VkIGluIGEgc2V0IG9mIGJyYWNrZXQsIHNvIHRoZSBsYXN0IHRoaW5nIHRvCiAgICAgICAgICAgIC8vIGNoZWNrIGlzIHRoYXQgd2UgYXJlIG5vdCBhbHNvIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cwogICAgICAgICAgICAvLyBsaWtlIHRoaXM6ICgkYXJyYXlbJGluZGV4ICsgMV0pLCB3aGljaCBpcyBpbnZhbGlkLgogICAgICAgICAgICAkYnJhY2tldHMgPSBbCiAgICAgICAgICAgICAgICBUX09QRU5fU1FVQVJFX0JSQUNLRVQsCiAgICAgICAgICAgICAgICBUX0NMT1NFX1NRVUFSRV9CUkFDS0VULAogICAgICAgICAgICBdOwoKICAgICAgICAgICAgJHNxdWFyZUJyYWNrZXQgPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoJGJyYWNrZXRzLCAoJHN0YWNrUHRyIC0gMSksICRsYXN0QnJhY2tldCk7CiAgICAgICAgICAgIGlmICgkc3F1YXJlQnJhY2tldCAhPT0gZmFsc2UgJiYgJHRva2Vuc1skc3F1YXJlQnJhY2tldF1bJ2NvZGUnXSA9PT0gVF9PUEVOX1NRVUFSRV9CUkFDS0VUKSB7CiAgICAgICAgICAgICAgICAkY2xvc2VTcXVhcmVCcmFja2V0ID0gJHBocGNzRmlsZS0+ZmluZE5leHQoJGJyYWNrZXRzLCAoJHN0YWNrUHRyICsgMSkpOwogICAgICAgICAgICAgICAgaWYgKCRjbG9zZVNxdWFyZUJyYWNrZXQgIT09IGZhbHNlICYmICR0b2tlbnNbJGNsb3NlU3F1YXJlQnJhY2tldF1bJ2NvZGUnXSA9PT0gVF9DTE9TRV9TUVVBUkVfQlJBQ0tFVCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5hZGRNaXNzaW5nQnJhY2tldHNFcnJvcigkcGhwY3NGaWxlLCAkc3RhY2tQdHIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICRsYXN0QXNzaWdubWVudCA9ICRwaHBjc0ZpbGUtPmZpbmRQcmV2aW91cyhUb2tlbnM6OiRhc3NpZ25tZW50VG9rZW5zLCAkc3RhY2tQdHIsIG51bGwsIGZhbHNlLCBudWxsLCB0cnVlKTsKICAgICAgICBpZiAoJGxhc3RBc3NpZ25tZW50ICE9PSBmYWxzZSAmJiAkbGFzdEFzc2lnbm1lbnQgPiAkbGFzdEJyYWNrZXQpIHsKICAgICAgICAgICAgJHRoaXMtPmFkZE1pc3NpbmdCcmFja2V0c0Vycm9yKCRwaHBjc0ZpbGUsICRzdGFja1B0cik7CiAgICAgICAgfQoKICAgIH0vL2VuZCBwcm9jZXNzKCkKCgogICAgLyoqCiAgICAgKiBBZGQgYW5kIGZpeCB0aGUgbWlzc2luZyBicmFja2V0cyBlcnJvci4KICAgICAqCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlICRwaHBjc0ZpbGUgVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyICBUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgdG9rZW4gaW4gdGhlCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRNaXNzaW5nQnJhY2tldHNFcnJvcigkcGhwY3NGaWxlLCAkc3RhY2tQdHIpCiAgICB7CiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwoKICAgICAgICAkYWxsb3dlZCA9IFsKICAgICAgICAgICAgVF9WQVJJQUJMRSAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9MTlVNQkVSICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9ETlVNQkVSICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9TVFJJTkcgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9DT05TVEFOVF9FTkNBUFNFRF9TVFJJTkcgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9ET1VCTEVfUVVPVEVEX1NUUklORyAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9XSElURVNQQUNFICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9OU19TRVBBUkFUT1IgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9USElTICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9TRUxGICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9TVEFUSUMgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9PQkpFQ1RfT1BFUkFUT1IgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9OVUxMU0FGRV9PQkpFQ1RfT1BFUkFUT1IgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9ET1VCTEVfQ09MT04gICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9NT0RVTFVTICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9JU1NFVCAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9BUlJBWSAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9OT05FICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9CSVRXSVNFX05PVCAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICBdOwoKICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgZXhwcmVzc2lvbi4KICAgICAgICBmb3IgKCRiZWZvcmUgPSAoJHN0YWNrUHRyIC0gMSk7ICRiZWZvcmUgPiAwOyAkYmVmb3JlLS0pIHsKICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBwbHVzIG9wZXJhdG9ycyBiZWNhdXNlIHdlIGNhbid0IHRlbGwgaWYgdGhleSBhcmUgdXNlZAogICAgICAgICAgICAvLyBmb3IgYWRkaXRpb24gb3Igc3RyaW5nIGNvbnRhY3QuIFNvIGFzc3VtZSBzdHJpbmcgY29uY2F0IHRvIGJlIHNhZmUuCiAgICAgICAgICAgIGlmICgkcGhwY3NGaWxlLT50b2tlbml6ZXJUeXBlID09PSAnSlMnICYmICR0b2tlbnNbJGJlZm9yZV1bJ2NvZGUnXSA9PT0gVF9QTFVTKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzc2V0KFRva2Vuczo6JGVtcHR5VG9rZW5zWyR0b2tlbnNbJGJlZm9yZV1bJ2NvZGUnXV0pID09PSB0cnVlCiAgICAgICAgICAgICAgICB8fCBpc3NldChUb2tlbnM6OiRvcGVyYXRvcnNbJHRva2Vuc1skYmVmb3JlXVsnY29kZSddXSkgPT09IHRydWUKICAgICAgICAgICAgICAgIHx8IGlzc2V0KFRva2Vuczo6JGNhc3RUb2tlbnNbJHRva2Vuc1skYmVmb3JlXVsnY29kZSddXSkgPT09IHRydWUKICAgICAgICAgICAgICAgIHx8IGlzc2V0KCRhbGxvd2VkWyR0b2tlbnNbJGJlZm9yZV1bJ2NvZGUnXV0pID09PSB0cnVlCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRiZWZvcmVdWydjb2RlJ10gPT09IFRfQ0xPU0VfUEFSRU5USEVTSVMpIHsKICAgICAgICAgICAgICAgICRiZWZvcmUgPSAkdG9rZW5zWyRiZWZvcmVdWydwYXJlbnRoZXNpc19vcGVuZXInXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2Vuc1skYmVmb3JlXVsnY29kZSddID09PSBUX0NMT1NFX1NRVUFSRV9CUkFDS0VUKSB7CiAgICAgICAgICAgICAgICAkYmVmb3JlID0gJHRva2Vuc1skYmVmb3JlXVsnYnJhY2tldF9vcGVuZXInXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2Vuc1skYmVmb3JlXVsnY29kZSddID09PSBUX0NMT1NFX1NIT1JUX0FSUkFZKSB7CiAgICAgICAgICAgICAgICAkYmVmb3JlID0gJHRva2Vuc1skYmVmb3JlXVsnYnJhY2tldF9vcGVuZXInXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBicmVhazsKICAgICAgICB9Ly9lbmQgZm9yCgogICAgICAgICRiZWZvcmUgPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUb2tlbnM6OiRlbXB0eVRva2VucywgKCRiZWZvcmUgKyAxKSwgbnVsbCwgdHJ1ZSk7CgogICAgICAgIC8vIEEgZmV3IGV4dHJhIHRva2VucyBhcmUgYWxsb3dlZCB0byBiZSBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZXhwcmVzc2lvbi4KICAgICAgICAkYWxsb3dlZFtUX0VRVUFMXSA9IHRydWU7CiAgICAgICAgJGFsbG93ZWRbVF9ORVddICAgPSB0cnVlOwoKICAgICAgICAvLyBGaW5kIHRoZSBsYXN0IHRva2VuIGluIHRoZSBleHByZXNzaW9uLgogICAgICAgIGZvciAoJGFmdGVyID0gKCRzdGFja1B0ciArIDEpOyAkYWZ0ZXIgPCAkcGhwY3NGaWxlLT5udW1Ub2tlbnM7ICRhZnRlcisrKSB7CiAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcGx1cyBvcGVyYXRvcnMgYmVjYXVzZSB3ZSBjYW4ndCB0ZWxsIGlmIHRoZXkgYXJlIHVzZWQKICAgICAgICAgICAgLy8gZm9yIGFkZGl0aW9uIG9yIHN0cmluZyBjb25jYXQuIFNvIGFzc3VtZSBzdHJpbmcgY29uY2F0IHRvIGJlIHNhZmUuCiAgICAgICAgICAgIGlmICgkcGhwY3NGaWxlLT50b2tlbml6ZXJUeXBlID09PSAnSlMnICYmICR0b2tlbnNbJGFmdGVyXVsnY29kZSddID09PSBUX1BMVVMpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoVG9rZW5zOjokZW1wdHlUb2tlbnNbJHRva2Vuc1skYWZ0ZXJdWydjb2RlJ11dKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgfHwgaXNzZXQoVG9rZW5zOjokb3BlcmF0b3JzWyR0b2tlbnNbJGFmdGVyXVsnY29kZSddXSkgPT09IHRydWUKICAgICAgICAgICAgICAgIHx8IGlzc2V0KFRva2Vuczo6JGNhc3RUb2tlbnNbJHRva2Vuc1skYWZ0ZXJdWydjb2RlJ11dKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgfHwgaXNzZXQoJGFsbG93ZWRbJHRva2Vuc1skYWZ0ZXJdWydjb2RlJ11dKSA9PT0gdHJ1ZQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2Vuc1skYWZ0ZXJdWydjb2RlJ10gPT09IFRfT1BFTl9QQVJFTlRIRVNJUykgewogICAgICAgICAgICAgICAgJGFmdGVyID0gJHRva2Vuc1skYWZ0ZXJdWydwYXJlbnRoZXNpc19jbG9zZXInXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2Vuc1skYWZ0ZXJdWydjb2RlJ10gPT09IFRfT1BFTl9TUVVBUkVfQlJBQ0tFVCkgewogICAgICAgICAgICAgICAgJGFmdGVyID0gJHRva2Vuc1skYWZ0ZXJdWydicmFja2V0X2Nsb3NlciddOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRhZnRlcl1bJ2NvZGUnXSA9PT0gVF9PUEVOX1NIT1JUX0FSUkFZKSB7CiAgICAgICAgICAgICAgICAkYWZ0ZXIgPSAkdG9rZW5zWyRhZnRlcl1bJ2JyYWNrZXRfY2xvc2VyJ107CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfS8vZW5kIGZvcgoKICAgICAgICAkYWZ0ZXIgPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoVG9rZW5zOjokZW1wdHlUb2tlbnMsICgkYWZ0ZXIgLSAxKSwgbnVsbCwgdHJ1ZSk7CgogICAgICAgICRlcnJvciA9ICdPcGVyYXRpb24gbXVzdCBiZSBicmFja2V0ZWQnOwogICAgICAgIGlmICgkYmVmb3JlID09PSAkYWZ0ZXIgfHwgJGJlZm9yZSA9PT0gJHN0YWNrUHRyIHx8ICRhZnRlciA9PT0gJHN0YWNrUHRyKSB7CiAgICAgICAgICAgICRwaHBjc0ZpbGUtPmFkZEVycm9yKCRlcnJvciwgJHN0YWNrUHRyLCAnTWlzc2luZ0JyYWNrZXRzJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRmaXggPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkc3RhY2tQdHIsICdNaXNzaW5nQnJhY2tldHMnKTsKICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAvLyBDYW4gb25seSBmaXggdGhpcyBlcnJvciBpZiBib3RoIHRva2VucyBhcmUgYXZhaWxhYmxlIGZvciBmaXhpbmcuCiAgICAgICAgICAgIC8vIEFkZGluZyBvbmUgYnJhY2tldCB3aXRob3V0IHRoZSBvdGhlciB3aWxsIGNyZWF0ZSBwYXJzZSBlcnJvcnMuCiAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5iZWdpbkNoYW5nZXNldCgpOwogICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRiZWZvcmUsICcoJy4kdG9rZW5zWyRiZWZvcmVdWydjb250ZW50J10pOwogICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRhZnRlciwgJHRva2Vuc1skYWZ0ZXJdWydjb250ZW50J10uJyknKTsKICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgIH0KCiAgICB9Ly9lbmQgYWRkTWlzc2luZ0JyYWNrZXRzRXJyb3IoKQoKCn0vL2VuZCBjbGFzcwoiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjUwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcRm9ybWF0dGluZyI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcRm9ybWF0dGluZyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEwOiJGb3JtYXR0aW5nIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6NzE6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xGb3JtYXR0aW5nXE9wZXJhdG9yQnJhY2tldFNuaWZmIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTM6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjcxOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcRm9ybWF0dGluZ1xPcGVyYXRvckJyYWNrZXRTbmlmZiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIwOiJPcGVyYXRvckJyYWNrZXRTbmlmZiI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjE6e3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NToiU25pZmYiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MTp7czo5MzoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXEZvcm1hdHRpbmdcT3BlcmF0b3JCcmFja2V0U25pZmY6OiRzdXBwb3J0ZWRUb2tlbml6ZXJzIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo5MzoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXEZvcm1hdHRpbmdcT3BlcmF0b3JCcmFja2V0U25pZmY6OiRzdXBwb3J0ZWRUb2tlbml6ZXJzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTk6InN1cHBvcnRlZFRva2VuaXplcnMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NDE6IkEgbGlzdCBvZiB0b2tlbml6ZXJzIHRoaXMgc25pZmYgc3VwcG9ydHMuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xWYXJfIjo0OntzOjE1OiIAKgB2YXJpYWJsZU5hbWUiO3M6MDoiIjtzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQ5OiJQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xGb3JtYXR0aW5nIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTozOntzOjQ6IkZpbGUiO3M6MjY6IlBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjU6IlNuaWZmIjtzOjI4OiJQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtzOjY6IlRva2VucyI7czoyNzoiUEhQX0NvZGVTbmlmZmVyXFV0aWxcVG9rZW5zIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO3M6MTM6IlsnUEhQJywgJ0pTJ10iO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHN0YXRpYyI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mjc7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQByZWFkT25seSI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e319fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjM6e3M6ODM6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xGb3JtYXR0aW5nXE9wZXJhdG9yQnJhY2tldFNuaWZmOjpyZWdpc3RlcigpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTc6IlJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zIHRoaXMgdGVzdCB3YW50cyB0byBsaXN0ZW4gZm9yLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjc5O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODM6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xGb3JtYXR0aW5nXE9wZXJhdG9yQnJhY2tldFNuaWZmOjpyZWdpc3RlcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoicmVnaXN0ZXIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozOTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6ODI6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xGb3JtYXR0aW5nXE9wZXJhdG9yQnJhY2tldFNuaWZmOjpwcm9jZXNzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1OToiUHJvY2Vzc2VzIHRoaXMgdGVzdCwgd2hlbiBvbmUgb2YgaXRzIHRva2VucyBpcyBlbmNvdW50ZXJlZC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjk6InBocGNzRmlsZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzOiJUaGUgZmlsZSBiZWluZyBzY2FubmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo4OiJzdGFja1B0ciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo2NToiVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuIGluIHRoZQpzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjc5O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6ODI6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xGb3JtYXR0aW5nXE9wZXJhdG9yQnJhY2tldFNuaWZmOjpwcm9jZXNzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo3OiJwcm9jZXNzIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6InN0YWNrUHRyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjk4OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcRm9ybWF0dGluZ1xPcGVyYXRvckJyYWNrZXRTbmlmZjo6YWRkTWlzc2luZ0JyYWNrZXRzRXJyb3IoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjM5OiJBZGQgYW5kIGZpeCB0aGUgbWlzc2luZyBicmFja2V0cyBlcnJvci4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjk6InBocGNzRmlsZSI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjIzOiJUaGUgZmlsZSBiZWluZyBzY2FubmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo4OiJzdGFja1B0ciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo2NToiVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuIGluIHRoZQpzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjc5O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6OTg6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xGb3JtYXR0aW5nXE9wZXJhdG9yQnJhY2tldFNuaWZmOjphZGRNaXNzaW5nQnJhY2tldHNFcnJvcigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjM6ImFkZE1pc3NpbmdCcmFja2V0c0Vycm9yIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6InN0YWNrUHRyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjcyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzkwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzkzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";