bw0NCgAAAACnNI1jjrgBAOMAAAAAAAAAAAAAAAAAAAAACwAAAEAAAABzZAMAAGQAZAFsAFoAZABkAWwBWgFkAGQBbAJaAmQAZAFsA1oDZABkAWwEWgRkAGQBbAVaBmQAZAJsB20IWggBAGQAZANsCW0KWgoBAGQAZARsCW0LWgsBAGQAZAVsDG0NWg0BAGQAZAZsDG0OWg4BAGQAZAdsD20PWhABAGQAZAhsD20RWhEBAGQAZAlsEm0TWhMBAGQKZAtsFG0VWhUBAGQKZAxsFm0XWhcBAGQKZA1sFm0YWhgBAGQKZA5sFm0ZWhkBAGQKZA9sFm0aWhoBAGQKZBBsFm0bWhsBAGQKZBFsFm0cWhwBAGQKZBJsHW0eWh4BAGQKZBNsHW0fWh8BAGQKZBRsIG0hWiEBAGQKZBVsIG0iWiIBAGQKZBZsI20kWiQBAGQKZBdsI20lWiUBAGQKZBhsI20mWiYBAGQKZBlsJ20oWigBAGQKZBpsJ20pWikBAGQKZBtsJ20qWioBAGQKZBxsK20sWiwBAGQKZB1sK20tWi0BAGQKZB5sK20uWi4BAGQKZB9sK20vWi8BAGQKZCBsK20wWjABAGQKZCFsK20xWjEBAGUGajJy32QAZAFsM1o0ZApkImw1bTZaNgEAZQZqN2QjZQZqOGQkZQZqOWYCGQBkJY0CWjplBqA3ZCahAVo7ZCdkKGQpZTxkKmUGaj1lBmo+ZTxkK2YCGQAZAGYGZCxkLYQEWj8JLmRVZC9kMGQxZTxkMmQrZDNlQGQqZAFmCmQ0ZDWEBVpBZDZlBmpCZTsZAGQ3ZUNkKmUGakRlBmo+ZTtkJGYCGQAZAGYGZDhkOYQEWkVlCgkBZFZkJ2QoZDplBmpGZDsZAGQqZQZqPWQBGQBmBmQ8ZD2EBYMBWkdkPmUGakhkOxkAZD9lBmpIZDsZAGQqZQZqRGQ7GQBmBmRAZEGEBFpJRwBkQmRDhABkQ2UAakqDA1pLRwBkRGQohABkKIMCWkxHAGRFZEaEAGRGgwJaTUcAZEdkK4QAZCtlTYMDWk5HAGRIZDCEAGQwZU6DA1pPRwBkSWRKhABkSmVPgwNaUEcAZEtkTIQAZExlT4MDWlFkTWUGajlkKmUGaj1lBmo5GQBmBGROZE+EBFpSRwBkUGQ7hABkO4MCWlNHAGRRZFKEAGRSZVODA1pURwBkU2RUhABkVGVTgwNaVWQBUwApV+kAAAAATikB2gNhYmMpAdoOY29udGV4dG1hbmFnZXIpAdoJRXhpdFN0YWNrKQHaB3BhcnRpYWwpAdoOdXBkYXRlX3dyYXBwZXIpAdoHZ2V0dGV4dCkB2ghuZ2V0dGV4dCkB2gZyZXBlYXTpAQAAACkB2gV0eXBlc6kB2gVBYm9ydCkB2gxCYWRQYXJhbWV0ZXIpAdoOQ2xpY2tFeGNlcHRpb26pAdoERXhpdCkB2hBNaXNzaW5nUGFyYW1ldGVyqQHaClVzYWdlRXJyb3IpAdoNSGVscEZvcm1hdHRlcikB2gxqb2luX29wdGlvbnMpAdoLcG9wX2NvbnRleHQpAdoMcHVzaF9jb250ZXh0qQHaEV9mbGFnX25lZWRzX3ZhbHVlKQHaDE9wdGlvblBhcnNlcikB2glzcGxpdF9vcHQpAdoHY29uZmlybSkB2gZwcm9tcHQpAdoFc3R5bGUpAdoUX2RldGVjdF9wcm9ncmFtX25hbWUpAdoMX2V4cGFuZF9hcmdzKQHaBGVjaG8pAdoXbWFrZV9kZWZhdWx0X3Nob3J0X2hlbHApAdoIbWFrZV9zdHIpAdoSUGFjaWZ5Rmx1c2hXcmFwcGVyqQHaDkNvbXBsZXRpb25JdGVt2gFGLikB2gVib3VuZNoBVtoDY3R42gdDb250ZXh02gppbmNvbXBsZXRl2gZyZXR1cm7aB0NvbW1hbmRjAgAAAAAAAAAAAAAABQAAAAUAAABjAAAAc1IAAACBAHQAoAF0AnwAagOhAn0CfAKgBHwAoQFEAF0ZfQN8A6AFfAGhAXImfAKgBnwAfAOhAn0EfARkAXUBciZ8BGoHcyZ8A3wEZgJWAAEAcQ1kAVMAKQJ600xpc3QgYWxsIHRoZSBzdWJjb21tYW5kcyBvZiBhIGdyb3VwIHRoYXQgc3RhcnQgd2l0aCB0aGUKICAgIGluY29tcGxldGUgdmFsdWUgYW5kIGFyZW4ndCBoaWRkZW4uCgogICAgOnBhcmFtIGN0eDogSW52b2NhdGlvbiBjb250ZXh0IGZvciB0aGUgZ3JvdXAuCiAgICA6cGFyYW0gaW5jb21wbGV0ZTogVmFsdWUgYmVpbmcgY29tcGxldGVkLiBNYXkgYmUgZW1wdHkuCiAgICBOKQjaAXTaBGNhc3TaDE11bHRpQ29tbWFuZNoHY29tbWFuZNoNbGlzdF9jb21tYW5kc9oKc3RhcnRzd2l0aNoLZ2V0X2NvbW1hbmTaBmhpZGRlbikFcisAAAByLQAAANoFbXVsdGnaBG5hbWVyMwAAAKkAcjoAAAD6VS9yb290L2dmMTgwLWRlbW8vY2FyYXZlbF91c2VyX3Byb2plY3QvdmVudi9saWIvcHl0aG9uMy4xMC9zaXRlLXBhY2thZ2VzL2NsaWNrL2NvcmUucHnaGl9jb21wbGV0ZV92aXNpYmxlX2NvbW1hbmRzMAAAAHMSAAAAAoAOCQ4CCgEMAQ4CCgECgAT7cjwAAABG2gxiYXNlX2NvbW1hbmRyMgAAANoIY21kX25hbWXaA2NtZNoIcmVnaXN0ZXJjBAAAAAAAAAAAAAAABQAAAA8AAABDAAAAc2QAAAB8AGoAcgh0AXwCdAKDAnMKZABTAHwDcg9kAX0EbgJkAn0EdAN8BJsAZAN8AGoEmwJkBHwBmwJkBXwBmwJkBnQFfAKDAWoGmwBkB3QFfACDAWoGmwBkCHwAagSbAmQJnQ6DAYIBKQpOemRJdCBpcyBub3QgcG9zc2libGUgdG8gYWRkIG11bHRpIGNvbW1hbmRzIGFzIGNoaWxkcmVuIHRvIGFub3RoZXIgbXVsdGkgY29tbWFuZCB0aGF0IGlzIGluIGNoYWluIG1vZGUuemRGb3VuZCBhIG11bHRpIGNvbW1hbmQgYXMgc3ViY29tbWFuZCB0byBhIG11bHRpIGNvbW1hbmQgdGhhdCBpcyBpbiBjaGFpbiBtb2RlLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuegouIENvbW1hbmQgehUgaXMgc2V0IHRvIGNoYWluIGFuZCB6QSB3YXMgYWRkZWQgYXMgYSBzdWJjb21tYW5kIGJ1dCBpdCBpbiBpdHNlbGYgaXMgYSBtdWx0aSBjb21tYW5kLiAoegYgaXMgYSB6EiB3aXRoaW4gYSBjaGFpbmVkIHoHIG5hbWVkIHoCKS4pB9oFY2hhaW7aCmlzaW5zdGFuY2VyMgAAANoMUnVudGltZUVycm9ycjkAAADaBHR5cGXaCF9fbmFtZV9fKQVyPQAAAHI+AAAAcj8AAAByQAAAANoEaGludHI6AAAAcjoAAAByOwAAANoTX2NoZWNrX211bHRpY29tbWFuZEMAAABz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U2UGagtkVGUGagtkF2UGagtmCGRVZFaEBFotZFdkB2RTZQZqC2RUZQZqC2QXZQZqC2YIZFhkWYQEWi5kOmUKZFplL2QXZARmBmRbZFyEBFowZDplCmQXZQZqCWUvGQBmBGRdZF6EBFoxZARTAClnciwAAABh8BMAAFRoZSBjb250ZXh0IGlzIGEgc3BlY2lhbCBpbnRlcm5hbCBvYmplY3QgdGhhdCBob2xkcyBzdGF0ZSByZWxldmFudAogICAgZm9yIHRoZSBzY3JpcHQgZXhlY3V0aW9uIGF0IGV2ZXJ5IHNpbmdsZSBsZXZlbC4gIEl0J3Mgbm9ybWFsbHkgaW52aXNpYmxlCiAgICB0byBjb21tYW5kcyB1bmxlc3MgdGhleSBvcHQtaW4gdG8gZ2V0dGluZyBhY2Nlc3MgdG8gaXQuCgogICAgVGhlIGNvbnRleHQgaXMgdXNlZnVsIGFzIGl0IGNhbiBwYXNzIGludGVybmFsIG9iamVjdHMgYXJvdW5kIGFuZCBjYW4KICAgIGNvbnRyb2wgc3BlY2lhbCBleGVjdXRpb24gZmVhdHVyZXMgc3VjaCBhcyByZWFkaW5nIGRhdGEgZnJvbQogICAgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoKICAgIEEgY29udGV4dCBjYW4gYmUgdXNlZCBhcyBjb250ZXh0IG1hbmFnZXIgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGNhbGwKICAgIDptZXRoOmBjbG9zZWAgb24gdGVhcmRvd24uCgogICAgOnBhcmFtIGNvbW1hbmQ6IHRoZSBjb21tYW5kIGNsYXNzIGZvciB0aGlzIGNvbnRleHQuCiAgICA6cGFyYW0gcGFyZW50OiB0aGUgcGFyZW50IGNvbnRleHQuCiAgICA6cGFyYW0gaW5mb19uYW1lOiB0aGUgaW5mbyBuYW1lIGZvciB0aGlzIGludm9jYXRpb24uICBHZW5lcmFsbHkgdGhpcwogICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIG1vc3QgZGVzY3JpcHRpdmUgbmFtZSBmb3IgdGhlIHNjcmlwdCBvcgogICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC4gIEZvciB0aGUgdG9wbGV2ZWwgc2NyaXB0IGl0IGlzIHVzdWFsbHkKICAgICAgICAgICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSBzY3JpcHQsIGZvciBjb21tYW5kcyBiZWxvdyBpdCBpdCdzCiAgICAgICAgICAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0LgogICAgOnBhcmFtIG9iajogYW4gYXJiaXRyYXJ5IG9iamVjdCBvZiB1c2VyIGRhdGEuCiAgICA6cGFyYW0gYXV0b19lbnZ2YXJfcHJlZml4OiB0aGUgcHJlZml4IHRvIHVzZSBmb3IgYXV0b21hdGljIGVudmlyb25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuICBJZiB0aGlzIGlzIGBOb25lYCB0aGVuIHJlYWRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIGlzIGRpc2FibGVkLiAgVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgYWZmZWN0IG1hbnVhbGx5IHNldCBlbnZpcm9ubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHdoaWNoIGFyZSBhbHdheXMgcmVhZC4KICAgIDpwYXJhbSBkZWZhdWx0X21hcDogYSBkaWN0aW9uYXJ5IChsaWtlIG9iamVjdCkgd2l0aCBkZWZhdWx0IHZhbHVlcwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFyYW1ldGVycy4KICAgIDpwYXJhbSB0ZXJtaW5hbF93aWR0aDogdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbC4gIFRoZSBkZWZhdWx0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXQgZnJvbSBwYXJlbnQgY29udGV4dC4gIElmIG5vIGNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lcyB0aGUgdGVybWluYWwgd2lkdGggdGhlbiBhdXRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdGlvbiB3aWxsIGJlIGFwcGxpZWQuCiAgICA6cGFyYW0gbWF4X2NvbnRlbnRfd2lkdGg6IHRoZSBtYXhpbXVtIHdpZHRoIGZvciBjb250ZW50IHJlbmRlcmVkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICh0aGlzIGN1cnJlbnRseSBvbmx5IGFmZmVjdHMgaGVscAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlcykuICBUaGlzIGRlZmF1bHRzIHRvIDgwIGNoYXJhY3RlcnMgaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IG92ZXJyaWRkZW4uICBJbiBvdGhlciB3b3JkczogZXZlbiBpZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYWwgaXMgbGFyZ2VyIHRoYW4gdGhhdCwgQ2xpY2sgd2lsbCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IHRoaW5ncyB3aWRlciB0aGFuIDgwIGNoYXJhY3RlcnMgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdC4gIEluIGFkZGl0aW9uIHRvIHRoYXQsIGZvcm1hdHRlcnMgbWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIHNvbWUgc2FmZXR5IG1hcHBpbmcgb24gdGhlIHJpZ2h0LgogICAgOnBhcmFtIHJlc2lsaWVudF9wYXJzaW5nOiBpZiB0aGlzIGZsYWcgaXMgZW5hYmxlZCB0aGVuIENsaWNrIHdpbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Ugd2l0aG91dCBhbnkgaW50ZXJhY3Rpdml0eSBvciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZvY2F0aW9uLiAgRGVmYXVsdCB2YWx1ZXMgd2lsbCBhbHNvIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQuICBUaGlzIGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaW5ncyBzdWNoIGFzIGNvbXBsZXRpb24gc3VwcG9ydC4KICAgIDpwYXJhbSBhbGxvd19leHRyYV9hcmdzOiBpZiB0aGlzIGlzIHNldCB0byBgVHJ1ZWAgdGhlbiBleHRyYSBhcmd1bWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgZW5kIHdpbGwgbm90IHJhaXNlIGFuIGVycm9yIGFuZCB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VwdCBvbiB0aGUgY29udGV4dC4gIFRoZSBkZWZhdWx0IGlzIHRvIGluaGVyaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBjb21tYW5kLgogICAgOnBhcmFtIGFsbG93X2ludGVyc3BlcnNlZF9hcmdzOiBpZiB0aGlzIGlzIHNldCB0byBgRmFsc2VgIHRoZW4gb3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYXJndW1lbnRzIGNhbm5vdCBiZSBtaXhlZC4gIFRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIHRvIGluaGVyaXQgZnJvbSB0aGUgY29tbWFuZC4KICAgIDpwYXJhbSBpZ25vcmVfdW5rbm93bl9vcHRpb25zOiBpbnN0cnVjdHMgY2xpY2sgdG8gaWdub3JlIG9wdGlvbnMgaXQgZG9lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBrbm93IGFuZCBrZWVwcyB0aGVtIGZvciBsYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcuCiAgICA6cGFyYW0gaGVscF9vcHRpb25fbmFtZXM6IG9wdGlvbmFsbHkgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCBkZWZpbmUgaG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGhlbHAgcGFyYW1ldGVyIGlzIG5hbWVkLiAgVGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgYGBbJy0taGVscCddYGAuCiAgICA6cGFyYW0gdG9rZW5fbm9ybWFsaXplX2Z1bmM6IGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemUgdG9rZW5zIChvcHRpb25zLCBjaG9pY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGMuKS4gIFRoaXMgZm9yIGluc3RhbmNlIGNhbiBiZSB1c2VkIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudCBjYXNlIGluc2Vuc2l0aXZlIGJlaGF2aW9yLgogICAgOnBhcmFtIGNvbG9yOiBjb250cm9scyBpZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgQU5TSSBjb2xvcnMgb3Igbm90LiAgVGhlCiAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgYXV0b2RldGVjdGlvbi4gIFRoaXMgaXMgb25seSBuZWVkZWQgaWYgQU5TSQogICAgICAgICAgICAgICAgICBjb2RlcyBhcmUgdXNlZCBpbiB0ZXh0cyB0aGF0IENsaWNrIHByaW50cyB3aGljaCBpcyBieQogICAgICAgICAgICAgICAgICBkZWZhdWx0IG5vdCB0aGUgY2FzZS4gIFRoaXMgZm9yIGluc3RhbmNlIHdvdWxkIGFmZmVjdAogICAgICAgICAgICAgICAgICBoZWxwIG91dHB1dC4KICAgIDpwYXJhbSBzaG93X2RlZmF1bHQ6IFNob3cgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGNvbW1hbmRzLiBJZiB0aGlzCiAgICAgICAgdmFsdWUgaXMgbm90IHNldCwgaXQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHBhcmVudAogICAgICAgIGNvbnRleHQuIGBgQ29tbWFuZC5zaG93X2RlZmF1bHRgYCBvdmVycmlkZXMgdGhpcyBkZWZhdWx0IGZvciB0aGUKICAgICAgICBzcGVjaWZpYyBjb21tYW5kLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4xCiAgICAgICAgVGhlIGBgc2hvd19kZWZhdWx0YGAgcGFyYW1ldGVyIGlzIG92ZXJyaWRkZW4gYnkKICAgICAgICBgYENvbW1hbmQuc2hvd19kZWZhdWx0YGAsIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheSBhcm91bmQuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBUaGUgYGBzaG93X2RlZmF1bHRgYCBwYXJhbWV0ZXIgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIGZyb20gdGhlCiAgICAgICAgcGFyZW50IGNvbnRleHQuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA3LjEKICAgICAgIEFkZGVkIHRoZSBgYHNob3dfZGVmYXVsdGBgIHBhcmFtZXRlci4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDQuMAogICAgICAgIEFkZGVkIHRoZSBgYGNvbG9yYGAsIGBgaWdub3JlX3Vua25vd25fb3B0aW9uc2BgLCBhbmQKICAgICAgICBgYG1heF9jb250ZW50X3dpZHRoYGAgcGFyYW1ldGVycy4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAogICAgICAgIEFkZGVkIHRoZSBgYGFsbG93X2V4dHJhX2FyZ3NgYCBhbmQgYGBhbGxvd19pbnRlcnNwZXJzZWRfYXJnc2BgCiAgICAgICAgcGFyYW1ldGVycy4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMAogICAgICAgIEFkZGVkIHRoZSBgYHJlc2lsaWVudF9wYXJzaW5nYGAsIGBgaGVscF9vcHRpb25fbmFtZXNgYCwgYW5kCiAgICAgICAgYGB0b2tlbl9ub3JtYWxpemVfZnVuY2BgIHBhcmFtZXRlcnMuCiAgICByFQAAANoPZm9ybWF0dGVyX2NsYXNzTkZyMwAAAHIvAAAA2gZwYXJlbnTaCWluZm9fbmFtZdoDb2Jq2hJhdXRvX2VudnZhcl9wcmVmaXjaC2RlZmF1bHRfbWFw2g50ZXJtaW5hbF93aWR0aNoRbWF4X2NvbnRlbnRfd2lkdGjaEXJlc2lsaWVudF9wYXJzaW5n2hBhbGxvd19leHRyYV9hcmdz2hdhbGxvd19pbnRl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YT0BAABDcmVhdGVzIHRoZSA6Y2xhc3M6YH5jbGljay5IZWxwRm9ybWF0dGVyYCBmb3IgdGhlIGhlbHAgYW5kCiAgICAgICAgdXNhZ2Ugb3V0cHV0LgoKICAgICAgICBUbyBxdWlja2x5IGN1c3RvbWl6ZSB0aGUgZm9ybWF0dGVyIGNsYXNzIHVzZWQgd2l0aG91dCBvdmVycmlkaW5nCiAgICAgICAgdGhpcyBtZXRob2QsIHNldCB0aGUgOmF0dHI6YGZvcm1hdHRlcl9jbGFzc2AgYXR0cmlidXRlLgoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgICAgICBBZGRlZCB0aGUgOmF0dHI6YGZvcm1hdHRlcl9jbGFzc2AgYXR0cmlidXRlLgogICAgICAgICkC2gV3aWR0aNoJbWF4X3dpZHRoKQNybwAAAHJ1AAAAcnYAAABylAAAAHI6AAAAcjoAAAByOwAAANoObWFrZV9mb3JtYXR0ZXISAgAAcwYAAAAECggBBv96FkNvbnRleHQubWFrZV9mb3JtYXR0ZXLaD2NvbnRleHRfbWFuYWdlcmMCAAAAAAAAAAAAAAACAAAAAwAAAEMAAADzDAAAAHwAagCgAXwBoQFTACkBYdkDAABSZWdpc3RlciBhIHJlc291cmNlIGFzIGlmIGl0IHdlcmUgdXNlZCBpbiBhIGBgd2l0aGBgCiAgICAgICAgc3RhdGVtZW50LiBUaGUgcmVzb3VyY2Ugd2lsbCBiZSBjbGVhbmVkIHVwIHdoZW4gdGhlIGNvbnRleHQgaXMKICAgICAgICBwb3BwZWQuCgogICAgICAgIFVzZXMgOm1ldGg6YGNvbnRleHRsaWIuRXhpdFN0YWNrLmVudGVyX2NvbnRleHRgLiBJdCBjYWxscyB0aGUKICAgICAgICByZXNvdXJjZSdzIGBgX19lbnRlcl9fKClgYCBtZXRob2QgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4gV2hlbgogICAgICAgIHRoZSBjb250ZXh0IGlzIHBvcHBlZCwgaXQgY2xvc2VzIHRoZSBzdGFjaywgd2hpY2ggY2FsbHMgdGhlCiAgICAgICAgcmVzb3VyY2UncyBgYF9fZXhpdF9fKClgYCBtZXRob2QuCgogICAgICAgIFRvIHJlZ2lzdGVyIGEgY2xlYW51cCBmdW5jdGlvbiBmb3Igc29tZXRoaW5nIHRoYXQgaXNuJ3QgYQogICAgICAgIGNvbnRleHQgbWFuYWdlciwgdXNlIDptZXRoOmBjYWxsX29uX2Nsb3NlYC4gT3IgdXNlIHNvbWV0aGluZwogICAgICAgIGZyb20gOm1vZDpgY29udGV4dGxpYmAgdG8gdHVybiBpdCBpbnRvIGEgY29udGV4dCBtYW5hZ2VyIGZpcnN0LgoKICAgICAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogICAgICAgICAgICBAY2xpY2suZ3JvdXAoKQogICAgICAgICAgICBAY2xpY2sub3B0aW9uKCItLW5hbWUiKQogICAgICAgICAgICBAY2xpY2sucGFzc19jb250ZXh0CiAgICAgICAgICAgIGRlZiBjbGkoY3R4KToKICAgICAgICAgICAgICAgIGN0eC5vYmogPSBjdHgud2l0aF9yZXNvdXJjZShjb25uZWN0X2RiKG5hbWUpKQoKICAgICAgICA6cGFyYW0gY29udGV4dF9tYW5hZ2VyOiBUaGUgY29udGV4dCBtYW5hZ2VyIHRvIGVudGVyLgogICAgICAgIDpyZXR1cm46IFdoYXRldmVyIGBgY29udGV4dF9tYW5hZ2VyLl9fZW50ZXJfXygpYGAgcmV0dXJucy4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogOC4wCiAgICAgICAgKQJykAAAANoNZW50ZXJfY29udGV4dCkCcpEAAABypAAAAHI6AAAAcjoAAAByOwAAANoNd2l0aF9yZXNvdXJjZSACAABzAgAAAAwbehVDb250ZXh0LndpdGhfcmVzb3VyY2XaAWYuYwIAAAAAAAAAAAAAAAIAAAADAAAAQwAAAHKlAAAAKQFhhQEAAFJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRleHQgdGVhcnMgZG93bi4KCiAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjbG9zZSByZXNvdXJjZXMgb3BlbmVkIGR1cmluZyB0aGUgc2NyaXB0CiAgICAgICAgZXhlY3V0aW9uLiBSZXNvdXJjZXMgdGhhdCBzdXBwb3J0IFB5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ZCBhcyB3ZWxsIGJ1dCBwcm9wZXIgY2xpY2sgcGFyYW1ldGVycwogICAgICAgICAgICAob3B0aW9ucyBhbmQgY2xpY2sgYXJndW1lbnRzKSBtdXN0IGJlIGtleXdvcmQgYXJndW1lbnRzIGFuZCBDbGljawogICAgICAgICAgICB3aWxsIGZpbGwgaW4gZGVmYXVsdHMuCgogICAgICAgIE5vdGUgdGhhdCBiZWZvcmUgQ2xpY2sgMy4yIGtleXdvcmQgYXJndW1lbnRzIHdlcmUgbm90IHByb3Blcmx5IGZpbGxlZAogICAgICAgIGluIGFnYWluc3QgdGhlIGludGVudGlvbiBvZiB0aGlzIGNvZGUgYW5kIG5vIGNvbnRleHQgd2FzIGNyZWF0ZWQuICBGb3IKICAgICAgICBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2hhbmdlIGFuZCB3aHkgaXQgd2FzIGRvbmUgaW4gYSBidWdmaXgKICAgICAgICByZWxlYXNlIHNlZSA6cmVmOmB1cGdyYWRlLXRvLTMuMmAuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgICAgIEFsbCBgYGt3YXJnc2BgIGFyZSB0cmFja2VkIGluIDphdHRyOmBwYXJhbXNgIHNvIHRoZXkgd2lsbCBiZQogICAgICAgICAgICBwYXNzZWQgaWYgOm1ldGg6YGZvcndhcmRgIGlzIGNhbGxlZCBhdCBtdWx0aXBsZSBsZXZlbHMuCiAgICAgICAgTno/VGhlIGdpdmVuIGNvbW1hbmQgZG9lcyBub3QgaGF2ZSBhIGNhbGxiYWNrIHRoYXQgY2FuIGJlIGludm9rZWQuKQxyQgAAAHIvAAAAcqkAAADaCVR5cGVFcnJvcnLOAAAAcoIAAAByOQAAANoMZXhwb3NlX3ZhbHVl2g90eXBlX2Nhc3RfdmFsdWXaC2dldF9kZWZhdWx02gZ1cGRhdGVyUgAAACkH2g5fQ29udGV4dF9fc2VsZnLPAAAAcoMAAABy0AAAANoJb3RoZXJfY21kcisAAAByTwAAAHI6AAAAcjoAAAByOwAAANoGaW52b2tlxQIAAHMuAAAAChkEAQoCAgECAQT/BgQKAgoCEAEEAQoBCv8CgA4GBAIKAgYBDAEO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IGdpdmVuIGFuIGluZm8gbmFtZSBhbmQgYXJndW1lbnRzIHdpbGwga2ljawogICAgICAgIG9mZiB0aGUgcGFyc2luZyBhbmQgY3JlYXRlIGEgbmV3IDpjbGFzczpgQ29udGV4dGAuICBJdCBkb2VzIG5vdAogICAgICAgIGludm9rZSB0aGUgYWN0dWFsIGNvbW1hbmQgY2FsbGJhY2sgdGhvdWdoLgoKICAgICAgICBUbyBxdWlja2x5IGN1c3RvbWl6ZSB0aGUgY29udGV4dCBjbGFzcyB1c2VkIHdpdGhvdXQgb3ZlcnJpZGluZwogICAgICAgIHRoaXMgbWV0aG9kLCBzZXQgdGhlIDphdHRyOmBjb250ZXh0X2NsYXNzYCBhdHRyaWJ1dGUuCgogICAgICAgIDpwYXJhbSBpbmZvX25hbWU6IHRoZSBpbmZvIG5hbWUgZm9yIHRoaXMgaW52b2NhdGlvbi4gIEdlbmVyYWxseSB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlIG1vc3QgZGVzY3JpcHRpdmUgbmFtZSBmb3IgdGhlIHNjcmlwdCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuICBGb3IgdGhlIHRvcGxldmVsIHNjcmlwdCBpdCdzIHVzdWFsbHkKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0LCBmb3IgY29tbWFuZHMgYmVsb3cgaXQgaXQncwogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLgogICAgICAgIDpwYXJhbSBhcmdzOiB0aGUgYXJndW1lbnRzIHRvIHBhcnNlIGFzIGxpc3Qgb2Ygc3RyaW5ncy4KICAgICAgICA6cGFyYW0gcGFyZW50OiB0aGUgcGFyZW50IGNvbnRleHQgaWYgYXZhaWxhYmxlLgogICAgICAgIDpwYXJhbSBleHRyYTogZXh0cmEga2V5d29yZCBhcmd1bWVudHMgZm9yd2FyZGVkIHRvIHRoZSBjb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvci4KCiAgICAgICAgLi4gdmVyc2lvbmNo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ZAF9CX4JZAFTAGQBfQl+CXcBBAB0D5ABeQsBAAEAAQB8BHP6ggB0DXQcZAWDAXQAag5kBI0CAQB0AKAKZAKhAQEAWQBkAVMAdwApBmHbCAAAVGhpcyBpcyB0aGUgd2F5IHRvIGludm9rZSBhIHNjcmlwdCB3aXRoIGFsbCB0aGUgYmVsbHMgYW5kCiAgICAgICAgd2hpc3RsZXMgYXMgYSBjb21tYW5kIGxpbmUgYXBwbGljYXRpb24uICBUaGlzIHdpbGwgYWx3YXlzIHRlcm1pbmF0ZQogICAgICAgIHRoZSBhcHBsaWNhdGlvbiBhZnRlciBhIGNhbGwuICBJZiB0aGlzIGlzIG5vdCB3YW50ZWQsIGBgU3lzdGVtRXhpdGBgCiAgICAgICAgbmVlZHMgdG8gYmUgY2F1Z2h0LgoKICAgICAgICBUaGlzIG1ldGhvZCBpcyBhbHNvIGF2YWlsYWJsZSBieSBkaXJlY3RseSBjYWxsaW5nIHRoZSBpbnN0YW5jZSBvZgogICAgICAgIGEgOmNsYXNzOmBDb21tYW5kYC4KCiAgICAgICAgOnBhcmFtIGFyZ3M6IHRoZSBhcmd1bWVudHMgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgcGFyc2luZy4gIElmIG5vdAogICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCwgYGBzeXMuYXJndlsxOl1gYCBpcyB1c2VkLgogICAgICAgIDpwYXJhbSBwcm9nX25hbWU6IHRoZSBwcm9ncmFtIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZC4gIEJ5IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJvZ3JhbSBuYW1lIGlzIGNvbnN0cnVjdGVkIGJ5IHRha2luZyB0aGUgZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgZnJvbSBgYHN5cy5hcmd2WzBdYGAuCiAgICAgICAgOnBhcmFtIGNvbXBsZXRlX3ZhcjogdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRoYXQgY29udHJvbHMgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaCBjb21wbGV0aW9uIHN1cHBvcnQuICBUaGUgZGVmYXVsdCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgIl88cHJvZ19uYW1lPl9DT01QTEVURSJgYCB3aXRoIHByb2dfbmFtZSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyY2FzZS4KICAgICAgICA6cGFyYW0gc3RhbmRhbG9uZV9tb2RlOiB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBpbnZva2UgdGhlIHNjcmlwdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHN0YW5kYWxvbmUgbW9kZS4gIENsaWNrIHdpbGwgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSBleGNlcHRpb25zIGFuZCBjb252ZXJ0IHRoZW0gaW50bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIG1lc3NhZ2VzIGFuZCB0aGUgZnVuY3Rpb24gd2lsbCBuZXZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidXQgc2h1dCBkb3duIHRoZSBpbnRlcnByZXRlci4gIElmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBzZXQgdG8gYEZhbHNlYCB0aGV5IHdpbGwgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIgYW5kIHRoZSByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSByZXR1cm4gdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiA6bWV0aDpgaW52b2tlYC4KICAgICAgICA6cGFyYW0gd2luZG93c19leHBhbmRfYXJnczogRXhwYW5kIGdsb2IgcGF0dGVybnMsIHVzZXIgZGlyLCBhbmQKICAgICAgICAgICAgZW52IHZhcnMgaW4gY29tbWFuZCBsaW5lIGFyZ3Mgb24gV2luZG93cy4KICAgICAgICA6cGFyYW0gZXh0cmE6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BFoXZBdlDWQUZQZmBGQqZCuEBFoYZEJkLWUZZBRlBmYEZC5kL4QFWhpkF2UNZB5lEWQUZAJmBmQwZDGEBFobZBdlDWQeZRFkFGQCZgZkMmQzhARaHGQXZQ1kHmURZBRkAmYGZDRkNYQEWh1kF2UNZB5lEWQUZAJmBmQ2ZDeEBFoeZBdlDWQ4ZQRqCmUGGQBkFGUEagplBhkAZgZkOWQ6hARaH2QXZQ1kFGUEaghmBGQ7ZDyEBFogZBdlDWQ9ZQZkFGUEagpkPhkAZgaHAGYBZD9kQIQMWiGHAAQAWiJTAClDci8AAABh7gcAAENvbW1hbmRzIGFyZSB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2sgb2YgY29tbWFuZCBsaW5lIGludGVyZmFjZXMgaW4KICAgIENsaWNrLiAgQSBiYXNpYyBjb21tYW5kIGhhbmRsZXMgY29tbWFuZCBsaW5lIHBhcnNpbmcgYW5kIG1pZ2h0IGRpc3BhdGNoCiAgICBtb3JlIHBhcnNpbmcgdG8gY29tbWFuZHMgbmVzdGVkIGJlbG93IGl0LgoKICAgIDpwYXJhbSBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgY29tbWFuZCB0byB1c2UgdW5sZXNzIGEgZ3JvdXAgb3ZlcnJpZGVzIGl0LgogICAgOnBhcmFtIGNvbnRleHRfc2V0dGluZ3M6IGFuIG9wdGlvbmFsIGRpY3Rpb25hcnkgd2l0aCBkZWZhdWx0cyB0aGF0IGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCB0byB0aGUgY29udGV4dCBvYmplY3QuCiAgICA6cGFyYW0gY2FsbGJhY2s6IHRoZSBjYWxsYmFjayB0byBpbnZva2UuICBUaGlzIGlzIG9wdGlvbmFsLgogICAgOnBhcmFtIHBhcmFtczogdGhlIHBhcmFtZXRlcnMgdG8gcmVnaXN0ZXIgd2l0aCB0aGlzIGNvbW1hbmQuICBUaGlzIGNhbgogICAgICAgICAgICAgICAgICAgYmUgZWl0aGVyIDpjbGFzczpgT3B0aW9uYCBvciA6Y2xhc3M6YEFyZ3VtZW50YCBvYmplY3RzLgogICAgOnBhcmFtIGhlbHA6IHRoZSBoZWxwIHN0cmluZyB0byB1c2UgZm9yIHRoaXMgY29tbWFuZC4KICAgIDpwYXJhbSBlcGlsb2c6IGxpa2UgdGhlIGhlbHAgc3RyaW5nIGJ1dCBpdCdzIHByaW50ZWQgYXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgIGhlbHAgcGFnZSBhZnRlciBldmVyeXRoaW5nIGVsc2UuCiAgICA6cGFyYW0gc2hvcnRfaGVscDogdGhlIHNob3J0IGhlbHAgdG8gdXNlIGZvciB0aGlzIGNvbW1hbmQuICBUaGlzIGlzCiAgICAgICAgICAgICAgICAgICAgICAgc2hvd24gb24gdGhlIGNvbW1hbmQgbGlzdGluZyBvZiB0aGUgcGFyZW50IGNvbW1hbmQuCiAgICA6cGFyYW0gYWRkX2hlbHBfb3B0aW9uOiBieSBkZWZhdWx0IGVhY2ggY29tbWFuZCByZWdpc3RlcnMgYSBgYC0taGVscGBgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uICBUaGlzIGNhbiBiZSBkaXNhYmxlZCBieSB0aGlzIHBhcmFtZXRlci4KICAgIDpwYXJhbSBub19hcmdzX2lzX2hlbHA6IHRoaXMgY29udHJvbHMgd2hhdCBoYXBwZW5zIGlmIG5vIGFyZ3VtZW50cyBhcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkLiAgVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGVuYWJsZWQgdGhpcyB3aWxsIGFkZCBgYC0taGVscGBgIGFzIGFyZ3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBubyBhcmd1bWVudHMgYXJlIHBhc3NlZAogICAgOnBhcmFtIGhpZGRlbjogaGlkZSB0aGlzIGNvbW1hbmQgZnJvbSBoZWxwIG91dHB1dHMuCgogICAgOnBhcmFtIGRlcHJlY2F0ZWQ6IGlzc3VlcyBhIG1lc3NhZ2UgaW5kaWNhdGluZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgaXMgZGVwcmVjYXRlZC4KCiAgICAuLiB2ZXJzaW9u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X2lzX2hlbHA6IHRoaXMgY29udHJvbHMgd2hhdCBoYXBwZW5zIGlmIG5vIGFyZ3VtZW50cyBhcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkLiAgVGhpcyBvcHRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgaW52b2tlX3dpdGhvdXRfY29tbWFuZGAgaXMgZGlzYWJsZWQgb3IgZGlzYWJsZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0J3MgZW5hYmxlZC4gIElmIGVuYWJsZWQgdGhpcyB3aWxsIGFkZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYGAtLWhlbHBgYCBhcyBhcmd1bWVudCBpZiBubyBhcmd1bWVudHMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQuCiAgICA6cGFyYW0gc3ViY29tbWFuZF9tZXRhdmFyOiB0aGUgc3RyaW5nIHRoYXQgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gaW5kaWNhdGUgdGhlIHN1YmNvbW1hbmQgcGxhY2UuCiAgICA6cGFyYW0gY2hhaW46IGlmIHRoaXMgaXMgc2V0IHRvIGBUcnVlYCBjaGFpbmluZyBvZiBtdWx0aXBsZSBzdWJjb21tYW5kcwogICAgICAgICAgICAgICAgICBpcyBlbmFibGVkLiAgVGhpcyByZXN0cmljdHMgdGhlIGZvcm0gb2YgY29tbWFuZHMgaW4gdGhhdAogICAgICAgICAgICAgICAgICB0aGV5IGNhbm5vdCBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyBidXQgaXQgYWxsb3dzCiAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGNvbW1hbmRzIHRvIGJlIGNoYWluZWQgdG9nZXRoZXIuCiAgICA6cGFyYW0gcmVzdWx0X2NhbGxiYWNrOiBUaGUgcmVzdWx0IGNhbGxiYWNrIHRvIGF0dGFjaCB0byB0aGlzIG11bHRpCiAgICAgICAgY29tbWFuZC4gVGhpcyBjYW4gYmUgc2V0IG9yIGNoYW5nZWQgbGF0ZXIgd2l0aCB0aGUKICAgICAgICA6bWV0aDpgcmVzdWx0X2NhbGxiYWNrYCBkZWNvcmF0b3IuCiAgICBURk5yOQAAANoWaW52b2tlX3dpdGhvdXRfY29tbWFuZHI1AQAA2hJzdWJjb21tYW5kX21ldGF2YXJyQQAAANoPcmVzdWx0X2NhbGxiYWNrLtoFYXR0cnNyLgAAAGMHAAAAAAAAAAAAAAAJAAAABAAAAAsAAABziAAAAHQAgwBqAXwBZgFpAHwHpAGOAQEAfANkAHUAchF8AgwAfQN8A3wAXwJ8AnwAXwN8BGQAdQByInwFciBkAX0EbgJkAn0EfAR8AF8EfAV8AF8FfAZ8AF8GfABqBXJAfABqB0QAXRB9CHQIfAh0CYMCcj98CGoKcz90C2QDgwGCAXExZABTAGQAUwApBE56KkNPTU1BTkQxIFtBUkdTXS4uLiBbQ09NTUFORDIgW0FSR1NdLi4uXS4uLnoRQ09NTUFORCBbQVJHU10uLi56PE11bHRpIGNvbW1hbmRzIGluIGNoYWluIG1vZGUgY2Fubm90IGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzLikMcjcBAABykgAAAHI1AQAAcngBAAByeQEAAHJBAAAA2hBfcmVzdWx0X2NhbGxiYWNrcoIAAAByQgAAANoIQXJndW1lbnTaCHJlcXVpcmVkckMAAAApCXKRAAAAcjkAAAByeAEAAHI1AQAAcnkBAAByQQAAAHJ6AQAAcnsBAAByTwAAAHI4AQAAcjoAAAByOwAAAHKSAAAAvgUAAHMqAAAAFAoIAgYBBgIGAQgCBAEGAQQCBgIGAQYDBgIKARABAgECAQT/AoAE/QQBehVNdWx0aUNvbW1hbmQuX19pbml0X19yKwAAAGMCAAAAAAAAAAAAAAAHAAAACQAAAAMAAABzjgAAAHQAgwCgAXwBoQF9AmkAfQN8AKACfAGhAUQAXS99BHwAoAN8AXwEoQJ9BXwFZAB1AHIacQ18AaAEfAWhAX0GfAZqBWQBZAKNAY8PAQB8BaABfAahAXwDfAQ8AFcAZAAEAAQAgwMBAG4IMQBzN3cBAQABAAEAWQABAHENfAJqBnwDfABqB2QDjQIBAHwCUwApBE5GcgABAAApAtoIY29tbWFuZHNyQQAAACkIcjcBAABykwAAAHI0AAAAcjYAAAByzgAAAHKfAAAActUAAAByQQAAACkHcpEAAAByKwAAAHI7AQAAcn8BAAByOQAAAHIzAAAA2gdzdWJfY3R4cjgBAAByOgAAAHI7AAAAcpMAAADkBQAAcxoAAAAMAQQBDgIMAQgCAgEKAg4CEAEc/wKAEAMEAXoZTXVsdGlDb21tYW5kLnRvX2luZm9fZGljdGMCAAAAAAAAAAAAAAADAAAAAwAAAAMAAABzHAAAAHQAgwCgAXwBoQF9AnwCoAJ8AGoDoQEBAHwCUwBySgAAACkEcjcBAAByRgEAAHJqAQAAcnkBAACpA3KRAAAAcisAAAByngAAAHI4AQAAcjoAAAByOwAAAHJGAQAA9gUAAHMGAAAADAEMAQQBeiFNdWx0aUNvbW1hbmQuY29sbGVjdF91c2FnZV9waWVjZXNyQgEAAGMDAAAAAAAAAAAAAAADAAAABAAAAAMAAABzHgAAAHQAgwCgAXwBfAKhAgEAfACgAnwBfAKhAgEAZABTAHJKAAAAKQNyNwEAAHJhAQAA2g9mb3JtYXRfY29tbWFuZHNyQQEAAHI4AQAAcjoAAAByOwAAAHJhAQAA+wUAAHMEAAAADgEQAXobTXVsdGlDb21tYW5kLmZvcm1hdF9vcHRpb25zcowAAABjAgAAAAAAAAAAAAAAAwAAAAQAAAADAAAAcxwAAABkAXQAZAJ0AGYEhwCHAWYCZANkBIQMfQJ8AlMAKQVhtgMAAEFkZHMgYSByZXN1bHQgY2FsbGJhY2sgdG8gdGhlIGNvbW1hbmQuICBCeSBkZWZhdWx0IGlmIGEKICAgICAgICByZXN1bHQgY2FsbGJhY2sgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHRoaXMgd2lsbCBjaGFpbiB0aGVtIGJ1dAogICAgICAgIHRoaXMgY2FuIGJlIGRpc2FibGVkIHdpdGggdGhlIGByZXBsYWNlYCBwYXJhbWV0ZXIuICBUaGUgcmVzdWx0CiAgICAgICAgY2FsbGJhY2sgaXMgaW52b2tlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHN1YmNvbW1hbmQKICAgICAgICAob3IgdGhlIGxpc3Qgb2YgcmV0dXJuIHZhbHVlcyBmcm9tIGFsbCBzdWJjb21tYW5kcyBpZiBjaGFpbmluZwogICAgICAgIGlzIGVuYWJsZWQpIGFzIHdlbGwgYXMgdGhlIHBhcmFtZXRlcnMgYXMgdGhleSB3b3VsZCBiZSBwYXNzZWQKICAgICAgICB0byB0aGUgbWFpbiBjYWxsYmFjay4KCiAgICAgICAgRXhhbXBsZTo6CgogICAgICAgICAgICBAY2xpY2suZ3JvdXAoKQogICAgICAgICAgICBAY2xpY2sub3B0aW9uKCctaScsICctLWlucHV0JywgZGVmYXVsdD0yMykKICAgICAgICAgICAgZGVmIGNsaShpbnB1dCk6CiAgICAgICAgICAgICAgICByZXR1cm4gNDIKCiAgICAgICAgICAgIEBjbGkucmVzdWx0X2NhbGxiYWNrKCkKICAgICAgICAgICAgZGVmIHByb2Nlc3NfcmVzdWx0KHJlc3VsdCwgaW5wdXQpOgogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIGlucHV0CgogICAgICAgIDpwYXJhbSByZXBsYWNlOiBpZiBzZXQgdG8gYFRydWVgIGFuIGFscmVhZHkgZXhpc3RpbmcgcmVzdWx0CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrIHdpbGwgYmUgcmVtb3ZlZC4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICAgICAgUmVuYW1lZCBmcm9tIGBgcmVzdWx0Y2FsbGJhY2tgYC4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4wCiAgICAgICAgcqgAAAByLgAAAGMBAAAAAAAAAAAAAAADAAAABQAAABMAAABzRgAAAIgDagCJAYgBZAB1AHMJiAJyDogAiANfAIgAUwCHAIcBZgJkAWQChAh9AXQBdAKgA3QEfAGhAogAgwIEAIgDXwB9AnwCUwApA05jAQAAAAAAAAAAAAAABAAAAAQAAAAfAAAAcywAAACIAXwAZwF8AaIBUgBpAHwCpAGOAX0DiAB8A2cBfAGiAVIAaQB8AqQBjgFTAHJKAAAAcjoAAAApBNoUX011bHRpQ29tbWFuZF9fdmFsdWVygwAAAHLQAAAA2gVpbm5lcqkCcqgAAADaDG9sZF9jYWxsYmFja3I6AAAAcjsAAADaCGZ1bmN0aW9uIwYAAHMEAAAAFgEWAXpBTXVsdGlDb21tYW5kLnJlc3VsdF9jYWxsYmFjay48bG9jYWxzPi5kZWNvcmF0b3IuPGxvY2Fscz4uZnVuY3Rpb24pBXJ8AQAAcgYAAAByMAAAAHIxAAAAcigAAAApA3KoAAAAcocBAAByngAAAKkCcowAAABykQAAAHKFAQAAcjsAAADaCWRlY29yYXRvchwGAABzDgAAAAYBDAIGAQQBDgIYBAQBei9NdWx0aUNvbW1hbmQucmVzdWx0X2NhbGxiYWNrLjxsb2NhbHM+LmRlY29yYXRvcikBcigAAAApA3KRAAAAcowAAAByiQEAAHI6AAAAcogBAAByOwAAAHJ6AQAA/wUAAHMEAAAAGB0EDnocTXVsdGlDb21tYW5kLnJlc3VsdF9jYWxsYmFja2MDAAAAAAAAAAAAAAAJAAAACAAAAEMAAABz2AAAAGcAfQN8AKAAfAGhAUQAXRh9BHwAoAF8AXwEoQJ9BXwFZAF1AHIUcQd8BWoCchhxB3wDoAN8BHwFZgKhAQEAcQd0BHwDgwFyaHwCagVkAhgAdAZkA2QEhAB8A0QAgwGDARgAfQZnAH0HfANEAF0QXAJ9BH0FfAWgB3wGoQF9CHwHoAN8BHwIZgKhAQEAcTZ8B3JqfAKgCHQJZAWDAaEBjw4BAHwCoAp8B6EBAQBXAGQBBAAEAIMDAQBkAVMAMQBzYXcBAQABAAEAWQABAGQBUwBkAVMAZAFTACkGemVFeHRyYSBmb3JtYXQgbWV0aG9kcyBmb3IgbXVsdGkgbWV0aG9kcyB0aGF0IGFkZHMgYWxsIHRoZSBjb21tYW5kcwogICAgICAgIGFmdGVyIHRoZSBvcHRpb25zLgogICAgICAgIE7pBgAAAGMBAAAAAAAAAAAAAAACAAAABAAAAHMAAABzHAAAAIEAfABdCX0BdAB8AWQAGQCDAVYAAQBxAmQBUwApAnIBAAAATqkBcm4BAAApAnIJAQAAcj8AAAByOgAAAHI6AAAAcjsAAAByCwEAAD0GAADzBAAAAAKAGgB6L011bHRpQ29tbWFuZC5mb3JtYXRfY29tbWFuZHMuPGxvY2Fscz4uPGdlbmV4cHI+2ghDb21tYW5kcykLcjQAAAByNgAAAHI3AAAAcmoBAABybgEAAHKhAAAA2gNtYXhyBwEAAHJrAQAAcoAAAABybAEAACkJcpEAAAByKwAAAHJCAQAAcn8BAADaCnN1YmNvbW1hbmRyPwAAAHJYAQAA2gRyb3dzcgYBAAByOgAAAHI6AAAAcjsAAAByggEAACwGAABzKAAAAAQEDgEMAQgCAgEGAQIBEAIIAxwBBAIMAQoBEAEEAhABDAEi/wT3BAh6HE11bHRpQ29tbWFuZC5mb3JtYXRfY29tbWFuZHNygwAAAGMDAAAAAAAAAAAAAAAEAAAABAAAAAMAAABzeAAAAHwCcxV8AGoAchV8AWoBcxV0AnwBoAOhAHwBagRkAY0CAQB8AaAFoQABAHQGgwCgB3wBfAKhAn0DfABqCHIofAN8AV8JZwB8AV8KfAFqClMAfANyOXwDZABkAoUCGQB8A2QCZACFAhkAAgJ8AV8JfAFfCnwBagpTACkDTnJPAQAAcgoAAAApC3I1AQAAcncAAAByIgAAAHLMAAAAcn0AAAByyAAAAHI3AQAAcgIBAAByQQAAAHKEAAAAcoMAAAApBHKRAAAAcisAAABygwAAANoEcmVzdHI4AQAAcjoAAAByOwAAAHICAQAASAYAAHMWAAAAEAESAQgBDgIGAgYBBgEGBAT9HgEGAnoXTXVsdGlDb21tYW5kLnBhcnNlX2FyZ3NjAgAAAAAAAAAAAAAACQAAAAoAAAADAAAAcyYCAABkAXQAagFkAnQAagFmBIcAhwFmAmQDZASEDH0CiABqAnM8iAFqA3I1iACPFwEAdASDAKAFiAChAX0DfAKIAWoGciNnAG4BfAODAVcAAgBkAAQABACDAwEAUwAxAHMwdwEBAAEAAQBZAAEAiACgB3QIZAWDAaEBAQBnAIgAagKiAYgAagmiAX0EZwCIAF8JZwCIAF8CiAFqBnOgiACPSQEAiAGgCogAfAShAlwDfQV9Bn0EfAZkAHUBc19KAIIBfAWIAF8LdASDAKAFiAChAQEAfAZqDHwFfASIAGQGjQN9B3wHjxcBAHwCfAdqDaAFfAehAYMBVwACAGQABAAEAIMDAQBXAAIAZAAEAAQAgwMBAFMAMQBzjHcBAQABAAEAWQABAFcAZAAEAAQAgwMBAG4IMQBzm3cBAQABAAEAWQABAIgAj2YBAHwEcqdkB24BZACIAF8LdASDAKAFiAChAQEAZwB9CHwEctuIAaAKiAB8BKECXAN9BX0GfQR8BmQAdQFzw0oAggF8BmoMfAV8BIgAZAhkCWQKjQV9B3wIoA58B6EBAQB8B2oJZwACAn0EfAdfCXwEc7RnAH0DfAhEAF0dfQd8B48RAQB8A6AOfAdqDaAFfAehAaEBAQBXAGQABAAEAIMDAQBuCDEAc/d3AQEAAQABAFkAAQBx33wCfAODAVcAAgBkAAQABACDAwEAUwAxAJABcwx3AQEAAQABAFkAAQBkAFMAKQtOcsEAAAByLgAAAGMBAAAAAAAAAAAAAAABAAAABAAAABMAAABzJgAAAIgBagBkAHUBchGIAGoBiAFqAHwAZgJpAIgAagKkAY4BfQB8AFMAckoAAAApA3J8AQAActgAAAByggAAAKkBcsEAAACpAnIrAAAAcpEAAAByOgAAAHI7AAAA2g9fcHJvY2Vzc19yZXN1bHRYBgAAcwYAAAAKARgBBAF6LE11bHRpQ29tbWFuZC5pbnZva2UuPGxvY2Fscz4uX3Byb2Nlc3NfcmVzdWx0ehBNaXNzaW5nIGNvbW1hbmQucrQAAADaASpURikDcnAAAAByeAAAAHJ5AAAAKQ9yMAAAAHLkAAAAcoQAAAByeAEAAHI3AQAActgAAAByQQAAAHLEAAAAcoAAAABygwAAANoPcmVzb2x2ZV9jb21tYW5kcooAAAByAwEAAHIzAAAAcmoBAAApCXKRAAAAcisAAABylAEAAHKeAAAAcoMAAAByPgAAAHI/AAAAcoABAADaCGNvbnRleHRzcjgBAABykwEAAHI7AAAActgAAABXBgAAc2IAAAAcAQYFBgEGBAwBEAEg/g4DEAMGAQYBBgUGAxIBDAEGAQwBEAEGAQ4BDv8Q+hIGHPoGDg4BDAEEBQQBEgEMAQQBAgECAQIBAgECAQb7CgcOAQT1BA0IAQYBFAEc/wKABgIm53oTTXVsdGlDb21tYW5kLmludm9rZWMDAAAAAAAAAAAAAAAGAAAABQAAAEMAAABznAAAAHQAfAJkARkAgwF9A3wDfQR8AKABfAF8A6ECfQV8BWQAdQByInwBagJkAHUBciJ8AaACfAOhAX0DfACgAXwBfAOhAn0FfAVkAHUAckF8AWoDc0F0BHwDgwFkARkAcjZ8AKAFfAF8AWoGoQIBAHwBoAd0CGQCgwFqCXwEZAONAaEBAQB8BXJFfANuAWQAfAV8AmQEZACFAhkAZgNTACkFTnIBAAAAehlObyBzdWNoIGNvbW1hbmQge25hbWUhcn0ucvEAAAByCgAAACkKciQAAAByNgAAAHJ8AAAAcncAAAByHAAAAHICAQAAcoMAAAByxAAAAHKAAAAAcl4BAAApBnKRAAAAcisAAABygwAAAHI+AAAA2hFvcmlnaW5hbF9jbWRfbmFtZXI/AAAAcjoAAAByOgAAAHI7AAAAcpYBAACbBgAAcxYAAAAMAwQBDAMSBAoBDAEOCAwBDgEWARoBehxNdWx0aUNvbW1hbmQucmVzb2x2ZV9jb21tYW5kcj4AAABjAwAAAAAAAAAAAAAAAwAAAAEAAABDAAAAcwQAAAB0AIIBKQF6e0dpdmVuIGEgY29udGV4dCBhbmQgYSBjb21tYW5kIG5hbWUsIHRoaXMgcmV0dXJucyBhCiAgICAgICAgOmNsYXNzOmBDb21tYW5kYCBvYmplY3QgaWYgaXQgZXhpc3RzIG9yIHJldHVybnMgYE5vbmVgLgogICAgICAgIHL8AAAAqQNykQAAAHIrAAAAcj4AAAByOgAAAHI6AAAAcjsAAAByNgAAALYGAAByvwAAAHoYTXVsdGlDb21tYW5kLmdldF9jb21tYW5kYwIAAAAAAAAAAAAAAAIAAAABAAAAQwAAAPMEAAAAZwBTACkBelRSZXR1cm5zIGEgbGlzdCBvZiBzdWJjb21tYW5kIG5hbWVzIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZAogICAgICAgIGFwcGVhci4KICAgICAgICByOgAAAHLyAAAAcjoAAAByOgAAAHI7AAAAcjQAAAC8BgAAcr8AAAB6Gk11bHRpQ29tbWFuZC5saXN0X2NvbW1hbmRzci0AAAByJwAAAGMDAAAAAAAAAAAAAAAEAAAABgAAAAMAAABzPAAAAGQBZAJsAG0BiQABAIcAZgFkA2QEhAh0AnwBfAKDAkQAgwF9A3wDoAN0BIMAoAV8AXwCoQKhAQEAfANTACkFYTABAABSZXR1cm4gYSBsaXN0IG9mIGNvbXBsZXRpb25zIGZvciB0aGUgaW5jb21wbGV0ZSB2YWx1ZS4gTG9va3MKICAgICAgICBhdCB0aGUgbmFtZXMgb2Ygb3B0aW9ucywgc3ViY29tbWFuZHMsIGFuZCBjaGFpbmVkCiAgICAgICAgbXVsdGktY29tbWFuZHMuCgogICAgICAgIDpwYXJhbSBjdHg6IEludm9jYXRpb24gY29udGV4dCBmb3IgdGhpcyBjb21tYW5kLgogICAgICAgIDpwYXJhbSBpbmNvbXBsZXRlOiBWYWx1ZSBiZWluZyBjb21wbGV0ZWQuIE1heSBiZSBlbXB0eS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogOC4wCiAgICAgICAgcgEAAAByJgAAAGMBAAAAAAAAAAAAAAADAAAABgAAABMAAABzIAAAAGcAfABdDFwCfQF9AogAfAF8AqAAoQBkAI0CkQJxAlMAKQFyBQEAACkBcgcBAAByCAEAAHImAAAAcjoAAAByOwAAAHI5AQAAzgYAAHMIAAAABgAGAg7/Bv96L011bHRpQ29tbWFuZC5zaGVsbF9jb21wbGV0ZS48bG9jYWxzPi48bGlzdGNvbXA+KQZyDAEAAHInAAAAcjwAAAByrwAAAHI3AQAAcg8BAAByDQEAAHI4AQAAciYAAAByOwAAAHIPAQAAwgYAAHMMAAAADAoKAggCBv4UBAQBehtNdWx0aUNvbW1hbmQuc2hlbGxfY29tcGxldGUpBk5GTk5GTqkBRikgckUAAAByZQAAAHJmAAAAcmcAAAByeAAAAHJ5AAAAcjAAAABy4gAAAHLjAAAAcmEAAABy6AAAAHLkAAAAcpIAAAByLAAAAHLlAAAAcpMAAABy5wAAAHJGAQAAchUAAAByYQEAAHIoAAAAcnoBAAByggEAAHICAQAActgAAAByYAAAAHIvAAAAcpYBAAByNgAAAHI0AAAAcg8BAABydwEAAHI6AAAAcjoAAAByOAEAAHI7AAAAcjIAAACiBQAAc1gAAAAIAAQBBBgEAQIEAgECAQIBAgECAQT5CAIC/gIDAv0IBAL8CAUC+wIGAvoUBwL5BAgC+AIJDvciJhwSGgUgBBYtJhwYDwJEAgEC/wgBAv8gAgr+HBsYBigGYwAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAHMkAgAAZQBaAWQAWgJVAGQBWgNkAloEZQVqBmUFagdlCBkAGQBlCWQDPABkAloKZQVqBmUFagtlBWoHZAAZAGUFagdlDBkAZgIZABkAZQlkBDwACQIJAmQgZAVlBWoGZQ0ZAGQGZQVqBmUFagtlBWoOZQ1lCGYCGQBlBWoPZQgZAGYCGQAZAGQHZQVqEGQIZAJmCIcAZgFkCWQKhA1aEWQhZAtlCGQFZQVqBmUNGQBkCGQCZgZkDGQNhAVaEmUFahNkDmUFahRkD2UFahBmAhkAZAhlCGYEZBBkEYQEgwFaFWUFahNkEmUFahBkE2UFahBkCGUFahRlBWoUZA9lBWoQZgIZAGcBZQhmAhkAZgZkFGQRhASDAVoVZBJlBWoQZBNlBWoQZAhlBWoLZQVqFGUFahRkD2UFahBmAhkAZwFlCGYCGQBlCGYCGQBmBmQVZBGEBFoVZQVqE2QOZQVqFGQPZQVqEGYCGQBkCGQAZgRkFmQXhASDAVoWZQVqE2QSZQVqEGQTZQVqEGQIZQVqFGUFahRkD2UFahBmAhkAZwFkAGYCGQBmBmQYZBeEBIMBWhZkEmUFahBkE2UFahBkCGUFagtlBWoUZQVqFGQPZQVqEGYCGQBnAWQAZgIZAGQAZgIZAGYGZBlkF4QEWhZkGmUXZBtlDWQIZQVqBmUIGQBmBmQcZB2EBFoYZBplF2QIZQVqGWUNGQBmBGQeZB+EBFoahwAEAFobUwApItoFR3JvdXBhTgIAAEEgZ3JvdXAgYWxsb3dzIGEgY29tbWFuZCB0byBoYXZlIHN1YmNvbW1hbmRzIGF0dGFjaGVkLiBUaGlzIGlzCiAgICB0aGUgbW9zdCBjb21tb24gd2F5IHRvIGltcGxlbWVudCBuZXN0aW5nIGluIENsaWNrLgoKICAgIDpwYXJhbSBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZ3JvdXAgY29tbWFuZC4KICAgIDpwYXJhbSBjb21tYW5kczogQSBkaWN0IG1hcHBpbmcgbmFtZXMgdG8gOmNsYXNzOmBDb21tYW5kYCBvYmplY3RzLgogICAgICAgIENhbiBhbHNvIGJlIGEgbGlzdCBvZiA6Y2xhc3M6YENvbW1hbmRgLCB3aGljaCB3aWxsIHVzZQogICAgICAgIDphdHRyOmBDb21tYW5kLm5hbWVgIHRvIGNyZWF0ZSB0aGUgZGljdC4KICAgIDpwYXJhbSBhdHRyczogT3RoZXIgY29tbWFuZCBhcmd1bWVudHMgZGVzY3JpYmVkIGluCiAgICAgICAgOmNsYXNzOmBNdWx0aUNvbW1hbmRgLCA6Y2xhc3M6YENvbW1hbmRgLCBhbmQKICAgICAgICA6Y2xhc3M6YEJhc2VDb21tYW5kYC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgIFRoZSBgYGNvbW1tYW5kc2BgIGFyZ3VtZW50IGNhbiBiZSBhIGxpc3Qgb2YgY29tbWFuZCBvYmplY3RzLgogICAgTtoNY29tbWFuZF9jbGFzc9oLZ3JvdXBfY2xhc3NyOQAAAHJ/AQAAcnsBAAByLgAAAGMDAAAAAAAAAAAAAAAEAAAABAAAAAsAAABzRgAAAHQAgwBqAXwBZgFpAHwDpAGOAQEAfAJkAHUAchFpAH0Cbg10AnwCdANqBIMCch5kAWQChAB8AkQAgwF9AnwCfABfBWQAUwApA05jAQAAAAAAAAAAAAAAAgAAAAQAAABTAAAAcx4AAABpAHwAXQt9AXwBagBkAHUBcgJ8AWoAfAGTAnECUwBySgAAAHLxAAAAqQJyCQEAANoBY3I6AAAAcjoAAAByOwAAANoKPGRpY3Rjb21wPgUHAADzAgAAAB4AeiJHcm91cC5fX2luaXRfXy48bG9jYWxzPi48ZGljdGNvbXA+KQZyNwEAAHKSAAAAckIAAAByAgAAAHIvAQAAcn8BAAApBHKRAAAAcjkAAAByfwEAAHJ7AQAAcjgBAAByOgAAAHI7AAAAcpIAAAD6BgAAcwwAAAAUBggCBgEMAQ4BCgN6Dkdyb3VwLl9faW5pdF9fcj8AAABjAwAAAAAAAAAAAAAAAwAAAAYAAABDAAAAczgAAAB8AnAEfAFqAH0CfAJkAXUAcg10AWQCgwGCAXQCfAB8AnwBZANkBI0EAQB8AXwAagN8AjwAZAFTACkFeoNSZWdpc3RlcnMgYW5vdGhlciA6Y2xhc3M6YENvbW1hbmRgIHdpdGggdGhpcyBncm91cC4gIElmIHRoZSBuYW1lCiAgICAgICAgaXMgbm90IHByb3ZpZGVkLCB0aGUgbmFtZSBvZiB0aGUgY29tbWFuZCBpcyB1c2VkLgogICAgICAgIE56FENvbW1hbmQgaGFzIG5vIG5hbWUuVCkBckAAAAApBHI5AAAActEAAAByRwAAAHJ/AQAAKQNykQAAAHI/AAAAcjkAAAByOgAAAHI6AAAAcjsAAADaC2FkZF9jb21tYW5kCgcAAHMKAAAACgQIAQgBEAEOAXoRR3JvdXAuYWRkX2NvbW1hbmTaDF9Hcm91cF9fZnVuYy5jAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcrwAAABySgAAAHI6AAAAqQJykQAAAHKkAQAAcjoAAAByOgAAAHI7AAAAcjMAAAAUBwAA8wIAAAAEAnoNR3JvdXAuY29tbWFuZHKDAAAActAAAABjAQAAAAAAAAAAAAAAAwAAAAEAAABPAAAAcrwAAABySgAAAHI6AAAAciwBAAByOgAAAHI6AAAAcjsAAAByMwAAABgHAAByvwAAAGMBAAAAAAAAAAAAAAAFAAAABQAAAA8AAABznAAAAGQBZAJsAG0BiQEBAIgDagJyFYgCoANkA6EBZAR1AHIViANqAogCZAM8AGQEfQOIAHIwdASIAGQFGQCDAXIwdAWIAIMBZAFrAnIniAJyK0oAZAaDAYIBiABcAX0DZAeJAGQIdAZqB2QJdAZqCGYCGQBkCnQJZgSHAIcBhwKHA2YEZAtkDIQMfQR8A2QEdQFyTHwEfAODAVMAfARTACkNYQ8CAABBIHNob3J0Y3V0IGRlY29yYXRvciBmb3IgZGVjbGFyaW5nIGFuZCBhdHRhY2hpbmcgYSBjb21tYW5kIHRvCiAgICAgICAgdGhlIGdyb3VwLiBUaGlzIHRha2VzIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyA6ZnVuYzpgY29tbWFuZGAgYW5kCiAgICAgICAgaW1tZWRpYXRlbHkgcmVnaXN0ZXJzIHRoZSBjcmVhdGVkIGNvbW1hbmQgd2l0aCB0aGlzIGdyb3VwIGJ5CiAgICAgICAgY2FsbGluZyA6bWV0aDpgYWRkX2NvbW1hbmRgLgoKICAgICAgICBUbyBjdXN0b21pemUgdGhlIGNvbW1hbmQgY2xhc3MgdXNlZCwgc2V0IHRoZQogICAgICAgIDphdHRyOmBjb21tYW5kX2NsYXNzYCBhdHRyaWJ1dGUuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4xCiAgICAgICAgICAgIFRoaXMgZGVjb3JhdG9yIGNhbiBiZSBhcHBsaWVkIHdpdGhvdXQgcGFyZW50aGVzZXMuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgICAgIEFkZGVkIHRoZSA6YXR0cjpgY29tbWFuZF9jbGFzc2AgYXR0cmlidXRlLgogICAgICAgIHIKAAAAKQFyMwAAANoDY2xzTnIBAAAAejdVc2UgJ2NvbW1hbmQoKiprd2FyZ3MpKGNhbGxhYmxlKScgdG8gcHJvdmlkZSBhcmd1bWVudHMucjoAAAByqAAAAC5yLgAAAGMBAAAAAAAAAAAAAAACAAAABAAAABMAAADzIAAAAIgBiABpAIgCpAGOAXwAgwF9AYgDoAB8AaEBAQB8AVMAckoAAACpAXKjAQAAqQJyqAAAAHI/AAAAqQRygwAAAHIzAAAActAAAABykQAAAHI6AAAAcjsAAAByiQEAAD0HAADzBgAAABIBCgEEAXogR3JvdXAuY29tbWFuZC48bG9jYWxzPi5kZWNvcmF0b3IpCtoKZGVjb3JhdG9yc3IzAAAAcp0BAAByiQAAAHLAAAAAcm4BAAByMAAAAHLoAAAAcuQAAAByLwAAAKkFcpEAAABygwAAAHLQAAAA2gRmdW5jcokBAAByOgAAAHKrAQAAcjsAAAByMwAAAB4HAABzIgAAAAwRFAIKAQQCEAIKAgL/AgEE/wICBP4GAwQBKAIIBQgBBAJjAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcrwAAABySgAAAHI6AAAAcqUBAAByOgAAAHI6AAAAcjsAAADaBWdyb3VwRwcAAHKmAQAAegtHcm91cC5ncm91cGMBAAAAAAAAAAAAAAADAAAAAQAAAE8AAAByvAAAAHJKAAAAcjoAAAByLAEAAHI6AAAAcjoAAAByOwAAAHKwAQAASwcAAHK/AAAAYwEAAAAAAAAAAAAAAAUAAAAFAAAADwAAAHO4AAAAZAFkAmwAbQGJAQEAZAN9A4gAciF0AogAZAQZAIMBciF0A4gAgwFkAWsCchiIAnIcSgBkBYMBggGIAFwBfQNkBokAiANqBGQDdQFyPogCoAVkB6EBZAN1AHI+iANqBHQGdQByOXQGiAODAYgCZAc8AG4FiANqBIgCZAc8AGQIdAdqCGQJdAdqCWYCGQBkCmQLZgSHAIcBhwKHA2YEZAxkDYQMfQR8A2QDdQFyWnwEfAODAVMAfARTACkOYQMCAABBIHNob3J0Y3V0IGRlY29yYXRvciBmb3IgZGVjbGFyaW5nIGFuZCBhdHRhY2hpbmcgYSBncm91cCB0bwogICAgICAgIHRoZSBncm91cC4gVGhpcyB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgOmZ1bmM6YGdyb3VwYCBhbmQKICAgICAgICBpbW1lZGlhdGVseSByZWdpc3RlcnMgdGhlIGNyZWF0ZWQgZ3JvdXAgd2l0aCB0aGlzIGdyb3VwIGJ5CiAgICAgICAgY2FsbGluZyA6bWV0aDpgYWRkX2NvbW1hbmRgLgoKICAgICAgICBUbyBjdXN0b21pemUgdGhlIGdyb3VwIGNsYXNzIHVzZWQsIHNldCB0aGUgOmF0dHI6YGdyb3VwX2NsYXNzYAogICAgICAgIGF0dHJpYnV0ZS4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjEKICAgICAgICAgICAgVGhpcyBkZWNvcmF0b3IgY2FuIGJlIGFwcGxpZWQgd2l0aG91dCBwYXJlbnRoZXNlcy4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICAgICAgQWRkZWQgdGhlIDphdHRyOmBncm91cF9jbGFzc2AgYXR0cmlidXRlLgogICAgICAgIHIKAAAAKQFysAEAAE5yAQAAAHo1VXNlICdncm91cCgqKmt3YXJncykoY2FsbGFibGUpJyB0byBwcm92aWRlIGFyZ3VtZW50cy5yOgAAAHKnAQAAcqgAAAAuci4AAABynAEAAGMBAAAAAAAAAAAAAAACAAAABAAAABMAAAByqAEAAHJKAAAAcqkBAAByqgEAAKkEcoMAAABysAEAAHLQAAAAcpEAAAByOgAAAHI7AAAAcokBAABzBwAAcqwBAAB6Hkdyb3VwLmdyb3VwLjxsb2NhbHM+LmRlY29yYXRvcikKcq0BAABysAEAAHLAAAAAcm4BAAByngEAAHKJAAAAckQAAAByMAAAAHLoAAAAcuQAAAByrgEAAHI6AAAAcrEBAAByOwAAAHKwAQAAUQcAAHMmAAAADBEEAhACCgIC/wIBBP8CAgT+BgMEARgCCgEOAQoCKAIIBQgBBAJyKwAAAHI+AAAAYwMAAAAAAAAAAAAAAAMAAAADAAAAQwAAAHMMAAAAfABqAKABfAKhAVMAckoAAAApAnJ/AQAAcokAAABymQEAAHI6AAAAcjoAAAByOwAAAHI2AAAAfQcAAHMCAAAADAF6EUdyb3VwLmdldF9jb21tYW5kYwIAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMKAAAAdAB8AGoBgwFTAHJKAAAAKQJyYgAAAHJ/AQAAcvIAAAByOgAAAHI6AAAAcjsAAAByNAAAAIAHAADzAgAAAAoBehNHcm91cC5saXN0X2NvbW1hbmRzqQJOTnJKAAAAKRxyRQAAAHJlAAAAcmYAAAByZwAAAHKdAQAAcjAAAABy4gAAAHLgAAAAci8AAABy4QAAAHKeAQAAcu0AAAByRAAAAHLjAAAAcuUAAAByLwEAAHLkAAAAcpIAAAByowEAAHLsAAAAcugAAAByMwAAAHKwAQAAciwAAAByNgAAAHLnAAAAcjQAAABydwEAAHI6AAAAcjoAAAByOAEAAHI7AAAAcpwBAADWBgAAc2gAAAAKAAQBGBQoDAIFAgEE/QgCAv4iAwL9BAQC/AIFDvseEAQKIAEEAwIBBAEC/wQBAv8aAgz+AgUEAQL/BAEC/yQCCv4EKSABBAMCAQQBAv8EAQL/GgIM/gIFBAEC/wQBAv8kAgr+HCwgA3KcAQAAYwAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAHOSAAAAZQBaAWQAWgJkAVoDCQIJAmQSZANlBGoFZQYZAGQEZQRqBWUEagdlCBkAGQBkBWUEaglkBmQCZgiHAGYBZAdkCIQNWgpkCWUIZAZkAmYEZApkC4QEWgtkDGUMZA1lBmQGZQRqBWUNGQBmBmQOZA+EBFoOZAxlDGQGZQRqB2UGGQBmBGQQZBGEBFoPhwAEAFoQUwApE9oRQ29tbWFuZENvbGxlY3Rpb25hBAEAAEEgY29tbWFuZCBjb2xsZWN0aW9uIGlzIGEgbXVsdGkgY29tbWFuZCB0aGF0IG1lcmdlcyBtdWx0aXBsZSBtdWx0aQogICAgY29tbWFuZHMgdG9nZXRoZXIgaW50byBvbmUuICBUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGltcGxlbWVudGF0aW9uCiAgICB0aGF0IGFjY2VwdHMgYSBsaXN0IG9mIGRpZmZlcmVudCBtdWx0aSBjb21tYW5kcyBhcyBzb3VyY2VzIGFuZAogICAgcHJvdmlkZXMgYWxsIHRoZSBjb21tYW5kcyBmb3IgZWFjaCBvZiB0aGVtLgogICAgTnI5AAAA2gdzb3VyY2VzcnsBAAByLgAAAGMDAAAAAAAAAAAAAAAEAAAABAAAAAsAAABzIgAAAHQAgwBqAXwBZgFpAHwDpAGOAQEAfAJwDWcAfABfAmQAUwBySgAAACkDcjcBAABykgAAAHK1AQAAKQRykQAAAHI5AAAAcrUBAAByewEAAHI4AQAAcjoAAAByOwAAAHKSAAAAiwcAAHMEAAAAFAYOAnoaQ29tbWFuZENvbGxlY3Rpb24uX19pbml0X1/aCW11bHRpX2NtZGMCAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzEAAAAHwAagCgAXwBoQEBAGQBUwApAnoxQWRkcyBhIG5ldyBtdWx0aSBjb21tYW5kIHRvIHRoZSBjaGFpbiBkaXNwYXRjaGVyLk4pAnK1AQAAcmoBAAApAnKRAAAAcrYBAAByOgAAAHI6AAAAcjsAAADaCmFkZF9zb3VyY2WVBwAAci4BAAB6HENvbW1hbmRDb2xsZWN0aW9uLmFkZF9zb3VyY2VyKwAAAHI+AAAAYwMAAAAAAAAAAAAAAAUAAAAFAAAAQwAAAHM+AAAAfABqAEQAXRl9A3wDoAF8AXwCoQJ9BHwEZAB1AXIcfABqAnIYdAN8AHwCfASDAwEAfAQCAAEAUwBxA2QAUwBySgAAACkEcrUBAAByNgAAAHJBAAAAckcAAAApBXKRAAAAcisAAAByPgAAAHLbAAAAcp4AAAByOgAAAHI6AAAAcjsAAAByNgAAAJkHAABzEAAAAAoBDAEIAgYBDAEIAgL8BAZ6HUNvbW1hbmRDb2xsZWN0aW9uLmdldF9jb21tYW5kYwIAAAAAAAAAAAAAAAQAAAAGAAAAQwAAAHMqAAAAdACDAH0CfABqAUQAXQp9A3wCoAJ8A6ADfAGhAaEBAQBxBnQEfAKDAVMAckoAAAApBXKFAAAAcrUBAABy1QAAAHI0AAAAcmIAAAApBHKRAAAAcisAAAByngAAAHLbAAAAcjoAAAByOgAAAHI7AAAAcjQAAAClBwAAcwgAAAAGAQoCEgEIAnofQ29tbWFuZENvbGxlY3Rpb24ubGlzdF9jb21tYW5kc3KzAQAAKRFyRQAAAHJlAAAAcmYAAAByZwAAAHIwAAAAcuIAAABy4wAAAHLnAAAAcjIAAABy5AAAAHKSAAAAcrcBAAByLAAAAHIvAAAAcjYAAAByNAAAAHJ3AQAAcjoAAAByOgAAAHI4AQAAcjsAAABytAEAAIQHAABzIAAAAAgABAECCAIBBP0IAgL+DgMC/QQEAvwCBQ77EgocBCAMcrQBAABywQAAAGMBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzFgAAAHQAfAB0AYMCcgd0AoIBdAN8AIMBUwApAXp0Q2hlY2sgaWYgdGhlIHZhbHVlIGlzIGl0ZXJhYmxlIGJ1dCBub3QgYSBzdHJpbmcuIFJhaXNlcyBhIHR5cGUKICAgIGVycm9yLCBvciByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgdmFsdWUuCiAgICApBHJCAAAAcuMAAABy0QAAAHJNAAAAcpIBAAByOgAAAHI6AAAAcjsAAADaC19jaGVja19pdGVyrgcAAHMGAAAACgQEAQgCcrgBAABjAAAAAAAAAAAAAAAAAAAAAB8AAABAAAAAc5YDAABlAFoBZABaAmQBWgNkAloECQMJAwkECQMJAwkDCQQJAwkFCQQJAwkDZEZkBmUFagZlBWoHZQgZABkAZAdlBWoGZQVqCWUKagtlBWoMZgIZABkAZAhlDWQJZQVqBmUFagllBWoMZQVqDmcAZQVqDGYCGQBmAhkAGQBkCmUFagZlBWoOZQ9kAGUFagxnA2UFagxmAhkAGQBkC2UFagZlEBkAZAxlDWQNZQVqBmUIGQBkDmUNZA9lDWQQZQVqBmUFagllCGUFagdlCBkAZgIZABkAZBFlBWoGZQVqDmUPZABlCGcDZQVqCWUFahFkEhkAZQVqEWUIGQBmAhkAZgIZABkAZBNkA2YaZBRkFYQFWhJkE2UFahNlCGUFagxmAhkAZgJkFmQXhARaFGQTZQhmAmQYZBmEBFoVZBplBWoHZQgZAGQOZQ1kE2UFahZlBWoGZQgZAGUFahFlCBkAZQVqEWUIGQBmAxkAZgZkG2QchARaF2UYZBNlCGYCZB1kHoQEgwFaGWQTZQhmAmQfZCCEBFoaZQVqGwkFZEdkIWUPZCJkI2QTZQVqBmUFagwZAGYGZCRkJYQFgwFaHGUFahsJJmRIZCFlD2QiZQ1kE2UFagZlBWoJZQVqDGUFag5nAGUFagxmAhkAZgIZABkAZgZkJ2QlhAWDAVocCQVkR2QhZQ9kImUNZBNlBWoGZQVqCWUFagxlBWoOZwBlBWoMZgIZAGYCGQAZAGYGZChkJYQFWhxkKWUdZCFlD2QTZANmBmQqZCuEBFoeZCFlD2QsZQVqH2UIZQVqDGYCGQBkE2UFahZlBWoMZSBmAhkAZgZkLWQuhARaIWQhZQ9kL2UFagxkE2UFagxmBmQwZDGEBFoiZC9lBWoMZBNlDWYEZDJkM4QEWiNkIWUPZC9lBWoMZBNlBWoMZgZkNGQ1hARaJGQhZQ9kE2UFagZlCBkAZgRkNmQ3hARaJWQhZQ9kE2UFagZlBWoMGQBmBGQ4ZDmEBFomZCFlD2QsZQVqH2UIZQVqDGYCGQBkOmUFahFlCBkAZBNlBWoWZQVqDGUFahFlCBkAZgIZAGYIZDtkPIQEWidkIWUPZBNlBWoGZQVqFmUIZQhmAhkAGQBmBGQ9ZD6EBFooZCFlD2QTZQVqEWUIGQBmBGQ/ZECEBFopZCFlD2QTZQhmBGRBZEKEBFoqZCFlD2RDZQhkE2UFahFkEhkAZgZkRGRFhARaK2QDUwApSXJQAAAAYYEOAABBIHBhcmFtZXRlciB0byBhIGNvbW1hbmQgY29tZXMgaW4gdHdvIHZlcnNpb25zOiB0aGV5IGFyZSBlaXRoZXIKICAgIDpjbGFzczpgT3B0aW9uYFxzIG9yIDpjbGFzczpgQXJndW1lbnRgXHMuICBPdGhlciBzdWJjbGFzc2VzIGFyZSBjdXJyZW50bHkKICAgIG5vdCBzdXBwb3J0ZWQgYnkgZGVzaWduIGFzIHNvbWUgb2YgdGhlIGludGVybmFscyBmb3IgcGFyc2luZyBhcmUKICAgIGludGVudGlvbmFsbHkgbm90IGZpbmFsaXplZC4KCiAgICBTb21lIHNldHRpbmdzIGFyZSBzdXBwb3J0ZWQgYnkgYm90aCBvcHRpb25zIGFuZCBhcmd1bWVudHMuCgogICAgOnBhcmFtIHBhcmFtX2RlY2xzOiB0aGUgcGFyYW1ldGVyIGRlY2xhcmF0aW9ucyBmb3IgdGhpcyBvcHRpb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQuICBUaGlzIGlzIGEgbGlzdCBvZiBmbGFncyBvciBhcmd1bWVudAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy4KICAgIDpwYXJhbSB0eXBlOiB0aGUgdHlwZSB0aGF0IHNob3VsZCBiZSB1c2VkLiAgRWl0aGVyIGEgOmNsYXNzOmBQYXJhbVR5cGVgCiAgICAgICAgICAgICAgICAgb3IgYSBQeXRob24gdHlwZS4gIFRoZSBsYXRlciBpcyBjb252ZXJ0ZWQgaW50byB0aGUgZm9ybWVyCiAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBpZiBzdXBwb3J0ZWQuCiAgICA6cGFyYW0gcmVxdWlyZWQ6IGNvbnRyb2xzIGlmIHRoaXMgaXMgb3B0aW9uYWwgb3Igbm90LgogICAgOnBhcmFtIGRlZmF1bHQ6IHRoZSBkZWZhdWx0IHZhbHVlIGlmIG9taXR0ZWQuICBUaGlzIGNhbiBhbHNvIGJlIGEgY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgaW4gd2hpY2ggY2FzZSBpdCdzIGludm9rZWQgd2hlbiB0aGUgZGVmYXVsdCBpcyBuZWVkZWQKICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGFueSBhcmd1bWVudHMuCiAgICA6cGFyYW0gY2FsbGJhY2s6IEEgZnVuY3Rpb24gdG8gZnVydGhlciBwcm9jZXNzIG9yIHZhbGlkYXRlIHRoZSB2YWx1ZQogICAgICAgIGFmdGVyIHR5cGUgY29udmVyc2lvbi4gSXQgaXMgY2FsbGVkIGFzIGBgZihjdHgsIHBhcmFtLCB2YWx1ZSlgYAogICAgICAgIGFuZCBtdXN0IHJldHVybiB0aGUgdmFsdWUuIEl0IGlzIGNhbGxlZCBmb3IgYWxsIHNvdXJjZXMsCiAgICAgICAgaW5jbHVkaW5nIHByb21wdHMuCiAgICA6cGFyYW0gbmFyZ3M6IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIG1hdGNoLiAgSWYgbm90IGBgMWBgIHRoZSByZXR1cm4KICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIHNpbmdsZSB2YWx1ZS4gIFRoZSBkZWZhdWx0IGZvcgogICAgICAgICAgICAgICAgICBuYXJncyBpcyBgYDFgYCAoZXhjZXB0IGlmIHRoZSB0eXBlIGlzIGEgdHVwbGUsIHRoZW4gaXQncwogICAgICAgICAgICAgICAgICB0aGUgYXJpdHkgb2YgdGhlIHR1cGxlKS4gSWYgYGBuYXJncz0tMWBgLCBhbGwgcmVtYWluaW5nCiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgYXJlIGNvbGxlY3RlZC4KICAgIDpwYXJhbSBtZXRhdmFyOiBob3cgdGhlIHZhbHVlIGlzIHJlcHJlc2VudGVkIGluIHRoZSBoZWxwIHBhZ2UuCiAgICA6cGFyYW0gZXhwb3NlX3ZhbHVlOiBpZiB0aGlzIGlzIGBUcnVlYCB0aGVuIHRoZSB2YWx1ZSBpcyBwYXNzZWQgb253YXJkcwogICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGNvbW1hbmQgY2FsbGJhY2sgYW5kIHN0b3JlZCBvbiB0aGUgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBpdCdzIHNraXBwZWQuCiAgICA6cGFyYW0gaXNfZWFnZXI6IGVhZ2VyIHZhbHVlcyBhcmUgcHJvY2Vzc2VkIGJlZm9yZSBub24gZWFnZXIgb25lcy4gIFRoaXMKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSBzZXQgZm9yIGFyZ3VtZW50cyBvciBpdCB3aWxsIGludmVyc2UgdGhlCiAgICAgICAgICAgICAgICAgICAgIG9yZGVyIG9mIHByb2Nlc3NpbmcuCiAgICA6cGFyYW0gZW52dmFyOiBhIHN0cmluZyBvciBsaXN0IG9mIHN0cmluZ3MgdGhhdCBhcmUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBjaGVja2VkLgogICAgOnBhcmFtIHNoZWxsX2NvbXBsZXRlOiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBjdXN0b20gc2hlbGwKICAgICAgICBjb21wbGV0aW9ucy4gVXNlZCBpbnN0ZWFkIG9mIHRoZSBwYXJhbSdzIHR5cGUgY29tcGxldGlvbiBpZgogICAgICAgIGdpdmVuLiBUYWtlcyBgYGN0eCwgcGFyYW0sIGluY29tcGxldGVgYCBhbmQgbXVzdCByZXR1cm4gYSBsaXN0CiAgICAgICAgb2YgOmNsYXNzOmB+Y2xpY2suc2hlbGxfY29tcGxldGlvbi5Db21wbGV0aW9uSXRlbWAgb3IgYSBsaXN0IG9mCiAgICAgICAgc3RyaW5ncy4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgIGBgcHJvY2Vzc192YWx1ZWBgIHZhbGlkYXRlcyByZXF1aXJlZCBwYXJhbWV0ZXJzIGFuZCBib3VuZGVkCiAgICAgICAgYGBuYXJnc2BgLCBhbmQgaW52b2tlcyB0aGUgcGFyYW1ldGVyIGNhbGxiYWNrIGJlZm9yZSByZXR1cm5pbmcKICAgICAgICB0aGUgdmFsdWUuIFRoaXMgYWxsb3dzIHRoZSBjYWxsYmFjayB0byB2YWxpZGF0ZSBwcm9tcHRzLgogICAgICAgIGBgZnVsbF9wcm9jZXNzX3ZhbHVlYGAgaXMgcmVtb3ZlZC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgIGBgYXV0b2NvbXBsZXRpb25gYCBpcyByZW5hbWVkIHRvIGBgc2hlbGxfY29tcGxldGVgYCBhbmQgaGFzIG5ldwogICAgICAgIHNlbWFudGljcyBkZXNjcmliZWQgYWJvdmUuIFRoZSBvbGQgbmFtZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsCiAgICAgICAgYmUgcmVtb3ZlZCBpbiA4LjEsIHVudGlsIHRoZW4gaXQgd2lsbCBiZSB3cmFwcGVkIHRvIG1hdGNoIHRoZQogICAgICAgIG5ldyByZXF1aXJlbWVudHMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBGb3IgYGBtdWx0aXBsZT1UcnVlLCBuYXJncz4xYGAsIHRoZSBkZWZhdWx0IG11c3QgYmUgYSBsaXN0IG9mCiAgICAgICAgdHVwbGVzLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgU2V0dGluZyBhIGRlZmF1bHQgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkIGZvciBgYG5hcmdzPjFgYCwgaXQgd2lsbAogICAgICAgIGRlZmF1bHQgdG8gYGBOb25lYGAuIGBgbXVsdGlwbGU9VHJ1ZWBgIG9yIGBgbmFyZ3M9LTFgYCB3aWxsCiAg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AVoZZQVqGAkqZDlkIWUVZCZlCmQXZQVqBmUFagllBWoLZQVqGmcAZQVqC2YCGQBmAhkAGQBmBmQrZCmEBYMBWhkJBWQ4ZCFlFWQmZQpkF2UFagZlBWoJZQVqC2UFahpnAGUFagtmAhkAZgIZABkAZgaHAGYBZCxkKYQNWhlkIWUVZBdlBWoLZgRkLWQuhARaG2QhZRVkF2UFagZlCBkAZgSHAGYBZC9kMIQMWhxkIWUVZBdlBWoGZQVqCxkAZgRkMWQyhARaHWQhZRVkM2UFah5lCGQ0ZgIZAGQXZQVqEWUFagtlH2YCGQBmBocAZgFkNWQ2hAxaIIcABABaIVMAKTpyTgEAAGGLCwAAT3B0aW9ucyBhcmUgdXN1YWxseSBvcHRpb25hbCB2YWx1ZXMgb24gdGhlIGNvbW1hbmQgbGluZSBhbmQKICAgIGhhdmUgc29tZSBleHRyYSBmZWF0dXJlcyB0aGF0IGFyZ3VtZW50cyBkb24ndCBoYXZlLgoKICAgIEFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgb253YXJkcyB0byB0aGUgcGFyYW1ldGVyIGNvbnN0cnVjdG9yLgoKICAgIDpwYXJhbSBzaG93X2RlZmF1bHQ6IFNob3cgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgb3B0aW9uIGluIGl0cwogICAgICAgIGhlbHAgdGV4dC4gVmFsdWVzIGFyZSBub3Qgc2hvd24gYnkgZGVmYXVsdCwgdW5sZXNzCiAgICAgICAgOmF0dHI6YENvbnRleHQuc2hvd19kZWZhdWx0YCBpcyBgYFRydWVgYC4gSWYgdGhpcyB2YWx1ZSBpcyBhCiAgICAgICAgc3RyaW5nLCBpdCBzaG93cyB0aGF0IHN0cmluZyBpbiBwYXJlbnRoZXNlcyBpbnN0ZWFkIG9mIHRoZQogICAgICAgIGFjdHVhbCB2YWx1ZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBkeW5hbWljIG9wdGlvbnMuCiAgICAgICAgRm9yIHNpbmdsZSBvcHRpb24gYm9vbGVhbiBmbGFncywgdGhlIGRlZmF1bHQgcmVtYWlucyBoaWRkZW4gaWYKICAgICAgICBpdHMgdmFsdWUgaXMgYGBGYWxzZWBgLgogICAgOnBhcmFtIHNob3dfZW52dmFyOiBDb250cm9scyBpZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzaG91bGQgYmUKICAgICAgICBzaG93biBvbiB0aGUgaGVscCBwYWdlLiBOb3JtYWxseSwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3QKICAgICAgICBzaG93bi4KICAgIDpwYXJhbSBwcm9tcHQ6IElmIHNldCB0byBgYFRydWVgYCBvciBhIG5vbiBlbXB0eSBzdHJpbmcgdGhlbiB0aGUKICAgICAgICB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgZm9yIGlucHV0LiBJZiBzZXQgdG8gYGBUcnVlYGAgdGhlIHByb21wdAogICAgICAgIHdpbGwgYmUgdGhlIG9wdGlvbiBuYW1lIGNhcGl0YWxpemVkLgogICAgOnBhcmFtIGNvbmZpcm1hdGlvbl9wcm9tcHQ6IFByb21wdCBhIHNlY29uZCB0aW1lIHRvIGNvbmZpcm0gdGhlCiAgICAgICAgdmFsdWUgaWYgaXQgd2FzIHByb21wdGVkIGZvci4gQ2FuIGJlIHNldCB0byBhIHN0cmluZyBpbnN0ZWFkIG9mCiAgICAgICAgYGBUcnVlYGAgdG8gY3VzdG9taXplIHRoZSBtZXNzYWdlLgogICAgOnBhcmFtIHByb21wdF9yZXF1aXJlZDogSWYgc2V0IHRvIGBgRmFsc2VgYCwgdGhlIHVzZXIgd2lsbCBiZQogICAgICAgIHByb21wdGVkIGZvciBpbnB1dCBvbmx5IHdoZW4gdGhlIG9wdGlvbiB3YXMgc3BlY2lmaWVkIGFzIGEgZmxhZwogICAgICAgIHdpdGhvdXQgYSB2YWx1ZS4KICAgIDpwYXJhbSBoaWRlX2lucHV0OiBJZiB0aGlzIGlzIGBgVHJ1ZWBgIHRoZW4gdGhlIGlucHV0IG9uIHRoZSBwcm9tcHQKICAgICAgICB3aWxsIGJlIGhpZGRlbiBmcm9tIHRoZSB1c2VyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcGFzc3dvcmQgaW5wdXQuCiAgICA6cGFyYW0gaXNfZmxhZzogZm9yY2VzIHRoaXMgb3B0aW9uIHRvIGFjdCBhcyBhIGZsYWcuICBUaGUgZGVmYXVsdCBpcwogICAgICAgICAgICAgICAgICAgIGF1dG8gZGV0ZWN0aW9uLgogICAgOnBhcmFtIGZsYWdfdmFsdWU6IHdoaWNoIHZhbHVlIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIGZsYWcgaWYgaXQncwogICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQuICBUaGlzIGlzIHNldCB0byBhIGJvb2xlYW4gYXV0b21hdGljYWxseSBpZgogICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcHRpb24gc3RyaW5nIGNvbnRhaW5zIGEgc2xhc2ggdG8gbWFyayB0d28gb3B0aW9ucy4KICAgIDpwYXJhbSBtdWx0aXBsZTogaWYgdGhpcyBpcyBzZXQgdG8gYFRydWVgIHRoZW4gdGhlIGFyZ3VtZW50IGlzIGFjY2VwdGVkCiAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGFuZCByZWNvcmRlZC4gIFRoaXMgaXMgc2ltaWxhciB0byBgYG5hcmdzYGAKICAgICAgICAgICAgICAgICAgICAgaW4gaG93IGl0IHdvcmtzIGJ1dCBzdXBwb3J0cyBhcmJpdHJhcnkgbnVtYmVyIG9mCiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy4KICAgIDpwYXJhbSBjb3VudDogdGhpcyBmbGFnIG1ha2VzIGFuIG9wdGlvbiBpbmNyZW1lbnQgYW4gaW50ZWdlci4KICAgIDpwYXJhbSBhbGxvd19mcm9tX2F1dG9lbnY6IGlmIHRoaXMgaXMgZW5hYmxlZCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBwdWxsZWQgZnJvbSBhbiBlbnZpcm9ubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gY2FzZSBhIHByZWZpeCBpcyBkZWZpbmVkIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC4KICAgIDpwYXJhbSBoZWxwOiB0aGUgaGVscCBzdHJpbmcuCiAgICA6cGFyYW0g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