{"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+VG9wIDggVmlsbGFzIGluIFR1c2Nhbnk8L3RpdGxlPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Sb2JvdG86d2dodEAzMDA7NDAwOzUwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1TYXRvc2hpOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAvKiBCcmFuZCBDb2xvcnMgKi8KICAgICAgICAgICAgLS1wcmltYXJ5LXRlYWw6ICMwQkI1QTc7CiAgICAgICAgICAgIC0tcHJpbWFyeS1kYXJrLXRlYWw6ICMwODlCOEY7CiAgICAgICAgICAgIC0tc2Vjb25kYXJ5LWJsdWU6ICMyRTg2QUI7CiAgICAgICAgICAgIC0tYWNjZW50LW9yYW5nZTogI0YyOEUyQjsKICAgICAgICAgICAgLS1uZXV0cmFsLWdyYXktNTA6ICNGQUZBRkE7CiAgICAgICAgICAgIC0tbmV1dHJhbC1ncmF5LTEwMDogI0Y1RjVGNTsKICAgICAgICAgICAgLS1uZXV0cmFsLWdyYXktMjAwOiAjRUVFRUVFOwogICAgICAgICAgICAtLW5ldXRyYWwtZ3JheS0zMDA6ICNFMEUwRTA7CiAgICAgICAgICAgIC0tbmV1dHJhbC1ncmF5LTQwMDogI0JEQkRCRDsKICAgICAgICAgICAgLS1uZXV0cmFsLWdyYXktNTAwOiAjOUU5RTlFOwogICAgICAgICAgICAtLW5ldXRyYWwtZ3JheS02MDA6ICM3NTc1NzU7CiAgICAgICAgICAgIC0tbmV1dHJhbC1ncmF5LTcwMDogIzYxNjE2MTsKICAgICAgICAgICAgLS1uZXV0cmFsLWdyYXktODAwOiAjNDI0MjQyOwogICAgICAgICAgICAtLW5ldXRyYWwtZ3JheS05MDA6ICMyMTIxMjE7CiAgICAgICAgICAgIC0td2hpdGU6ICNGRkZGRkY7CiAgICAgICAgICAgIC0tYmxhY2s6ICMwMDAwMDA7CiAgICAgICAgICAgIC0tZ3JlZW4tc3VjY2VzczogIzRDQUY1MDsKICAgICAgICAgICAgLS1yZWQtZXJyb3I6ICNGNDQzMzY7CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBUeXBvZ3JhcGh5ICovCiAgICAgICAgICAgIC0tZm9udC1wcmltYXJ5OiAnSW50ZXInLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIC0tZm9udC1zZWNvbmRhcnk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICAgICAgICAtLWZvbnQtZGlzcGxheTogJ1NhdG9zaGknLCBzYW5zLXNlcmlmOwogICAgICAgICAgICAKICAgICAgICAgICAgLyogU3BhY2luZyAqLwogICAgICAgICAgICAtLXNwYWNpbmcteHM6IDRweDsKICAgICAgICAgICAgLS1zcGFjaW5nLXNtOiA4cHg7CiAgICAgICAgICAgIC0tc3BhY2luZy1tZDogMTZweDsKICAgICAgICAgICAgLS1zcGFjaW5nLWxnOiAyNHB4OwogICAgICAgICAgICAtLXNwYWNpbmcteGw6IDMycHg7CiAgICAgICAgICAgIC0tc3BhY2luZy0yeGw6IDQ4cHg7CiAgICAgICAgICAgIC0tc3BhY2luZy0zeGw6IDY0cHg7CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBCb3JkZXIgUmFkaXVzICovCiAgICAgICAgICAgIC0tYm9yZGVyLXJhZGl1cy1zbTogNHB4OwogICAgICAgICAgICAtLWJvcmRlci1yYWRpdXMtbWQ6IDhweDsKICAgICAgICAgICAgLS1ib3JkZXItcmFkaXVzLWxnOiAxMnB4OwogICAgICAgICAgICAtLWJvcmRlci1yYWRpdXMteGw6IDE2cHg7CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBTaGFkb3dzICovCiAgICAgICAgICAgIC0tc2hhZG93LXNtOiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgICAgICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICAgICAgLS1zaGFkb3ctbGc6IDAgMTBweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7CiAgICAgICAgfQoKICAgICAgICAqIHsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICB9CgogICAgICAgIC8qIEJhc2UgVHlwb2dyYXBoeSAqLwogICAgICAgIGJvZHkgewogICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1wcmltYXJ5KTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5ldXRyYWwtZ3JheS04MDApOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtZ3JheS01MCk7CiAgICAgICAgfQoKICAgICAgICAvKiBIZWFkZXIgJiBOYXZpZ2F0aW9uICovCiAgICAgICAgLmhlYWRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtZ3JheS0yMDApOwogICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLW1kKTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICBoZWlnaHQ6IDcycHg7CiAgICAgICAgfQoKICAgICAgICAubG9nbyB7CiAgICAgICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAubmF2LW1lbnUgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IHZhcigtLXNwYWNpbmctbGcpOwogICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQoKICAgICAgICAubmF2LWxpbmsgewogICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1wcmltYXJ5KTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC1ncmF5LTcwMCk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLm5hdi1saW5rOmhvdmVyIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXByaW1hcnktdGVhbCk7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtZ3JheS01MCk7CiAgICAgICAgfQoKICAgICAgICAvKiBIZXJvIFNlY3Rpb24gKi8KICAgICAgICAuaGVybyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChyZ2JhKDAsIDAsIDAsIDAuMyksIHJnYmEoMCwgMCwgMCwgMC4zKSksIHVybCgnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1MjM5MDY4MzQ2NTgtNmUyNGVmMjM4NmY5P2l4bGliPXJiLTQuMC4zJml4aWQ9TTN3eE1qQTNmREI4TUh4d2FHOTBieTF3WVdkbGZIeDhmR1Z1ZkRCOGZIeDhmQSUzRCUzRCZhdXRvPWZvcm1hdCZmaXQ9Y3JvcCZ3PTIwODMmcT04MCcpIGNlbnRlci9jb3ZlcjsKICAgICAgICAgICAgbWluLWhlaWdodDogNDAwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1jb250ZW50IHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTsKICAgICAgICB9CgogICAgICAgIC5oZXJvIGgxIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZGlzcGxheSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogNDhweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2luZy1tZCkgMDsKICAgICAgICB9CgogICAgICAgIC5oZXJvIHAgewogICAgICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXNwYWNpbmcteGwpIDA7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuOTsKICAgICAgICB9CgogICAgICAgIC8qIFNlYXJjaCBCYXIgKi8KICAgICAgICAuc2VhcmNoLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTUwcHg7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLW1kKTsKICAgICAgICB9CgogICAgICAgIC5zZWFyY2gtZm9ybSB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAxMDAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMteGwpOwogICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTsKICAgICAgICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTsKICAgICAgICB9CgogICAgICAgIC5zZWFyY2gtaW5wdXQgewogICAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXByaW1hcnkpOwogICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC1ncmF5LTgwMCk7CiAgICAgICAgfQoKICAgICAgICAuc2VhcmNoLWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uZXV0cmFsLWdyYXktNTAwKTsKICAgICAgICB9CgogICAgICAgIC5zZWFyY2gtZmlsdGVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTsKICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXByaW1hcnkpOwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uZXV0cmFsLWdyYXktNzAwKTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLWdyYXktMzAwKTsKICAgICAgICAgICAgbWluLXdpZHRoOiAxMjBweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLnNlYXJjaC1maWx0ZXI6bGFzdC1vZi10eXBlIHsKICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICAgIH0KCiAgICAgICAgLnNlYXJjaC1maWx0ZXI6aG92ZXIgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS10ZWFsKTsKICAgICAgICB9CgogICAgICAgIC8qIEJ1dHRvbnMgKi8KICAgICAgICAuYnRuIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtcHJpbWFyeSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCkgdmFyKC0tc3BhY2luZy1sZyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7CiAgICAgICAgfQoKICAgICAgICAuYnRuLXByaW1hcnkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LXRlYWwpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1wcmltYXJ5OmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeS1kYXJrLXRlYWwpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgfQoKICAgICAgICAuYnRuLWxhcmdlIHsKICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZykgdmFyKC0tc3BhY2luZy14bCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZyk7CiAgICAgICAgfQoKICAgICAgICAvKiBNYWluIENvbnRlbnQgKi8KICAgICAgICAubWFpbi1jb250ZW50IHsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTN4bCkgdmFyKC0tc3BhY2luZy1tZCk7CiAgICAgICAgfQoKICAgICAgICAucmVzdWx0cy1oZWFkZXIgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmcteGwpOwogICAgICAgIH0KCiAgICAgICAgLnJlc3VsdHMtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1kaXNwbGF5KTsKICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC1ncmF5LTgwMCk7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIC5maWx0ZXItYmFyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14bCk7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CgogICAgICAgIC5maWx0ZXItYnRuIHsKICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtZ3JheS0zMDApOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5maWx0ZXItYnRuOmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LXRlYWwpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS10ZWFsKTsKICAgICAgICB9CgogICAgICAgIC8qIFByb3BlcnR5IENhcmRzICovCiAgICAgICAgLnByb3BlcnR5LWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgzMjBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogdmFyKC0tc3BhY2luZy1sZyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctM3hsKTsKICAgICAgICB9CgogICAgICAgIC5wcm9wZXJ0eS1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td2hpdGUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICB9CgogICAgICAgIC5wcm9wZXJ0eS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpOwogICAgICAgIH0KCiAgICAgICAgLnByb3BlcnR5LWltYWdlIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMjQwcHg7CiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICAgIH0KCiAgICAgICAgLnByb3BlcnR5LWluZm8gewogICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTsKICAgICAgICB9CgogICAgICAgIC5wcm9wZXJ0eS10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXkpOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uZXV0cmFsLWdyYXktODAwKTsKICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2luZy1zbSkgMDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgICAgICB9CgogICAgICAgIC5wcm9wZXJ0eS1sb2NhdGlvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5ldXRyYWwtZ3JheS02MDApOwogICAgICAgICAgICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjaW5nLW1kKSAwOwogICAgICAgIH0KCiAgICAgICAgLnByb3BlcnR5LWZlYXR1cmVzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTsKICAgICAgICAgICAgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLW1kKSAwOwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uZXV0cmFsLWdyYXktNjAwKTsKICAgICAgICB9CgogICAgICAgIC5wcm9wZXJ0eS1wcmljZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWRpc3BsYXkpOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LXRlYWwpOwogICAgICAgICAgICBtYXJnaW46IHZhcigtLXNwYWNpbmctbWQpIDAgMCAwOwogICAgICAgIH0KCiAgICAgICAgLyogUmF0aW5nICovCiAgICAgICAgLnJhdGluZyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7CiAgICAgICAgICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy1zbSkgMDsKICAgICAgICB9CgogICAgICAgIC5yYXRpbmctc2NvcmUgewogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LXRlYWwpOwogICAgICAgIH0KCiAgICAgICAgLnJhdGluZy10ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC1ncmF5LTYwMCk7CiAgICAgICAgfQoKICAgICAgICAvKiBNYXAgU2VjdGlvbiAqLwogICAgICAgIC5tYXAtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy0zeGwpIDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZyk7CiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteGwpOwogICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpOwogICAgICAgIH0KCiAgICAgICAgLm1hcC1oZWFkZXIgewogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTsKICAgICAgICB9CgogICAgICAgIC5tYXAtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1kaXNwbGF5KTsKICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjaW5nLXNtKSAwOwogICAgICAgIH0KCiAgICAgICAgLm1hcC1jb250YWluZXIgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmV1dHJhbC1ncmF5LTEwMCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLW5ldXRyYWwtZ3JheS0zMDApOwogICAgICAgIH0KCiAgICAgICAgLm1hcC1wbGFjZWhvbGRlciB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uZXV0cmFsLWdyYXktNTAwKTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLyogSW5mbyBTZWN0aW9uICovCiAgICAgICAgLmluZm8tc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy0zeGwpIDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZyk7CiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteGwpOwogICAgICAgIH0KCiAgICAgICAgLmluZm8tdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1kaXNwbGF5KTsKICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjaW5nLWxnKSAwOwogICAgICAgIH0KCiAgICAgICAgLmluZm8tY29udGVudCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5ldXRyYWwtZ3JheS03MDApOwogICAgICAgIH0KCiAgICAgICAgLmluZm8tY29udGVudCBwIHsKICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2luZy1tZCkgMDsKICAgICAgICB9CgogICAgICAgIC8qIEZvb3RlciAqLwogICAgICAgIC5mb290ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uZXV0cmFsLWdyYXktOTAwKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zeGwpIDAgdmFyKC0tc3BhY2luZy1sZykgMDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0zeGwpOwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2luZy1tZCk7CiAgICAgICAgfQoKICAgICAgICAuZm9vdGVyLWNvbnRlbnQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXhsKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14bCk7CiAgICAgICAgfQoKICAgICAgICAuZm9vdGVyLXNlY3Rpb24gaDQgewogICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1kaXNwbGF5KTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2luZy1tZCkgMDsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItc2VjdGlvbiB1bCB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItc2VjdGlvbiB1bCBsaSB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctc20pOwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1zZWN0aW9uIHVsIGxpIGEgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC1ncmF5LTQwMCk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1zZWN0aW9uIHVsIGxpIGE6aG92ZXIgewogICAgICAgICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIE1lbnUgKi8KICAgICAgICAubW9iaWxlLW1lbnUtdG9nZ2xlIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB9CgogICAgICAgIC8qIFJlc3BvbnNpdmUgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgICAgLm5hdi1tZW51IHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5tb2JpbGUtbWVudS10b2dnbGUgewogICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvIGgxIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzJweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8gcCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zZWFyY2gtZm9ybSB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc2VhcmNoLWZpbHRlciB7CiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbmV1dHJhbC1ncmF5LTMwMCk7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICAgICAgbWluLXdpZHRoOiBhdXRvOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc2VhcmNoLWZpbHRlcjpsYXN0LWNoaWxkIHsKICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5wcm9wZXJ0eS1ncmlkIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnJlc3VsdHMtaGVhZGVyIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICAgICAgICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5yZXN1bHRzLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmZpbHRlci1iYXIgewogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5tYWluLWNvbnRlbnQgewogICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14bCkgdmFyKC0tc3BhY2luZy1tZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAzNzVweCkgewogICAgICAgICAgICAuaGVhZGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctc20pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1jb250ZW50IHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc2VhcmNoLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctc20pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAubWFpbi1jb250ZW50IHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpIHZhcigtLXNwYWNpbmctc20pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAucHJvcGVydHktZ3JpZCB7CiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICAgICAgICAgIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPCEtLSBIZWFkZXIgLS0+CiAgICA8aGVhZGVyIGNsYXNzPSJoZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1jb250YWluZXIiPgogICAgICAgICAgICA8YSBocmVmPSIuLyI+PGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLmhvbGlkdS5jb20vYXNzZXRzL2ltYWdlcy9ob2xpZHUtbG9nby5zdmciIGFsdD0iTG9nbyIgY2xhc3M9ImxvZ28iIHN0eWxlPSJoZWlnaHQ6MzJweCI+PC9hPgogICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJuYXYtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIGNsYXNzPSJuYXYtbGluayI+RGVzdGluYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIGNsYXNzPSJuYXYtbGluayI+VHlwZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgY2xhc3M9Im5hdi1saW5rIj5IZWxwPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIGNsYXNzPSJuYXYtbGluayI+U2lnbiBpbjwvYT48L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im1vYmlsZS1tZW51LXRvZ2dsZSI+4piwPC9idXR0b24+CiAgICAgICAgICAgIDwvbmF2PgogICAgICAgIDwvZGl2PgogICAgPC9oZWFkZXI+CgogICAgPCEtLSBIZXJvIFNlY3Rpb24gLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0iaGVybyI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1jb250ZW50Ij4KICAgICAgICAgICAgPGgxPlZpbGxhcyBpbiBUdXNjYW55PC9oMT4KICAgICAgICAgICAgPHA+RGlzY292ZXIgdGhlIHBlcmZlY3QgdmlsbGEgZm9yIHlvdXIgVHVzY2FuIGdldGF3YXk8L3A+CiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPCEtLSBTZWFyY2ggQmFyIC0tPgogICAgPGRpdiBjbGFzcz0ic2VhcmNoLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoLWZvcm0iPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9InNlYXJjaC1pbnB1dCIgcGxhY2Vob2xkZXI9IldoZXJlIGFyZSB5b3UgZ29pbmc/IiB2YWx1ZT0iVHVzY2FueSI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InNlYXJjaC1maWx0ZXIiPgogICAgICAgICAgICAgICAgR3Vlc3RzCiAgICAgICAgICAgICAgICA8c3Bhbj7wn5GlPC9zcGFuPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tbGFyZ2UiPlNlYXJjaDwvYT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gTWFpbiBDb250ZW50IC0tPgogICAgPG1haW4gY2xhc3M9Im1haW4tY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0icmVzdWx0cy1oZWFkZXIiPgogICAgICAgICAgICA8aDIgY2xhc3M9InJlc3VsdHMtdGl0bGUiPlRvcCA4IFZpbGxhcyBpbiBUdXNjYW55PC9oMj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBGaWx0ZXIgQmFyIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImZpbHRlci1iYXIiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIj5QcmljZTwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIj5CZWRzICYgQmF0aHM8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biI+QW1lbml0aWVzPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iPlByb3BlcnR5IFR5cGU8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biI+TW9yZSBmaWx0ZXJzPC9idXR0b24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gUHJvcGVydHkgR3JpZCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1ncmlkIj4KICAgICAgICAgICAgPCEtLSBMaXN0aW5nIDEgLS0+CiAgICAgICAgICAgIDxhIGhyZWY9Ii4vbGlzdGluZy5odG1sP2lkPTAiIGNsYXNzPSJwcm9wZXJ0eS1jYXJkIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTYwMDU4NTE1NDM0MC1iZTYxNjFhNTZhMGM/aXhsaWI9cmItNC4wLjMmYXV0bz1mb3JtYXQmZml0PWNyb3Amdz04MDAmcT04MCIgYWx0PSJDYXNhIFNjYWdsaWVyaSBJc29sYSBkJ0VsYmEiIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1pbmZvIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InByb3BlcnR5LXRpdGxlIj5DYXNhIFNjYWdsaWVyaSBJc29sYSBkJ0VsYmE8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcm9wZXJ0eS1sb2NhdGlvbiI+RWxiYSBJc2xhbmQsIFR1c2Nhbnk8L3A+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj40IGJlZHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjIgYmF0aHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNlYSB2aWV3PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyYXRpbmctc2NvcmUiPjQuODwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy10ZXh0Ij5FeGNlbGxlbnQgKDEyNyByZXZpZXdzKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHJvcGVydHktcHJpY2UiPuKCrDE4MCAvIG5pZ2h0PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgIDwhLS0gTGlzdGluZyAyIC0tPgogICAgICAgICAgICA8YSBocmVmPSIuL2xpc3RpbmcuaHRtbD9pZD0xIiBjbGFzcz0icHJvcGVydHktY2FyZCI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1MDE1OTQ5MDczNTItMDRjZGEzOGViYzI5P2l4bGliPXJiLTQuMC4zJmF1dG89Zm9ybWF0JmZpdD1jcm9wJnc9ODAwJnE9ODAiIGFsdD0iQXBhcnRtZW50IEhhdXMgQWRsZXIiIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1pbmZvIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InByb3BlcnR5LXRpdGxlIj5BcGFydG1lbnQgIkhhdXMgQWRsZXIiIHdpdGggTW91bnRhaW4gVmlldywgV2ktRmksIEdhcmRlbiBhbmQgQmFsY29ueTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LWxvY2F0aW9uIj5Nb3VudGFpbiBSZWdpb24sIFR1c2Nhbnk8L3A+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yIGJlZHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjEgYmF0aDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TW91bnRhaW4gdmlldzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF0aW5nLXNjb3JlIj40LjY8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyYXRpbmctdGV4dCI+VmVyeSBnb29kICg4OSByZXZpZXdzKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHJvcGVydHktcHJpY2UiPuKCrDk1IC8gbmlnaHQ8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgPCEtLSBMaXN0aW5nIDMgLS0+CiAgICAgICAgICAgIDxhIGhyZWY9Ii4vbGlzdGluZy5odG1sP2lkPTIiIGNsYXNzPSJwcm9wZXJ0eS1jYXJkIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTYwMDU2Njc1MjM1NS0zNTc5MmJlZGNmZWE/aXhsaWI9cmItNC4wLjMmYXV0bz1mb3JtYXQmZml0PWNyb3Amdz04MDAmcT04MCIgYWx0PSJWZXJuYWxob2YgQXB0IFBhbm9yYW1hIiBjbGFzcz0icHJvcGVydHktaW1hZ2UiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+QXBhcnRtZW50ICdWZXJuYWxob2YgQXB0IFBhbm9yYW1hJyB3aXRoIE1vdW50YWluIFZpZXcsIFNoYXJlZCBUZXJyYWNlIGFuZCBXaS1GaTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LWxvY2F0aW9uIj5WYWwgZCdPcmNpYSwgVHVzY2FueTwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjMgYmVkczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MiBiYXRoczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UGFub3JhbWljIHZpZXc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy1zY29yZSI+NC43PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF0aW5nLXRleHQiPkV4Y2VsbGVudCAoMTU2IHJldmlld3MpPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+4oKsMTI1IC8gbmlnaHQ8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgPCEtLSBMaXN0aW5nIDQgLS0+CiAgICAgICAgICAgIDxhIGhyZWY9Ii4vbGlzdGluZy5odG1sP2lkPTMiIGNsYXNzPSJwcm9wZXJ0eS1jYXJkIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTYwMDYwNzY4NzY0NC1jNzE3MWI0MjQ5OGI/aXhsaWI9cmItNC4wLjMmYXV0bz1mb3JtYXQmZml0PWNyb3Amdz04MDAmcT04MCIgYWx0PSJNb2Rlcm4gQXBhcnRtZW50IEdlbm5ha2VyIiBjbGFzcz0icHJvcGVydHktaW1hZ2UiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+TW9kZXJuIEFwYXJ0bWVudCAiR2VubmFrZXIiIE9uIExha2VzaWRlIHdpdGggVGVycmFjZSBhbmQgVmlldzwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LWxvY2F0aW9uIj5MYWtlIFRyYXNpbWVubywgVHVzY2FueTwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjIgYmVkczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MSBiYXRoPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5MYWtlIHZpZXc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy1zY29yZSI+NC45PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF0aW5nLXRleHQiPk91dHN0YW5kaW5nICgyMDMgcmV2aWV3cyk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LXByaWNlIj7igqwxNDUgLyBuaWdodDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2E+CgogICAgICAgICAgICA8IS0tIExpc3RpbmcgNSAtLT4KICAgICAgICAgICAgPGEgaHJlZj0iLi9saXN0aW5nLmh0bWw/aWQ9NCIgY2xhc3M9InByb3BlcnR5LWNhcmQiPgogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNjAwNjA3Njg3OTM5LWNlOGE2YzI1MTE4Yz9peGxpYj1yYi00LjAuMyZhdXRvPWZvcm1hdCZmaXQ9Y3JvcCZ3PTgwMCZxPTgwIiBhbHQ9IlJlc2lkZW5jZSBMYWhuaG9mIiBjbGFzcz0icHJvcGVydHktaW1hZ2UiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+UmVzaWRlbmNlIExhaG5ob2YsIExhY2VzPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHJvcGVydHktbG9jYXRpb24iPkxhY2VzLCBUdXNjYW55PC9wPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+NCBiZWRzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4zIGJhdGhzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5HYXJkZW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy1zY29yZSI+NC41PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF0aW5nLXRleHQiPlZlcnkgZ29vZCAoNzQgcmV2aWV3cyk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LXByaWNlIj7igqwyMjAgLyBuaWdodDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2E+CgogICAgICAgICAgICA8IS0tIExpc3RpbmcgNiAtLT4KICAgICAgICAgICAgPGEgaHJlZj0iLi9saXN0aW5nLmh0bWw/aWQ9NSIgY2xhc3M9InByb3BlcnR5LWNhcmQiPgogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNjAwNTY2NzUyMjc0LTk1MzZlY2M1MmJhNj9peGxpYj1yYi00LjAuMyZhdXRvPWZvcm1hdCZmaXQ9Y3JvcCZ3PTgwMCZxPTgwIiBhbHQ9IlN0dW5uaW5nIENhcG8gRmFsY29uZSIgY2xhc3M9InByb3BlcnR5LWltYWdlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LWluZm8iPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHJvcGVydHktdGl0bGUiPlN0dW5uaW5nIENhcG8gRmFsY29uZSBDaGFybWluZyBBcGFydG1lbnRzIG5tMTM1OTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LWxvY2F0aW9uIj5DYXBvIEZhbGNvbmUsIFR1c2Nhbnk8L3A+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4zIGJlZHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjIgYmF0aHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNlYSB2aWV3PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyYXRpbmctc2NvcmUiPjQuODwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy10ZXh0Ij5FeGNlbGxlbnQgKDE0MiByZXZpZXdzKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHJvcGVydHktcHJpY2UiPuKCrDE5NSAvIG5pZ2h0PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgIDwhLS0gTGlzdGluZyA3IC0tPgogICAgICAgICAgICA8YSBocmVmPSIuL2xpc3RpbmcuaHRtbD9pZD02IiBjbGFzcz0icHJvcGVydHktY2FyZCI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE2MDA2MDc2ODc5MjAtNGUyYTA5Y2YxNTlkP2l4bGliPXJiLTQuMC4zJmF1dG89Zm9ybWF0JmZpdD1jcm9wJnc9ODAwJnE9ODAiIGFsdD0iU2VlYnJ1bm4gS3VwcGVsd2llc2VyIEFsbSIgY2xhc3M9InByb3BlcnR5LWltYWdlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LWluZm8iPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHJvcGVydHktdGl0bGUiPkFwYXJ0bWVudCAnU2VlYnJ1bm4gLSBLdXBwZWx3aWVzZXIgQWxtJyB3aXRoIE1vdW50YWluIFZpZXcsIFByaXZhdGUgVGVycmFjZSBhbmQgV2ktRmk8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcm9wZXJ0eS1sb2NhdGlvbiI+QWxwaW5lIFJlZ2lvbiwgVHVzY2FueTwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjIgYmVkczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MSBiYXRoPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Qcml2YXRlIHRlcnJhY2U8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy1zY29yZSI+NC43PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF0aW5nLXRleHQiPkV4Y2VsbGVudCAoOTggcmV2aWV3cyk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LXByaWNlIj7igqwxMTAgLyBuaWdodDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2E+CgogICAgICAgICAgICA8IS0tIExpc3RpbmcgOCAtLT4KICAgICAgICAgICAgPGEgaHJlZj0iLi9saXN0aW5nLmh0bWw/aWQ9NyIgY2xhc3M9InByb3BlcnR5LWNhcmQiPgogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaW1hZ2VzLnVuc3BsYXNoLmNvbS9waG90by0xNjAwNjA3Njg4OTY5LWE1YmZjZDY0NjE1ND9peGxpYj1yYi00LjAuMyZhdXRvPWZvcm1hdCZmaXQ9Y3JvcCZ3PTgwMCZxPTgwIiBhbHQ9Iktvcm5rYW1tZXIgTG9kZ2UiIGNsYXNzPSJwcm9wZXJ0eS1pbWFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1pbmZvIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InByb3BlcnR5LXRpdGxlIj5DaGFybWluZyBBcGFydG1lbnQgS29ybmthbW1lciBMb2RnZSB3aXRoIE1vdW50YWluIFZpZXcsIFdpLUZpICYgR2FyZGVuOyBQYXJraW5nIEF2YWlsYWJsZTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LWxvY2F0aW9uIj5SdXJhbCBUdXNjYW55PC9wPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MyBiZWRzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4yIGJhdGhzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5HYXJkZW4gJiBQYXJraW5nPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyYXRpbmctc2NvcmUiPjQuNjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy10ZXh0Ij5WZXJ5IGdvb2QgKDExMiByZXZpZXdzKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHJvcGVydHktcHJpY2UiPuKCrDEzNSAvIG5pZ2h0PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgIDwhLS0gTGlzdGluZyA5IC0tPgogICAgICAgICAgICA8YSBocmVmPSIuL2xpc3RpbmcuaHRtbD9pZD04IiBjbGFzcz0icHJvcGVydHktY2FyZCI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE2MDA1NjY3NTMwODYtMDBmMThmYjZiM2VhP2l4bGliPXJiLTQuMC4zJmF1dG89Zm9ybWF0JmZpdD1jcm9wJnc9ODAwJnE9ODAiIGFsdD0iVmlsbGEgQmVsbGF2aXN0YSIgY2xhc3M9InByb3BlcnR5LWltYWdlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb3BlcnR5LWluZm8iPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHJvcGVydHktdGl0bGUiPlZpbGxhIEJlbGxhdmlzdGEgd2l0aCBJbmZpbml0eSBQb29sPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHJvcGVydHktbG9jYXRpb24iPkNoaWFudGksIFR1c2Nhbnk8L3A+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj41IGJlZHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjQgYmF0aHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkluZmluaXR5IHBvb2w8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy1zY29yZSI+NC45PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF0aW5nLXRleHQiPk91dHN0YW5kaW5nICgyMzQgcmV2aWV3cyk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb3BlcnR5LXByaWNlIj7igqwzNTAgLyBuaWdodDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2E+CgogICAgICAgICAgICA8IS0tIExpc3RpbmcgMTAgLS0+CiAgICAgICAgICAgIDxhIGhyZWY9Ii4vbGlzdGluZy5odG1sP2lkPTkiIGNsYXNzPSJwcm9wZXJ0eS1jYXJkIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTYwMDU5NjU0MjgxNS1mZmFkNGMxNTM5YTk/aXhsaWI9cmItNC4wLjMmYXV0bz1mb3JtYXQmZml0PWNyb3Amdz04MDAmcT04MCIgYWx0PSJSdXN0aWMgRmFybWhvdXNlIiBjbGFzcz0icHJvcGVydHktaW1hZ2UiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvcGVydHktaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwcm9wZXJ0eS10aXRsZSI+QXV0aGVudGljIFR1c2NhbiBGYXJtaG91c2U8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcm9wZXJ0eS1sb2NhdGlvbiI+TW9udGFsY2lubywgVHVzY2FueTwvcD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9wZXJ0eS1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjYgYmVkczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MyBiYXRoczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+V2luZSBjZWxsYXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJhdGluZy1zY29yZSI+NC43PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF0aW5nLXRleHQiPkV4Y2VsbGVudCAoMTg5IHJldmlld3MpPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcm9wZXJ0eS1wcmljZSI+4oKsMjc1IC8gbmlnaHQ8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIE1hcCBTZWN0aW9uIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJtYXAtc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcC1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJtYXAtdGl0bGUiPkV4cGxvcmUgdmlsbGFzIG9uIG1hcDwvaDM+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXAtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcC1wbGFjZWhvbGRlciI+CiAgICAgICAgICAgICAgICAgICAgPHA+SW50ZXJhY3RpdmUgbWFwIGludGVncmF0aW9uIHdvdWxkIGFwcGVhciBoZXJlPC9wPgogICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogdmFyKC0tbmV1dHJhbC1ncmF5LTQwMCk7IGZvbnQtc2l6ZTogMTRweDsiPk1hcCBzaG93cyB2aWxsYSBsb2NhdGlvbnMgYWNyb3NzIFR1c2Nhbnk8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIEluZm8gU2VjdGlvbiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0iaW5mby1zZWN0aW9uIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJpbmZvLXRpdGxlIj5CZXN0IFZpbGxhcyBpbiBUdXNjYW55PC9oMz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwPlR1c2Nhbnkgb2ZmZXJzIHNvbWUgb2YgdGhlIG1vc3QgYmVhdXRpZnVsIGFuZCBsdXh1cmlvdXMgdmlsbGFzIGluIEl0YWx5LiBGcm9tIHJvbGxpbmcgaGlsbHMgZG90dGVkIHdpdGggY3lwcmVzcyB0cmVlcyB0byBjaGFybWluZyBtZWRpZXZhbCB0b3ducywgdGhpcyByZWdpb24gcHJvdmlkZXMgdGhlIHBlcmZlY3QgYmFja2Ryb3AgZm9yIGFuIHVuZm9yZ2V0dGFibGUgdmFjYXRpb24uPC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8cD5PdXIgY29sbGVjdGlvbiBmZWF0dXJlcyBjYXJlZnVsbHkgc2VsZWN0ZWQgdmlsbGFzIHRoYXQgb2ZmZXIgYXV0aGVudGljIFR1c2NhbiBleHBlcmllbmNlcywgZnJvbSBydXN0aWMgZmFybWhvdXNlcyB3aXRoIHdpbmUgY2VsbGFycyB0byBtb2Rlcm4gdmlsbGFzIHdpdGggaW5maW5pdHkgcG9vbHMgb3Zlcmxvb2tpbmcgdGhlIGNvdW50cnlzaWRlLiBFYWNoIHByb3BlcnR5IGlzIGNob3NlbiBmb3IgaXRzIHVuaXF1ZSBjaGFyYWN0ZXIsIGV4Y2VwdGlvbmFsIGFtZW5pdGllcywgYW5kIHByaW1lIGxvY2F0aW9uLjwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPHA+V2hldGhlciB5b3UncmUgcGxhbm5pbmcgYSByb21hbnRpYyBnZXRhd2F5LCBmYW1pbHkgdmFjYXRpb24sIG9yIGdhdGhlcmluZyB3aXRoIGZyaWVuZHMsIHRoZXNlIHZpbGxhcyBwcm92aWRlIHRoZSBwZXJmZWN0IGJsZW5kIG9mIGNvbWZvcnQsIGx1eHVyeSwgYW5kIGF1dGhlbnRpYyBJdGFsaWFuIGNoYXJtLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9tYWluPgoKICAgIDwhLS0gRm9vdGVyIC0tPgogICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxoND5EZXN0aW5hdGlvbnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiPkl0YWx5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TcGFpbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+RnJhbmNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Dcm9hdGlhPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxoND5TdXBwb3J0PC9oND4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5IZWxwIENlbnRlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+Q29udGFjdCBVczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+Q2FuY2VsbGF0aW9uIFBvbGljeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+U2FmZXR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxoND5Db21wYW55PC9oND4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5BYm91dCBVczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+Q2FyZWVyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+UHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiPkJsb2c8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItc2VjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGg0PkxlZ2FsPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5UZXJtcyBvZiBTZXJ2aWNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Qcml2YWN5IFBvbGljeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+Q29va2llIFBvbGljeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+U2l0ZW1hcDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1ib3R0b20iPgogICAgICAgICAgICAgICAgPHA+JmNvcHk7IDIwMjQgSG9saWR1LiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvb3Rlcj4KCjxzY3JpcHQ+CihmdW5jdGlvbigpIHsKICBmZXRjaCgnLi9saXN0aW5ncy5qc29uJykudGhlbihmdW5jdGlvbihyKSB7IHJldHVybiByLmpzb24oKTsgfSkudGhlbihmdW5jdGlvbihsaXN0aW5ncykgewogICAgLy8gRmluZCBhbGwgbGlzdGluZyBjYXJkIGxpbmtzCiAgICB2YXIgbGlua3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWYqPSJsaXN0aW5nLmh0bWwiXScpOwoKICAgIGZ1bmN0aW9uIHBvcHVsYXRlQ2FyZChsaW5rLCBsaXN0aW5nKSB7CiAgICAgIHZhciBwaG90b1VybCA9IGxpc3RpbmcucGhvdG9zICYmIGxpc3RpbmcucGhvdG9zLmxlbmd0aCA+IDAKICAgICAgICAvLyBQcmVmZXIgYmFzZTY0IGZvciB0aHVtYm5haWxzIOKAlCBleHRlcm5hbCBVUkxzIG1heSBiZSBob3RsaW5rLWJsb2NrZWQgb24gdGhlIGNsb25lZCBkb21haW4KICAgICAgICA/IChsaXN0aW5nLnBob3Rvc1swXS5iYXNlNjQgfHwgbGlzdGluZy5waG90b3NbMF0udXJsKSA6IG51bGw7CiAgICAgIGlmICghcGhvdG9VcmwpIHJldHVybjsKICAgICAgdmFyIHRpdGxlID0gKGxpc3RpbmcuZGF0YSAmJiBsaXN0aW5nLmRhdGEudGl0bGUpIHx8ICdQcm9wZXJ0eSBwaG90byc7CiAgICAgIC8vIFJlcGxhY2UgcGxhY2Vob2xkZXIgZGl2cwogICAgICB2YXIgcGxhY2Vob2xkZXJzID0gbGluay5xdWVyeVNlbGVjdG9yQWxsKCdkaXZbY2xhc3MqPSJwbGFjZWhvbGRlciJdLCBkaXZbc3R5bGUqPSJiYWNrZ3JvdW5kIl0nKTsKICAgICAgcGxhY2Vob2xkZXJzLmZvckVhY2goZnVuY3Rpb24ocGgpIHsKICAgICAgICB2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CiAgICAgICAgaW1nLnNyYyA9IHBob3RvVXJsOwogICAgICAgIGltZy5hbHQgPSB0aXRsZTsKICAgICAgICBpbWcuc3R5bGUud2lkdGggPSAnMTAwJSc7CiAgICAgICAgaW1nLnN0eWxlLmhlaWdodCA9ICcxMDAlJzsKICAgICAgICBpbWcuc3R5bGUub2JqZWN0Rml0ID0gJ2NvdmVyJzsKICAgICAgICBwaC5pbm5lckhUTUwgPSAnJzsKICAgICAgICBwaC5zdHlsZS5iYWNrZ3JvdW5kID0gJ25vbmUnOwogICAgICAgIHBoLmFwcGVuZENoaWxkKGltZyk7CiAgICAgIH0pOwogICAgICAvLyBBbHdheXMgcmVwbGFjZSB0aGUgZmlyc3QgaW1nIGluIHRoZSBjYXJkIChza2lwIGxvZ28vaWNvbiBpbWFnZXMpCiAgICAgIHZhciBpbWdzID0gbGluay5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKTsKICAgICAgdmFyIHJlcGxhY2VkID0gZmFsc2U7CiAgICAgIGltZ3MuZm9yRWFjaChmdW5jdGlvbihleGlzdGluZ0ltZykgewogICAgICAgIGlmIChyZXBsYWNlZCkgcmV0dXJuOwogICAgICAgIHZhciBjbHMgPSAoZXhpc3RpbmdJbWcuY2xhc3NOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmIChjbHMuaW5jbHVkZXMoJ2xvZ28nKSB8fCBjbHMuaW5jbHVkZXMoJ2ljb24nKSB8fCBjbHMuaW5jbHVkZXMoJ2F2YXRhcicpKSByZXR1cm47CiAgICAgICAgaWYgKGV4aXN0aW5nSW1nLmNsb3Nlc3QoJ25hdiwgaGVhZGVyIGEsIGZvb3RlcicpKSByZXR1cm47CiAgICAgICAgZXhpc3RpbmdJbWcuc3JjID0gcGhvdG9Vcmw7CiAgICAgICAgZXhpc3RpbmdJbWcuYWx0ID0gdGl0bGU7CiAgICAgICAgcmVwbGFjZWQgPSB0cnVlOwogICAgICB9KTsKICAgIH0KCiAgICBsaW5rcy5mb3JFYWNoKGZ1bmN0aW9uKGxpbmspIHsKICAgICAgdmFyIGhyZWYgPSBsaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnOwogICAgICB2YXIgbWF0Y2ggPSBocmVmLm1hdGNoKC9bPyZdaWQ9KFxkKykvKTsKICAgICAgaWYgKCFtYXRjaCkgcmV0dXJuOwogICAgICB2YXIgaWR4ID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsKICAgICAgdmFyIGxpc3RpbmcgPSBsaXN0aW5nc1tpZHhdOwogICAgICBpZiAoIWxpc3RpbmcpIHJldHVybjsKICAgICAgcG9wdWxhdGVDYXJkKGxpbmssIGxpc3RpbmcpOwogICAgfSk7CgoKICB9KS5jYXRjaChmdW5jdGlvbihlKSB7IGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgbGlzdGluZ3M6JywgZSk7IH0pOwp9KSgpOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+"}