Mw0NCgdae2NEFgAA4wAAAAAAAAAAAAAAAAcAAABAAAAAczIBAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oEZAFkAmwFWgRkAWQDbAZtB1oHAQBkAWQEbAhtCVoJAQBkAWQFbAptC1oLbQxaDAEAZAFkAmwNWg5kAWQGbA9tEFoQAQBkAWQHbBFtEloSbRNaEwEAZAFkCGwUbRVaFQEAZAlkCmwWbRdaFwEAZAtkDGQNZA5kD2QQZBFnB1oYZQ5qGWoaWhpkAlobZBJaHGQTZwFaHUcAZBRkFYQAZBVlHoMDWh9HAGQWZBeEAGQXZR+DA1ogZR9qIVoiZBhkGYQAWiNkGmQLhABaJGUEaiVqJGoAZSRfAGUXaiZlBGolaieDAVooRwBkG2QOhABkDmUogwNaJ2QcZB2EAFopZQFqKmYBZB5kH4QBWitlF2osgwABAGQCUwApIHpARXh0ZW5zaW9ucyB0byB0aGUgJ2Rpc3R1dGlscycgZm9yIGxhcmdlIG9yIGNvbXBsZXggZGlzdHJpYnV0aW9uc+kAAAAATikB2gxjb252ZXJ0X3BhdGgpAdoLZm5tYXRjaGNhc2UpAtoGZmlsdGVy2gNtYXApAdoJRXh0ZW5zaW9uKQLaDERpc3RyaWJ1dGlvbtoHRmVhdHVyZSkB2gdSZXF1aXJl6QEAAAApAdoGbW9ua2V52gVzZXR1cHIHAAAAcggAAADaB0NvbW1hbmRyBgAAAHIJAAAA2g1maW5kX3BhY2thZ2VzVHoNbGliMnRvMy5maXhlc2MAAAAAAAAAAAAAAAAEAAAAQAAAAHNIAAAAZQBaAWQAWgJkAVoDZQRkAmYAZA1mA2QEZAWEAYMBWgVlBGQGZAeEAIMBWgZlB2QIZAmEAIMBWghlB2QKZAuEAIMBWglkDFMAKQ7aDVBhY2thZ2VGaW5kZXJ6SQogICAgR2VuZXJhdGUgYSBsaXN0IG9mIGFsbCBQeXRob24gcGFja2FnZXMgZm91bmQgd2l0aGluIGEgZGlyZWN0b3J5CiAgICDaAS7aASpjBAAAAAAAAAAEAAAABgAAAEMAAABzJgAAAHQAfABqAXQCfAGDAXwAagNkA3wCngKOAHwAagN8A44AgwODAVMAKQRhCQMAAFJldHVybiBhIGxpc3QgYWxsIFB5dGhvbiBwYWNrYWdlcyBmb3VuZCB3aXRoaW4gZGlyZWN0b3J5ICd3aGVyZScKCiAgICAgICAgJ3doZXJlJyBpcyB0aGUgcm9vdCBkaXJlY3Rvcnkgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBmb3IgcGFja2FnZXMuICBJdAogICAgICAgIHNob3VsZCBiZSBzdXBwbGllZCBhcyBhICJjcm9zcy1wbGF0Zm9ybSIgKGkuZS4gVVJMLXN0eWxlKSBwYXRoOyBpdCB3aWxsCiAgICAgICAgYmUgY29udmVydGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhbCBwYXRoIHN5bnRheC4KCiAgICAgICAgJ2V4Y2x1ZGUnIGlzIGEgc2VxdWVuY2Ugb2YgcGFja2FnZSBuYW1lcyB0byBleGNsdWRlOyAnKicgY2FuIGJlIHVzZWQKICAgICAgICBhcyBhIHdpbGRjYXJkIGluIHRoZSBuYW1lcywgc3VjaCB0aGF0ICdmb28uKicgd2lsbCBleGNsdWRlIGFsbAogICAgICAgIHN1YnBhY2thZ2VzIG9mICdmb28nIChidXQgbm90ICdmb28nIGl0c2VsZikuCgogICAgICAgICdpbmNsdWRlJyBpcyBhIHNlcXVlbmNlIG9mIHBhY2thZ2UgbmFtZXMgdG8gaW5jbHVkZS4gIElmIGl0J3MKICAgICAgICBzcGVjaWZpZWQsIG9ubHkgdGhlIG5hbWVkIHBhY2thZ2VzIHdpbGwgYmUgaW5jbHVkZWQuICBJZiBpdCdzIG5vdAogICAgICAgIHNwZWNpZmllZCwgYWxsIGZvdW5kIHBhY2thZ2VzIHdpbGwgYmUgaW5jbHVkZWQuICAnaW5jbHVkZScgY2FuIGNvbnRhaW4KICAgICAgICBzaGVsbCBzdHlsZSB3aWxkY2FyZCBwYXR0ZXJucyBqdXN0IGxpa2UgJ2V4Y2x1ZGUnLgogICAgICAgINoIZXpfc2V0dXD6DCpfX3B5Y2FjaGVfXykCchIAAAByEwAAACkE2gRsaXN02hNfZmluZF9wYWNrYWdlc19pdGVycgIAAADaDV9idWlsZF9maWx0ZXIpBNoDY2xz2gV3aGVyZdoHZXhjbHVkZdoHaW5jbHVkZakAchsAAAD6OS90bXAvcGlwLWJ1aWxkLXpobzE4MjhsL3NldHVwdG9vbHMv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