LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqCiAqCUNvcHlyaWdodCAxOTk1CU1hcnRpbiB2b24gTG9ld2lzCiAqLwoKI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8Y3R5cGUuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSAid2luZG93cy5oIgojaW5jbHVkZSAiaGVhcC5oIgojaW5jbHVkZSAib2xlLmgiCiNpbmNsdWRlICJvcHRpb25zLmgiCiNpbmNsdWRlICJ3aW5ubHMuaCIKI2luY2x1ZGUgInN0ZGRlYnVnLmgiCiNpbmNsdWRlICJkZWJ1Zy5oIgoKLyogTG9jYWxlIG5hbWUgdG8gaWQgbWFwLiB1c2VkIGJ5IEVudW1TeXN0ZW1Mb2NhbGVzLCBHZXRMb2NhbEluZm9BIAogKiBNVVNUIGNvbnRhaW4gYWxsICNkZWZpbmVzIGZyb20gd2lubmxzLmgKICogbGFzdCBlbnRyeSBoYXMgTlVMTCBuYW1lLCAwIGlkLgogKi8gCiNkZWZpbmUgTE9DQUxFX0VOVFJZKHgpCXsjeCxMT0NBTEVfIyN4fQpzdGF0aWMgc3RydWN0IHRhZ0xPQ0FMRV9OQU1FMklEIHsKCWNoYXIJKm5hbWU7CglEV09SRAlpZDsKfSBsb2NhbGVfbmFtZTJpZFtdPSB7CglMT0NBTEVfRU5UUlkoSUxBTkdVQUdFKSwKCUxPQ0FMRV9FTlRSWShTTEFOR1VBR0UpLAoJTE9DQUxFX0VOVFJZKFNFTkdMQU5HVUFHRSksCglMT0NBTEVfRU5UUlkoU0FCQlJFVkxBTkdOQU1FKSwKCUxPQ0FMRV9FTlRSWShTTkFUSVZFTEFOR05BTUUpLAoJTE9DQUxFX0VOVFJZKElDT1VOVFJZKSwKCUxPQ0FMRV9FTlRSWShTQ09VTlRSWSksCglMT0NBTEVfRU5UUlkoU0VOR0NPVU5UUlkpLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZDVFJZTkFNRSksCglMT0NBTEVfRU5UUlkoU05BVElWRUNUUllOQU1FKSwKCUxPQ0FMRV9FTlRSWShJREVGQVVMVExBTkdVQUdFKSwKCUxPQ0FMRV9FTlRSWShJREVGQVVMVENPVU5UUlkpLAoJTE9DQUxFX0VOVFJZKElERUZBVUxUQ09ERVBBR0UpLAoJTE9DQUxFX0VOVFJZKElERUZBVUxUQU5TSUNPREVQQUdFKSwKCUxPQ0FMRV9FTlRSWShTTElTVCksCglMT0NBTEVfRU5UUlkoSU1FQVNVUkUpLAoJTE9DQUxFX0VOVFJZKFNERUNJTUFMKSwKCUxPQ0FMRV9FTlRSWShTVEhPVVNBTkQpLAoJTE9DQUxFX0VOVFJZKFNHUk9VUElORyksCglMT0NBTEVfRU5UUlkoSURJR0lUUyksCglMT0NBTEVfRU5UUlkoSUxaRVJPKSwKCUxPQ0FMRV9FTlRSWShJTkVHTlVNQkVSKSwKCUxPQ0FMRV9FTlRSWShTTkFUSVZFRElHSVRTKSwKCUxPQ0FMRV9FTlRSWShTQ1VSUkVOQ1kpLAoJTE9DQUxFX0VOVFJZKFNJTlRMU1lNQk9MKSwKCUxPQ0FMRV9FTlRSWShTTU9OREVDSU1BTFNFUCksCglMT0NBTEVfRU5UUlkoU01PTlRIT1VTQU5EU0VQKSwKCUxPQ0FMRV9FTlRSWShTTU9OR1JPVVBJTkcpLAoJTE9DQUxFX0VOVFJZKElDVVJSRElHSVRTKSwKCUxPQ0FMRV9FTlRSWShJSU5UTENVUlJESUdJVFMpLAoJTE9DQUxFX0VOVFJZKElDVVJSRU5DWSksCglMT0NBTEVfRU5UUlkoSU5FR0NVUlIpLAoJTE9DQUxFX0VOVFJZKFNEQVRFKSwKCUxPQ0FMRV9FTlRSWShTVElNRSksCglMT0NBTEVfRU5UUlkoU1NIT1JUREFURSksCglMT0NBTEVfRU5UUlkoU0xPTkdEQVRFKSwKCUxPQ0FMRV9FTlRSWShTVElNRUZPUk1BVCksCglMT0NBTEVfRU5UUlkoSURBVEUpLAoJTE9DQUxFX0VOVFJZKElMREFURSksCglMT0NBTEVfRU5UUlkoSVRJTUUpLAoJTE9DQUxFX0VOVFJZKElUSU1FTUFSS1BPU04pLAoJTE9DQUxFX0VOVFJZKElDRU5UVVJZKSwKCUxPQ0FMRV9FTlRSWShJVExaRVJPKSwKCUxPQ0FMRV9FTlRSWShJREFZTFpFUk8pLAoJTE9DQUxFX0VOVFJZKElNT05MWkVSTyksCglMT0NBTEVfRU5UUlkoUzExNTkpLAoJTE9DQUxFX0VOVFJZKFMyMzU5KSwKCUxPQ0FMRV9FTlRSWShJQ0FMRU5EQVJUWVBFKSwKCUxPQ0FMRV9FTlRSWShJT1BUSU9OQUxDQUxFTkRBUiksCglMT0NBTEVfRU5UUlkoSUZJUlNUREFZT0ZXRUVLKSwKCUxPQ0FMRV9FTlRSWShJRklSU1RXRUVLT0ZZRUFSKSwKCUxPQ0FMRV9FTlRSWShTREFZTkFNRTEpLAoJTE9DQUxFX0VOVFJZKFNEQVlOQU1FMiksCglMT0NBTEVfRU5UUlkoU0RBWU5BTUUzKSwKCUxPQ0FMRV9FTlRSWShTREFZTkFNRTQpLAoJTE9DQUxFX0VOVFJZKFNEQVlOQU1FNSksCglMT0NBTEVfRU5UUlkoU0RBWU5BTUU2KSwKCUxPQ0FMRV9FTlRSWShTREFZTkFNRTcpLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZEQVlOQU1FMSksCglMT0NBTEVfRU5UUlkoU0FCQlJFVkRBWU5BTUUyKSwKCUxPQ0FMRV9FTlRSWShTQUJCUkVWREFZTkFNRTMpLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZEQVlOQU1FNCksCglMT0NBTEVfRU5UUlkoU0FCQlJFVkRBWU5BTUU1KSwKCUxPQ0FMRV9FTlRSWShTQUJCUkVWREFZTkFNRTYpLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZEQVlOQU1FNyksCglMT0NBTEVfRU5UUlkoU01PTlRITkFNRTEpLAoJTE9DQUxFX0VOVFJZKFNNT05USE5BTUUyKSwKCUxPQ0FMRV9FTlRSWShTTU9OVEhOQU1FMyksCglMT0NBTEVfRU5UUlkoU01PTlRITkFNRTQpLAoJTE9DQUxFX0VOVFJZKFNNT05USE5BTUU1KSwKCUxPQ0FMRV9FTlRSWShTTU9OVEhOQU1FNiksCglMT0NBTEVfRU5UUlkoU01PTlRITkFNRTcpLAoJTE9DQUxFX0VOVFJZKFNNT05USE5BTUU4KSwKCUxPQ0FMRV9FTlRSWShTTU9OVEhOQU1FOSksCglMT0NBTEVfRU5UUlkoU01PTlRITkFNRTEwKSwKCUxPQ0FMRV9FTlRSWShTTU9OVEhOQU1FMTEpLAoJTE9DQUxFX0VOVFJZKFNNT05USE5BTUUxMiksCglMT0NBTEVfRU5UUlkoU01PTlRITkFNRTEzKSwKCUxPQ0FMRV9FTlRSWShTQUJCUkVWTU9OVEhOQU1FMSksCglMT0NBTEVfRU5UUlkoU0FCQlJFVk1PTlRITkFNRTIpLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZNT05USE5BTUUzKSwKCUxPQ0FMRV9FTlRSWShTQUJCUkVWTU9OVEhOQU1FNCksCglMT0NBTEVfRU5UUlkoU0FCQlJFVk1PTlRITkFNRTUpLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZNT05USE5BTUU2KSwKCUxPQ0FMRV9FTlRSWShTQUJCUkVWTU9OVEhOQU1FNyksCglMT0NBTEVfRU5UUlkoU0FCQlJFVk1PTlRITkFNRTgpLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZNT05USE5BTUU5KSwKCUxPQ0FMRV9FTlRSWShTQUJCUkVWTU9OVEhOQU1FMTApLAoJTE9DQUxFX0VOVFJZKFNBQkJSRVZNT05USE5BTUUxMSksCglMT0NBTEVfRU5UUlkoU0FCQlJFVk1PTlRITkFNRTEyKSwKCUxPQ0FMRV9FTlRSWShTQUJCUkVWTU9OVEhOQU1FMTMpLAoJTE9DQUxFX0VOVFJZKFNQT1NJVElWRVNJR04pLAoJTE9DQUxFX0VOVFJZKFNORUdBVElWRVNJR04pLAoJTE9DQUxFX0VOVFJZKElQT1NTSUdOUE9TTiksCglMT0NBTEVfRU5UUlkoSU5FR1NJR05QT1NOKSwKCUxPQ0FMRV9FTlRSWShJUE9TU1lNUFJFQ0VERVMpLAoJTE9DQUxFX0VOVFJZKElQT1NTRVBCWVNQQUNFKSwKCUxPQ0FMRV9FTlRSWShJTkVHU1lNUFJFQ0VERVMpLAoJTE9DQUxFX0VOVFJZKElORUdTRVBCWVNQQUNFKSwKCXtOVUxMLDB9LAp9OwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICBHZXRVc2VyRGVmYXVsdExDSUQgICAgICAgKE9MRTJOTFMuMSkKICovCkRXT1JEIEdldFVzZXJEZWZhdWx0TENJRCgpCnsKLyogRGVmYXVsdCBzb3J0aW5nLCBuZXV0cmFsIHN1Ymxhbmd1YWdlICovCiAgICBzd2l0Y2goT3B0aW9ucy5sYW5ndWFnZSkKICAgIHsKIC8qIGNhc2UgTEFOR19CdTogcmV0dXJuIDB4MDI7ICovICAgICAgLyogQnVsZ2FyaWFuICovCiAvKiBjYXNlIExBTkdfQ2g6IHJldHVybiAweDA0OyAqLyAgICAgIC8qIENoaW5lc2UgKi8KICAgIGNhc2UgTEFOR19DejogcmV0dXJuIDB4MDU7ICAgICAgICAgLyogQ3plY2ggKi8KICAgIGNhc2UgTEFOR19EYTogcmV0dXJuIDB4MDY7ICAgICAgICAgLyogRGFuaXNoICovCiAgICBjYXNlIExBTkdfRGU6IHJldHVybiAweDA3OyAgICAgICAgIC8qIEdlcm1hbiAqLwogLyogY2FzZSBMQU5HX0dyOiByZXR1cm4gMHgwODsgKi8gICAgICAvKiBHcmVlayAqLwogICAgY2FzZSBMQU5HX0VuOiByZXR1cm4gMHgwOTsgICAgICAgICAvKiBFbmdsaXNoICovCiAgICBjYXNlIExBTkdfRXM6IHJldHVybiAweDBhOyAgICAgICAgIC8qIFNwYW5pc2ggKi8KICAgIGNhc2UgTEFOR19GaTogcmV0dXJuIDB4MGI7ICAgICAgICAgLyogRmlubmlzaCAqLwogICAgY2FzZSBMQU5HX0ZyOiByZXR1cm4gMHgwYzsgICAgICAgICAvKiBGcmVuY2ggKi8KICAgIGNhc2UgTEFOR19IdTogcmV0dXJuIDB4MGU7ICAgICAgICAgLyogSHVuZ2FyaWFuICovCiAvKiBjYXNlIExBTkdfSWM6IHJldHVybiAweDBmOyAqLyAgICAgIC8qIEljZWxhbmRpYyAqLwogICAgY2FzZSBMQU5HX0l0OiByZXR1cm4gMHgxMDsgICAgICAgICAvKiBJdGFsaWFuICovCiAvKiBjYXNlIExBTkdfSnA6IHJldHVybiAweDExOyAqLyAgICAgIC8qIEphcGFuZXNlICovCiAgICBjYXNlIExBTkdfS286IHJldHVybiAweDEyOyAgICAgICAgIC8qIEtvcmVhbiAqLwogLyogY2FzZSBMQU5HX0R1OiByZXR1cm4gMHgxMzsgKi8gICAgICAvKiBEdXRjaCAqLwogICAgY2FzZSBMQU5HX05vOiByZXR1cm4gMHgxNDsgICAgICAgICAvKiBOb3J3ZWdpYW4gKi8KICAgIGNhc2UgTEFOR19QbDogcmV0dXJuIDB4MTU7ICAgICAgICAgLyogUG9saXNoICovCiAgICBjYXNlIExBTkdfUG86IHJldHVybiAweDE2OyAgICAgICAgIC8qIFBvcnR1Z3Vlc2UgKi8KIC8qIGNhc2UgTEFOR19SbzogcmV0dXJuIDB4MTg7ICovICAgICAgLyogUm9tYW5pYW4gKi8KIC8qIGNhc2UgTEFOR19SdTogcmV0dXJuIDB4MTk7ICovICAgICAgLyogUnVzc2lhbiAqLwogLyogY2FzZSBMQU5HX0NyOiByZXR1cm4gMHgxYTsgKi8gICAgICAvKiBDcm9hdGlhbiAqLwogLyogY2FzZSBMQU5HX1NsOiByZXR1cm4gMHgxYjsgKi8gICAgICAvKiBTbG92YWsgKi8KIC8qIGNhc2UgTEFOR19TdzogcmV0dXJuIDB4MWQ7ICovICAgICAgLyogU3dlZGlzaCAqLwogLyogY2FzZSBMQU5HX1R1OiByZXR1cm4gMHgxZjsgKi8gICAgICAvKiBUdXJraXNoICovCiAvKiBjYXNlIExBTkdfU3Y6IHJldHVybiAweDI0OyAqLyAgICAgIC8qIFNsb3ZlbmlhbiAqLwogICAgY2FzZSBMQU5HX0VvOiByZXR1cm4gMHgyNTsgICAgICAgICAvKiBFc3BlcmFudG8gKG5vdCBvZmZpY2lhbCkgKi8KCiAgICBkZWZhdWx0OgoJcmV0dXJuIDB4MDA7ICAgICAgICAgICAgICAgICAgIC8qIE5ldXRyYWwgbGFuZ3VhZ2UgKi8KICAgIH0KfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgR2V0U3lzdGVtRGVmYXVsdExDSUQgICAgICAgKE9MRTJOTFMuMikKICovCkRXT1JEIEdldFN5c3RlbURlZmF1bHRMQ0lEKCkKewoJcmV0dXJuIEdldFVzZXJEZWZhdWx0TENJRCgpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICBHZXRVc2VyRGVmYXVsdExhbmdJRCAgICAgICAoT0xFMk5MUy4zKQogKi8KV09SRCBHZXRVc2VyRGVmYXVsdExhbmdJRCgpCnsKCXJldHVybiAoV09SRClHZXRVc2VyRGVmYXVsdExDSUQoKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgR2V0U3lzdGVtRGVmYXVsdExhbmdJRCAgICAgKE9MRTJOTFMuNCkKICovCldPUkQgR2V0U3lzdGVtRGVmYXVsdExhbmdJRCgpCnsKCXJldHVybiBHZXRVc2VyRGVmYXVsdExhbmdJRCgpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICBHZXRMb2NhbGVJbmZvQSAgICAgICAgICAgICAoT0xFMk5MUy41KQogKiBJcyB0aGUgbGFzdCBwYXJhbWV0ZXIgcmVhbGx5IFdPUkQgZm9yIFdpbjE2PwogKi8KaW50IEdldExvY2FsZUluZm9BKERXT1JEIGxjaWQsRFdPUkQgTENUeXBlLExQU1RSIGJ1ZixXT1JEIGxlbikKewoJY2hhcgkqcmV0U3RyaW5nOwoJaW50CWZvdW5kLGk7CgoJZHByaW50Zl9vbGUoc3RkZGViLCJHZXRMb2NhbGVJbmZvQSglOGxYLCU4bFgsJXAsJTRYKVxuIiwKCQkJbGNpZCxMQ1R5cGUsYnVmLGxlbik7CgkvKiBBcyBhbiBvcHRpb24sIHdlIGNvdWxkIG9idGFpbiB0aGUgdmFsdWUgZnJvbSB3aW4uaW5pLgoJICAgVGhpcyB3b3VsZCBub3QgbWF0Y2ggdGhlIFdpbmUgY29tcGlsZS10aW1lIG9wdGlvbi4KCSAgIEFsc28sIG5vdCBhbGwgaWRlbnRpZmllcnMgYXJlIGF2YWlsYWJsZSBmcm9tIHdpbi5pbmkgKi8KCXJldFN0cmluZz0wOwoJLyogSWYgd2UgYXJlIHRocm91Z2ggYWxsIG9mIHRoaXMsIHJldExlbiBzaG91bGQgbm90IGJlIHplcm8gYW55bW9yZS4KCSAgIElmIGl0IGlzLCB0aGUgdmFsdWUgaXMgbm90IHN1cHBvcnRlZCAqLwoJaT0wOwoJd2hpbGUgKGxvY2FsZV9uYW1lMmlkW2ldLm5hbWUhPU5VTEwpIHsKCQlpZiAoTENUeXBlID09IGxvY2FsZV9uYW1lMmlkW2ldLmlkKSB7CgkJCXJldFN0cmluZyA9IGxvY2FsZV9uYW1lMmlkW2ldLm5hbWU7CgkJCWJyZWFrOwoJCX0KCQlpKys7Cgl9CglpZiAoIXJldFN0cmluZykgewoJCWZwcmludGYoc3RkZXJyLCJVbmtvd24gTEMgdHlwZSAlbFhcbiIsTENUeXBlKTsKCQlyZXR1cm4gMDsKCX0KCiNkZWZpbmUgTE9DVkFMKHR5cGUsdmFsdWUpIGNhc2UgdHlwZTpyZXRTdHJpbmc9dmFsdWU7YnJlYWs7CgovKiBOb3csIHRoZSBsYW5ndWFnZSBzcGVjaWZpYyBkZWZpbml0aW9ucy4gVGhleSBkb24ndCBoYXZlIHRvIGJlCiAgIGNvbXBsZXRlICovCiAgICBmb3VuZD0xOwogICAgc3dpdGNoKE9wdGlvbnMubGFuZ3VhZ2UpCiAgICB7CiAgICBjYXNlIExBTkdfRGU6CiAgICAJc3dpdGNoIChMQ1R5cGUpIHsKLyogVGhpcyBkZWZpbml0aW9ucyBhcHBseSB0byBHZXJtYW55IG9ubHkuIFVzZXJzIGluIEF1c3RyaWEgCiAgIG9yIFN3aXR6ZXJsYW5kIG1pZ2h0IHdhbnQgdG8gbW9kaWZ5IHRoZW0gKi8KTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjkiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiRGV1dHNjaCIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJHZXJtYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiZGV1IikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIkRldXRzY2giKQpMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCI0OSIpCkxPQ1ZBTChMT0NBTEVfU0NPVU5UUlksIkRldXRzY2hsYW5kIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiRGV1dHNjaGxhbmQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiRGUiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwiRGV1dHNjaGxhbmQiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjkiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiNDkiKQovKiBEdW5ubwpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UpCiovCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiLCIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIuIikKLyoKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKQpJcyB0aGlzICIwMTIzNDU2Nzg5IiA/PwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMpCiovCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJETSIpCi8qCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVApCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMiIpCi8qCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsIjgiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCIuIikKTE9DVkFMKExPQ0FMRV9TVElNRSwiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwiZGQuTU0ueXl5eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJkZGQsIGQuIE1NTU0geXl5eSIpCi8qCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQpCiovCkxPQ1ZBTChMT0NBTEVfSURBVEUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lMREFURSkKKi8KTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSkKKi8KTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8pCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPKQpMT0NWQUwoTE9DQUxFX1MxMTU5KQpMT0NWQUwoTE9DQUxFX1MyMzU5KQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpCiovCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJNb250YWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwiRGllbnN0YWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywiTWl0dHdvY2giKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwiRG9ubmVyc3RhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJGcmVpdGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsIlNvbm5hYmVuZCIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJTb25udGFnIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsIk1vIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIkRpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIk1pIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIkRvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIkZyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIlNhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIlNvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiSmFudWFyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwiRmVicnVhciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsIk3kcnoiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCJBcHJpbCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIk1haSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsIkp1bmkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJKdWxpIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwiQXVndXN0IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwiU2VwdGVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIk9rdG9iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwiTm92ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwiRGV6ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwiSmFuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiRmViIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywiTeRyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwiQXByIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwiTWFpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwiSnVuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywiSnVsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiQXVnIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwiU2VwIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIk9rdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCJOb3YiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwiRGV6IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCi8qCkxPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOKQpMT0NWQUwoTE9DQUxFX0lQT1NTSUdOUE9TTikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04pCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTKQpMT0NWQUwoTE9DQUxFX0lQT1NTRVBCWVNQQUNFKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUykKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSkKKi8KCWRlZmF1bHQ6IGZvdW5kPTA7YnJlYWs7Cgl9CiAgICBicmVhazsgIC8qIExBTkcoRGUpICovCgogICAgY2FzZSBMQU5HX0RhOgogICAgCXN3aXRjaCAoTENUeXBlKSB7Ci8qIExPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCI5IikgKi8KTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIkRhbnNrIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIkRhbmlzaCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJkYW4iKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwiRGFuc2siKQpMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCI0NSIpCkxPQ1ZBTChMT0NBTEVfU0NPVU5UUlksIkRhbm1hcmsiKQpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCJEZW5tYXJrIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIkRhIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIkRhbm1hcmsiKQovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjkiKSAqLwpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiNDUiKQovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpICovCi8qIExPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UpICovCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiLCIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIuIikKLyogTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpICovCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMpICovCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJrciIpCi8qIExPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wpICovCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVAsIiwiKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCwiLiIpCi8qIExPQ1ZBTChMT0NBTEVfU01PTkdST1VQSU5HKSAqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRElHSVRTLCIyIikKLyogTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMpICovCkxPQ1ZBTChMT0NBTEVfSUNVUlJFTkNZLCIzIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwiOCIpCkxPQ1ZBTChMT0NBTEVfU0RBVEUsIi4iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCJkZC9NTS15eXl5IikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsImRkZCwgZC4gTU1NTSB5eXl5IikKLyogTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCkgKi8KTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSUxEQVRFKSAqLwpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lDRU5UVVJZKSAqLwpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8pICovCi8qIExPQ1ZBTChMT0NBTEVfUzExNTkpICovCi8qIExPQ1ZBTChMT0NBTEVfUzIzNTkpICovCi8qIExPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSkgKi8KLyogTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUikgKi8KLyogTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUspICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUikgKi8KTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsIk1hbmRhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJUaXJzZGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsIk9uc2RhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCJUb3JzZGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsIkZyZWRhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCJM+HJkYWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywiU/huZGFnIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsIk1hIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsIlRpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIk9uIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIlRvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsIkZyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIkz4IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIlP4IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiSmFudWFyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwiRmVicnVhciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsIk1hcnRzIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNCwiQXByaWwiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJNYWoiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJKdW5pIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywiSnVsaSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsIkF1Z3VzdCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksIlNlcHRlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCJPa3RvYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIk5vdmVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsIkRlY2VtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsIkphbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsIkZlYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIk1hciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsIkFwciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIk1haiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsIkp1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIkp1bCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIkF1ZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksIlNlcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJPa3QiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwiTm92IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsIkRlYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQovKiBMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04pICovCi8qIExPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04pICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUykgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSkgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UpICovCglkZWZhdWx0OiBmb3VuZD0wO2JyZWFrOwoJfQogICAgYnJlYWs7IC8qIExBTkcoRGEpICovCgogICAgY2FzZSBMQU5HX0VuOgogICAgCXN3aXRjaCAoTENUeXBlKSB7Ci8qIFRoaXMgZGVmaW5pdGlvbnMgYXBwbHkgdG8gR2VybWFueSBvbmx5LiBVc2VycyBpbiBBdXN0cmlhIAogICBvciBTd2l0emVybGFuZCBtaWdodCB3YW50IHRvIG1vZGlmeSB0aGVtICovCkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCI5IikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIkVuZ2xpc2giKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiRW5nbGlzaCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJlbnUiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwiRW5nbGlzaCIpCkxPQ1ZBTChMT0NBTEVfSUNPVU5UUlksIjExIikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiRGV1dHNjaGxhbmQiKQpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCJEZXV0c2NobGFuZCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJEZSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJEZXV0c2NobGFuZCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiOSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCI0OSIpCi8qIER1bm5vCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSkKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSkKKi8KTE9DVkFMKExPQ0FMRV9TTElTVCwiOyIpCkxPQ1ZBTChMT0NBTEVfSU1FQVNVUkUsIjAiKQpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCIsIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsIi4iKQovKgpMT0NWQUwoTE9DQUxFX1NHUk9VUElORykKKi8KTE9DVkFMKExPQ0FMRV9JRElHSVRTLCIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIpCklzIHRoaXMgIjAxMjM0NTY3ODkiID8/CkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUykKKi8KTE9DVkFMKExPQ0FMRV9TQ1VSUkVOQ1ksIkRNIikKLyoKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCkKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCkKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVApCkxPQ1ZBTChMT0NBTEVfU01PTkdST1VQSU5HKQoqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRElHSVRTLCIyIikKLyoKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMpCiovCkxPQ1ZBTChMT0NBTEVfSUNVUlJFTkNZLCIzIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwiOCIpCkxPQ1ZBTChMT0NBTEVfU0RBVEUsIi4iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCJkZC5NTS55eXl5IikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsImRkZCwgZC4gTU1NTSB5eXl5IikKLyoKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCkKKi8KTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSUxEQVRFKQoqLwpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOKQpMT0NWQUwoTE9DQUxFX0lDRU5UVVJZKQoqLwpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTykKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8pCkxPQ1ZBTChMT0NBTEVfUzExNTkpCkxPQ1ZBTChMT0NBTEVfUzIzNTkpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSkKTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUikKTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUspCkxPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUikKKi8KTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsIk1vbnRhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJEaWVuc3RhZyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCJNaXR0d29jaCIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCJEb25uZXJzdGFnIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsIkZyZWl0YWciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwiU29ubmFiZW5kIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsIlNvbm50YWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwiTW8iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwiRGkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywiTWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwiRG8iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwiRnIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwiU2EiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywiU28iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJKYW51YXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCJGZWJydWFyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywiTeRyeiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsIkFwcmlsIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNSwiTWFpIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwiSnVuaSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsIkp1bGkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCJBdWd1c3QiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCJTZXB0ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwiT2t0b2JlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCJOb3ZlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJEZXplbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCJKYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCJGZWIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJN5HIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCJBcHIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCJNYWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJKdW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3LCJKdWwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCJBdWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJTZXAiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwiT2t0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIk5vdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJEZXoiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywiIikKLyoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04pCkxPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOKQpMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMpCkxPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UpCkxPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFKQoqLwoJZGVmYXVsdDogZm91bmQ9MDticmVhazsKCX0KICAgIGJyZWFrOyAgLyogTEFORyhFbikgKi8KCiAgICBjYXNlIExBTkdfRW86CiAgICAJc3dpdGNoIChMQ1R5cGUpIHsKLyogTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjkiKSBJU08gbnVtZXJpY2FsIElEIGZvciBsYW5ndWFnZSBUT0RPICovCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCJFc3BlcmFudG8iKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiRXNwZXJhbnRvIikKLyogTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsImRldSIpICovCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCJFc3BlcmFudG8iKQovKiBMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCI0OSIpIG5vdCBvZmZpY2lhbCBpbiBhbnkgb25lIGNvdW50cnkgKi8KLyogTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiRGV1dHNjaGxhbmQiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCJHZXJtYW55IikgKi8KLyogTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIkRlIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIkRldXRzY2hsYW5kIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCI5IikgSVNPIElEIG9mIGxhbmcgVE9ETyAqLwovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiNDkiKSAqLwpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsIjMiKSAvKiBpcyB0aGlzIHJpZ2h0PyBUT0RPICovCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjMiKSAvKiBpcyB0aGlzIHJpZ2h0PyBUT0RPICovCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiLCIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIuIikKLyogTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpICovCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMpICovCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJOTEciKSAvKiBhY2NvdW50aW5nIGN1cnJlbmN5IG9mIFVFQSAqLwovKiBMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCkgKi8KLyogTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcpICovCi8qIExPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykgKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikKTE9DVkFMKExPQ0FMRV9TREFURSwiLiIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsInl5eXkubW0uZGQiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkLCBkLiBNTU1NIHl5eXkiKQovKiBMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFUKSAqLwpMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JTERBVEUpICovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pICovCi8qIExPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpICovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9TMTE1OSkgKi8KLyogTE9DVkFMKExPQ0FMRV9TMjM1OSkgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSykgKi8KLyogTE9DVkFMKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSKSAqLwpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwibHVuZG8iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwibWFyZG8iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywibWVya3JlZG8iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwivGH9ZG8iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwidmVuZHJlZG8iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwic2FiYXRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsImRpbWFu5m8iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwibHUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwibWEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywibWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwivGEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwidmUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwic2EiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywiZGkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJqYW51YXJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwiZmVicnVhcm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCJtYXJ0byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsImFwcmlsbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIm1ham8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJqdW5pbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsImp1bGlvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwiYf1ndXN0byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksInNlcHRlbWJybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCJva3RvYnJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIm5vdmVtYnJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsImRlY2VtYnJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsImphbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsImZlYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIm1hciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsImFwciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIm1haiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsImp1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsImp1bCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsImH9ZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksInNlcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJva3QiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwibm92IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsImRlYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQovKiBMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04pICovCi8qIExPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04pICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUykgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSkgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UpICovCglkZWZhdWx0OiBmb3VuZD0wO2JyZWFrOwoJfQogICAgYnJlYWs7ICAvKiBMQU5HKEVvKSAqLwoKICAgIGNhc2UgTEFOR19GaToKICAgIAlzd2l0Y2ggKExDVHlwZSkgewpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiMTEiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiU3VvbWkiKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwiRmlubmlzaCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJmaW4iKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwic3VvbWkiKQpMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCI0OSIpCkxPQ1ZBTChMT0NBTEVfU0NPVU5UUlksIlN1b21pIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiRmlubGFuZCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJGaW4iKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSwiU3VvbWkiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjExIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPVU5UUlksIjM1OCIpCi8qIApMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UpCiovCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiLCIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIuIikKLyoKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKQpJcyB0aGlzICIwMTIzNDU2Nzg5IiA/PwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMpCiovCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJtayIpCi8qCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVApCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMiIpCi8qCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsIjgiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCIuIikKTE9DVkFMKExPQ0FMRV9TVElNRSwiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwiZGQuTU0ueXl5eSIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJkZGQsIGQuIE1NTU0geXl5eSIpCi8qCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQpCiovCkxPQ1ZBTChMT0NBTEVfSURBVEUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lMREFURSkKKi8KTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSkKKi8KTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8pCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPKQpMT0NWQUwoTE9DQUxFX1MxMTU5KQpMT0NWQUwoTE9DQUxFX1MyMzU5KQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpCiovCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJtYWFuYW50YWkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwidGlpc3RhaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCJrZXNraXZpaWtrbyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCJ0b3JzdGFpIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsInBlcmphbnRhaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCJsYXVhbnRhaSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJzdW5udW50YWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwiTWEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwiVGkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywiS2UiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwiVG8iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwiUGUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwiTGEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywiU3UiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJ0YW1taWt1dSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsImhlbG1pa3V1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywibWFhbGlza3V1IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNCwiaHVodGlrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJ0b3Vrb2t1dSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsImtlc+RrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCJoZWlu5Gt1dSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsImVsb2t1dSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksInN5eXNrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwibG9rYWt1dSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCJtYXJyYXNrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwiam91bHVrdXUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwidGFtbWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCJoZWxtaSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIm1hYWxpcyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsImh1aHRpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwidG91a28iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJrZXPkIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywiaGVpbuQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCJlbG8iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJzeXlzIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsImxva2EiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwibWFycmFzIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsImpvdWx1IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCi8qCkxPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOKQpMT0NWQUwoTE9DQUxFX0lQT1NTSUdOUE9TTikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04pCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTKQpMT0NWQUwoTE9DQUxFX0lQT1NTRVBCWVNQQUNFKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUykKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSkKKi8KCWRlZmF1bHQ6IGZvdW5kPTA7YnJlYWs7Cgl9CiAgICBicmVhazsgIC8qIExBTkcoRmkpICovCgogICAgY2FzZSBMQU5HX0l0OgogICAgCXN3aXRjaCAoTENUeXBlKSB7CkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCI5IikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIkl0YWxpYW5vIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIkl0YWxpYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiaXRhIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIkl0YWxpYW5vIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiMzkiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJJdGFsaWEiKQpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCJJdGFseSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJJdCIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJJdGFsaWEiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjkiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiMzkiKQovKiBEdW5ubwpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UpCiovCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiLCIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIuIikKLyoKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKQpJcyB0aGlzICIwMTIzNDU2Nzg5IiA/PwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMpCiovCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJMaXQuIikKLyoKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCkKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCkKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVApCkxPQ1ZBTChMT0NBTEVfU01PTkdST1VQSU5HKQoqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRElHSVRTLCIyIikKLyoKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMpCiovCkxPQ1ZBTChMT0NBTEVfSUNVUlJFTkNZLCIzIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwiOCIpCkxPQ1ZBTChMT0NBTEVfU0RBVEUsIi4iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCJkZC5NTS55eXl5IikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsImRkZCwgZC4gTU1NTSB5eXl5IikKLyoKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCkKKi8KTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSUxEQVRFKQoqLwpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOKQpMT0NWQUwoTE9DQUxFX0lDRU5UVVJZKQoqLwpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lEQVlMWkVSTykKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8pCkxPQ1ZBTChMT0NBTEVfUzExNTkpCkxPQ1ZBTChMT0NBTEVfUzIzNTkpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSkKTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUikKTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUspCkxPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUikKKi8KTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsIkx1bmVkaSciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwiTWFydGVkaSciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywiTWVyY29sZWRpJyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCJHaW92ZWRpJyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJWZW5lcmRpJyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCJTYWJhdG8iKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywiRG9tZW5pY2EiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwiTHUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwiTWEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywiTWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwiR2kiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwiVmUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwiU2EiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywiRG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJHZW5uYWlvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMiwiRmViYnJhaW8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCJNYXJ6byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsIkFwcmlsZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIk1hZ2dpbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsIkdpdWdubyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsIkx1Z2xpbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsIkFnb3N0byIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksIlNldHRlbWJyZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEwLCJPdHRvYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsIk5vdmVtYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsIkRpY2VtYnJlIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsIkdlbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsIkZlYiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIk1hciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsIkFwciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIk1hZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsIkdpdSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIkx1ZyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIkFnbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksIlNldCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJPdHQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwiTm92IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsIkRpYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQovKgpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04pCkxPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04pCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOKQpMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUykKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSkKTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMpCkxPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UpCiovCglkZWZhdWx0OiBmb3VuZD0wO2JyZWFrOwoJfQogICAgYnJlYWs7ICAvKiBMQU5HKEl0KSAqLwoKICAgIGNhc2UgMHgwNDA5OgogICAgCXN3aXRjaCAoTENUeXBlKSB7CkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCAiMDQwOSIpCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCAiRW5nbGlzaCAoVW5pdGVkIFN0YXRlcykiKQpMT0NWQUwoTE9DQUxFX1NFTkdMQU5HVUFHRSwgIkVuZ2xpc2giKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwgIkVOVSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUxBTkdOQU1FLCAiRW5nbGlzaCIpCkxPQ1ZBTChMT0NBTEVfSUNPVU5UUlksICIxIikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwgIlVuaXRlZCBTdGF0ZXMiKQpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCAiVW5pdGVkIFN0YXRlcyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCAiVVNBIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsICJVbml0ZWQgU3RhdGVzIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCAiMDQwOSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwgIjQzNyIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsICIxMjUyIikKTE9DVkFMKExPQ0FMRV9TTElTVCwgIiwiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsICIuIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsICIsIikKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwgIiQiKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCAiVVNEIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwgIi4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCwgIiwiKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORywgIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwgIjAiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCAiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsICI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCAiTS9kL3l5IikKTE9DVkFMKExPQ0FMRV9TTE9OR0RBVEUsICJkZGRkLCBNTU1NIGRkLCB5eXl5IikKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCwgImg6bW06c3MgdHQiKQpMT0NWQUwoTE9DQUxFX0lEQVRFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUxEQVRFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSVRJTUUsICIwIikKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUNFTlRVUlksICIwIikKTE9DVkFMKExPQ0FMRV9JVExaRVJPLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPLCAiMCIpCkxPQ1ZBTChMT0NBTEVfUzExNTksICJBTSIpCkxPQ1ZBTChMT0NBTEVfUzIzNTksICJQTSIpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLLCAiNiIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiwgIjAiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwgIk1vbmRheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCAiVHVlc2RheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCAiV2VkbmVzZGF5IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsICJUaHVyc2RheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCAiRnJpZGF5IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsICJTYXR1cmRheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCAiU3VuZGF5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsICJNb24iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwgIlR1ZSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUzLCAiV2VkIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsICJUaHUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwgIkZyaSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2LCAiU2F0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsICJTdW4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCAiSmFudWFyeSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsICJGZWJydWFyeSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsICJNYXJjaCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsICJBcHJpbCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsICJNYXkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCAiSnVuZSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsICJKdWx5IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwgIkF1Z3VzdCIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksICJTZXB0ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwgIk9jdG9iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwgIk5vdmVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsICJEZWNlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCAiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwgIkphbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsICJGZWIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCAiTWFyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwgIkFwciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsICJNYXkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCAiSnVuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywgIkp1bCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsICJBdWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCAiU2VwIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsICJPY3QiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwgIk5vdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCAiRGVjIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsICIiKQpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04sICIiKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04sICItIikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sICIzIikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIwIikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMsICIxIikKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFLCAiMCIpCglkZWZhdWx0OiBmb3VuZD0wO2JyZWFrOwoJfQogICAgYnJlYWs7IC8qIExBTkcoMHgwNDA5KSAoVS5TLiBFbmdsaXNoKSAqLwoKICAgIGNhc2UgMHgwODA5OgogICAgCXN3aXRjaCAoTENUeXBlKSB7CkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCAiMDgwOSIpCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCAiRW5nbGlzaCAoVW5pdGVkIEtpbmdkb20pIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsICJFbmdsaXNoIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsICJFTkciKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwgIkVuZ2xpc2giKQpMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCAiNDQiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCAiVW5pdGVkIEtpbmdkb20iKQpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCAiVW5pdGVkIEtpbmdkb20iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwgIkdCUiIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCAiVW5pdGVkIEtpbmdkb20iKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsICIwODA5IikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVENPVU5UUlksICI0NCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwgIjg1MCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsICIxMjUyIikKTE9DVkFMKExPQ0FMRV9TTElTVCwgIiwiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsICIuIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsICIsIikKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwgIqMiKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCAiR0JQIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwgIi4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCwgIiwiKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORywgIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwgIjEiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCAiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsICI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCAiZGQvTU0veXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwgImRkIE1NTU0geXl5eSIpCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQsICJISDptbTpzcyIpCkxPQ1ZBTChMT0NBTEVfSURBVEUsICIxIikKTE9DVkFMKExPQ0FMRV9JTERBVEUsICIxIikKTE9DVkFMKExPQ0FMRV9JVElNRSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04sICIwIikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9TMTE1OSwgIiIpCkxPQ1ZBTChMT0NBTEVfUzIzNTksICIiKQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUsICIxIikKTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiwgIjAiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywgIjAiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIsICIwIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTEsICJNb25kYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwgIlR1ZXNkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywgIldlZG5lc2RheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCAiVGh1cnNkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwgIkZyaWRheSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCAiU2F0dXJkYXkiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywgIlN1bmRheSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCAiTW9uIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTIsICJUdWUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywgIldlZCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCAiVGh1IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTUsICJGcmkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwgIlNhdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCAiU3VuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwgIkphbnVhcnkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCAiRmVicnVhcnkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCAiTWFyY2giKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCAiQXByaWwiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCAiTWF5IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwgIkp1bmUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCAiSnVseSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsICJBdWd1c3QiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCAiU2VwdGVtYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsICJPY3RvYmVyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsICJOb3ZlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCAiRGVjZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywgIiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsICJKYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCAiRmViIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywgIk1hciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsICJBcHIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCAiTWF5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwgIkp1biIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsICJKdWwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCAiQXVnIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwgIlNlcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCAiT2N0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsICJOb3YiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwgIkRlYyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCAiIikKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiLSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOLCAiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOLCAiMyIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UsICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMsICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwgIjAiKQoJZGVmYXVsdDogZm91bmQ9MDticmVhazsKCX0KICAgIGJyZWFrOyAvKiBMQU5HKDB4MDgwOSkgKFUuSy4gRW5nbGlzaCkgKi8KCiAgICBjYXNlIExBTkdfS286IC8qIHN0cmluZyB1c2luZyBjb2RlcGFnZSA5NDkgKi8KICAgICAgICBzd2l0Y2ggKExDVHlwZSkgewpMT0NWQUwoTE9DQUxFX0lMQU5HVUFHRSwiMTgiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiXDMwN1wzMjFcMjYxXDI3MVwyNzZcMzU2IikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIktvcmVhbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJLT1IiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwiXDMwN1wzMjFcMjYxXDI3MVwyNzZcMzU2IikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiODIiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCJcMjY0XDM1M1wzMDdcMzIxXDI3MVwzMTZcMjYxXDI3MSIpCkxPQ1ZBTChMT0NBTEVfU0VOR0NPVU5UUlksIktvcmVhIChTb3V0aCkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiS09SIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIlwyNjRcMzUzXDMwN1wzMjFcMjcxXDMxNlwyNjFcMjcxIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCIxOCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCI4MiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwiOTQ5IikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSwiOTQ5IikKTE9DVkFMKExPQ0FMRV9TTElTVCwiLCIpCkxPQ1ZBTChMT0NBTEVfSU1FQVNVUkUsIjAiKQpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCIuIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsIiwiKQpMT0NWQUwoTE9DQUxFX1NHUk9VUElORywiMzswIikKTE9DVkFMKExPQ0FMRV9JRElHSVRTLCIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sIjAiKQpMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIsIjEiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMsIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwiXFwiKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCJXb24iKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQLCIuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAsIiwiKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORywiMzswIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTLCIyIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikKTE9DVkFMKExPQ0FMRV9TREFURSwiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsInl5eXkvTU0vZGQiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwieXl5eS9NTS9kZCIpCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQsImg6bW06c3MgdHQiKQpMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikKTE9DVkFMKExPQ0FMRV9JTERBVEUsIjEiKQpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOLCIwIikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSwiMCIpCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMCIpCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPLCIwIikKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8sIjAiKQpMT0NWQUwoTE9DQUxFX1MxMTU5LCJcMjc3XDMwMFwzMDBcMzc0IikKTE9DVkFMKExPQ0FMRV9TMjM1OSwiXDI3N1wzMDBcMzEwXDMwNCIpCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwiMSIpCi8qIEtvcmVhbiBUYW5ndW4gRXJhIGNhbGVuZGFyICovCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIsIjUiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywiNiIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJcMjc3XDM3MVwyNzdcMzQ0XDMwMFwzMTciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMiwiXDMxMFwyNTVcMjc3XDM0NFwzMDBcMzE3IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsIlwyNzRcMzY2XDI3N1wzNDRcMzAwXDMxNyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCJcMjcwXDM2MVwyNzdcMzQ0XDMwMFwzMTciKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwiXDI2MVwzMzVcMjc3XDM0NFwzMDBcMzE3IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsIlwzMDVcMzQ0XDI3N1wzNDRcMzAwXDMxNyIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU3LCJcMzAwXDMxN1wyNzdcMzQ0XDMwMFwzMTciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwiXDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwiXDMxMFwyNTUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywiXDI3NFwzNjYiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwiXDI3MFwzNjEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwiXDI2MVwzMzUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwiXDMwNVwzNDQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywiXDMwMFwzMTciKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCIxXDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCIyXDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCIzXDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCI0XDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCI1XDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCI2XDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCI3XDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU4LCI4XDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCI5XDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwiMTBcMjc3XDM3MSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCIxMVwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsIjEyXDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwiMVwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiMlwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywiM1wyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwiNFwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwiNVwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwiNlwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywiN1wyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiOFwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwiOVwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIjEwXDI3N1wzNzEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwiMTFcMjc3XDM3MSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCIxMlwyNzdcMzcxIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCkxPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTiwiIikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCItIikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTiwiMCIpCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTLCIzIikKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwiMCIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTLCIzIikKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwiMCIpCiAgICAgICAgZGVmYXVsdDogZm91bmQ9MDticmVhazsKICAgICAgICB9CiAgICBicmVhazsgIC8qIExBTkcoS28pICovCgogICAgY2FzZSBMQU5HX0h1OgogICAgCXN3aXRjaCAoTENUeXBlKSB7CkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCI5IikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIk1hZ3lhciIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJIdW5nYXJpYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiaHVuIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIk1hZ3lhciIpCkxPQ1ZBTChMT0NBTEVfSUNPVU5UUlksIjM2IikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiTWFneWFyb3JzeuFnIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiSHVuZ2FyeSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkNUUllOQU1FLCJIdSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJNYWd5YXJvcnN64WciKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjkiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiMzYiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsIjg1MiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjg1MiIpCkxPQ1ZBTChMT0NBTEVfU0xJU1QsIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCIwIikKTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiLiIpCkxPQ1ZBTChMT0NBTEVfU1RIT1VTQU5ELCIsIikKLyoKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSURJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUxaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSKQpJcyB0aGlzICIwMTIzNDU2Nzg5IiA/PwpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMpCiovCkxPQ1ZBTChMT0NBTEVfU0NVUlJFTkNZLCJGdCIpCi8qCkxPQ1ZBTChMT0NBTEVfU0lOVExTWU1CT0wpCkxPQ1ZBTChMT0NBTEVfU01PTkRFQ0lNQUxTRVApCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkRJR0lUUywiMCIpCi8qCkxPQ1ZBTChMT0NBTEVfSUlOVExDVVJSRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX0lDVVJSRU5DWSwiMyIpCkxPQ1ZBTChMT0NBTEVfSU5FR0NVUlIsIjgiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCIvIikKTE9DVkFMKExPQ0FMRV9TVElNRSwiOiIpCkxPQ1ZBTChMT0NBTEVfU1NIT1JUREFURSwieXl5eS5NTS5kZCIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJkZGQsIHl5eXkuIE1NTU0gZCIpCi8qCkxPQ1ZBTChMT0NBTEVfU1RJTUVGT1JNQVQpCiovCkxPQ1ZBTChMT0NBTEVfSURBVEUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lMREFURSkKKi8KTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSkKKi8KTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8pCkxPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPKQpMT0NWQUwoTE9DQUxFX1MxMTU5KQpMT0NWQUwoTE9DQUxFX1MyMzU5KQpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUREFZT0ZXRUVLKQpMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpCiovCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJI6XRm9SIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJLZWRkIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTMsIlN6ZXJkYSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCJDc/x09nJ09msiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNSwiUOludGVrIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTYsIlN6b21iYXQiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywiVmFz4XJuYXAiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwiSOkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwiS2UiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywiU2UiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwiQ3MiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwiUOkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwiU28iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywiVmEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJKYW514XIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCJGZWJydeFyIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywiTeFyY2l1cyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsIsFwcmlsaXMiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJN4Wp1cyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsIkr6bml1cyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsIkr6bGl1cyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsIkF1Z3VzenR1cyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksIlN6ZXB0ZW1iZXIiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwiT2t082JlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCJOb3ZlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEyLCJEZWNlbWJlciIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCJKYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCJGZWIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCJN4XIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0LCLBcHIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1LCJN4WoiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCJK+m4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3LCJK+mwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4LCJBdWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCJTemUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCwiT2t0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIk5vdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCJEZWMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywiIikKLyoKTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04pCkxPQ1ZBTChMT0NBTEVfSVBPU1NJR05QT1NOKQpMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMpCkxPQ1ZBTChMT0NBTEVfSVBPU1NFUEJZU1BBQ0UpCkxPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFKQoqLwoJZGVmYXVsdDogZm91bmQ9MDticmVhazsKCX0KICAgIGJyZWFrOyAgLyogTEFORyhFbikgKi8KCiAgICBjYXNlIExBTkdfUGw6CiAgICAJc3dpdGNoIChMQ1R5cGUpIHsKTE9DVkFMKExPQ0FMRV9JTEFOR1VBR0UsIjkiKQpMT0NWQUwoTE9DQUxFX1NMQU5HVUFHRSwiUG9sc2tpIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsIlBvbGlzaCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCAicG9sIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIlBvbHNraSIpCkxPQ1ZBTChMT0NBTEVfSUNPVU5UUlksIjQ5IikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiUG9sc2thIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiUG9sYW5kIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIlBsIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIlBvbHNrYSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiOSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCI0OSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwiMTI1MiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjEyNTIiKQpMT0NWQUwoTE9DQUxFX1NMSVNULCI7IikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIiwiKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiICIpCi8qCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HKQoqLwpMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKQpMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikKSXMgdGhpcyAiMDEyMzQ1Njc4OSIgPz8KTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTKQoqLwpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwielx4QjMiKQovKgpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MKQpMT0NWQUwoTE9DQUxFX1NNT05ERUNJTUFMU0VQKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCkKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcpCiovCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKQovKgpMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykKKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikKTE9DVkFMKExPQ0FMRV9TREFURSwiLiIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkLk1NLnl5eXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkLCBkLiBNTU1NIHl5eXkiKQovKgpMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFUKQoqLwpMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikKLyoKTE9DVkFMKExPQ0FMRV9JTERBVEUpCiovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKgpMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pCkxPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpCiovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKQpMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykKTE9DVkFMKExPQ0FMRV9TMTE1OSkKTE9DVkFMKExPQ0FMRV9TMjM1OSkKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFKQpMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSykKTE9DVkFMKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSKQoqLwpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwiUG9uaWVkemlhXDI2M2VrIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsIld0b3JlayIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCJTcm9kYSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCJDendhcnRlayIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJQaVx4Qjl0ZWsiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNiwiU29ib3RhIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsIk5pZWR6aWVsYSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCJQbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCJXdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUzLCJTciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCJDeiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCJQdCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2LCJTbyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCJOaSIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEsIlN0eWN6ZVx4RjEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCJMdXR5IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywiTWFyemVjIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNCwiS3dpZWNpZVx4RjEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJNYWoiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCJDemVyd2llYyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsIkxpcGllYyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsIlNpZXJwaWVceEYxIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwiV3J6ZXNpZVx4RjEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwiUGFcMjM3ZHppZXJuaWsiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwiTGlzdGFwYWQiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwiR3J1ZHppZVx4RjEiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwiU3R5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiwiTHV0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMywiTWFyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwiS3dpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSwiTWFqIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiwiQ3plIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywiTGlwIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCwiU2llIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSwiV3J6IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIlBhXHg5RiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCJMaXMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwiR3J1IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCi8qCkxPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTikKTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOKQpMT0NWQUwoTE9DQUxFX0lQT1NTSUdOUE9TTikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04pCkxPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTKQpMT0NWQUwoTE9DQUxFX0lQT1NTRVBCWVNQQUNFKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUykKTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSkKKi8KCWRlZmF1bHQ6IGZvdW5kPTA7YnJlYWs7Cgl9CiAgICBicmVhazsgIC8qIExBTkcoUGwpICovCgogICAgY2FzZSBMQU5HX1BvOgogICAgCXN3aXRjaCAoTENUeXBlKSB7CkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCAiMDQxNiIpCkxPQ1ZBTChMT0NBTEVfU0xBTkdVQUdFLCAiUG9ydHVndVwzNTJzIChCcmFzaWwpIikKTE9DVkFMKExPQ0FMRV9TRU5HTEFOR1VBR0UsICJQcm90dWd1ZXNlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTEFOR05BTUUsICJQT1IiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwgIlBvcnR1Z3VcMzUycyIpCkxPQ1ZBTChMT0NBTEVfSUNPVU5UUlksICIxIikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwgIkJyYXNpbCIpCkxPQ1ZBTChMT0NBTEVfU0VOR0NPVU5UUlksICJCcmF6aWwiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwgIkJSQSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCAiQnJhc2lsIikKTE9DVkFMKExPQ0FMRV9JREVGQVVMVExBTkdVQUdFLCAiMDQwOSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSwgIjQzNyIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsICIxMjUyIikKTE9DVkFMKExPQ0FMRV9TTElTVCwgIjsiKQpMT0NWQUwoTE9DQUxFX0lNRUFTVVJFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsICIsIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsICIuIikKTE9DVkFMKExPQ0FMRV9TR1JPVVBJTkcsICIzOzAiKQpMT0NWQUwoTE9DQUxFX0lESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHTlVNQkVSLCAiMSIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRURJR0lUUywgIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwgIiQiKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCAiVVNEIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwgIiwiKQpMT0NWQUwoTE9DQUxFX1NNT05USE9VU0FORFNFUCwgIi4iKQpMT0NWQUwoTE9DQUxFX1NNT05HUk9VUElORywgIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JSU5UTENVUlJESUdJVFMsICIyIikKTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksICIwIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwgIjAiKQpMT0NWQUwoTE9DQUxFX1NEQVRFLCAiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsICI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCAiZGQvTU0veXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwgImRkZGQsIE1NTU0gZGQsIHl5eXkiKQpMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFULCAiaDptbTpzcyB0dCIpCkxPQ1ZBTChMT0NBTEVfSURBVEUsICIwIikKTE9DVkFMKExPQ0FMRV9JTERBVEUsICIwIikKTE9DVkFMKExPQ0FMRV9JVElNRSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04sICIwIikKTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lUTFpFUk8sICIwIikKTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8sICIwIikKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8sICIwIikKTE9DVkFMKExPQ0FMRV9TMTE1OSwgIkFNIikKTE9DVkFMKExPQ0FMRV9TMjM1OSwgIlBNIikKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIsICIwIikKTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUssICI2IikKTE9DVkFMKExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSLCAiMCIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCAiU2VndW5kYSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCAiVGVyXDM0N2EiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywgIlF1YXJ0YSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCAiUXVpbnRhIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsICJTZXh0YSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCAiU1wzNDFiYWRvIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsICJEb21pbmdvIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsICJTZWciKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiwgIlRlciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUzLCAiUXVhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsICJRdWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSwgIlNleCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2LCAiU1wzNDFiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsICJEb20iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCAiSmFuZWlybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsICJGZXZlcmVpcm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCAiTWFyXDM0N28iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCAiQWJyaWwiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCAiTWFpbyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsICJKdW5obyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTcsICJKdWxobyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsICJBZ29zdG8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCAiU2V0ZW1icm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMCwgIk91dHVicm8iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwgIk5vdmVtYnJvIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsICJEZXplbWJybyIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEzLCAiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwgIkphbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsICJGZXYiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCAiTWFyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwgIkFiciIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsICJNYWkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCAiSnVuIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywgIkp1bCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsICJBZ28iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCAiU2V0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsICJPdXQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwgIk5vdiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyLCAiRGV6IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsICIiKQpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04sICIiKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04sICItIikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sICIzIikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIwIikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMsICIxIikKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwgIjAiKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFLCAiMCIpCglkZWZhdWx0OiBmb3VuZD0wO2JyZWFrOwoJfQogICAgYnJlYWs7IC8qIExBTkcoUG8pICovCgoKLypJbnNlcnQgb3RoZXIgbGFuZ3VhZ2VzIGhlcmUqLwoKICAgIGRlZmF1bHQ6CiAgICAJZm91bmQ9MDsKCWJyZWFrOwogICAgfSAgLyogc3dpdGNoICovCgoJaWYoIWZvdW5kKSB7CgkJZnByaW50ZihzdGRlcnIsIiclcycgbm90IHN1cHBvcnRlZCBmb3IgeW91ciBsYW5ndWFnZS5cbiIsCgkJCXJldFN0cmluZyk7CgkJcmV0dXJuIDA7Cgl9CglpZiAoYnVmKQoJCWxzdHJjcHluMzJBKGJ1ZixyZXRTdHJpbmcsbGVuKTsKCXJldHVybiBzdHJsZW4ocmV0U3RyaW5nKSsxOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICBHZXRMb2NhbGVJbmZvMzJXICAgICAgICAgICAgIChLRVJORUwzMi4yMzApCiAqIElzIHRoZSBsYXN0IHBhcmFtZXRlciByZWFsbHkgV09SRCBmb3IgV2luMTY/CiAqLwpJTlQzMiBHZXRMb2NhbGVJbmZvMzJXKExDSUQgbGNpZCxMQ1RZUEUgTENUeXBlLExQV1NUUiB3YnVmLElOVDMyIGxlbikKewoJaW50IGk7CglMUFNUUiBhYnVmID0gKExQU1RSKSB3YnVmOwoJSU5UMzIgbiA9IEdldExvY2FsZUluZm9BKGxjaWQsIExDVHlwZSwgYWJ1ZiwgbGVuKTsKCWlmICh3YnVmKQoJCWZvciAoaSA9IG47IGkgPiAwOyAtLWkpCgkJCXdidWZbaV0gPSBhYnVmW2ldOwoJcmV0dXJuIG47Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgQ29tcGFyZVN0cmluZzE2ICAgICAgIChPTEUyTkxTLjgpCiAqLwpVSU5UMTYgQ29tcGFyZVN0cmluZzE2KERXT1JEIGxjaWQsRFdPUkQgZmR3U3R5bGUsCglMUENTVFIgczEsRFdPUkQgbDEsTFBDU1RSIHMyLERXT1JEIGwyKQp7CglyZXR1cm4gKFVJTlQxNilDb21wYXJlU3RyaW5nMzJBKGxjaWQsZmR3U3R5bGUsczEsbDEsczIsbDIpOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgIENvbXBhcmVTdHJpbmczMkEgICAoS0VSTkVMMzIuMjkpCiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgbG9jYWxlCiAqIEZJWE1FCiAqLwpVSU5UMzIgQ29tcGFyZVN0cmluZzMyQShEV09SRCBsY2lkLCBEV09SRCBmZHdTdHlsZSwgCglMUENTVFIgczEsIERXT1JEIGwxLCBMUENTVFIgczIsRFdPUkQgbDIpCnsKCWludCBsZW4scmV0OwoJaWYoZmR3U3R5bGUgJiBOT1JNX0lHTk9SRU5PTlNQQUNFKQoJewoJCWZwcmludGYoc3RkbmltcCwgIkNvbXBhcmVTdHJpbmdBOiBJR05PUkVOT05TUEFDRSBub3Qgc3VwcHJ0ZWRcbiIpOwoJfQoJaWYoZmR3U3R5bGUgJiBOT1JNX0lHTk9SRVNZTUJPTFMpCgkJZnByaW50ZihzdGRuaW1wLCAiQ29tcGFyZVN0cmluZ0E6IElHTk9SRVNZTUJPTFMgbm90IHN1cHBvcnRlZFxuIik7CgkvKiBJcyBzdHJjbXAgZGVmYXVsdGluZyB0byBzdHJpbmcgc29ydCBvciB0byB3b3JkIHNvcnQ/PyAqLwoJLyogRklYTUU6IEhhbmRsZSBOT1JNX1NUUklOR1NPUlQgKi8KCWwxID0gKGwxPT0tMSk/c3RybGVuKHMxKTpsMTsKCWwyID0gKGwyPT0tMSk/c3RybGVuKHMyKTpsMjsKCWxlbiA9IGwxPGwyID8gbDE6bDI7CglyZXQgPSAoZmR3U3R5bGUgJiBOT1JNX0lHTk9SRUNBU0UpID8KCQlsc3RybmNtcGkzMkEoczEsczIsbGVuKQk6IGxzdHJuY21wMzJBKHMxLHMyLGxlbik7CgkvKiBub3QgZXF1YWwsIHJldHVybiAxIG9yIDMgKi8KCWlmKHJldCE9MClyZXR1cm4gcmV0KzI7CgkvKiBzYW1lIGxlbiwgcmV0dXJuIDIgKi8KCWlmKGwxPT1sMilyZXR1cm4gMjsKCS8qIHRoZSBsb25nZXIgb25lIGlzIGxleGljYWxseSBncmVhdGVyICovCglyZXR1cm4gKGwxPGwyKT8gMSA6IDM7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgQ29tcGFyZVN0cmluZzMyVyAgICAgICAoS0VSTkVMMzIuMzApCiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgbG9jYWxlCiAqIEZJWE1FCiAqLwpVSU5UMzIgQ29tcGFyZVN0cmluZzMyVyhEV09SRCBsY2lkLCBEV09SRCBmZHdTdHlsZSwgCglMUENXU1RSIHMxLCBEV09SRCBsMSwgTFBDV1NUUiBzMixEV09SRCBsMikKewoJaW50IGxlbixyZXQ7CglpZihmZHdTdHlsZSAmIE5PUk1fSUdOT1JFTk9OU1BBQ0UpCgkJZnByaW50ZihzdGRuaW1wLCJDb21wYXJlU3RyaW5nVzpJR05PUkVOT05TUEFDRSBub3Qgc3VwcHJ0ZWRcbiIpOwoJaWYoZmR3U3R5bGUgJiBOT1JNX0lHTk9SRVNZTUJPTFMpCgkJZnByaW50ZihzdGRuaW1wLCJDb21wYXJlU3RyaW5nVzpJR05PUkVTWU1CT0xTIG5vdCBzdXBwb3J0ZWRcbiIpOwoKCS8qIElzIHN0cmNtcCBkZWZhdWx0aW5nIHRvIHN0cmluZyBzb3J0IG9yIHRvIHdvcmQgc29ydD8/ICovCgkvKiBGSVhNRTogSGFuZGxlIE5PUk1fU1RSSU5HU09SVCAqLwoJbDEgPSAobDE9PS0xKT9sc3RybGVuMzJXKHMxKTpsMTsKCWwyID0gKGwyPT0tMSk/bHN0cmxlbjMyVyhzMik6bDI7CglsZW4gPSBsMTxsMiA/IGwxOmwyOwoJcmV0ID0gKGZkd1N0eWxlICYgTk9STV9JR05PUkVDQVNFKSA/CgkJbHN0cm5jbXBpMzJXKHMxLHMyLGxlbikJOiBsc3RybmNtcDMyVyhzMSxzMixsZW4pOwoJLyogbm90IGVxdWFsLCByZXR1cm4gMSBvciAzICovCglpZihyZXQhPTApIHJldHVybiByZXQrMjsKCS8qIHNhbWUgbGVuLCByZXR1cm4gMiAqLwoJaWYobDE9PWwyKSByZXR1cm4gMjsKCS8qIHRoZSBsb25nZXIgb25lIGlzIGxleGljYWxseSBncmVhdGVyICovCglyZXR1cm4gKGwxPGwyKT8gMSA6IDM7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgU2V0TG9jYWxJbmZvQSAgICAgICAoS0VSTkVMMzIuNDk5KQogKi8KQk9PTDE2IFNldExvY2FsZUluZm9BKERXT1JEIGxjaWQsIERXT1JEIGxjdHlwZSwgTFBDU1RSIGRhdGEpCnsKICAgIGZwcmludGYoc3RkbmltcCwiU2V0TG9jYWxlSW5mb0EoJWxkLCVsZCwlcylcbiIsbGNpZCxsY3R5cGUsZGF0YSk7CiAgICByZXR1cm4gVFJVRTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICBJc1ZhbGlkTG9jYWxlICAgICAgIChLRVJORUwzMi4zNjEpCiAqLwpCT09MMzIgSXNWYWxpZExvY2FsZShEV09SRCBsY2lkLERXT1JEIGZsYWdzKSB7CglpbnQJaTsKCglpPTA7Cgl3aGlsZSAobG9jYWxlX25hbWUyaWRbaV0ubmFtZSE9TlVMTCkKCQlpZiAobG9jYWxlX25hbWUyaWRbaV0uaWQgPT0gbGNpZCkKCQkJcmV0dXJuIFRSVUU7CglyZXR1cm4gRkFMU0U7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgRW51bVN5c3RlbUxvY2FsZXMzMlcgICAgICAgICAgICAgICAgKEtFUk5FTDMyLjkzKQogKi8KQk9PTDMyIEVudW1TeXN0ZW1Mb2NhbGVzMzJXKCBMT0NBTEVfRU5VTVBST0MzMlcgbHBmbkxvY2FsZUVudW0sIERXT1JEIGZsYWdzICkKewoJaW50CWk7CglCT09MMzIJcmV0OwoKCWRwcmludGZfd2luMzIoc3RkZGViLCJFbnVtU3lzdGVtTG9jYWxlczMyVyglcCwlMDhseClcbiIsCiAgICAgICAgICAgICAgICAgICAgICBscGZuTG9jYWxlRW51bSxmbGFncyApOwoJaT0wOwoJd2hpbGUgKGxvY2FsZV9uYW1lMmlkW2ldLm5hbWUhPU5VTEwpCiAgICAgICAgewogICAgICAgICAgICBMUFdTVFIgY3AgPSBIRUFQX3N0cmR1cEF0b1coIEdldFByb2Nlc3NIZWFwKCksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlX25hbWUyaWRbaV0ubmFtZSApOwogICAgICAgICAgICByZXQgPSBscGZuTG9jYWxlRW51bShjcCk7CiAgICAgICAgICAgIEhlYXBGcmVlKCBHZXRQcm9jZXNzSGVhcCgpLCAwLCBjcCApOwogICAgICAgICAgICBpZiAoIXJldCkgYnJlYWs7CiAgICAgICAgICAgIGkrKzsKCX0KCXJldHVybiBUUlVFOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgIEVudW1TeXN0ZW1Mb2NhbGVzMzJBICAgICAgICAgICAgICAgIChLRVJORUwzMi45MikKICovCkJPT0wzMgpFbnVtU3lzdGVtTG9jYWxlczMyQShMT0NBTEVfRU5VTVBST0MzMkEgbHBmbkxvY2FsZUVudW0sRFdPUkQgZmxhZ3MpIHsKCWludAlpOwoKCWRwcmludGZfd2luMzIoc3RkZGViLCJFbnVtU3lzdGVtTG9jYWxlczMyQSglcCwlMDhseClcbiIsCgkJbHBmbkxvY2FsZUVudW0sZmxhZ3MKCSk7CglpPTA7Cgl3aGlsZSAobG9jYWxlX25hbWUyaWRbaV0ubmFtZSE9TlVMTCkgewoJCWlmICghbHBmbkxvY2FsZUVudW0obG9jYWxlX25hbWUyaWRbaV0ubmFtZSkpCgkJCWJyZWFrOwoJCWkrKzsKCX0KCXJldHVybiBUUlVFOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgIEdldFN0cmluZ1R5cGVBICAgICAgICAgICAgICAgIChPTEUyTkxTLjcpCiAqLwpCT09MMTYKR2V0U3RyaW5nVHlwZTE2KExDSUQgbG9jYWxlLERXT1JEIGR3SW5mb1R5cGUsTFBDU1RSIHNyYyxJTlQxNiBjY2hTcmMsTFBXT1JEIGNoYXJ0eXBlKSB7CglyZXR1cm4gR2V0U3RyaW5nVHlwZUV4MzJBKGxvY2FsZSxkd0luZm9UeXBlLHNyYyxjY2hTcmMsY2hhcnR5cGUpOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgR2V0U3RyaW5nVHlwZUEgICAgICAgICAgICAgICAgKEtFUk5FTDMyLjI3NykKICovCkJPT0wzMgpHZXRTdHJpbmdUeXBlMzJBKExDSUQgbG9jYWxlLERXT1JEIGR3SW5mb1R5cGUsTFBDU1RSIHNyYyxJTlQzMiBjY2hTcmMsTFBXT1JEIGNoYXJ0eXBlKSB7CglyZXR1cm4gR2V0U3RyaW5nVHlwZUV4MzJBKGxvY2FsZSxkd0luZm9UeXBlLHNyYyxjY2hTcmMsY2hhcnR5cGUpOwp9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgR2V0U3RyaW5nVHlwZUV4QSAgICAgICAgICAgICAgICAoS0VSTkVMMzIuMjc2KQogKi8KQk9PTDMyCkdldFN0cmluZ1R5cGVFeDMyQShMQ0lEIGxvY2FsZSxEV09SRCBkd0luZm9UeXBlLExQQ1NUUiBzcmMsSU5UMzIgY2NoU3JjLExQV09SRCBjaGFydHlwZSkgewoJaW50CWk7CgoJc3dpdGNoIChkd0luZm9UeXBlKSB7CgljYXNlIENUX0NUWVBFMjoKCQlmcHJpbnRmKHN0ZGVyciwiR2V0U3RyaW5nVHlwZTMyQTpDVF9DVFlQRTIgbm90IHN1cHBvcnRlZC5cbiIpOwoJCXJldHVybiBGQUxTRTsKCWNhc2UgQ1RfQ1RZUEUzOgoJCWZwcmludGYoc3RkZXJyLCJHZXRTdHJpbmdUeXBlMzJBOkNUX0NUWVBFMyBub3Qgc3VwcG9ydGVkLlxuIik7CgkJcmV0dXJuIEZBTFNFOwoJZGVmYXVsdDpicmVhazsKCX0KCWlmIChjY2hTcmM9PS0xKQoJCWNjaFNyYz1sc3RybGVuMzJBKHNyYyk7Cglmb3IgKGk9MDtpPGNjaFNyYztpKyspIHsKCQljaGFydHlwZVtpXSA9IDA7CgkJaWYgKGlzZGlnaXQoc3JjW2ldKSkgY2hhcnR5cGVbaV18PUMxX0RJR0lUOwoJCWlmIChpc2FscGhhKHNyY1tpXSkpIGNoYXJ0eXBlW2ldfD1DMV9BTFBIQTsKCQlpZiAoaXNsb3dlcihzcmNbaV0pKSBjaGFydHlwZVtpXXw9QzFfTE9XRVI7CgkJaWYgKGlzdXBwZXIoc3JjW2ldKSkgY2hhcnR5cGVbaV18PUMxX1VQUEVSOwoJCWlmIChpc3NwYWNlKHNyY1tpXSkpIGNoYXJ0eXBlW2ldfD1DMV9TUEFDRTsKCQlpZiAoaXNwdW5jdChzcmNbaV0pKSBjaGFydHlwZVtpXXw9QzFfUFVOQ1Q7CgkJaWYgKGlzY250cmwoc3JjW2ldKSkgY2hhcnR5cGVbaV18PUMxX0NOVFJMOwoJCWlmIChpc2JsYW5rKHNyY1tpXSkpIGNoYXJ0eXBlW2ldfD1DMV9CTEFOSzsKCQkvKiBDMV9YRElHSVQgKi8KCX0KCXJldHVybiBUUlVFOwp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICAgIEdldFN0cmluZ1R5cGVXICAgICAgICAgICAgICAgIChLRVJORUwzMi4yNzkpCiAqIFllcywgdGhpcyBpcyBtaXNzaW5nIExDSUQgbG9jYWxlLiBNUyBmYXVsdC4KICovCkJPT0wzMgpHZXRTdHJpbmdUeXBlMzJXKERXT1JEIGR3SW5mb1R5cGUsTFBDV1NUUiBzcmMsSU5UMzIgY2NoU3JjLExQV09SRCBjaGFydHlwZSkgewoJcmV0dXJuIEdldFN0cmluZ1R5cGVFeDMyVygwLypkZWZhdWx0bG9jYWxlKi8sZHdJbmZvVHlwZSxzcmMsY2NoU3JjLGNoYXJ0eXBlKTsKfQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICAgICAgICBHZXRTdHJpbmdUeXBlVyAgICAgICAgICAgICAgICAoS0VSTkVMMzIuMjc4KQogKiBGSVhNRTogdW5pY29kZSBjaGFycyBhcmUgYXNzdW1lZCBjaGFycwogKi8KQk9PTDMyCkdldFN0cmluZ1R5cGVFeDMyVyhMQ0lEIGxvY2FsZSxEV09SRCBkd0luZm9UeXBlLExQQ1dTVFIgc3JjLElOVDMyIGNjaFNyYyxMUFdPUkQgY2hhcnR5cGUpIHsKCWludAlpOwoKCXN3aXRjaCAoZHdJbmZvVHlwZSkgewoJY2FzZSBDVF9DVFlQRTI6CgkJZnByaW50ZihzdGRlcnIsIkdldFN0cmluZ1R5cGUzMlc6Q1RfQ1RZUEUyIG5vdCBzdXBwb3J0ZWQuXG4iKTsKCQlyZXR1cm4gRkFMU0U7CgljYXNlIENUX0NUWVBFMzoKCQlmcHJpbnRmKHN0ZGVyciwiR2V0U3RyaW5nVHlwZTMyVzpDVF9DVFlQRTMgbm90IHN1cHBvcnRlZC5cbiIpOwoJCXJldHVybiBGQUxTRTsKCWRlZmF1bHQ6YnJlYWs7Cgl9CglpZiAoY2NoU3JjPT0tMSkKCQljY2hTcmM9bHN0cmxlbjMyVyhzcmMpOwoJZm9yIChpPTA7aTxjY2hTcmM7aSsrKSB7CgkJY2hhcnR5cGVbaV0gPSAwOwoJCWlmIChpc2RpZ2l0KHNyY1tpXSkpIGNoYXJ0eXBlW2ldfD1DMV9ESUdJVDsKCQlpZiAoaXNhbHBoYShzcmNbaV0pKSBjaGFydHlwZVtpXXw9QzFfQUxQSEE7CgkJaWYgKGlzbG93ZXIoc3JjW2ldKSkgY2hhcnR5cGVbaV18PUMxX0xPV0VSOwoJCWlmIChpc3VwcGVyKHNyY1tpXSkpIGNoYXJ0eXBlW2ldfD1DMV9VUFBFUjsKCQlpZiAoaXNzcGFjZShzcmNbaV0pKSBjaGFydHlwZVtpXXw9QzFfU1BBQ0U7CgkJaWYgKGlzcHVuY3Qoc3JjW2ldKSkgY2hhcnR5cGVbaV18PUMxX1BVTkNUOwoJCWlmIChpc2NudHJsKHNyY1tpXSkpIGNoYXJ0eXBlW2ldfD1DMV9DTlRSTDsKCQlpZiAoaXNibGFuayhzcmNbaV0pKSBjaGFydHlwZVtpXXw9QzFfQkxBTks7CgkJLyogQzFfWERJR0lUICovCgl9CglyZXR1cm4gVFJVRTsKfQo=