mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-07 03:01:33 +00:00
111 lines
146 KiB
YAML
111 lines
146 KiB
YAML
---
|
|
http_interactions:
|
|
- request:
|
|
method: post
|
|
uri: https://kc.cqcm.startinblox.com/realms/startinblox/protocol/openid-connect/token
|
|
body:
|
|
encoding: UTF-8
|
|
string: client_id=https%3A%2F%2Fstaging.openfoodnetwork.org.uk%2F&client_secret=<HIDDEN-OPENID_APP_SECRET>&grant_type=client_credentials&scope=WriteEnterprise
|
|
headers:
|
|
User-Agent:
|
|
- Faraday v2.9.0
|
|
Content-Type:
|
|
- application/x-www-form-urlencoded
|
|
Accept-Encoding:
|
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
Accept:
|
|
- "*/*"
|
|
response:
|
|
status:
|
|
code: 200
|
|
message: OK
|
|
headers:
|
|
Server:
|
|
- nginx/1.22.1
|
|
Date:
|
|
- Wed, 24 Sep 2025 04:08:53 GMT
|
|
Content-Type:
|
|
- application/json
|
|
Content-Length:
|
|
- '1726'
|
|
Connection:
|
|
- keep-alive
|
|
Cache-Control:
|
|
- no-store
|
|
Pragma:
|
|
- no-cache
|
|
Referrer-Policy:
|
|
- no-referrer
|
|
Strict-Transport-Security:
|
|
- max-age=31536000; includeSubDomains
|
|
X-Content-Type-Options:
|
|
- nosniff
|
|
X-Frame-Options:
|
|
- SAMEORIGIN
|
|
X-Xss-Protection:
|
|
- 1; mode=block
|
|
body:
|
|
encoding: UTF-8
|
|
string: '{"access_token":"<HIDDEN-OPENID-TOKEN>","expires_in":300,"refresh_expires_in":0,"token_type":"Bearer","not-before-policy":0,"scope":"WriteEnterprise
|
|
profile email"}'
|
|
recorded_at: Wed, 24 Sep 2025 04:08:53 GMT
|
|
- request:
|
|
method: post
|
|
uri: https://api.proxy-dev.cqcm.startinblox.com/djangoldp-dfc/webhook/
|
|
body:
|
|
encoding: UTF-8
|
|
string: '{"eventType":"refresh","enterpriseUrlid":"http://test.host/api/dfc/enterprises","scope":"ReadEnterprise"}'
|
|
headers:
|
|
Authorization:
|
|
- "<HIDDEN-AUTHORIZATION-HEADER>"
|
|
User-Agent:
|
|
- Faraday v2.9.0
|
|
Content-Type:
|
|
- application/json
|
|
Accept-Encoding:
|
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
Accept:
|
|
- "*/*"
|
|
response:
|
|
status:
|
|
code: 500
|
|
message: Internal Server Error
|
|
headers:
|
|
Connection:
|
|
- keep-alive
|
|
Content-Length:
|
|
- '110452'
|
|
Content-Type:
|
|
- text/html; charset=utf-8
|
|
Vary:
|
|
- Accept-Encoding, Cookie
|
|
Access-Control-Allow-Origin:
|
|
- None
|
|
Access-Control-Allow-Methods:
|
|
- GET,POST,PUT,PATCH,DELETE,OPTIONS,HEAD
|
|
Access-Control-Allow-Headers:
|
|
- authorization, Content-Type, if-match, accept, sentry-trace, DPoP, cache-control,
|
|
pragma, prefer, accept-model-fields, depth
|
|
Access-Control-Expose-Headers:
|
|
- Location, User
|
|
Access-Control-Allow-Credentials:
|
|
- 'true'
|
|
X-Frame-Options:
|
|
- DENY
|
|
X-Content-Type-Options:
|
|
- nosniff
|
|
Referrer-Policy:
|
|
- same-origin
|
|
Cross-Origin-Opener-Policy:
|
|
- same-origin
|
|
Via:
|
|
- 1.1 alproxy
|
|
Date:
|
|
- Wed, 24 Sep 2025 04:08:56 GMT
|
|
body:
|
|
encoding: ASCII-8BIT
|
|
string: !binary |-
|
|
PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0iTk9ORSxOT0FSQ0hJVkUiPgogIDx0aXRsZT5KU09ORGVjb2RlRXJyb3IKICAgICAgICAgIGF0IC9kamFuZ29sZHAtZGZjL3dlYmhvb2svPC90aXRsZT4KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgaHRtbCAqIHsgcGFkZGluZzowOyBtYXJnaW46MDsgfQogICAgYm9keSAqIHsgcGFkZGluZzoxMHB4IDIwcHg7IH0KICAgIGJvZHkgKiAqIHsgcGFkZGluZzowOyB9CiAgICBib2R5IHsgZm9udDpzbWFsbCBzYW5zLXNlcmlmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGNvbG9yOiMwMDA7IH0KICAgIGJvZHk+ZGl2IHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDsgfQogICAgaDEgeyBmb250LXdlaWdodDpub3JtYWw7IH0KICAgIGgyIHsgbWFyZ2luLWJvdHRvbTouOGVtOyB9CiAgICBoMyB7IG1hcmdpbjoxZW0gMCAuNWVtIDA7IH0KICAgIGg0IHsgbWFyZ2luOjAgMCAuNWVtIDA7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IH0KICAgIGNvZGUsIHByZSB7IGZvbnQtc2l6ZTogMTAwJTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3b3JkLWJyZWFrOiBicmVhay13b3JkOyB9CiAgICBzdW1tYXJ5IHsgY3Vyc29yOiBwb2ludGVyOyB9CiAgICB0YWJsZSB7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lkdGg6MTAwJTsgYmFja2dyb3VuZDp3aGl0ZTsgfQogICAgdGJvZHkgdGQsIHRib2R5IHRoIHsgdmVydGljYWwtYWxpZ246dG9wOyBwYWRkaW5nOjJweCAzcHg7IH0KICAgIHRoZWFkIHRoIHsKICAgICAgcGFkZGluZzoxcHggNnB4IDFweCAzcHg7IGJhY2tncm91bmQ6I2ZlZmVmZTsgdGV4dC1hbGlnbjpsZWZ0OwogICAgICBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMXB4OyBib3JkZXI6MXB4IHNvbGlkICNkZGQ7CiAgICB9CiAgICB0Ym9keSB0aCB7IHdpZHRoOjEyZW07IHRleHQtYWxpZ246cmlnaHQ7IGNvbG9yOiM2NjY7IHBhZGRpbmctcmlnaHQ6LjVlbTsgfQogICAgdGFibGUudmFycyB7IG1hcmdpbjo1cHggMTBweCAycHggNDBweDsgd2lkdGg6IGF1dG87IH0KICAgIHRhYmxlLnZhcnMgdGQsIHRhYmxlLnJlcSB0ZCB7IGZvbnQtZmFtaWx5Om1vbm9zcGFjZTsgfQogICAgdGFibGUgdGQuY29kZSB7IHdpZHRoOjEwMCU7IH0KICAgIHRhYmxlIHRkLmNvZGUgcHJlIHsgb3ZlcmZsb3c6aGlkZGVuOyB9CiAgICB0YWJsZS5zb3VyY2UgdGggeyBjb2xvcjojNjY2OyB9CiAgICB0YWJsZS5zb3VyY2UgdGQgeyBmb250LWZhbWlseTptb25vc3BhY2U7IHdoaXRlLXNwYWNlOnByZTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZTsgfQogICAgdWwudHJhY2ViYWNrIHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IGNvbG9yOiAjMjIyOyB9CiAgICB1bC50cmFjZWJhY2sgbGkuY2F1c2UgeyB3b3JkLWJyZWFrOiBicmVhay13b3JkOyB9CiAgICB1bC50cmFjZWJhY2sgbGkuZnJhbWUgeyBwYWRkaW5nLWJvdHRvbToxZW07IGNvbG9yOiM0ZjRmNGY7IH0KICAgIHVsLnRyYWNlYmFjayBsaS51c2VyIHsgYmFja2dyb3VuZC1jb2xvcjojZTBlMGUwOyBjb2xvcjojMDAwIH0KICAgIGRpdi5jb250ZXh0IHsgcGFkZGluZzoxMHB4IDA7IG92ZXJmbG93OmhpZGRlbjsgfQogICAgZGl2LmNvbnRleHQgb2wgeyBwYWRkaW5nLWxlZnQ6MzBweDsgbWFyZ2luOjAgMTBweDsgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlOyB9CiAgICBkaXYuY29udGV4dCBvbCBsaSB7IGZvbnQtZmFtaWx5Om1vbm9zcGFjZTsgd2hpdGUtc3BhY2U6cHJlOyBjb2xvcjojNzc3OyBjdXJzb3I6cG9pbnRlcjsgcGFkZGluZy1sZWZ0OiAycHg7IH0KICAgIGRpdi5jb250ZXh0IG9sIGxpIHByZSB7IGRpc3BsYXk6aW5saW5lOyB9CiAgICBkaXYuY29udGV4dCBvbC5jb250ZXh0LWxpbmUgbGkgeyBjb2xvcjojNDY0NjQ2OyBiYWNrZ3JvdW5kLWNvbG9yOiNkZmRmZGY7IHBhZGRpbmc6IDNweCAycHg7IH0KICAgIGRpdi5jb250ZXh0IG9sLmNvbnRleHQtbGluZSBsaSBzcGFuIHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjMycHg7IH0KICAgIC51c2VyIGRpdi5jb250ZXh0IG9sLmNvbnRleHQtbGluZSBsaSB7IGJhY2tncm91bmQtY29sb3I6I2JiYjsgY29sb3I6IzAwMDsgfQogICAgLnVzZXIgZGl2LmNvbnRleHQgb2wgbGkgeyBjb2xvcjojNjY2OyB9CiAgICBkaXYuY29tbWFuZHMsIHN1bW1hcnkuY29tbWFuZHMgeyBtYXJnaW4tbGVmdDogNDBweDsgfQogICAgZGl2LmNvbW1hbmRzIGEsIHN1bW1hcnkuY29tbWFuZHMgeyBjb2xvcjojNTU1OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfQogICAgLnVzZXIgZGl2LmNvbW1hbmRzIGEgeyBjb2xvcjogYmxhY2s7IH0KICAgICNzdW1tYXJ5IHsgYmFja2dyb3VuZDogI2ZmYzsgfQogICAgI3N1bW1hcnkgaDIgeyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzY2NjsgfQogICAgI2V4cGxhbmF0aW9uIHsgYmFja2dyb3VuZDojZWVlOyB9CiAgICAjdGVtcGxhdGUsICN0ZW1wbGF0ZS1ub3QtZXhpc3QgeyBiYWNrZ3JvdW5kOiNmNmY2ZjY7IH0KICAgICN0ZW1wbGF0ZS1ub3QtZXhpc3QgdWwgeyBtYXJnaW46IDAgMCAxMHB4IDIwcHg7IH0KICAgICN0ZW1wbGF0ZS1ub3QtZXhpc3QgLnBvc3Rtb3J0ZW0tc2VjdGlvbiB7IG1hcmdpbi1ib3R0b206IDNweDsgfQogICAgI3VuaWNvZGUtaGludCB7IGJhY2tncm91bmQ6I2VlZTsgfQogICAgI3RyYWNlYmFjayB7IGJhY2tncm91bmQ6I2VlZTsgfQogICAgI3JlcXVlc3RpbmZvIHsgYmFja2dyb3VuZDojZjZmNmY2OyBwYWRkaW5nLWxlZnQ6MTIwcHg7IH0KICAgICNzdW1tYXJ5IHRhYmxlIHsgYm9yZGVyOm5vbmU7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IH0KICAgICNyZXF1ZXN0aW5mbyBoMiwgI3JlcXVlc3RpbmZvIGgzIHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi1sZWZ0Oi0xMDBweDsgfQogICAgI3JlcXVlc3RpbmZvIGgzIHsgbWFyZ2luLWJvdHRvbTotMWVtOyB9CiAgICAuZXJyb3IgeyBiYWNrZ3JvdW5kOiAjZmZjOyB9CiAgICAuc3BlY2lmaWMgeyBjb2xvcjojY2MzMzAwOyBmb250LXdlaWdodDpib2xkOyB9CiAgICBoMiBzcGFuLmNvbW1hbmRzIHsgZm9udC1zaXplOi43ZW07IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfQogICAgc3Bhbi5jb21tYW5kcyBhOmxpbmsge2NvbG9yOiM1RTU2OTQ7fQogICAgcHJlLmV4Y2VwdGlvbl92YWx1ZSB7IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBjb2xvcjogIzU3NTc1NzsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luOiAxMHB4IDAgMTBweCAwOyB9CiAgICAuYXBwZW5kLWJvdHRvbSB7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KICAgIC5mbmFtZSB7IHVzZXItc2VsZWN0OiBhbGw7IH0KICA8L3N0eWxlPgogIAogIDxzY3JpcHQ+CiAgICBmdW5jdGlvbiBoaWRlQWxsKGVsZW1zKSB7CiAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgZWxlbXMubGVuZ3RoOyBlKyspIHsKICAgICAgICBlbGVtc1tlXS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICB9CiAgICB9CiAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgIGhpZGVBbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnb2wucHJlLWNvbnRleHQnKSk7CiAgICAgIGhpZGVBbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnb2wucG9zdC1jb250ZXh0JykpOwogICAgICBoaWRlQWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Rpdi5wYXN0ZWJpbicpKTsKICAgIH0KICAgIGZ1bmN0aW9uIHRvZ2dsZSgpIHsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFyZ3VtZW50c1tpXSk7CiAgICAgICAgaWYgKGUpIHsKICAgICAgICAgIGUuc3R5bGUuZGlzcGxheSA9IGUuc3R5bGUuZGlzcGxheSA9PSAnbm9uZScgPyAnYmxvY2snOiAnbm9uZSc7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZ1bmN0aW9uIHN3aXRjaFBhc3RlYmluRnJpZW5kbHkobGluaykgewogICAgICBzMSA9ICJTd2l0Y2ggdG8gY29weS1hbmQtcGFzdGUgdmlldyI7CiAgICAgIHMyID0gIlN3aXRjaCBiYWNrIHRvIGludGVyYWN0aXZlIHZpZXciOwogICAgICBsaW5rLnRleHRDb250ZW50ID0gbGluay50ZXh0Q29udGVudC50cmltKCkgPT0gczEgPyBzMjogczE7CiAgICAgIHRvZ2dsZSgnYnJvd3NlclRyYWNlYmFjaycsICdwYXN0ZWJpblRyYWNlYmFjaycpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgPC9zY3JpcHQ+CiAgCjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InN1bW1hcnkiPgogIDxoMT5KU09ORGVjb2RlRXJyb3IKICAgICAgIGF0IC9kamFuZ29sZHAtZGZjL3dlYmhvb2svPC9oMT4KICA8cHJlIGNsYXNzPSJleGNlcHRpb25fdmFsdWUiPkV4cGVjdGluZyB2YWx1ZTogbGluZSAxIGNvbHVtbiAxIChjaGFyIDApPC9wcmU+CiAgPHRhYmxlIGNsYXNzPSJtZXRhIj4KCiAgICA8dHI+CiAgICAgIDx0aD5SZXF1ZXN0IE1ldGhvZDo8L3RoPgogICAgICA8dGQ+UE9TVDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGg+UmVxdWVzdCBVUkw6PC90aD4KICAgICAgPHRkPmh0dHBzOi8vYXBpLnByb3h5LWRldi5jcWNtLnN0YXJ0aW5ibG94LmNvbS9kamFuZ29sZHAtZGZjL3dlYmhvb2svPC90ZD4KICAgIDwvdHI+CgogICAgPHRyPgogICAgICA8dGg+RGphbmdvIFZlcnNpb246PC90aD4KICAgICAgPHRkPjQuMi4yMDwvdGQ+CiAgICA8L3RyPgoKICAgIDx0cj4KICAgICAgPHRoPkV4Y2VwdGlvbiBUeXBlOjwvdGg+CiAgICAgIDx0ZD5KU09ORGVjb2RlRXJyb3I8L3RkPgogICAgPC90cj4KCgogICAgPHRyPgogICAgICA8dGg+RXhjZXB0aW9uIFZhbHVlOjwvdGg+CiAgICAgIDx0ZD48cHJlPkV4cGVjdGluZyB2YWx1ZTogbGluZSAxIGNvbHVtbiAxIChjaGFyIDApPC9wcmU+PC90ZD4KICAgIDwvdHI+CgoKICAgIDx0cj4KICAgICAgPHRoPkV4Y2VwdGlvbiBMb2NhdGlvbjo8L3RoPgogICAgICA8dGQ+PHNwYW4gY2xhc3M9ImZuYW1lIj4vaG9tZS9jcWNtLXByb3h5LWRldi9zdGFydGluYmxveC92ZW52L2xpYi9weXRob24zLjExL3NpdGUtcGFja2FnZXMvcmVxdWVzdHMvbW9kZWxzLnB5PC9zcGFuPiwgbGluZSA5NzUsIGluIGpzb248L3RkPgogICAgPC90cj4KCgogICAgPHRyPgogICAgICA8dGg+UmFpc2VkIGR1cmluZzo8L3RoPgogICAgICA8dGQ+ZGF0YV9mb29kX2NvbnNvcnRpdW0udmlld3MuQ2FjaGVXZWJob29rVmlldzwvdGQ+CiAgICA8L3RyPgoKICAgIDx0cj4KICAgICAgPHRoPlB5dGhvbiBFeGVjdXRhYmxlOjwvdGg+CiAgICAgIDx0ZD4vdXNyL2Fsd2F5c2RhdGEvdXdzZ2kvMi4wLjI4L2Jpbi91d3NnaTwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGg+UHl0aG9uIFZlcnNpb246PC90aD4KICAgICAgPHRkPjMuMTEuMTM8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRoPlB5dGhvbiBQYXRoOjwvdGg+CiAgICAgIDx0ZD48cHJlPlsmI3gyNzsuJiN4Mjc7LAogJiN4Mjc7JiN4Mjc7LAogJiN4Mjc7L3Vzci9hbHdheXNkYXRhL3B5dGhvbi8zLjExL2xpYi9weXRob24zMTEuemlwJiN4Mjc7LAogJiN4Mjc7L3Vzci9hbHdheXNkYXRhL3B5dGhvbi8zLjExL2xpYi9weXRob24zLjExJiN4Mjc7LAogJiN4Mjc7L3Vzci9hbHdheXNkYXRhL3B5dGhvbi8zLjExL2xpYi9weXRob24zLjExL2xpYi1keW5sb2FkJiN4Mjc7LAogJiN4Mjc7L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzJiN4Mjc7XTwvcHJlPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGg+U2VydmVyIHRpbWU6PC90aD4KICAgICAgPHRkPldlZCwgMjQgU2VwIDIwMjUgMDQ6MDg6NTYgKzAwMDA8L3RkPgogICAgPC90cj4KICA8L3RhYmxlPgo8L2Rpdj4KCgoKCjxkaXYgaWQ9InRyYWNlYmFjayI+CiAgPGgyPlRyYWNlYmFjayA8c3BhbiBjbGFzcz0iY29tbWFuZHMiPjxhIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBzd2l0Y2hQYXN0ZWJpbkZyaWVuZGx5KHRoaXMpOyI+CiAgICBTd2l0Y2ggdG8gY29weS1hbmQtcGFzdGUgdmlldzwvYT48L3NwYW4+CiAgPC9oMj4KICA8ZGl2IGlkPSJicm93c2VyVHJhY2ViYWNrIj4KICAgIDx1bCBjbGFzcz0idHJhY2ViYWNrIj4KICAgICAgCiAgICAgICAgCiAgICAgICAgPGxpIGNsYXNzPSJmcmFtZSB1c2VyIj4KICAgICAgICAgIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iZm5hbWUiPi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9yZXF1ZXN0cy9tb2RlbHMucHk8L2NvZGU+LCBsaW5lIDk3MSwgaW4ganNvbgogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzMwNDQ3MjMyIj4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iOTY0IiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzA0NDcyMzIiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NzIzMicsICdwb3N0MTQwNTE1NzMwNDQ3MjMyJykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAjIGFuZCB0aGUgc2VydmVyIGRpZG4mI3gyNzt0IGJvdGhlciB0byB0ZWxsIHVzIHdoYXQgY29kZWMgKndhcyo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NzIzMicsICdwb3N0MTQwNTE1NzMwNDQ3MjMyJykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAjIHVzZWQuPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDcyMzInLCAncG9zdDE0MDUxNTczMDQ0NzIzMicpIj48cHJlPiAgICAgICAgICAgICAgICAgICAgcGFzczwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ3MjMyJywgJ3Bvc3QxNDA1MTU3MzA0NDcyMzInKSI+PHByZT4gICAgICAgICAgICAgICAgZXhjZXB0IEpTT05EZWNvZGVFcnJvciBhcyBlOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ3MjMyJywgJ3Bvc3QxNDA1MTU3MzA0NDcyMzInKSI+PHByZT4gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlcXVlc3RzSlNPTkRlY29kZUVycm9yKGUubXNnLCBlLmRvYywgZS5wb3MpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDcyMzInLCAncG9zdDE0MDUxNTczMDQ0NzIzMicpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ3MjMyJywgJ3Bvc3QxNDA1MTU3MzA0NDcyMzInKSI+PHByZT4gICAgICAgIHRyeTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgIDxvbCBzdGFydD0iOTcxIiBjbGFzcz0iY29udGV4dC1saW5lIj4KICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NzIzMicsICdwb3N0MTQwNTE1NzMwNDQ3MjMyJykiPjxwcmU+ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXhqc29uLmxvYWRzKHNlbGYudGV4dCwgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9Jzk3MicgY2xhc3M9InBvc3QtY29udGV4dCIgaWQ9InBvc3QxNDA1MTU3MzA0NDcyMzIiPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ3MjMyJywgJ3Bvc3QxNDA1MTU3MzA0NDcyMzInKSI+PHByZT4gICAgICAgIGV4Y2VwdCBKU09ORGVjb2RlRXJyb3IgYXMgZTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ3MjMyJywgJ3Bvc3QxNDA1MTU3MzA0NDcyMzInKSI+PHByZT4gICAgICAgICAgICAjIENhdGNoIEpTT04tcmVsYXRlZCBlcnJvcnMgYW5kIHJhaXNlIGFzIHJlcXVlc3RzLkpTT05EZWNvZGVFcnJvcjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDcyMzInLCAncG9zdDE0MDUxNTczMDQ0NzIzMicpIj48cHJlPiAgICAgICAgICAgICMgVGhpcyBhbGlhc2VzIGpzb24uSlNPTkRlY29kZUVycm9yIGFuZCBzaW1wbGVqc29uLkpTT05EZWNvZGVFcnJvcjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDcyMzInLCAncG9zdDE0MDUxNTczMDQ0NzIzMicpIj48cHJlPiAgICAgICAgICAgIHJhaXNlIFJlcXVlc3RzSlNPTkRlY29kZUVycm9yKGUubXNnLCBlLmRvYywgZS5wb3MpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NzIzMicsICdwb3N0MTQwNTE1NzMwNDQ3MjMyJykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NzIzMicsICdwb3N0MTQwNTE1NzMwNDQ3MjMyJykiPjxwcmU+ICAgIEBwcm9wZXJ0eTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxkZXRhaWxzPgogICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9ImNvbW1hbmRzIj5Mb2NhbCB2YXJzPC9zdW1tYXJ5PgogICAgICAgICAgICAKICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ2YXJzIiBpZD0idjE0MDUxNTczMDQ0NzIzMiI+CiAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGg+VmFyaWFibGU8L3RoPgogICAgICAgICAgICAgICAgICA8dGg+VmFsdWU8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmt3YXJnczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPnt9PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7UmVzcG9uc2UgWzIwMF0mZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgIAogICAgICAgIDwvbGk+CiAgICAgIAogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZnJhbWUgdXNlciI+CiAgICAgICAgICAKICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZuYW1lIj4vdXNyL2Fsd2F5c2RhdGEvcHl0aG9uLzMuMTEvbGliL3B5dGhvbjMuMTEvanNvbi9fX2luaXRfXy5weTwvY29kZT4sIGxpbmUgMzQ2LCBpbiBsb2FkcwogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzMwNDQ4OTYwIj4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iMzM5IiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzA0NDg5NjAiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0ODk2MCcsICdwb3N0MTQwNTE1NzMwNDQ4OTYwJykiPjxwcmU+ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYmI3gyNzt0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSwgJiN4Mjc7PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDg5NjAnLCAncG9zdDE0MDUxNTczMDQ0ODk2MCcpIj48cHJlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmJiN4Mjc7bm90IHtzLl9fY2xhc3NfXy5fX25hbWVfX30mI3gyNzspPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDg5NjAnLCAncG9zdDE0MDUxNTczMDQ0ODk2MCcpIj48cHJlPiAgICAgICAgcyA9IHMuZGVjb2RlKGRldGVjdF9lbmNvZGluZyhzKSwgJiN4Mjc7c3Vycm9nYXRlcGFzcyYjeDI3Oyk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0ODk2MCcsICdwb3N0MTQwNTE1NzMwNDQ4OTYwJykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDg5NjAnLCAncG9zdDE0MDUxNTczMDQ0ODk2MCcpIj48cHJlPiAgICBpZiAoY2xzIGlzIE5vbmUgYW5kIG9iamVjdF9ob29rIGlzIE5vbmUgYW5kPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDg5NjAnLCAncG9zdDE0MDUxNTczMDQ0ODk2MCcpIj48cHJlPiAgICAgICAgICAgIHBhcnNlX2ludCBpcyBOb25lIGFuZCBwYXJzZV9mbG9hdCBpcyBOb25lIGFuZDwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ4OTYwJywgJ3Bvc3QxNDA1MTU3MzA0NDg5NjAnKSI+PHByZT4gICAgICAgICAgICBwYXJzZV9jb25zdGFudCBpcyBOb25lIGFuZCBvYmplY3RfcGFpcnNfaG9vayBpcyBOb25lIGFuZCBub3Qga3cpOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSIzNDYiIGNsYXNzPSJjb250ZXh0LWxpbmUiPgogICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ4OTYwJywgJ3Bvc3QxNDA1MTU3MzA0NDg5NjAnKSI+PHByZT4gICAgICAgIHJldHVybiBfZGVmYXVsdF9kZWNvZGVyLmRlY29kZShzKQogICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzM0NycgY2xhc3M9InBvc3QtY29udGV4dCIgaWQ9InBvc3QxNDA1MTU3MzA0NDg5NjAiPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ4OTYwJywgJ3Bvc3QxNDA1MTU3MzA0NDg5NjAnKSI+PHByZT4gICAgaWYgY2xzIGlzIE5vbmU6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0ODk2MCcsICdwb3N0MTQwNTE1NzMwNDQ4OTYwJykiPjxwcmU+ICAgICAgICBjbHMgPSBKU09ORGVjb2RlcjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDg5NjAnLCAncG9zdDE0MDUxNTczMDQ0ODk2MCcpIj48cHJlPiAgICBpZiBvYmplY3RfaG9vayBpcyBub3QgTm9uZTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ4OTYwJywgJ3Bvc3QxNDA1MTU3MzA0NDg5NjAnKSI+PHByZT4gICAgICAgIGt3WyYjeDI3O29iamVjdF9ob29rJiN4Mjc7XSA9IG9iamVjdF9ob29rPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0ODk2MCcsICdwb3N0MTQwNTE1NzMwNDQ4OTYwJykiPjxwcmU+ICAgIGlmIG9iamVjdF9wYWlyc19ob29rIGlzIG5vdCBOb25lOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDg5NjAnLCAncG9zdDE0MDUxNTczMDQ0ODk2MCcpIj48cHJlPiAgICAgICAga3dbJiN4Mjc7b2JqZWN0X3BhaXJzX2hvb2smI3gyNztdID0gb2JqZWN0X3BhaXJzX2hvb2s8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJjb21tYW5kcyI+TG9jYWwgdmFyczwvc3VtbWFyeT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idmFycyIgaWQ9InYxNDA1MTU3MzA0NDg5NjAiPgogICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5jbHM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5Ob25lPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmt3PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+e308L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+b2JqZWN0X2hvb2s8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5Ob25lPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPm9iamVjdF9wYWlyc19ob29rPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Tm9uZTwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5wYXJzZV9jb25zdGFudDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPk5vbmU8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cGFyc2VfZmxvYXQ8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5Ob25lPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnBhcnNlX2ludDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPk5vbmU8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+czwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPigmcXVvdDsmbHQ7aHRtbCBuZy1jc3A9JiN4Mjc7bm8tdW5zYWZlLWV2YWwmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDtoZWFkJmd0O1xuJiN4Mjc7CiAmcXVvdDsmbHQ7bWV0YSBjaGFyc2V0PSYjeDI3O3V0Zi04JiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O3dpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCYjeDI3OyBuYW1lPSYjeDI3O3ZpZXdwb3J0JiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O09wZW4gRm9vZCBOZXR3b3JrJiN4Mjc7IHByb3BlcnR5PSYjeDI3O29nOnRpdGxlJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O1RoZSBPcGVuIEZvb2QgTmV0d29yayBzb2Z0d2FyZSBwbGF0Zm9ybSBhbGxvd3MgZmFybWVycyB0byAmcXVvdDsKICYjeDI3O3NlbGwgcHJvZHVjZSBvbmxpbmUsIGF0IGEgcHJpY2UgdGhhdCB3b3JrcyBmb3IgdGhlbS4gSXQgaGFzIGJlZW4gYnVpbHQgJiN4Mjc7CiAmI3gyNztzcGVjaWZpY2FsbHkgZm9yIHNlbGxpbmcgZm9vZCBzbyBpdCBjYW4gaGFuZGxlIHRyaWNreSBtZWFzdXJlcyBvciBzdG9jayAmI3gyNzsKICYjeDI3O2xldmVscyB0aGF0IG9ubHkgZm9vZCBoYXMgLSBhIGRvemVuIGVnZ3MsIGEgYnVuY2ggb2YgcGFyc2xleSwgYSB3aG9sZSAmI3gyNzsKICZxdW90O2NoaWNrZW4gdGhhdCB2YXJpZXMgaW4gd2VpZ2h04oCmJiN4Mjc7IHByb3BlcnR5PSYjeDI3O29nOmRlc2NyaXB0aW9uJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmI3gyNzsmbHQ7bWV0YSAmI3gyNzsKICZxdW90O2NvbnRlbnQ9JiN4Mjc7PEhJRERFTi1PUEVOSURfQVBQX0lEPnJhaWxzL2FjdGl2ZV9zdG9yYWdlL2Jsb2JzL3JlZGlyZWN0L2V5SmZjbUZwYkhNaU9uc2liV1Z6YzJGblpTSTZJa0pCYUhCQk1URmpRV2M5UFNJc0ltVjRjQ0k2Ym5Wc2JDd2ljSFZ5SWpvaVlteHZZbDlwWkNKOWZRPT0tLTYxZDMyZGQzOGFkODk2YzFjNzEwNmM4ZDllMTFkOTc5MDdkZTdmOWYvb2ZuLXVrLnBuZyYjeDI3OyAmcXVvdDsKICZxdW90O3Byb3BlcnR5PSYjeDI3O29nOmltYWdlJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O25vaW5kZXgmI3gyNzsgbmFtZT0mI3gyNztyb2JvdHMmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDt0aXRsZSZndDtXZWxjb21lIHRvIE9wZW4gRm9vZCBOZXR3b3JrJmx0Oy90aXRsZSZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O2xpbmsgcmVsPSZxdW90O2ljb24mcXVvdDsgdHlwZT0mcXVvdDtpbWFnZS94LWljb24mcXVvdDsgaHJlZj0mcXVvdDsvZmF2aWNvbi1zdGFnaW5nLmljbyZxdW90OyAvJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bGluayAmI3gyNzsKICZxdW90O2hyZWY9JiN4Mjc7aHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzo0MDAsMzAwaXRhbGljLDQwMGl0YWxpYywzMDAsNzAwLDcwMGl0YWxpY3xPc3dhbGQ6MzAwLDQwMCw3MDAmI3gyNzsgJnF1b3Q7CiAmcXVvdDtyZWw9JiN4Mjc7c3R5bGVzaGVldCYjeDI3OyB0eXBlPSYjeDI3O3RleHQvY3NzJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bGluayBhcz0mI3gyNztmb250JiN4Mjc7IGNyb3Nzb3JpZ2luPSYjeDI3O2Fub255bW91cyYjeDI3OyAmcXVvdDsKICZxdW90O2hyZWY9JiN4Mjc7L3BhY2tzL21lZGlhL2ZvbnRzL09GTi12Mi1jMjczMDM3YjNiYTNlZTgyNjRiYzY3ZTMxZWEzZDcwMS53b2ZmJiN4Mjc7ICZxdW90OwogJnF1b3Q7cmVsPSYjeDI3O3ByZWxvYWQmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDtzY3JpcHQmZ3Q7XG4mI3gyNzsKICYjeDI3OyAgdmFyIF9tdG0gPSB3aW5kb3cuX210bSA9IHdpbmRvdy5fbXRtIHx8IFtdO1xuJiN4Mjc7CiAmcXVvdDsgIF9tdG0ucHVzaCh7JiN4Mjc7bXRtLnN0YXJ0VGltZSYjeDI3OzogKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSwgJiN4Mjc7ZXZlbnQmI3gyNzs6ICZxdW90OwogJnF1b3Q7JiN4Mjc7bXRtLlN0YXJ0JiN4Mjc7fSk7XG4mcXVvdDsKICZxdW90OyAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCYjeDI3O3NjcmlwdCYjeDI3OyksICZxdW90OwogJnF1b3Q7cz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCYjeDI3O3NjcmlwdCYjeDI3OylbMF07XG4mcXVvdDsKICYjeDI3OyAgdmFyICYjeDI3OwogJiN4Mjc7dT0mcXVvdDtodHRwczovL2Nkbi5pbm5vY3JhZnQuY2xvdWQvb3BlbmZvb2RuZXR3b3JrLmlubm9jcmFmdC5jbG91ZC9jb250YWluZXJfN01BZ1d4aHIuanMmcXVvdDs7XG4mI3gyNzsKICZxdW90OyAgZy50eXBlPSYjeDI3O3RleHQvamF2YXNjcmlwdCYjeDI3OzsgZy5hc3luYz10cnVlOyBnLmRlZmVyPXRydWU7IGcuc3JjPXU7ICZxdW90OwogJiN4Mjc7cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpO1xuJiN4Mjc7CiAmI3gyNzsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7XG4mI3gyNzsKICYjeDI3OyZsdDtsaW5rIGhyZWZsYW5nPSZxdW90O2VuLWdiJnF1b3Q7ICYjeDI3OwogJiN4Mjc7aHJlZj0mcXVvdDs8SElEREVOLU9QRU5JRF9BUFBfSUQ+bG9jYWxlcy9lbl9HQiZxdW90OyZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O2xpbmsgaHJlZmxhbmc9JnF1b3Q7Y3kmcXVvdDsgJiN4Mjc7CiAmI3gyNztocmVmPSZxdW90OzxISURERU4tT1BFTklEX0FQUF9JRD5sb2NhbGVzL2N5JnF1b3Q7Jmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bGluayBocmVmbGFuZz0mcXVvdDtlbiZxdW90OyAmI3gyNzsKICYjeDI3O2hyZWY9JnF1b3Q7PEhJRERFTi1PUEVOSURfQVBQX0lEPmxvY2FsZXMvZW4mcXVvdDsmZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtsaW5rIHJlbD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IGhyZWY9JnF1b3Q7L3BhY2tzL2Nzcy9kYXJrc3dhcm0tNjU3ODc5MjEuY3NzJnF1b3Q7ICYjeDI3OwogJiN4Mjc7ZGF0YS10dXJiby10cmFjaz0mcXVvdDtyZWxvYWQmcXVvdDsgbWVkaWE9JnF1b3Q7c2NyZWVuJnF1b3Q7IC8mZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtzY3JpcHQgc3JjPSZxdW90Oy9wYWNrcy9qcy9hcHBsaWNhdGlvbi1jNDQxMzNmMGQ2MTEwM2NlZjA1Zi5qcyZxdW90OyAmI3gyNzsKICYjeDI3O2RhdGEtdHVyYm8tdHJhY2s9JnF1b3Q7cmVsb2FkJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNztcbiYjeDI3OwogJnF1b3Q7Jmx0O3NjcmlwdCBzcmM9JiN4Mjc7Ly9kMnd5OGY3YTl1cnNubS5jbG91ZGZyb250Lm5ldC92Ny9idWdzbmFnLm1pbi5qcyYjeDI3OyZndDsmbHQ7L3NjcmlwdCZndDtcbiZxdW90OwogJiN4Mjc7Jmx0O3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7ICBCdWdzbmFnLnN0YXJ0KHtcbiYjeDI3OwogJiN4Mjc7ICAgIGFwaUtleTogJnF1b3Q7ZjZjNGUyODVlY2Q3ZjU2ODM3OTNlOGQzZjRhM2RlNzcmcXVvdDssXG4mI3gyNzsKICYjeDI3OyAgICByZWxlYXNlU3RhZ2U6ICZxdW90O3N0YWdpbmcmcXVvdDtcbiYjeDI3OwogJiN4Mjc7ICB9KVxuJiN4Mjc7CiAmI3gyNzsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7XG4mI3gyNzsKICZxdW90OyZsdDtzY3JpcHQgc3JjPSYjeDI3O2h0dHBzOi8vanMuc3RyaXBlLmNvbS92My8mI3gyNzsgdHlwZT0mI3gyNzt0ZXh0L2phdmFzY3JpcHQmI3gyNzsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7XG4mcXVvdDsKICYjeDI3O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7c2NyaXB0ICYjeDI3OwogJiN4Mjc7c3JjPSZxdW90Oy9hc3NldHMvZGFya3N3YXJtL2FsbC0xODMzMDM5ZWE4MWMwMjU0NjEzMDBmNTlkMmE2ZTNhYTVmNzBlNTlkZjZiNzc3ZmVlNGY2MTY4NTJjZWFkNTAwLmpzJnF1b3Q7ICYjeDI3OwogJiN4Mjc7ZGF0YS10dXJiby10cmFjaz0mcXVvdDtyZWxvYWQmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtzY3JpcHQgJiN4Mjc7CiAmI3gyNztzcmM9JnF1b3Q7L2Fzc2V0cy93ZWIvYWxsLTFkYTFjYzZmZTZhNTBjNjAwYTQ1NTJhMmNjMWE0NTI5NzYyM2UzZDUxN2IwZTk1MjE5ZWQ1MWNkN2Y3OTgzNDIuanMmcXVvdDsgJiN4Mjc7CiAmI3gyNztkYXRhLXR1cmJvLXRyYWNrPSZxdW90O3JlbG9hZCZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7ICBJMThuLmRlZmF1bHRfbG9jYWxlID0gJnF1b3Q7ZW5fR0ImcXVvdDs7XG4mI3gyNzsKICYjeDI3OyAgSTE4bi5iYXNlX2xvY2FsZSA9ICZxdW90O2VuJnF1b3Q7O1xuJiN4Mjc7CiAmI3gyNzsgIEkxOG4ubG9jYWxlID0gJnF1b3Q7ZW5fR0ImcXVvdDs7XG4mI3gyNzsKICYjeDI3OyAgSTE4bi5mYWxsYmFja3MgPSB0cnVlO1xuJiN4Mjc7CiAmcXVvdDsgIG1vbWVudC5sb2NhbGUoW0kxOG4ubG9jYWxlLCAmI3gyNztlbiYjeDI3O10pO1xuJnF1b3Q7CiAmI3gyNzsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7XG4mI3gyNzsKICYjeDI3OyZsdDttZXRhIG5hbWU9JnF1b3Q7Y3NyZi1wYXJhbSZxdW90OyBjb250ZW50PSZxdW90O2F1dGhlbnRpY2l0eV90b2tlbiZxdW90OyAvJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bWV0YSBuYW1lPSZxdW90O2NzcmYtdG9rZW4mcXVvdDsgJiN4Mjc7CiAmI3gyNztjb250ZW50PSZxdW90O2x4Vmc4OWFic2x0SUN0N1pQX1lNZHIzNURXeWtVb0hyeXVtSUZNN1RhamxPVWRzVVhaNlJYbHczYVFGbHdMM19iZmVKV2dEQzBMenJ0YlhRdTZNQmZ3JnF1b3Q7ICYjeDI3OwogJiN4Mjc7LyZndDtcbiYjeDI3OwogJnF1b3Q7Jmx0O21ldGEgY29udGVudD0mI3gyNztuby1jYWNoZSYjeDI3OyBuYW1lPSYjeDI3O3R1cmJvLWNhY2hlLWNvbnRyb2wmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDttZXRhIG5hbWU9JnF1b3Q7YWN0aW9uLWNhYmxlLXVybCZxdW90OyBjb250ZW50PSZxdW90Oy9jYWJsZSZxdW90OyAvJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7L2hlYWQmZ3Q7XG4mI3gyNzsKICZxdW90OyZsdDtib2R5IGJvZHktc2Nyb2xsPSYjeDI3O3RydWUmI3gyNzsgY2xhc3M9JiN4Mjc7b2ZmLWNhbnZhcyYjeDI3OyBkYXRhLXR1cmJvPSYjeDI3O2ZhbHNlJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7ZGl2IGNsYXNzPSYjeDI3O29mZi1jYW52YXMtd3JhcCYjeDI3OyBvZmZjYW52YXMmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtkaXYgY2xhc3M9JiN4Mjc7Zml4ZWQgb2ZmLWNhbnZhcy1maXhlZCYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O2RpdiBuZy1jb250cm9sbGVyPSYjeDI3O0NhcnREcm9wZG93bkN0cmwmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtuYXYgY2xhc3M9JiN4Mjc7dG9wLWJhciBzaG93LWZvci1sYXJnZS11cCYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O3NlY3Rpb24gY2xhc3M9JiN4Mjc7dG9wLWJhci1zZWN0aW9uJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7dWwgY2xhc3M9JiN4Mjc7bmF2LWxvZ28mI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtsaSBjbGFzcz0mI3gyNztvZm4tbG9nbyYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O2EgaHJlZj0mI3gyNzsvJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmI3gyNzsmbHQ7aW1nICYjeDI3OwogJnF1b3Q7c3JjPSYjeDI3OzxISURERU4tT1BFTklEX0FQUF9JRD5yYWlscy9hY3RpdmVfc3RvcmFnZS9ibG9icy9yZWRpcmVjdC9leUpmY21GcGJITWlPbnNpYldWemMyRm5aU0k2SWtKQmFIQkJNVEZqUVdjOVBTSXNJbVY0Y0NJNmJuVnNiQ3dpY0hWeUlqb2lZbXh2WWw5cFpDSjlmUT09LS02MWQzMmRkMzhhZDg5NmMxYzcxMDZjOGQ5ZTExZDk3OTA3ZGU3ZjlmL29mbi11ay5wbmcmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDsvYSZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0Oy9saSZndDtcbiYjeDI3OwogJnF1b3Q7Jmx0O2xpIGNsYXNzPSYjeDI3O3Bvd2VyZWQtYnkmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtpbWcgc3JjPSYjeDI3Oy9mYeKApiAmbHQ7dHJpbW1lZCAzMDEzNSBieXRlcyBzdHJpbmcmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgIAogICAgICAgIDwvbGk+CiAgICAgIAogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZnJhbWUgdXNlciI+CiAgICAgICAgICAKICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZuYW1lIj4vdXNyL2Fsd2F5c2RhdGEvcHl0aG9uLzMuMTEvbGliL3B5dGhvbjMuMTEvanNvbi9kZWNvZGVyLnB5PC9jb2RlPiwgbGluZSAzMzcsIGluIGRlY29kZQogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzMwNDQzNTIwIj4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iMzMwIiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzA0NDM1MjAiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0MzUyMCcsICdwb3N0MTQwNTE1NzMwNDQzNTIwJykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDM1MjAnLCAncG9zdDE0MDUxNTczMDQ0MzUyMCcpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQzNTIwJywgJ3Bvc3QxNDA1MTU3MzA0NDM1MjAnKSI+PHByZT4gICAgZGVmIGRlY29kZShzZWxmLCBzLCBfdz1XSElURVNQQUNFLm1hdGNoKTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0MzUyMCcsICdwb3N0MTQwNTE1NzMwNDQzNTIwJykiPjxwcmU+ICAgICAgICAmcXVvdDsmcXVvdDsmcXVvdDtSZXR1cm4gdGhlIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiBgYHNgYCAoYSBgYHN0cmBgIGluc3RhbmNlPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDM1MjAnLCAncG9zdDE0MDUxNTczMDQ0MzUyMCcpIj48cHJlPiAgICAgICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpLjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQzNTIwJywgJ3Bvc3QxNDA1MTU3MzA0NDM1MjAnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0MzUyMCcsICdwb3N0MTQwNTE1NzMwNDQzNTIwJykiPjxwcmU+ICAgICAgICAmcXVvdDsmcXVvdDsmcXVvdDs8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgIDxvbCBzdGFydD0iMzM3IiBjbGFzcz0iY29udGV4dC1saW5lIj4KICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0MzUyMCcsICdwb3N0MTQwNTE1NzMwNDQzNTIwJykiPjxwcmU+ICAgICAgICBvYmosIGVuZCA9IHNlbGYucmF3X2RlY29kZShzLCBpZHg9X3cocywgMCkuZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzMzOCcgY2xhc3M9InBvc3QtY29udGV4dCIgaWQ9InBvc3QxNDA1MTU3MzA0NDM1MjAiPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQzNTIwJywgJ3Bvc3QxNDA1MTU3MzA0NDM1MjAnKSI+PHByZT4gICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQzNTIwJywgJ3Bvc3QxNDA1MTU3MzA0NDM1MjAnKSI+PHByZT4gICAgICAgIGlmIGVuZCAhPSBsZW4ocyk6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0MzUyMCcsICdwb3N0MTQwNTE1NzMwNDQzNTIwJykiPjxwcmU+ICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCZxdW90O0V4dHJhIGRhdGEmcXVvdDssIHMsIGVuZCk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQzNTIwJywgJ3Bvc3QxNDA1MTU3MzA0NDM1MjAnKSI+PHByZT4gICAgICAgIHJldHVybiBvYmo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQzNTIwJywgJ3Bvc3QxNDA1MTU3MzA0NDM1MjAnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQzNTIwJywgJ3Bvc3QxNDA1MTU3MzA0NDM1MjAnKSI+PHByZT4gICAgZGVmIHJhd19kZWNvZGUoc2VsZiwgcywgaWR4PTApOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxkZXRhaWxzPgogICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9ImNvbW1hbmRzIj5Mb2NhbCB2YXJzPC9zdW1tYXJ5PgogICAgICAgICAgICAKICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ2YXJzIiBpZD0idjE0MDUxNTczMDQ0MzUyMCI+CiAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGg+VmFyaWFibGU8L3RoPgogICAgICAgICAgICAgICAgICA8dGg+VmFsdWU8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPl93PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O2J1aWx0LWluIG1ldGhvZCBtYXRjaCBvZiByZS5QYXR0ZXJuIG9iamVjdCBhdCAweDdmY2M2NzJhZWRjMCZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+czwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPigmcXVvdDsmbHQ7aHRtbCBuZy1jc3A9JiN4Mjc7bm8tdW5zYWZlLWV2YWwmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDtoZWFkJmd0O1xuJiN4Mjc7CiAmcXVvdDsmbHQ7bWV0YSBjaGFyc2V0PSYjeDI3O3V0Zi04JiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O3dpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCYjeDI3OyBuYW1lPSYjeDI3O3ZpZXdwb3J0JiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O09wZW4gRm9vZCBOZXR3b3JrJiN4Mjc7IHByb3BlcnR5PSYjeDI3O29nOnRpdGxlJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O1RoZSBPcGVuIEZvb2QgTmV0d29yayBzb2Z0d2FyZSBwbGF0Zm9ybSBhbGxvd3MgZmFybWVycyB0byAmcXVvdDsKICYjeDI3O3NlbGwgcHJvZHVjZSBvbmxpbmUsIGF0IGEgcHJpY2UgdGhhdCB3b3JrcyBmb3IgdGhlbS4gSXQgaGFzIGJlZW4gYnVpbHQgJiN4Mjc7CiAmI3gyNztzcGVjaWZpY2FsbHkgZm9yIHNlbGxpbmcgZm9vZCBzbyBpdCBjYW4gaGFuZGxlIHRyaWNreSBtZWFzdXJlcyBvciBzdG9jayAmI3gyNzsKICYjeDI3O2xldmVscyB0aGF0IG9ubHkgZm9vZCBoYXMgLSBhIGRvemVuIGVnZ3MsIGEgYnVuY2ggb2YgcGFyc2xleSwgYSB3aG9sZSAmI3gyNzsKICZxdW90O2NoaWNrZW4gdGhhdCB2YXJpZXMgaW4gd2VpZ2h04oCmJiN4Mjc7IHByb3BlcnR5PSYjeDI3O29nOmRlc2NyaXB0aW9uJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmI3gyNzsmbHQ7bWV0YSAmI3gyNzsKICZxdW90O2NvbnRlbnQ9JiN4Mjc7PEhJRERFTi1PUEVOSURfQVBQX0lEPnJhaWxzL2FjdGl2ZV9zdG9yYWdlL2Jsb2JzL3JlZGlyZWN0L2V5SmZjbUZwYkhNaU9uc2liV1Z6YzJGblpTSTZJa0pCYUhCQk1URmpRV2M5UFNJc0ltVjRjQ0k2Ym5Wc2JDd2ljSFZ5SWpvaVlteHZZbDlwWkNKOWZRPT0tLTYxZDMyZGQzOGFkODk2YzFjNzEwNmM4ZDllMTFkOTc5MDdkZTdmOWYvb2ZuLXVrLnBuZyYjeDI3OyAmcXVvdDsKICZxdW90O3Byb3BlcnR5PSYjeDI3O29nOmltYWdlJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O25vaW5kZXgmI3gyNzsgbmFtZT0mI3gyNztyb2JvdHMmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDt0aXRsZSZndDtXZWxjb21lIHRvIE9wZW4gRm9vZCBOZXR3b3JrJmx0Oy90aXRsZSZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O2xpbmsgcmVsPSZxdW90O2ljb24mcXVvdDsgdHlwZT0mcXVvdDtpbWFnZS94LWljb24mcXVvdDsgaHJlZj0mcXVvdDsvZmF2aWNvbi1zdGFnaW5nLmljbyZxdW90OyAvJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bGluayAmI3gyNzsKICZxdW90O2hyZWY9JiN4Mjc7aHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzo0MDAsMzAwaXRhbGljLDQwMGl0YWxpYywzMDAsNzAwLDcwMGl0YWxpY3xPc3dhbGQ6MzAwLDQwMCw3MDAmI3gyNzsgJnF1b3Q7CiAmcXVvdDtyZWw9JiN4Mjc7c3R5bGVzaGVldCYjeDI3OyB0eXBlPSYjeDI3O3RleHQvY3NzJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7bGluayBhcz0mI3gyNztmb250JiN4Mjc7IGNyb3Nzb3JpZ2luPSYjeDI3O2Fub255bW91cyYjeDI3OyAmcXVvdDsKICZxdW90O2hyZWY9JiN4Mjc7L3BhY2tzL21lZGlhL2ZvbnRzL09GTi12Mi1jMjczMDM3YjNiYTNlZTgyNjRiYzY3ZTMxZWEzZDcwMS53b2ZmJiN4Mjc7ICZxdW90OwogJnF1b3Q7cmVsPSYjeDI3O3ByZWxvYWQmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDtzY3JpcHQmZ3Q7XG4mI3gyNzsKICYjeDI3OyAgdmFyIF9tdG0gPSB3aW5kb3cuX210bSA9IHdpbmRvdy5fbXRtIHx8IFtdO1xuJiN4Mjc7CiAmcXVvdDsgIF9tdG0ucHVzaCh7JiN4Mjc7bXRtLnN0YXJ0VGltZSYjeDI3OzogKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSwgJiN4Mjc7ZXZlbnQmI3gyNzs6ICZxdW90OwogJnF1b3Q7JiN4Mjc7bXRtLlN0YXJ0JiN4Mjc7fSk7XG4mcXVvdDsKICZxdW90OyAgdmFyIGQ9ZG9jdW1lbnQsIGc9ZC5jcmVhdGVFbGVtZW50KCYjeDI3O3NjcmlwdCYjeDI3OyksICZxdW90OwogJnF1b3Q7cz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCYjeDI3O3NjcmlwdCYjeDI3OylbMF07XG4mcXVvdDsKICYjeDI3OyAgdmFyICYjeDI3OwogJiN4Mjc7dT0mcXVvdDtodHRwczovL2Nkbi5pbm5vY3JhZnQuY2xvdWQvb3BlbmZvb2RuZXR3b3JrLmlubm9jcmFmdC5jbG91ZC9jb250YWluZXJfN01BZ1d4aHIuanMmcXVvdDs7XG4mI3gyNzsKICZxdW90OyAgZy50eXBlPSYjeDI3O3RleHQvamF2YXNjcmlwdCYjeDI3OzsgZy5hc3luYz10cnVlOyBnLmRlZmVyPXRydWU7IGcuc3JjPXU7ICZxdW90OwogJiN4Mjc7cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpO1xuJiN4Mjc7CiAmI3gyNzsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7XG4mI3gyNzsKICYjeDI3OyZsdDtsaW5rIGhyZWZsYW5nPSZxdW90O2VuLWdiJnF1b3Q7ICYjeDI3OwogJiN4Mjc7aHJlZj0mcXVvdDs8SElEREVOLU9QRU5JRF9BUFBfSUQ+bG9jYWxlcy9lbl9HQiZxdW90OyZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O2xpbmsgaHJlZmxhbmc9JnF1b3Q7Y3kmcXVvdDsgJiN4Mjc7CiAmI3gyNztocmVmPSZxdW90OzxISURERU4tT1BFTklEX0FQUF9JRD5sb2NhbGVzL2N5JnF1b3Q7Jmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bGluayBocmVmbGFuZz0mcXVvdDtlbiZxdW90OyAmI3gyNzsKICYjeDI3O2hyZWY9JnF1b3Q7PEhJRERFTi1PUEVOSURfQVBQX0lEPmxvY2FsZXMvZW4mcXVvdDsmZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtsaW5rIHJlbD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IGhyZWY9JnF1b3Q7L3BhY2tzL2Nzcy9kYXJrc3dhcm0tNjU3ODc5MjEuY3NzJnF1b3Q7ICYjeDI3OwogJiN4Mjc7ZGF0YS10dXJiby10cmFjaz0mcXVvdDtyZWxvYWQmcXVvdDsgbWVkaWE9JnF1b3Q7c2NyZWVuJnF1b3Q7IC8mZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtzY3JpcHQgc3JjPSZxdW90Oy9wYWNrcy9qcy9hcHBsaWNhdGlvbi1jNDQxMzNmMGQ2MTEwM2NlZjA1Zi5qcyZxdW90OyAmI3gyNzsKICYjeDI3O2RhdGEtdHVyYm8tdHJhY2s9JnF1b3Q7cmVsb2FkJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNztcbiYjeDI3OwogJnF1b3Q7Jmx0O3NjcmlwdCBzcmM9JiN4Mjc7Ly9kMnd5OGY3YTl1cnNubS5jbG91ZGZyb250Lm5ldC92Ny9idWdzbmFnLm1pbi5qcyYjeDI3OyZndDsmbHQ7L3NjcmlwdCZndDtcbiZxdW90OwogJiN4Mjc7Jmx0O3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7ICBCdWdzbmFnLnN0YXJ0KHtcbiYjeDI3OwogJiN4Mjc7ICAgIGFwaUtleTogJnF1b3Q7ZjZjNGUyODVlY2Q3ZjU2ODM3OTNlOGQzZjRhM2RlNzcmcXVvdDssXG4mI3gyNzsKICYjeDI3OyAgICByZWxlYXNlU3RhZ2U6ICZxdW90O3N0YWdpbmcmcXVvdDtcbiYjeDI3OwogJiN4Mjc7ICB9KVxuJiN4Mjc7CiAmI3gyNzsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7XG4mI3gyNzsKICZxdW90OyZsdDtzY3JpcHQgc3JjPSYjeDI3O2h0dHBzOi8vanMuc3RyaXBlLmNvbS92My8mI3gyNzsgdHlwZT0mI3gyNzt0ZXh0L2phdmFzY3JpcHQmI3gyNzsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7XG4mcXVvdDsKICYjeDI3O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7c2NyaXB0ICYjeDI3OwogJiN4Mjc7c3JjPSZxdW90Oy9hc3NldHMvZGFya3N3YXJtL2FsbC0xODMzMDM5ZWE4MWMwMjU0NjEzMDBmNTlkMmE2ZTNhYTVmNzBlNTlkZjZiNzc3ZmVlNGY2MTY4NTJjZWFkNTAwLmpzJnF1b3Q7ICYjeDI3OwogJiN4Mjc7ZGF0YS10dXJiby10cmFjaz0mcXVvdDtyZWxvYWQmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtzY3JpcHQgJiN4Mjc7CiAmI3gyNztzcmM9JnF1b3Q7L2Fzc2V0cy93ZWIvYWxsLTFkYTFjYzZmZTZhNTBjNjAwYTQ1NTJhMmNjMWE0NTI5NzYyM2UzZDUxN2IwZTk1MjE5ZWQ1MWNkN2Y3OTgzNDIuanMmcXVvdDsgJiN4Mjc7CiAmI3gyNztkYXRhLXR1cmJvLXRyYWNrPSZxdW90O3JlbG9hZCZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7ICBJMThuLmRlZmF1bHRfbG9jYWxlID0gJnF1b3Q7ZW5fR0ImcXVvdDs7XG4mI3gyNzsKICYjeDI3OyAgSTE4bi5iYXNlX2xvY2FsZSA9ICZxdW90O2VuJnF1b3Q7O1xuJiN4Mjc7CiAmI3gyNzsgIEkxOG4ubG9jYWxlID0gJnF1b3Q7ZW5fR0ImcXVvdDs7XG4mI3gyNzsKICYjeDI3OyAgSTE4bi5mYWxsYmFja3MgPSB0cnVlO1xuJiN4Mjc7CiAmcXVvdDsgIG1vbWVudC5sb2NhbGUoW0kxOG4ubG9jYWxlLCAmI3gyNztlbiYjeDI3O10pO1xuJnF1b3Q7CiAmI3gyNzsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7XG4mI3gyNzsKICYjeDI3OyZsdDttZXRhIG5hbWU9JnF1b3Q7Y3NyZi1wYXJhbSZxdW90OyBjb250ZW50PSZxdW90O2F1dGhlbnRpY2l0eV90b2tlbiZxdW90OyAvJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bWV0YSBuYW1lPSZxdW90O2NzcmYtdG9rZW4mcXVvdDsgJiN4Mjc7CiAmI3gyNztjb250ZW50PSZxdW90O2x4Vmc4OWFic2x0SUN0N1pQX1lNZHIzNURXeWtVb0hyeXVtSUZNN1RhamxPVWRzVVhaNlJYbHczYVFGbHdMM19iZmVKV2dEQzBMenJ0YlhRdTZNQmZ3JnF1b3Q7ICYjeDI3OwogJiN4Mjc7LyZndDtcbiYjeDI3OwogJnF1b3Q7Jmx0O21ldGEgY29udGVudD0mI3gyNztuby1jYWNoZSYjeDI3OyBuYW1lPSYjeDI3O3R1cmJvLWNhY2hlLWNvbnRyb2wmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDttZXRhIG5hbWU9JnF1b3Q7YWN0aW9uLWNhYmxlLXVybCZxdW90OyBjb250ZW50PSZxdW90Oy9jYWJsZSZxdW90OyAvJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7L2hlYWQmZ3Q7XG4mI3gyNzsKICZxdW90OyZsdDtib2R5IGJvZHktc2Nyb2xsPSYjeDI3O3RydWUmI3gyNzsgY2xhc3M9JiN4Mjc7b2ZmLWNhbnZhcyYjeDI3OyBkYXRhLXR1cmJvPSYjeDI3O2ZhbHNlJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7ZGl2IGNsYXNzPSYjeDI3O29mZi1jYW52YXMtd3JhcCYjeDI3OyBvZmZjYW52YXMmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtkaXYgY2xhc3M9JiN4Mjc7Zml4ZWQgb2ZmLWNhbnZhcy1maXhlZCYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O2RpdiBuZy1jb250cm9sbGVyPSYjeDI3O0NhcnREcm9wZG93bkN0cmwmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtuYXYgY2xhc3M9JiN4Mjc7dG9wLWJhciBzaG93LWZvci1sYXJnZS11cCYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O3NlY3Rpb24gY2xhc3M9JiN4Mjc7dG9wLWJhci1zZWN0aW9uJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7dWwgY2xhc3M9JiN4Mjc7bmF2LWxvZ28mI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtsaSBjbGFzcz0mI3gyNztvZm4tbG9nbyYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O2EgaHJlZj0mI3gyNzsvJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmI3gyNzsmbHQ7aW1nICYjeDI3OwogJnF1b3Q7c3JjPSYjeDI3OzxISURERU4tT1BFTklEX0FQUF9JRD5yYWlscy9hY3RpdmVfc3RvcmFnZS9ibG9icy9yZWRpcmVjdC9leUpmY21GcGJITWlPbnNpYldWemMyRm5aU0k2SWtKQmFIQkJNVEZqUVdjOVBTSXNJbVY0Y0NJNmJuVnNiQ3dpY0hWeUlqb2lZbXh2WWw5cFpDSjlmUT09LS02MWQzMmRkMzhhZDg5NmMxYzcxMDZjOGQ5ZTExZDk3OTA3ZGU3ZjlmL29mbi11ay5wbmcmI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDsvYSZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0Oy9saSZndDtcbiYjeDI3OwogJnF1b3Q7Jmx0O2xpIGNsYXNzPSYjeDI3O3Bvd2VyZWQtYnkmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtpbWcgc3JjPSYjeDI3Oy9mYeKApiAmbHQ7dHJpbW1lZCAzMDEzNSBieXRlcyBzdHJpbmcmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7anNvbi5kZWNvZGVyLkpTT05EZWNvZGVyIG9iamVjdCBhdCAweDdmY2M2NzJjZGY1MCZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgCiAgICAgICAgPC9saT4KICAgICAgCiAgICAgICAgCiAgICAgICAgPGxpIGNsYXNzPSJmcmFtZSB1c2VyIj4KICAgICAgICAgIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iZm5hbWUiPi91c3IvYWx3YXlzZGF0YS9weXRob24vMy4xMS9saWIvcHl0aG9uMy4xMS9qc29uL2RlY29kZXIucHk8L2NvZGU+LCBsaW5lIDM1NSwgaW4gcmF3X2RlY29kZQogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzI4NDc0ODgwIj4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iMzQ4IiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3Mjg0NzQ4ODAiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTcyODQ3NDg4MCcsICdwb3N0MTQwNTE1NzI4NDc0ODgwJykiPjxwcmU+ICAgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGRlY29kZSBhIEpTT04gZG9jdW1lbnQgZnJvbSBhIHN0cmluZyB0aGF0IG1heTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzI4NDc0ODgwJywgJ3Bvc3QxNDA1MTU3Mjg0NzQ4ODAnKSI+PHByZT4gICAgICAgIGhhdmUgZXh0cmFuZW91cyBkYXRhIGF0IHRoZSBlbmQuPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3Mjg0NzQ4ODAnLCAncG9zdDE0MDUxNTcyODQ3NDg4MCcpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzI4NDc0ODgwJywgJ3Bvc3QxNDA1MTU3Mjg0NzQ4ODAnKSI+PHByZT4gICAgICAgICZxdW90OyZxdW90OyZxdW90OzwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzI4NDc0ODgwJywgJ3Bvc3QxNDA1MTU3Mjg0NzQ4ODAnKSI+PHByZT4gICAgICAgIHRyeTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTcyODQ3NDg4MCcsICdwb3N0MTQwNTE1NzI4NDc0ODgwJykiPjxwcmU+ICAgICAgICAgICAgb2JqLCBlbmQgPSBzZWxmLnNjYW5fb25jZShzLCBpZHgpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3Mjg0NzQ4ODAnLCAncG9zdDE0MDUxNTcyODQ3NDg4MCcpIj48cHJlPiAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSIzNTUiIGNsYXNzPSJjb250ZXh0LWxpbmUiPgogICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzI4NDc0ODgwJywgJ3Bvc3QxNDA1MTU3Mjg0NzQ4ODAnKSI+PHByZT4gICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoJnF1b3Q7RXhwZWN0aW5nIHZhbHVlJnF1b3Q7LCBzLCBlcnIudmFsdWUpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl48L3ByZT4gPHNwYW4+4oCmPC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0nMzU2JyBjbGFzcz0icG9zdC1jb250ZXh0IiBpZD0icG9zdDE0MDUxNTcyODQ3NDg4MCI+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3Mjg0NzQ4ODAnLCAncG9zdDE0MDUxNTcyODQ3NDg4MCcpIj48cHJlPiAgICAgICAgcmV0dXJuIG9iaiwgZW5kPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGRldGFpbHM+CiAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iY29tbWFuZHMiPkxvY2FsIHZhcnM8L3N1bW1hcnk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8dGFibGUgY2xhc3M9InZhcnMiIGlkPSJ2MTQwNTE1NzI4NDc0ODgwIj4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5WYXJpYWJsZTwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+aWR4PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+MDwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5zPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+KCZxdW90OyZsdDtodG1sIG5nLWNzcD0mI3gyNztuby11bnNhZmUtZXZhbCYjeDI3OyZndDtcbiZxdW90OwogJiN4Mjc7Jmx0O2hlYWQmZ3Q7XG4mI3gyNzsKICZxdW90OyZsdDttZXRhIGNoYXJzZXQ9JiN4Mjc7dXRmLTgmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDttZXRhIGNvbnRlbnQ9JiN4Mjc7d2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MS4wJiN4Mjc7IG5hbWU9JiN4Mjc7dmlld3BvcnQmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDttZXRhIGNvbnRlbnQ9JiN4Mjc7T3BlbiBGb29kIE5ldHdvcmsmI3gyNzsgcHJvcGVydHk9JiN4Mjc7b2c6dGl0bGUmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDttZXRhIGNvbnRlbnQ9JiN4Mjc7VGhlIE9wZW4gRm9vZCBOZXR3b3JrIHNvZnR3YXJlIHBsYXRmb3JtIGFsbG93cyBmYXJtZXJzIHRvICZxdW90OwogJiN4Mjc7c2VsbCBwcm9kdWNlIG9ubGluZSwgYXQgYSBwcmljZSB0aGF0IHdvcmtzIGZvciB0aGVtLiBJdCBoYXMgYmVlbiBidWlsdCAmI3gyNzsKICYjeDI3O3NwZWNpZmljYWxseSBmb3Igc2VsbGluZyBmb29kIHNvIGl0IGNhbiBoYW5kbGUgdHJpY2t5IG1lYXN1cmVzIG9yIHN0b2NrICYjeDI3OwogJiN4Mjc7bGV2ZWxzIHRoYXQgb25seSBmb29kIGhhcyAtIGEgZG96ZW4gZWdncywgYSBidW5jaCBvZiBwYXJzbGV5LCBhIHdob2xlICYjeDI3OwogJnF1b3Q7Y2hpY2tlbiB0aGF0IHZhcmllcyBpbiB3ZWlnaHTigKYmI3gyNzsgcHJvcGVydHk9JiN4Mjc7b2c6ZGVzY3JpcHRpb24mI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDttZXRhICYjeDI3OwogJnF1b3Q7Y29udGVudD0mI3gyNzs8SElEREVOLU9QRU5JRF9BUFBfSUQ+cmFpbHMvYWN0aXZlX3N0b3JhZ2UvYmxvYnMvcmVkaXJlY3QvZXlKZmNtRnBiSE1pT25zaWJXVnpjMkZuWlNJNklrSkJhSEJCTVRGalFXYzlQU0lzSW1WNGNDSTZiblZzYkN3aWNIVnlJam9pWW14dllsOXBaQ0o5ZlE9PS0tNjFkMzJkZDM4YWQ4OTZjMWM3MTA2YzhkOWUxMWQ5NzkwN2RlN2Y5Zi9vZm4tdWsucG5nJiN4Mjc7ICZxdW90OwogJnF1b3Q7cHJvcGVydHk9JiN4Mjc7b2c6aW1hZ2UmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDttZXRhIGNvbnRlbnQ9JiN4Mjc7bm9pbmRleCYjeDI3OyBuYW1lPSYjeDI3O3JvYm90cyYjeDI3OyZndDtcbiZxdW90OwogJiN4Mjc7Jmx0O3RpdGxlJmd0O1dlbGNvbWUgdG8gT3BlbiBGb29kIE5ldHdvcmsmbHQ7L3RpdGxlJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bGluayByZWw9JnF1b3Q7aWNvbiZxdW90OyB0eXBlPSZxdW90O2ltYWdlL3gtaWNvbiZxdW90OyBocmVmPSZxdW90Oy9mYXZpY29uLXN0YWdpbmcuaWNvJnF1b3Q7IC8mZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtsaW5rICYjeDI3OwogJnF1b3Q7aHJlZj0mI3gyNztodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvOjQwMCwzMDBpdGFsaWMsNDAwaXRhbGljLDMwMCw3MDAsNzAwaXRhbGljfE9zd2FsZDozMDAsNDAwLDcwMCYjeDI3OyAmcXVvdDsKICZxdW90O3JlbD0mI3gyNztzdHlsZXNoZWV0JiN4Mjc7IHR5cGU9JiN4Mjc7dGV4dC9jc3MmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtsaW5rIGFzPSYjeDI3O2ZvbnQmI3gyNzsgY3Jvc3NvcmlnaW49JiN4Mjc7YW5vbnltb3VzJiN4Mjc7ICZxdW90OwogJnF1b3Q7aHJlZj0mI3gyNzsvcGFja3MvbWVkaWEvZm9udHMvT0ZOLXYyLWMyNzMwMzdiM2JhM2VlODI2NGJjNjdlMzFlYTNkNzAxLndvZmYmI3gyNzsgJnF1b3Q7CiAmcXVvdDtyZWw9JiN4Mjc7cHJlbG9hZCYjeDI3OyZndDtcbiZxdW90OwogJiN4Mjc7Jmx0O3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7ICB2YXIgX210bSA9IHdpbmRvdy5fbXRtID0gd2luZG93Ll9tdG0gfHwgW107XG4mI3gyNzsKICZxdW90OyAgX210bS5wdXNoKHsmI3gyNzttdG0uc3RhcnRUaW1lJiN4Mjc7OiAobmV3IERhdGUoKS5nZXRUaW1lKCkpLCAmI3gyNztldmVudCYjeDI3OzogJnF1b3Q7CiAmcXVvdDsmI3gyNzttdG0uU3RhcnQmI3gyNzt9KTtcbiZxdW90OwogJnF1b3Q7ICB2YXIgZD1kb2N1bWVudCwgZz1kLmNyZWF0ZUVsZW1lbnQoJiN4Mjc7c2NyaXB0JiN4Mjc7KSwgJnF1b3Q7CiAmcXVvdDtzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJiN4Mjc7c2NyaXB0JiN4Mjc7KVswXTtcbiZxdW90OwogJiN4Mjc7ICB2YXIgJiN4Mjc7CiAmI3gyNzt1PSZxdW90O2h0dHBzOi8vY2RuLmlubm9jcmFmdC5jbG91ZC9vcGVuZm9vZG5ldHdvcmsuaW5ub2NyYWZ0LmNsb3VkL2NvbnRhaW5lcl83TUFnV3hoci5qcyZxdW90OztcbiYjeDI3OwogJnF1b3Q7ICBnLnR5cGU9JiN4Mjc7dGV4dC9qYXZhc2NyaXB0JiN4Mjc7OyBnLmFzeW5jPXRydWU7IGcuZGVmZXI9dHJ1ZTsgZy5zcmM9dTsgJnF1b3Q7CiAmI3gyNztzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcscyk7XG4mI3gyNzsKICYjeDI3OyZsdDsvc2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNztcbiYjeDI3OwogJiN4Mjc7Jmx0O2xpbmsgaHJlZmxhbmc9JnF1b3Q7ZW4tZ2ImcXVvdDsgJiN4Mjc7CiAmI3gyNztocmVmPSZxdW90OzxISURERU4tT1BFTklEX0FQUF9JRD5sb2NhbGVzL2VuX0dCJnF1b3Q7Jmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7bGluayBocmVmbGFuZz0mcXVvdDtjeSZxdW90OyAmI3gyNzsKICYjeDI3O2hyZWY9JnF1b3Q7PEhJRERFTi1PUEVOSURfQVBQX0lEPmxvY2FsZXMvY3kmcXVvdDsmZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDtsaW5rIGhyZWZsYW5nPSZxdW90O2VuJnF1b3Q7ICYjeDI3OwogJiN4Mjc7aHJlZj0mcXVvdDs8SElEREVOLU9QRU5JRF9BUFBfSUQ+bG9jYWxlcy9lbiZxdW90OyZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsgaHJlZj0mcXVvdDsvcGFja3MvY3NzL2Rhcmtzd2FybS02NTc4NzkyMS5jc3MmcXVvdDsgJiN4Mjc7CiAmI3gyNztkYXRhLXR1cmJvLXRyYWNrPSZxdW90O3JlbG9hZCZxdW90OyBtZWRpYT0mcXVvdDtzY3JlZW4mcXVvdDsgLyZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O3NjcmlwdCBzcmM9JnF1b3Q7L3BhY2tzL2pzL2FwcGxpY2F0aW9uLWM0NDEzM2YwZDYxMTAzY2VmMDVmLmpzJnF1b3Q7ICYjeDI3OwogJiN4Mjc7ZGF0YS10dXJiby10cmFjaz0mcXVvdDtyZWxvYWQmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7XG4mI3gyNzsKICYjeDI3O1xuJiN4Mjc7CiAmcXVvdDsmbHQ7c2NyaXB0IHNyYz0mI3gyNzsvL2Qyd3k4ZjdhOXVyc25tLmNsb3VkZnJvbnQubmV0L3Y3L2J1Z3NuYWcubWluLmpzJiN4Mjc7Jmd0OyZsdDsvc2NyaXB0Jmd0O1xuJnF1b3Q7CiAmI3gyNzsmbHQ7c2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNzsgIEJ1Z3NuYWcuc3RhcnQoe1xuJiN4Mjc7CiAmI3gyNzsgICAgYXBpS2V5OiAmcXVvdDtmNmM0ZTI4NWVjZDdmNTY4Mzc5M2U4ZDNmNGEzZGU3NyZxdW90OyxcbiYjeDI3OwogJiN4Mjc7ICAgIHJlbGVhc2VTdGFnZTogJnF1b3Q7c3RhZ2luZyZxdW90O1xuJiN4Mjc7CiAmI3gyNzsgIH0pXG4mI3gyNzsKICYjeDI3OyZsdDsvc2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNztcbiYjeDI3OwogJnF1b3Q7Jmx0O3NjcmlwdCBzcmM9JiN4Mjc7aHR0cHM6Ly9qcy5zdHJpcGUuY29tL3YzLyYjeDI3OyB0eXBlPSYjeDI3O3RleHQvamF2YXNjcmlwdCYjeDI3OyZndDsmbHQ7L3NjcmlwdCZndDtcbiZxdW90OwogJiN4Mjc7XG4mI3gyNzsKICYjeDI3OyZsdDtzY3JpcHQgJiN4Mjc7CiAmI3gyNztzcmM9JnF1b3Q7L2Fzc2V0cy9kYXJrc3dhcm0vYWxsLTE4MzMwMzllYTgxYzAyNTQ2MTMwMGY1OWQyYTZlM2FhNWY3MGU1OWRmNmI3NzdmZWU0ZjYxNjg1MmNlYWQ1MDAuanMmcXVvdDsgJiN4Mjc7CiAmI3gyNztkYXRhLXR1cmJvLXRyYWNrPSZxdW90O3JlbG9hZCZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDtcbiYjeDI3OwogJiN4Mjc7Jmx0O3NjcmlwdCAmI3gyNzsKICYjeDI3O3NyYz0mcXVvdDsvYXNzZXRzL3dlYi9hbGwtMWRhMWNjNmZlNmE1MGM2MDBhNDU1MmEyY2MxYTQ1Mjk3NjIzZTNkNTE3YjBlOTUyMTllZDUxY2Q3Zjc5ODM0Mi5qcyZxdW90OyAmI3gyNzsKICYjeDI3O2RhdGEtdHVyYm8tdHJhY2s9JnF1b3Q7cmVsb2FkJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7c2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNzsgIEkxOG4uZGVmYXVsdF9sb2NhbGUgPSAmcXVvdDtlbl9HQiZxdW90OztcbiYjeDI3OwogJiN4Mjc7ICBJMThuLmJhc2VfbG9jYWxlID0gJnF1b3Q7ZW4mcXVvdDs7XG4mI3gyNzsKICYjeDI3OyAgSTE4bi5sb2NhbGUgPSAmcXVvdDtlbl9HQiZxdW90OztcbiYjeDI3OwogJiN4Mjc7ICBJMThuLmZhbGxiYWNrcyA9IHRydWU7XG4mI3gyNzsKICZxdW90OyAgbW9tZW50LmxvY2FsZShbSTE4bi5sb2NhbGUsICYjeDI3O2VuJiN4Mjc7XSk7XG4mcXVvdDsKICYjeDI3OyZsdDsvc2NyaXB0Jmd0O1xuJiN4Mjc7CiAmI3gyNztcbiYjeDI3OwogJiN4Mjc7Jmx0O21ldGEgbmFtZT0mcXVvdDtjc3JmLXBhcmFtJnF1b3Q7IGNvbnRlbnQ9JnF1b3Q7YXV0aGVudGljaXR5X3Rva2VuJnF1b3Q7IC8mZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDttZXRhIG5hbWU9JnF1b3Q7Y3NyZi10b2tlbiZxdW90OyAmI3gyNzsKICYjeDI3O2NvbnRlbnQ9JnF1b3Q7bHhWZzg5YWJzbHRJQ3Q3WlBfWU1kcjM1RFd5a1VvSHJ5dW1JRk03VGFqbE9VZHNVWFo2UlhsdzNhUUZsd0wzX2JmZUpXZ0RDMEx6cnRiWFF1Nk1CZncmcXVvdDsgJiN4Mjc7CiAmI3gyNzsvJmd0O1xuJiN4Mjc7CiAmcXVvdDsmbHQ7bWV0YSBjb250ZW50PSYjeDI3O25vLWNhY2hlJiN4Mjc7IG5hbWU9JiN4Mjc7dHVyYm8tY2FjaGUtY29udHJvbCYjeDI3OyZndDtcbiZxdW90OwogJiN4Mjc7Jmx0O21ldGEgbmFtZT0mcXVvdDthY3Rpb24tY2FibGUtdXJsJnF1b3Q7IGNvbnRlbnQ9JnF1b3Q7L2NhYmxlJnF1b3Q7IC8mZ3Q7XG4mI3gyNzsKICYjeDI3OyZsdDsvaGVhZCZndDtcbiYjeDI3OwogJnF1b3Q7Jmx0O2JvZHkgYm9keS1zY3JvbGw9JiN4Mjc7dHJ1ZSYjeDI3OyBjbGFzcz0mI3gyNztvZmYtY2FudmFzJiN4Mjc7IGRhdGEtdHVyYm89JiN4Mjc7ZmFsc2UmI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDtkaXYgY2xhc3M9JiN4Mjc7b2ZmLWNhbnZhcy13cmFwJiN4Mjc7IG9mZmNhbnZhcyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O2RpdiBjbGFzcz0mI3gyNztmaXhlZCBvZmYtY2FudmFzLWZpeGVkJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7ZGl2IG5nLWNvbnRyb2xsZXI9JiN4Mjc7Q2FydERyb3Bkb3duQ3RybCYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O25hdiBjbGFzcz0mI3gyNzt0b3AtYmFyIHNob3ctZm9yLWxhcmdlLXVwJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7c2VjdGlvbiBjbGFzcz0mI3gyNzt0b3AtYmFyLXNlY3Rpb24mI3gyNzsmZ3Q7XG4mcXVvdDsKICZxdW90OyZsdDt1bCBjbGFzcz0mI3gyNztuYXYtbG9nbyYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O2xpIGNsYXNzPSYjeDI3O29mbi1sb2dvJiN4Mjc7Jmd0O1xuJnF1b3Q7CiAmcXVvdDsmbHQ7YSBocmVmPSYjeDI3Oy8mI3gyNzsmZ3Q7XG4mcXVvdDsKICYjeDI3OyZsdDtpbWcgJiN4Mjc7CiAmcXVvdDtzcmM9JiN4Mjc7PEhJRERFTi1PUEVOSURfQVBQX0lEPnJhaWxzL2FjdGl2ZV9zdG9yYWdlL2Jsb2JzL3JlZGlyZWN0L2V5SmZjbUZwYkhNaU9uc2liV1Z6YzJGblpTSTZJa0pCYUhCQk1URmpRV2M5UFNJc0ltVjRjQ0k2Ym5Wc2JDd2ljSFZ5SWpvaVlteHZZbDlwWkNKOWZRPT0tLTYxZDMyZGQzOGFkODk2YzFjNzEwNmM4ZDllMTFkOTc5MDdkZTdmOWYvb2ZuLXVrLnBuZyYjeDI3OyZndDtcbiZxdW90OwogJiN4Mjc7Jmx0Oy9hJmd0O1xuJiN4Mjc7CiAmI3gyNzsmbHQ7L2xpJmd0O1xuJiN4Mjc7CiAmcXVvdDsmbHQ7bGkgY2xhc3M9JiN4Mjc7cG93ZXJlZC1ieSYjeDI3OyZndDtcbiZxdW90OwogJnF1b3Q7Jmx0O2ltZyBzcmM9JiN4Mjc7L2Zh4oCmICZsdDt0cmltbWVkIDMwMTM1IGJ5dGVzIHN0cmluZyZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+c2VsZjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtqc29uLmRlY29kZXIuSlNPTkRlY29kZXIgb2JqZWN0IGF0IDB4N2ZjYzY3MmNkZjUwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAKICAgICAgICA8L2xpPgogICAgICAKICAgICAgICAKICAgICAgICAgIDxsaSBjbGFzcz0iY2F1c2UiPjxoMz4KICAgICAgICAgIAogICAgICAgICAgICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiAoRXhwZWN0aW5nIHZhbHVlOiBsaW5lIDEgY29sdW1uIDEgKGNoYXIgMCkpLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKICAgICAgICAgIAogICAgICAgIDwvaDM+PC9saT4KICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImZyYW1lIGRqYW5nbyI+CiAgICAgICAgICAKICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZuYW1lIj4vaG9tZS9jcWNtLXByb3h5LWRldi9zdGFydGluYmxveC92ZW52L2xpYi9weXRob24zLjExL3NpdGUtcGFja2FnZXMvZGphbmdvL2NvcmUvaGFuZGxlcnMvZXhjZXB0aW9uLnB5PC9jb2RlPiwgbGluZSA1NSwgaW4gaW5uZXIKICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZXh0IiBpZD0iYzE0MDUxNTczMDM4MzI5NiI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9IjQ4IiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzAzODMyOTYiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzI5NicsICdwb3N0MTQwNTE1NzMwMzgzMjk2JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPiAgICAgICAgcmV0dXJuIGlubmVyPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPiAgICBlbHNlOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzMjk2JywgJ3Bvc3QxNDA1MTU3MzAzODMyOTYnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzI5NicsICdwb3N0MTQwNTE1NzMwMzgzMjk2JykiPjxwcmU+ICAgICAgICBAd3JhcHMoZ2V0X3Jlc3BvbnNlKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzMjk2JywgJ3Bvc3QxNDA1MTU3MzAzODMyOTYnKSI+PHByZT4gICAgICAgIGRlZiBpbm5lcihyZXF1ZXN0KTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzI5NicsICdwb3N0MTQwNTE1NzMwMzgzMjk2JykiPjxwcmU+ICAgICAgICAgICAgdHJ5OjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI1NSIgY2xhc3M9ImNvbnRleHQtbGluZSI+CiAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGdldF9yZXNwb25zZShyZXF1ZXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzU2JyBjbGFzcz0icG9zdC1jb250ZXh0IiBpZD0icG9zdDE0MDUxNTczMDM4MzI5NiI+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPiAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJlc3BvbnNlX2Zvcl9leGNlcHRpb24ocmVxdWVzdCwgZXhjKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMyOTYnLCAncG9zdDE0MDUxNTczMDM4MzI5NicpIj48cHJlPiAgICAgICAgcmV0dXJuIGlubmVyPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzI5NicsICdwb3N0MTQwNTE1NzMwMzgzMjk2JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGRldGFpbHM+CiAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iY29tbWFuZHMiPkxvY2FsIHZhcnM8L3N1bW1hcnk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8dGFibGUgY2xhc3M9InZhcnMiIGlkPSJ2MTQwNTE1NzMwMzgzMjk2Ij4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5WYXJpYWJsZTwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+ZXhjPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+SlNPTkRlY29kZUVycm9yKCYjeDI3O0V4cGVjdGluZyB2YWx1ZTogbGluZSAxIGNvbHVtbiAxIChjaGFyIDApJiN4Mjc7KTwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5nZXRfcmVzcG9uc2U8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7Ym91bmQgbWV0aG9kIEJhc2VIYW5kbGVyLl9nZXRfcmVzcG9uc2Ugb2YgJmx0O2RqYW5nby5jb3JlLmhhbmRsZXJzLndzZ2kuV1NHSUhhbmRsZXIgb2JqZWN0IGF0IDB4N2ZjYzY1MmJjZGQwJmd0OyZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cmVxdWVzdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtXU0dJUmVxdWVzdDogUE9TVCAmI3gyNzsvZGphbmdvbGRwLWRmYy93ZWJob29rLyYjeDI3OyZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgCiAgICAgICAgPC9saT4KICAgICAgCiAgICAgICAgCiAgICAgICAgPGxpIGNsYXNzPSJmcmFtZSBkamFuZ28iPgogICAgICAgICAgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmbmFtZSI+L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL2RqYW5nby9jb3JlL2hhbmRsZXJzL2Jhc2UucHk8L2NvZGU+LCBsaW5lIDE5NywgaW4gX2dldF9yZXNwb25zZQogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzMwMzgyNTI4Ij4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iMTkwIiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzAzODI1MjgiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjUyOCcsICdwb3N0MTQwNTE1NzMwMzgyNTI4JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI1MjgnLCAncG9zdDE0MDUxNTczMDM4MjUyOCcpIj48cHJlPiAgICAgICAgaWYgcmVzcG9uc2UgaXMgTm9uZTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjUyOCcsICdwb3N0MTQwNTE1NzMwMzgyNTI4JykiPjxwcmU+ICAgICAgICAgICAgd3JhcHBlZF9jYWxsYmFjayA9IHNlbGYubWFrZV92aWV3X2F0b21pYyhjYWxsYmFjayk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjUyOCcsICdwb3N0MTQwNTE1NzMwMzgyNTI4JykiPjxwcmU+ICAgICAgICAgICAgIyBJZiBpdCBpcyBhbiBhc3luY2hyb25vdXMgdmlldywgcnVuIGl0IGluIGEgc3VidGhyZWFkLjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyNTI4JywgJ3Bvc3QxNDA1MTU3MzAzODI1MjgnKSI+PHByZT4gICAgICAgICAgICBpZiBpc2Nvcm91dGluZWZ1bmN0aW9uKHdyYXBwZWRfY2FsbGJhY2spOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyNTI4JywgJ3Bvc3QxNDA1MTU3MzAzODI1MjgnKSI+PHByZT4gICAgICAgICAgICAgICAgd3JhcHBlZF9jYWxsYmFjayA9IGFzeW5jX3RvX3N5bmMod3JhcHBlZF9jYWxsYmFjayk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjUyOCcsICdwb3N0MTQwNTE1NzMwMzgyNTI4JykiPjxwcmU+ICAgICAgICAgICAgdHJ5OjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSIxOTciIGNsYXNzPSJjb250ZXh0LWxpbmUiPgogICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyNTI4JywgJ3Bvc3QxNDA1MTU3MzAzODI1MjgnKSI+PHByZT4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB3cmFwcGVkX2NhbGxiYWNrKHJlcXVlc3QsICpjYWxsYmFja19hcmdzLCAqKmNhbGxiYWNrX2t3YXJncykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl48L3ByZT4gPHNwYW4+4oCmPC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0nMTk4JyBjbGFzcz0icG9zdC1jb250ZXh0IiBpZD0icG9zdDE0MDUxNTczMDM4MjUyOCI+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI1MjgnLCAncG9zdDE0MDUxNTczMDM4MjUyOCcpIj48cHJlPiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyNTI4JywgJ3Bvc3QxNDA1MTU3MzAzODI1MjgnKSI+PHByZT4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnByb2Nlc3NfZXhjZXB0aW9uX2J5X21pZGRsZXdhcmUoZSwgcmVxdWVzdCk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyNTI4JywgJ3Bvc3QxNDA1MTU3MzAzODI1MjgnKSI+PHByZT4gICAgICAgICAgICAgICAgaWYgcmVzcG9uc2UgaXMgTm9uZTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyNTI4JywgJ3Bvc3QxNDA1MTU3MzAzODI1MjgnKSI+PHByZT4gICAgICAgICAgICAgICAgICAgIHJhaXNlPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjUyOCcsICdwb3N0MTQwNTE1NzMwMzgyNTI4JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjUyOCcsICdwb3N0MTQwNTE1NzMwMzgyNTI4JykiPjxwcmU+ICAgICAgICAjIENvbXBsYWluIGlmIHRoZSB2aWV3IHJldHVybmVkIE5vbmUgKGEgY29tbW9uIGVycm9yKS48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJjb21tYW5kcyI+TG9jYWwgdmFyczwvc3VtbWFyeT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idmFycyIgaWQ9InYxNDA1MTU3MzAzODI1MjgiPgogICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5jYWxsYmFjazwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtmdW5jdGlvbiBWaWV3LmFzX3ZpZXcuJmx0O2xvY2FscyZndDsudmlldyBhdCAweDdmY2M1ZWNhNDQwMCZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+Y2FsbGJhY2tfYXJnczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPigpPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmNhbGxiYWNrX2t3YXJnczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPnt9PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPm1pZGRsZXdhcmVfbWV0aG9kPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O2JvdW5kIG1ldGhvZCBDc3JmVmlld01pZGRsZXdhcmUucHJvY2Vzc192aWV3IG9mICZsdDtDc3JmVmlld01pZGRsZXdhcmUgZ2V0X3Jlc3BvbnNlPWNvbnZlcnRfZXhjZXB0aW9uX3RvX3Jlc3BvbnNlLiZsdDtsb2NhbHMmZ3Q7LmlubmVyJmd0OyZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cmVxdWVzdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtXU0dJUmVxdWVzdDogUE9TVCAmI3gyNzsvZGphbmdvbGRwLWRmYy93ZWJob29rLyYjeDI3OyZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cmVzcG9uc2U8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5Ob25lPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZGphbmdvLmNvcmUuaGFuZGxlcnMud3NnaS5XU0dJSGFuZGxlciBvYmplY3QgYXQgMHg3ZmNjNjUyYmNkZDAmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPndyYXBwZWRfY2FsbGJhY2s8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZnVuY3Rpb24gVmlldy5hc192aWV3LiZsdDtsb2NhbHMmZ3Q7LnZpZXcgYXQgMHg3ZmNjNWVjYTQ0MDAmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgIAogICAgICAgIDwvbGk+CiAgICAgIAogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZnJhbWUgZGphbmdvIj4KICAgICAgICAgIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iZm5hbWUiPi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9kamFuZ28vdmlld3MvZGVjb3JhdG9ycy9jc3JmLnB5PC9jb2RlPiwgbGluZSA1NiwgaW4gd3JhcHBlcl92aWV3CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dCIgaWQ9ImMxNDA1MTU3MzAzODMzNjAiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI0OSIgY2xhc3M9InByZS1jb250ZXh0IiBpZD0icHJlMTQwNTE1NzMwMzgzMzYwIj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMzNjAnLCAncG9zdDE0MDUxNTczMDM4MzM2MCcpIj48cHJlPmRlZiBjc3JmX2V4ZW1wdCh2aWV3X2Z1bmMpOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzMzYwJywgJ3Bvc3QxNDA1MTU3MzAzODMzNjAnKSI+PHByZT4gICAgJnF1b3Q7JnF1b3Q7JnF1b3Q7TWFyayBhIHZpZXcgZnVuY3Rpb24gYXMgYmVpbmcgZXhlbXB0IGZyb20gdGhlIENTUkYgdmlldyBwcm90ZWN0aW9uLiZxdW90OyZxdW90OyZxdW90OzwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzMzYwJywgJ3Bvc3QxNDA1MTU3MzAzODMzNjAnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzM2MCcsICdwb3N0MTQwNTE1NzMwMzgzMzYwJykiPjxwcmU+ICAgICMgdmlld19mdW5jLmNzcmZfZXhlbXB0ID0gVHJ1ZSB3b3VsZCBhbHNvIHdvcmssIGJ1dCBkZWNvcmF0b3JzIGFyZSBuaWNlcjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzMzYwJywgJ3Bvc3QxNDA1MTU3MzAzODMzNjAnKSI+PHByZT4gICAgIyBpZiB0aGV5IGRvbiYjeDI3O3QgaGF2ZSBzaWRlIGVmZmVjdHMsIHNvIHJldHVybiBhIG5ldyBmdW5jdGlvbi48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzM2MCcsICdwb3N0MTQwNTE1NzMwMzgzMzYwJykiPjxwcmU+ICAgIEB3cmFwcyh2aWV3X2Z1bmMpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMzNjAnLCAncG9zdDE0MDUxNTczMDM4MzM2MCcpIj48cHJlPiAgICBkZWYgd3JhcHBlcl92aWV3KCphcmdzLCAqKmt3YXJncyk6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8b2wgc3RhcnQ9IjU2IiBjbGFzcz0iY29udGV4dC1saW5lIj4KICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzM2MCcsICdwb3N0MTQwNTE1NzMwMzgzMzYwJykiPjxwcmU+ICAgICAgICByZXR1cm4gdmlld19mdW5jKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzU3JyBjbGFzcz0icG9zdC1jb250ZXh0IiBpZD0icG9zdDE0MDUxNTczMDM4MzM2MCI+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMzNjAnLCAncG9zdDE0MDUxNTczMDM4MzM2MCcpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODMzNjAnLCAncG9zdDE0MDUxNTczMDM4MzM2MCcpIj48cHJlPiAgICB3cmFwcGVyX3ZpZXcuY3NyZl9leGVtcHQgPSBUcnVlPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzM2MCcsICdwb3N0MTQwNTE1NzMwMzgzMzYwJykiPjxwcmU+ICAgIHJldHVybiB3cmFwcGVyX3ZpZXc8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJjb21tYW5kcyI+TG9jYWwgdmFyczwvc3VtbWFyeT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idmFycyIgaWQ9InYxNDA1MTU3MzAzODMzNjAiPgogICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5hcmdzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+KCZsdDtXU0dJUmVxdWVzdDogUE9TVCAmI3gyNzsvZGphbmdvbGRwLWRmYy93ZWJob29rLyYjeDI3OyZndDssKTwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5rd2FyZ3M8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT57fTwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD52aWV3X2Z1bmM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZnVuY3Rpb24gVmlldy5hc192aWV3LiZsdDtsb2NhbHMmZ3Q7LnZpZXcgYXQgMHg3ZmNjNWVjYTQzNjAmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgIAogICAgICAgIDwvbGk+CiAgICAgIAogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZnJhbWUgZGphbmdvIj4KICAgICAgICAgIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iZm5hbWUiPi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9kamFuZ28vdmlld3MvZ2VuZXJpYy9iYXNlLnB5PC9jb2RlPiwgbGluZSAxMDQsIGluIHZpZXcKICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZXh0IiBpZD0iYzE0MDUxNTczMDM3NzI4MCI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9Ijk3IiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzAzNzcyODAiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NzI4MCcsICdwb3N0MTQwNTE1NzMwMzc3MjgwJykiPjxwcmU+ICAgICAgICAgICAgc2VsZiA9IGNscygqKmluaXRrd2FyZ3MpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzcyODAnLCAncG9zdDE0MDUxNTczMDM3NzI4MCcpIj48cHJlPiAgICAgICAgICAgIHNlbGYuc2V0dXAocmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc3MjgwJywgJ3Bvc3QxNDA1MTU3MzAzNzcyODAnKSI+PHByZT4gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAmcXVvdDtyZXF1ZXN0JnF1b3Q7KTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NzI4MCcsICdwb3N0MTQwNTE1NzMwMzc3MjgwJykiPjxwcmU+ICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKDwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc3MjgwJywgJ3Bvc3QxNDA1MTU3MzAzNzcyODAnKSI+PHByZT4gICAgICAgICAgICAgICAgICAgICZxdW90OyVzIGluc3RhbmNlIGhhcyBubyAmI3gyNztyZXF1ZXN0JiN4Mjc7IGF0dHJpYnV0ZS4gRGlkIHlvdSBvdmVycmlkZSAmcXVvdDs8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NzI4MCcsICdwb3N0MTQwNTE1NzMwMzc3MjgwJykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAmcXVvdDtzZXR1cCgpIGFuZCBmb3JnZXQgdG8gY2FsbCBzdXBlcigpPyZxdW90OyAlIGNscy5fX25hbWVfXzwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc3MjgwJywgJ3Bvc3QxNDA1MTU3MzAzNzcyODAnKSI+PHByZT4gICAgICAgICAgICAgICAgKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSIxMDQiIGNsYXNzPSJjb250ZXh0LWxpbmUiPgogICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc3MjgwJywgJ3Bvc3QxNDA1MTU3MzAzNzcyODAnKSI+PHByZT4gICAgICAgICAgICByZXR1cm4gc2VsZi5kaXNwYXRjaChyZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXjwvcHJlPiA8c3Bhbj7igKY8L3NwYW4+PC9saT4KICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PScxMDUnIGNsYXNzPSJwb3N0LWNvbnRleHQiIGlkPSJwb3N0MTQwNTE1NzMwMzc3MjgwIj4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NzI4MCcsICdwb3N0MTQwNTE1NzMwMzc3MjgwJykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NzI4MCcsICdwb3N0MTQwNTE1NzMwMzc3MjgwJykiPjxwcmU+ICAgICAgICB2aWV3LnZpZXdfY2xhc3MgPSBjbHM8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc3MjgwJywgJ3Bvc3QxNDA1MTU3MzAzNzcyODAnKSI+PHByZT4gICAgICAgIHZpZXcudmlld19pbml0a3dhcmdzID0gaW5pdGt3YXJnczwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzcyODAnLCAncG9zdDE0MDUxNTczMDM3NzI4MCcpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzcyODAnLCAncG9zdDE0MDUxNTczMDM3NzI4MCcpIj48cHJlPiAgICAgICAgIyBfX25hbWVfXyBhbmQgX19xdWFsbmFtZV9fIGFyZSBpbnRlbnRpb25hbGx5IGxlZnQgdW5jaGFuZ2VkIGFzPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NzI4MCcsICdwb3N0MTQwNTE1NzMwMzc3MjgwJykiPjxwcmU+ICAgICAgICAjIHZpZXdfY2xhc3Mgc2hvdWxkIGJlIHVzZWQgdG8gcm9idXN0bHkgZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSB2aWV3PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGRldGFpbHM+CiAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iY29tbWFuZHMiPkxvY2FsIHZhcnM8L3N1bW1hcnk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8dGFibGUgY2xhc3M9InZhcnMiIGlkPSJ2MTQwNTE1NzMwMzc3MjgwIj4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5WYXJpYWJsZTwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+YXJnczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPigpPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmNsczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtjbGFzcyAmI3gyNztkYXRhX2Zvb2RfY29uc29ydGl1bS52aWV3cy5DYWNoZVdlYmhvb2tWaWV3JiN4Mjc7Jmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5pbml0a3dhcmdzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+e308L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+a3dhcmdzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+e308L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cmVxdWVzdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtXU0dJUmVxdWVzdDogUE9TVCAmI3gyNzsvZGphbmdvbGRwLWRmYy93ZWJob29rLyYjeDI3OyZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+c2VsZjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtkYXRhX2Zvb2RfY29uc29ydGl1bS52aWV3cy5DYWNoZVdlYmhvb2tWaWV3IG9iamVjdCBhdCAweDdmY2M1ZTMxYzkxMCZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgCiAgICAgICAgPC9saT4KICAgICAgCiAgICAgICAgCiAgICAgICAgPGxpIGNsYXNzPSJmcmFtZSB1c2VyIj4KICAgICAgICAgIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iZm5hbWUiPi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9yZXN0X2ZyYW1ld29yay92aWV3cy5weTwvY29kZT4sIGxpbmUgNTA5LCBpbiBkaXNwYXRjaAogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzMwMzgyMDE2Ij4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iNTAyIiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzAzODIwMTYiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjAxNicsICdwb3N0MTQwNTE1NzMwMzgyMDE2JykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaHR0cF9tZXRob2Rfbm90X2FsbG93ZWQpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODIwMTYnLCAncG9zdDE0MDUxNTczMDM4MjAxNicpIj48cHJlPiAgICAgICAgICAgIGVsc2U6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODIwMTYnLCAncG9zdDE0MDUxNTczMDM4MjAxNicpIj48cHJlPiAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5odHRwX21ldGhvZF9ub3RfYWxsb3dlZDwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyMDE2JywgJ3Bvc3QxNDA1MTU3MzAzODIwMTYnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjAxNicsICdwb3N0MTQwNTE1NzMwMzgyMDE2JykiPjxwcmU+ICAgICAgICAgICAgcmVzcG9uc2UgPSBoYW5kbGVyKHJlcXVlc3QsICphcmdzLCAqKmt3YXJncyk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjAxNicsICdwb3N0MTQwNTE1NzMwMzgyMDE2JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODIwMTYnLCAncG9zdDE0MDUxNTczMDM4MjAxNicpIj48cHJlPiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8b2wgc3RhcnQ9IjUwOSIgY2xhc3M9ImNvbnRleHQtbGluZSI+CiAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODIwMTYnLCAncG9zdDE0MDUxNTczMDM4MjAxNicpIj48cHJlPiAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5oYW5kbGVfZXhjZXB0aW9uKGV4YykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzUxMCcgY2xhc3M9InBvc3QtY29udGV4dCIgaWQ9InBvc3QxNDA1MTU3MzAzODIwMTYiPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyMDE2JywgJ3Bvc3QxNDA1MTU3MzAzODIwMTYnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyMDE2JywgJ3Bvc3QxNDA1MTU3MzAzODIwMTYnKSI+PHByZT4gICAgICAgIHNlbGYucmVzcG9uc2UgPSBzZWxmLmZpbmFsaXplX3Jlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlLCAqYXJncywgKiprd2FyZ3MpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MjAxNicsICdwb3N0MTQwNTE1NzMwMzgyMDE2JykiPjxwcmU+ICAgICAgICByZXR1cm4gc2VsZi5yZXNwb25zZTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODIwMTYnLCAncG9zdDE0MDUxNTczMDM4MjAxNicpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODIwMTYnLCAncG9zdDE0MDUxNTczMDM4MjAxNicpIj48cHJlPiAgICBkZWYgb3B0aW9ucyhzZWxmLCByZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODIwMTYnLCAncG9zdDE0MDUxNTczMDM4MjAxNicpIj48cHJlPiAgICAgICAgJnF1b3Q7JnF1b3Q7JnF1b3Q7PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGRldGFpbHM+CiAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iY29tbWFuZHMiPkxvY2FsIHZhcnM8L3N1bW1hcnk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8dGFibGUgY2xhc3M9InZhcnMiIGlkPSJ2MTQwNTE1NzMwMzgyMDE2Ij4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5WYXJpYWJsZTwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+YXJnczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPigpPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmhhbmRsZXI8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7Ym91bmQgbWV0aG9kIENhY2hlV2ViaG9va1ZpZXcucG9zdCBvZiAmbHQ7ZGF0YV9mb29kX2NvbnNvcnRpdW0udmlld3MuQ2FjaGVXZWJob29rVmlldyBvYmplY3QgYXQgMHg3ZmNjNWUzMWM5MTAmZ3Q7Jmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5rd2FyZ3M8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT57fTwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5yZXF1ZXN0PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O3Jlc3RfZnJhbWV3b3JrLnJlcXVlc3QuUmVxdWVzdDogUE9TVCAmI3gyNzsvZGphbmdvbGRwLWRmYy93ZWJob29rLyYjeDI3OyZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+c2VsZjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtkYXRhX2Zvb2RfY29uc29ydGl1bS52aWV3cy5DYWNoZVdlYmhvb2tWaWV3IG9iamVjdCBhdCAweDdmY2M1ZTMxYzkxMCZndDs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgCiAgICAgICAgPC9saT4KICAgICAgCiAgICAgICAgCiAgICAgICAgPGxpIGNsYXNzPSJmcmFtZSB1c2VyIj4KICAgICAgICAgIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iZm5hbWUiPi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9yZXN0X2ZyYW1ld29yay92aWV3cy5weTwvY29kZT4sIGxpbmUgNDY5LCBpbiBoYW5kbGVfZXhjZXB0aW9uCiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dCIgaWQ9ImMxNDA1MTU3MzAzODM4MDgiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI0NjIiIGNsYXNzPSJwcmUtY29udGV4dCIgaWQ9InByZTE0MDUxNTczMDM4MzgwOCI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzODA4JywgJ3Bvc3QxNDA1MTU3MzAzODM4MDgnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzgwOCcsICdwb3N0MTQwNTE1NzMwMzgzODA4JykiPjxwcmU+ICAgICAgICBleGNlcHRpb25faGFuZGxlciA9IHNlbGYuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyKCk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzgwOCcsICdwb3N0MTQwNTE1NzMwMzgzODA4JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODM4MDgnLCAncG9zdDE0MDUxNTczMDM4MzgwOCcpIj48cHJlPiAgICAgICAgY29udGV4dCA9IHNlbGYuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyX2NvbnRleHQoKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzODA4JywgJ3Bvc3QxNDA1MTU3MzAzODM4MDgnKSI+PHByZT4gICAgICAgIHJlc3BvbnNlID0gZXhjZXB0aW9uX2hhbmRsZXIoZXhjLCBjb250ZXh0KTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzODA4JywgJ3Bvc3QxNDA1MTU3MzAzODM4MDgnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzgwOCcsICdwb3N0MTQwNTE1NzMwMzgzODA4JykiPjxwcmU+ICAgICAgICBpZiByZXNwb25zZSBpcyBOb25lOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI0NjkiIGNsYXNzPSJjb250ZXh0LWxpbmUiPgogICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzODA4JywgJ3Bvc3QxNDA1MTU3MzAzODM4MDgnKSI+PHByZT4gICAgICAgICAgICBzZWxmLnJhaXNlX3VuY2F1Z2h0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXjwvcHJlPiA8c3Bhbj7igKY8L3NwYW4+PC9saT4KICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSc0NzAnIGNsYXNzPSJwb3N0LWNvbnRleHQiIGlkPSJwb3N0MTQwNTE1NzMwMzgzODA4Ij4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzgwOCcsICdwb3N0MTQwNTE1NzMwMzgzODA4JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzgwOCcsICdwb3N0MTQwNTE1NzMwMzgzODA4JykiPjxwcmU+ICAgICAgICByZXNwb25zZS5leGNlcHRpb24gPSBUcnVlPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzgwOCcsICdwb3N0MTQwNTE1NzMwMzgzODA4JykiPjxwcmU+ICAgICAgICByZXR1cm4gcmVzcG9uc2U8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzODA4JywgJ3Bvc3QxNDA1MTU3MzAzODM4MDgnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzODA4JywgJ3Bvc3QxNDA1MTU3MzAzODM4MDgnKSI+PHByZT4gICAgZGVmIHJhaXNlX3VuY2F1Z2h0X2V4Y2VwdGlvbihzZWxmLCBleGMpOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODM4MDgnLCAncG9zdDE0MDUxNTczMDM4MzgwOCcpIj48cHJlPiAgICAgICAgaWYgc2V0dGluZ3MuREVCVUc6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGRldGFpbHM+CiAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iY29tbWFuZHMiPkxvY2FsIHZhcnM8L3N1bW1hcnk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8dGFibGUgY2xhc3M9InZhcnMiIGlkPSJ2MTQwNTE1NzMwMzgzODA4Ij4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5WYXJpYWJsZTwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+Y29udGV4dDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPnsmI3gyNzthcmdzJiN4Mjc7OiAoKSwKICYjeDI3O2t3YXJncyYjeDI3Ozoge30sCiAmI3gyNztyZXF1ZXN0JiN4Mjc7OiAmbHQ7cmVzdF9mcmFtZXdvcmsucmVxdWVzdC5SZXF1ZXN0OiBQT1NUICYjeDI3Oy9kamFuZ29sZHAtZGZjL3dlYmhvb2svJiN4Mjc7Jmd0OywKICYjeDI3O3ZpZXcmI3gyNzs6ICZsdDtkYXRhX2Zvb2RfY29uc29ydGl1bS52aWV3cy5DYWNoZVdlYmhvb2tWaWV3IG9iamVjdCBhdCAweDdmY2M1ZTMxYzkxMCZndDt9PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmV4YzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPkpTT05EZWNvZGVFcnJvcigmI3gyNztFeHBlY3RpbmcgdmFsdWU6IGxpbmUgMSBjb2x1bW4gMSAoY2hhciAwKSYjeDI3Oyk8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+ZXhjZXB0aW9uX2hhbmRsZXI8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZnVuY3Rpb24gZXhjZXB0aW9uX2hhbmRsZXIgYXQgMHg3ZmNjNjUzNjRjMjAmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnJlc3BvbnNlPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Tm9uZTwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5zZWxmPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O2RhdGFfZm9vZF9jb25zb3J0aXVtLnZpZXdzLkNhY2hlV2ViaG9va1ZpZXcgb2JqZWN0IGF0IDB4N2ZjYzVlMzFjOTEwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAKICAgICAgICA8L2xpPgogICAgICAKICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImZyYW1lIHVzZXIiPgogICAgICAgICAgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmbmFtZSI+L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3Jlc3RfZnJhbWV3b3JrL3ZpZXdzLnB5PC9jb2RlPiwgbGluZSA0ODAsIGluIHJhaXNlX3VuY2F1Z2h0X2V4Y2VwdGlvbgogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzMwMzc2MTI4Ij4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iNDczIiBjbGFzcz0icHJlLWNvbnRleHQiIGlkPSJwcmUxNDA1MTU3MzAzNzYxMjgiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NjEyOCcsICdwb3N0MTQwNTE1NzMwMzc2MTI4JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzYxMjgnLCAncG9zdDE0MDUxNTczMDM3NjEyOCcpIj48cHJlPiAgICBkZWYgcmFpc2VfdW5jYXVnaHRfZXhjZXB0aW9uKHNlbGYsIGV4Yyk6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzYxMjgnLCAncG9zdDE0MDUxNTczMDM3NjEyOCcpIj48cHJlPiAgICAgICAgaWYgc2V0dGluZ3MuREVCVUc6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzYxMjgnLCAncG9zdDE0MDUxNTczMDM3NjEyOCcpIj48cHJlPiAgICAgICAgICAgIHJlcXVlc3QgPSBzZWxmLnJlcXVlc3Q8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NjEyOCcsICdwb3N0MTQwNTE1NzMwMzc2MTI4JykiPjxwcmU+ICAgICAgICAgICAgcmVuZGVyZXJfZm9ybWF0ID0gZ2V0YXR0cihyZXF1ZXN0LmFjY2VwdGVkX3JlbmRlcmVyLCAmI3gyNztmb3JtYXQmI3gyNzspPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzYxMjgnLCAncG9zdDE0MDUxNTczMDM3NjEyOCcpIj48cHJlPiAgICAgICAgICAgIHVzZV9wbGFpbnRleHRfdHJhY2ViYWNrID0gcmVuZGVyZXJfZm9ybWF0IG5vdCBpbiAoJiN4Mjc7aHRtbCYjeDI3OywgJiN4Mjc7YXBpJiN4Mjc7LCAmI3gyNzthZG1pbiYjeDI3Oyk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NjEyOCcsICdwb3N0MTQwNTE1NzMwMzc2MTI4JykiPjxwcmU+ICAgICAgICAgICAgcmVxdWVzdC5mb3JjZV9wbGFpbnRleHRfZXJyb3JzKHVzZV9wbGFpbnRleHRfdHJhY2ViYWNrKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI0ODAiIGNsYXNzPSJjb250ZXh0LWxpbmUiPgogICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc2MTI4JywgJ3Bvc3QxNDA1MTU3MzAzNzYxMjgnKSI+PHByZT4gICAgICAgIHJhaXNlIGV4YwogICAgICAgICAgICAgXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzQ4MScgY2xhc3M9InBvc3QtY29udGV4dCIgaWQ9InBvc3QxNDA1MTU3MzAzNzYxMjgiPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc2MTI4JywgJ3Bvc3QxNDA1MTU3MzAzNzYxMjgnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc2MTI4JywgJ3Bvc3QxNDA1MTU3MzAzNzYxMjgnKSI+PHByZT4gICAgIyBOb3RlOiBWaWV3cyBhcmUgbWFkZSBDU1JGIGV4ZW1wdCBmcm9tIHdpdGhpbiBgYXNfdmlld2AgYXMgdG8gcHJldmVudDwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzNzYxMjgnLCAncG9zdDE0MDUxNTczMDM3NjEyOCcpIj48cHJlPiAgICAjIGFjY2lkZW50YWwgcmVtb3ZhbCBvZiB0aGlzIGV4ZW1wdGlvbiBpbiBjYXNlcyB3aGVyZSBgZGlzcGF0Y2hgIG5lZWRzIHRvPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NjEyOCcsICdwb3N0MTQwNTE1NzMwMzc2MTI4JykiPjxwcmU+ICAgICMgYmUgb3ZlcnJpZGRlbi48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzc2MTI4JywgJ3Bvc3QxNDA1MTU3MzAzNzYxMjgnKSI+PHByZT4gICAgZGVmIGRpc3BhdGNoKHNlbGYsIHJlcXVlc3QsICphcmdzLCAqKmt3YXJncyk6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM3NjEyOCcsICdwb3N0MTQwNTE1NzMwMzc2MTI4JykiPjxwcmU+ICAgICAgICAmcXVvdDsmcXVvdDsmcXVvdDs8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJjb21tYW5kcyI+TG9jYWwgdmFyczwvc3VtbWFyeT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idmFycyIgaWQ9InYxNDA1MTU3MzAzNzYxMjgiPgogICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5leGM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5KU09ORGVjb2RlRXJyb3IoJiN4Mjc7RXhwZWN0aW5nIHZhbHVlOiBsaW5lIDEgY29sdW1uIDEgKGNoYXIgMCkmI3gyNzspPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnJlbmRlcmVyX2Zvcm1hdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3O2pzb24mI3gyNzs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cmVxdWVzdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtyZXN0X2ZyYW1ld29yay5yZXF1ZXN0LlJlcXVlc3Q6IFBPU1QgJiN4Mjc7L2RqYW5nb2xkcC1kZmMvd2ViaG9vay8mI3gyNzsmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZGF0YV9mb29kX2NvbnNvcnRpdW0udmlld3MuQ2FjaGVXZWJob29rVmlldyBvYmplY3QgYXQgMHg3ZmNjNWUzMWM5MTAmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnVzZV9wbGFpbnRleHRfdHJhY2ViYWNrPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+VHJ1ZTwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAKICAgICAgICA8L2xpPgogICAgICAKICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImZyYW1lIHVzZXIiPgogICAgICAgICAgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmbmFtZSI+L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3Jlc3RfZnJhbWV3b3JrL3ZpZXdzLnB5PC9jb2RlPiwgbGluZSA1MDYsIGluIGRpc3BhdGNoCiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dCIgaWQ9ImMxNDA1MTU3MzAzODI4NDgiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI0OTkiIGNsYXNzPSJwcmUtY29udGV4dCIgaWQ9InByZTE0MDUxNTczMDM4Mjg0OCI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyODQ4JywgJ3Bvc3QxNDA1MTU3MzAzODI4NDgnKSI+PHByZT4gICAgICAgICAgICAjIEdldCB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBtZXRob2Q8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjg0OCcsICdwb3N0MTQwNTE1NzMwMzgyODQ4JykiPjxwcmU+ICAgICAgICAgICAgaWYgcmVxdWVzdC5tZXRob2QubG93ZXIoKSBpbiBzZWxmLmh0dHBfbWV0aG9kX25hbWVzOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyODQ4JywgJ3Bvc3QxNDA1MTU3MzAzODI4NDgnKSI+PHByZT4gICAgICAgICAgICAgICAgaGFuZGxlciA9IGdldGF0dHIoc2VsZiwgcmVxdWVzdC5tZXRob2QubG93ZXIoKSw8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjg0OCcsICdwb3N0MTQwNTE1NzMwMzgyODQ4JykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaHR0cF9tZXRob2Rfbm90X2FsbG93ZWQpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI4NDgnLCAncG9zdDE0MDUxNTczMDM4Mjg0OCcpIj48cHJlPiAgICAgICAgICAgIGVsc2U6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI4NDgnLCAncG9zdDE0MDUxNTczMDM4Mjg0OCcpIj48cHJlPiAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5odHRwX21ldGhvZF9ub3RfYWxsb3dlZDwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyODQ4JywgJ3Bvc3QxNDA1MTU3MzAzODI4NDgnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgIDxvbCBzdGFydD0iNTA2IiBjbGFzcz0iY29udGV4dC1saW5lIj4KICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjg0OCcsICdwb3N0MTQwNTE1NzMwMzgyODQ4JykiPjxwcmU+ICAgICAgICAgICAgcmVzcG9uc2UgPSBoYW5kbGVyKHJlcXVlc3QsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXjwvcHJlPiA8c3Bhbj7igKY8L3NwYW4+PC9saT4KICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSc1MDcnIGNsYXNzPSJwb3N0LWNvbnRleHQiIGlkPSJwb3N0MTQwNTE1NzMwMzgyODQ4Ij4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjg0OCcsICdwb3N0MTQwNTE1NzMwMzgyODQ4JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjg0OCcsICdwb3N0MTQwNTE1NzMwMzgyODQ4JykiPjxwcmU+ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4Yzo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyODQ4JywgJ3Bvc3QxNDA1MTU3MzAzODI4NDgnKSI+PHByZT4gICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuaGFuZGxlX2V4Y2VwdGlvbihleGMpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjg0OCcsICdwb3N0MTQwNTE1NzMwMzgyODQ4JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjg0OCcsICdwb3N0MTQwNTE1NzMwMzgyODQ4JykiPjxwcmU+ICAgICAgICBzZWxmLnJlc3BvbnNlID0gc2VsZi5maW5hbGl6ZV9yZXNwb25zZShyZXF1ZXN0LCByZXNwb25zZSwgKmFyZ3MsICoqa3dhcmdzKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI4NDgnLCAncG9zdDE0MDUxNTczMDM4Mjg0OCcpIj48cHJlPiAgICAgICAgcmV0dXJuIHNlbGYucmVzcG9uc2U8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJjb21tYW5kcyI+TG9jYWwgdmFyczwvc3VtbWFyeT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idmFycyIgaWQ9InYxNDA1MTU3MzAzODI4NDgiPgogICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5hcmdzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+KCk8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+aGFuZGxlcjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtib3VuZCBtZXRob2QgQ2FjaGVXZWJob29rVmlldy5wb3N0IG9mICZsdDtkYXRhX2Zvb2RfY29uc29ydGl1bS52aWV3cy5DYWNoZVdlYmhvb2tWaWV3IG9iamVjdCBhdCAweDdmY2M1ZTMxYzkxMCZndDsmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmt3YXJnczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPnt9PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnJlcXVlc3Q8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7cmVzdF9mcmFtZXdvcmsucmVxdWVzdC5SZXF1ZXN0OiBQT1NUICYjeDI3Oy9kamFuZ29sZHAtZGZjL3dlYmhvb2svJiN4Mjc7Jmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5zZWxmPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O2RhdGFfZm9vZF9jb25zb3J0aXVtLnZpZXdzLkNhY2hlV2ViaG9va1ZpZXcgb2JqZWN0IGF0IDB4N2ZjYzVlMzFjOTEwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAKICAgICAgICA8L2xpPgogICAgICAKICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImZyYW1lIHVzZXIiPgogICAgICAgICAgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmbmFtZSI+L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvc2lic2VydmVyL2RhdGFfZm9vZF9jb25zb3J0aXVtL3ZpZXdzLnB5PC9jb2RlPiwgbGluZSA5MCwgaW4gcG9zdAogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRleHQiIGlkPSJjMTQwNTE1NzMwMzgyOTc2Ij4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxvbCBzdGFydD0iODMiIGNsYXNzPSJwcmUtY29udGV4dCIgaWQ9InByZTE0MDUxNTczMDM4Mjk3NiI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyOTc2JywgJ3Bvc3QxNDA1MTU3MzAzODI5NzYnKSI+PHByZT4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNwb25zZSg8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjk3NicsICdwb3N0MTQwNTE1NzMwMzgyOTc2JykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAgICAgezwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyOTc2JywgJ3Bvc3QxNDA1MTU3MzAzODI5NzYnKSI+PHByZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3Q7ZXJyb3ImcXVvdDs6ICZxdW90O09iamVjdHMgc2hvdWxkIGJlIHNlcmlhbGlzZWQgd2l0aCBvbmx5IEBpZCBhbmQgQHR5cGUmcXVvdDs8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjk3NicsICdwb3N0MTQwNTE1NzMwMzgyOTc2JykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAgICAgfSw8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjk3NicsICdwb3N0MTQwNTE1NzMwMzgyOTc2JykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQwMCw8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjk3NicsICdwb3N0MTQwNTE1NzMwMzgyOTc2JykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICApPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI5NzYnLCAncG9zdDE0MDUxNTczMDM4Mjk3NicpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI5MCIgY2xhc3M9ImNvbnRleHQtbGluZSI+CiAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI5NzYnLCAncG9zdDE0MDUxNTczMDM4Mjk3NicpIj48cHJlPiAgICAgICAgc2VsZi5wcm9jZXNzKHJlcXVlc3QsIGRhdGEpCiAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXjwvcHJlPiA8c3Bhbj7igKY8L3NwYW4+PC9saT4KICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSc5MScgY2xhc3M9InBvc3QtY29udGV4dCIgaWQ9InBvc3QxNDA1MTU3MzAzODI5NzYiPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyOTc2JywgJ3Bvc3QxNDA1MTU3MzAzODI5NzYnKSI+PHByZT4gICAgICAgIHJldHVybiBSZXNwb25zZSh7fSwgc3RhdHVzPTIwMCk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyOTc2JywgJ3Bvc3QxNDA1MTU3MzAzODI5NzYnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyOTc2JywgJ3Bvc3QxNDA1MTU3MzAzODI5NzYnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgyOTc2JywgJ3Bvc3QxNDA1MTU3MzAzODI5NzYnKSI+PHByZT5jbGFzcyBFbnRlcnByaXNlSW1wb3J0VmlldyhCYXNlQ1NWSW1wb3J0Vmlldyk6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4Mjk3NicsICdwb3N0MTQwNTE1NzMwMzgyOTc2JykiPjxwcmU+ICAgIGRlZiBnZXRfZm9ybV9jbGFzcyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODI5NzYnLCAncG9zdDE0MDUxNTczMDM4Mjk3NicpIj48cHJlPiAgICAgICAgcmV0dXJuIEVudGVycHJpc2VJbXBvcnRGb3JtKCphcmdzLCAqKmt3YXJncyk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJjb21tYW5kcyI+TG9jYWwgdmFyczwvc3VtbWFyeT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idmFycyIgaWQ9InYxNDA1MTU3MzAzODI5NzYiPgogICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5hcmdzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+KCk8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+ZGF0YTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPnsmI3gyNztlbnRlcnByaXNlVXJsaWQmI3gyNzs6ICYjeDI3O2h0dHA6Ly90ZXN0Lmhvc3QvYXBpL2RmYy9lbnRlcnByaXNlcyYjeDI3OywKICYjeDI3O2V2ZW50VHlwZSYjeDI3OzogJiN4Mjc7cmVmcmVzaCYjeDI3OywKICYjeDI3O3Njb3BlJiN4Mjc7OiAmI3gyNztSZWFkRW50ZXJwcmlzZSYjeDI3O308L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+a3dhcmdzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+e308L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cmVxdWVzdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtyZXN0X2ZyYW1ld29yay5yZXF1ZXN0LlJlcXVlc3Q6IFBPU1QgJiN4Mjc7L2RqYW5nb2xkcC1kZmMvd2ViaG9vay8mI3gyNzsmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZGF0YV9mb29kX2NvbnNvcnRpdW0udmlld3MuQ2FjaGVXZWJob29rVmlldyBvYmplY3QgYXQgMHg3ZmNjNWUzMWM5MTAmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgIAogICAgICAgIDwvbGk+CiAgICAgIAogICAgICAgIAogICAgICAgIDxsaSBjbGFzcz0iZnJhbWUgdXNlciI+CiAgICAgICAgICAKICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZuYW1lIj4vaG9tZS9jcWNtLXByb3h5LWRldi9zdGFydGluYmxveC9zaWJzZXJ2ZXIvZGF0YV9mb29kX2NvbnNvcnRpdW0vdmlld3MucHk8L2NvZGU+LCBsaW5lIDQ2LCBpbiBwcm9jZXNzCiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dCIgaWQ9ImMxNDA1MTU3MzAzODE3NjAiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSIzOSIgY2xhc3M9InByZS1jb250ZXh0IiBpZD0icHJlMTQwNTE1NzMwMzgxNzYwIj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICBkZWYgcHJvY2VzcyhzZWxmLCByZXF1ZXN0LCBkYXRhKTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MTc2MCcsICdwb3N0MTQwNTE1NzMwMzgxNzYwJykiPjxwcmU+ICAgICAgICBpZiBkYXRhWyZxdW90O2V2ZW50VHlwZSZxdW90O10gPT0gV2ViaG9va0V2ZW50VHlwZS5VUERBVEU6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICAgICAgICAgICMgUGFyc2UgYW5kIGltcG9ydCB0aGUgZ3JhcGguPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICAgICAgICAgICMgVE9ETzogdHJpZ2dlciBvcHRpb25hbCBiZWhhdmlvdXIgaW4gdGhlIHBhcnNlciB0byBmYWlsIGxvdWRseS48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MTc2MCcsICdwb3N0MTQwNTE1NzMwMzgxNzYwJykiPjxwcmU+ICAgICAgICAgICAgUHJveHlSZWZyZXNoUGFyc2VyKGRhdGFbJnF1b3Q7QGlkJnF1b3Q7XSkucGFyc2UoZGF0YSk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MTc2MCcsICdwb3N0MTQwNTE1NzMwMzgxNzYwJykiPjxwcmU+ICAgICAgICBlbGlmIGRhdGFbJnF1b3Q7ZXZlbnRUeXBlJnF1b3Q7XSA9PSBXZWJob29rRXZlbnRUeXBlLlJFRlJFU0g6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICAgICAgICAgIGhvc3QgPSB1cmxwYXJzZShyZXF1ZXN0LnBsYXRmb3JtX3VybGlkKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI0NiIgY2xhc3M9ImNvbnRleHQtbGluZSI+CiAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICAgICAgICAgIFJlc291cmNlU2VydmVyQ2xpZW50KGYmcXVvdDt7aG9zdC5zY2hlbWV9Oi8ve2hvc3QubmV0bG9jfS8mcXVvdDspLnJlcXVlc3Rfc2NvcGUoCiAgICAgICAgICAgICAgICBePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzQ3JyBjbGFzcz0icG9zdC1jb250ZXh0IiBpZD0icG9zdDE0MDUxNTczMDM4MTc2MCI+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICAgICAgICAgICAgICBkYXRhWyZxdW90O3Njb3BlJnF1b3Q7XTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICAgICAgICAgICk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgxNzYwJywgJ3Bvc3QxNDA1MTU3MzAzODE3NjAnKSI+PHByZT4gICAgICAgIGVsaWYgZGF0YVsmcXVvdDtldmVudFR5cGUmcXVvdDtdID09IFdlYmhvb2tFdmVudFR5cGUuUkVWT0tFOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODE3NjAnLCAncG9zdDE0MDUxNTczMDM4MTc2MCcpIj48cHJlPiAgICAgICAgICAgIGZvciBvYmogaW4gZGF0YVsmcXVvdDtvYmplY3RzJnF1b3Q7XTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgxNzYwJywgJ3Bvc3QxNDA1MTU3MzAzODE3NjAnKSI+PHByZT4gICAgICAgICAgICAgICAgTW9kZWwuZ2V0X3N1YmNsYXNzX3dpdGhfcmRmX3R5cGUob2JqWyZxdW90O0B0eXBlJnF1b3Q7XSkub2JqZWN0cy5maWx0ZXIoPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MTc2MCcsICdwb3N0MTQwNTE1NzMwMzgxNzYwJykiPjxwcmU+ICAgICAgICAgICAgICAgICAgICBwcm94eV9vZj1vYmpbJnF1b3Q7QGlkJnF1b3Q7XTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxkZXRhaWxzPgogICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9ImNvbW1hbmRzIj5Mb2NhbCB2YXJzPC9zdW1tYXJ5PgogICAgICAgICAgICAKICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ2YXJzIiBpZD0idjE0MDUxNTczMDM4MTc2MCI+CiAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGg+VmFyaWFibGU8L3RoPgogICAgICAgICAgICAgICAgICA8dGg+VmFsdWU8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT57JiN4Mjc7ZW50ZXJwcmlzZVVybGlkJiN4Mjc7OiAmI3gyNztodHRwOi8vdGVzdC5ob3N0L2FwaS9kZmMvZW50ZXJwcmlzZXMmI3gyNzssCiAmI3gyNztldmVudFR5cGUmI3gyNzs6ICYjeDI3O3JlZnJlc2gmI3gyNzssCiAmI3gyNztzY29wZSYjeDI3OzogJiN4Mjc7UmVhZEVudGVycHJpc2UmI3gyNzt9PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmhvc3Q8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5QYXJzZVJlc3VsdChzY2hlbWU9JiN4Mjc7aHR0cHMmI3gyNzssIG5ldGxvYz0mI3gyNztzdGFnaW5nLm9wZW5mb29kbmV0d29yay5vcmcudWsmI3gyNzssIHBhdGg9JiN4Mjc7LyYjeDI3OywgcGFyYW1zPSYjeDI3OyYjeDI3OywgcXVlcnk9JiN4Mjc7JiN4Mjc7LCBmcmFnbWVudD0mI3gyNzsmI3gyNzspPC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnJlcXVlc3Q8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7cmVzdF9mcmFtZXdvcmsucmVxdWVzdC5SZXF1ZXN0OiBQT1NUICYjeDI3Oy9kamFuZ29sZHAtZGZjL3dlYmhvb2svJiN4Mjc7Jmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5zZWxmPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O2RhdGFfZm9vZF9jb25zb3J0aXVtLnZpZXdzLkNhY2hlV2ViaG9va1ZpZXcgb2JqZWN0IGF0IDB4N2ZjYzVlMzFjOTEwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAKICAgICAgICA8L2xpPgogICAgICAKICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImZyYW1lIHVzZXIiPgogICAgICAgICAgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmbmFtZSI+L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvc2lic2VydmVyL2RhdGFfZm9vZF9jb25zb3J0aXVtL3Byb3h5L3Jlc291cmNlLnB5PC9jb2RlPiwgbGluZSAzMjIsIGluIHJlcXVlc3Rfc2NvcGUKICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZXh0IiBpZD0iYzE0MDUxNTczMDM4MzYxNiI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9IjMxNSIgY2xhc3M9InByZS1jb250ZXh0IiBpZD0icHJlMTQwNTE1NzMwMzgzNjE2Ij4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODM2MTYnLCAncG9zdDE0MDUxNTczMDM4MzYxNicpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzNjE2JywgJ3Bvc3QxNDA1MTU3MzAzODM2MTYnKSI+PHByZT4gICAgICAgIDpyYWlzZXMgS2V5Y2xvYWtBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbjogaWYgYXV0aGVudGljYXRpb24gd2l0aCBLZXljbG9hayBpcyB1bnN1Y2Nlc3NmdWw8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzYxNicsICdwb3N0MTQwNTE1NzMwMzgzNjE2JykiPjxwcmU+ICAgICAgICA6cmFpc2VzIFJlcXVlc3RFeGNlcHRpb246IGlmIGRhdGFzZXJ2ZXIgcmVxdWVzdCBpcyB1bnN1Y2Nlc3NmdWw8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzYxNicsICdwb3N0MTQwNTE1NzMwMzgzNjE2JykiPjxwcmU+ICAgICAgICAmcXVvdDsmcXVvdDsmcXVvdDs8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzYxNicsICdwb3N0MTQwNTE1NzMwMzgzNjE2JykiPjxwcmU+ICAgICAgICAjIEVhY2ggc2NvcGUgaGFzIGFuIGFzc29jaWF0ZWQgZW5kcG9pbnQuPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODM2MTYnLCAncG9zdDE0MDUxNTczMDM4MzYxNicpIj48cHJlPiAgICAgICAgZW5kcG9pbnQgPSBmJnF1b3Q7e3NlbGYuZGF0YXNlcnZlcl91cmx9e3NlbGYuc2NvcGVfY29uZmlnW3Njb3BlXX0mcXVvdDs8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDM4MzYxNicsICdwb3N0MTQwNTE1NzMwMzgzNjE2JykiPjxwcmU+ICAgICAgICBwYXJzZXIgPSBQcm94eVJlZnJlc2hQYXJzZXIoZW5kcG9pbnQpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8b2wgc3RhcnQ9IjMyMiIgY2xhc3M9ImNvbnRleHQtbGluZSI+CiAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzAzODM2MTYnLCAncG9zdDE0MDUxNTczMDM4MzYxNicpIj48cHJlPiAgICAgICAgc2VsZi5fcmVxdWVzdF9hbmRfcHJvY2Vzc19zY29wZV9hdF9lbmRwb2ludChwYXJzZXIsIHNjb3BlLCBlbmRwb2ludCkKICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePC9wcmU+IDxzcGFuPuKApjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8b2wgc3RhcnQ9JzMyMycgY2xhc3M9InBvc3QtY29udGV4dCIgaWQ9InBvc3QxNDA1MTU3MzAzODM2MTYiPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwMzgzNjE2JywgJ3Bvc3QxNDA1MTU3MzAzODM2MTYnKSI+PHByZT4gICAgICAgIHBhcnNlci5jbGVhbl91cCgpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGRldGFpbHM+CiAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iY29tbWFuZHMiPkxvY2FsIHZhcnM8L3N1bW1hcnk+CiAgICAgICAgICAgIAogICAgICAgICAgICA8dGFibGUgY2xhc3M9InZhcnMiIGlkPSJ2MTQwNTE1NzMwMzgzNjE2Ij4KICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0aD5WYXJpYWJsZTwvdGg+CiAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+ZW5kcG9pbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mI3gyNzs8SElEREVOLU9QRU5JRF9BUFBfSUQ+ZW50ZXJwcmlzZXMvJiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnBhcnNlcjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtkYXRhX2Zvb2RfY29uc29ydGl1bS5wcm94eS5yZXNvdXJjZS5Qcm94eVJlZnJlc2hQYXJzZXIgb2JqZWN0IGF0IDB4N2ZjYzVlMzJjOTkwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5zY29wZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3O1JlYWRFbnRlcnByaXNlJiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZGF0YV9mb29kX2NvbnNvcnRpdW0ucHJveHkucmVzb3VyY2UuUmVzb3VyY2VTZXJ2ZXJDbGllbnQgb2JqZWN0IGF0IDB4N2ZjYzVlMzFkZjkwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAKICAgICAgICA8L2xpPgogICAgICAKICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImZyYW1lIHVzZXIiPgogICAgICAgICAgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmbmFtZSI+L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvc2lic2VydmVyL2RhdGFfZm9vZF9jb25zb3J0aXVtL3Byb3h5L3Jlc291cmNlLnB5PC9jb2RlPiwgbGluZSAzMDMsIGluIF9yZXF1ZXN0X2FuZF9wcm9jZXNzX3Njb3BlX2F0X2VuZHBvaW50CiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dCIgaWQ9ImMxNDA1MTU3MzA0NDk2NjQiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSIyOTYiIGNsYXNzPSJwcmUtY29udGV4dCIgaWQ9InByZTE0MDUxNTczMDQ0OTY2NCI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT4gICAgICAgIFJlcXVlc3RzIGFuIGFjY2VzcyB0b2tlbiBmcm9tIEtleWNsb2FrIGZvciBhIGdpdmVuIHNjb3BlLDwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT4gICAgICAgIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IHJlcXVlc3RzIGZyb20gdGhlIGRhdGFzZXJ2ZXIgdGhlIGFzc29jaWF0ZWQgZW5kcG9pbnQsPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDk2NjQnLCAncG9zdDE0MDUxNTczMDQ0OTY2NCcpIj48cHJlPiAgICAgICAgc2NyYXBpbmcgYWxsIGF2YWlsYWJsZSBkYXRhIHVudGlsIGNvbXBsZXRlLjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT4gICAgICAgICZxdW90OyZxdW90OyZxdW90OzwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT4gICAgICAgIGhlYWRlcnMgPSBzZWxmLl9nZXRfYXV0aF9oZWFkZXJzX3dpdGhfdG9rZW5fZm9yX3Njb3BlKHNjb3BlKTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT4gICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KGVuZHBvaW50LCBoZWFkZXJzPWhlYWRlcnMpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDk2NjQnLCAncG9zdDE0MDUxNTczMDQ0OTY2NCcpIj48cHJlPiAgICAgICAgcmVzcG9uc2UucmFpc2VfZm9yX3N0YXR1cygpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPC9vbD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8b2wgc3RhcnQ9IjMwMyIgY2xhc3M9ImNvbnRleHQtbGluZSI+CiAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDk2NjQnLCAncG9zdDE0MDUxNTczMDQ0OTY2NCcpIj48cHJlPiAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmpzb24oKQogICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXjwvcHJlPiA8c3Bhbj7igKY8L3NwYW4+PC9saT4KICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSczMDQnIGNsYXNzPSJwb3N0LWNvbnRleHQiIGlkPSJwb3N0MTQwNTE1NzMwNDQ5NjY0Ij4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0OTY2NCcsICdwb3N0MTQwNTE1NzMwNDQ5NjY0JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0OTY2NCcsICdwb3N0MTQwNTE1NzMwNDQ5NjY0JykiPjxwcmU+ICAgICAgICAjIFBhcnNlIHRoZSByZXR1cm5lZCBncmFwaCwgcmVzb2x2ZSBhbmQgaW1wb3J0IHRvIHRoZSByZWxldmFudCBtb2RlbHMuPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0OTY2NCcsICdwb3N0MTQwNTE1NzMwNDQ5NjY0JykiPjxwcmU+ICAgICAgICBwYXJzZXIucGFyc2UoZGF0YSk8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT4gICAgICAgICMgSWYgdGhlcmUgaXMgbW9yZSBkYXRhLCBjb250aW51ZS48L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ5NjY0JywgJ3Bvc3QxNDA1MTU3MzA0NDk2NjQnKSI+PHByZT4gICAgICAgIGlmICZxdW90O25leHQmcXVvdDsgaW4gZGF0YSBhbmQgZGF0YVsmcXVvdDtuZXh0JnF1b3Q7XSBpcyBub3QgTm9uZTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAoKICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJjb21tYW5kcyI+TG9jYWwgdmFyczwvc3VtbWFyeT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idmFycyIgaWQ9InYxNDA1MTU3MzA0NDk2NjQiPgogICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICAgICAgICAgICAgPHRoPlZhbHVlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5lbmRwb2ludDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3OzxISURERU4tT1BFTklEX0FQUF9JRD5lbnRlcnByaXNlcy8mI3gyNzs8L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+aGVhZGVyczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPnsmI3gyNztBdXRob3JpemF0aW9uJiN4Mjc7OiAmI3gyNztCZWFyZXIgJiN4Mjc7CiAgICAgICAgICAgICAgICAgICYjeDI3O2V5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSWdPaUFpU2xkVUlpd2lhMmxrSWlBNklDSlJSbEpFUzFkYVEyaHpNbGxRWW5ScVlsOXlRVXR3UXpOek1GbzBUMkZDTUV0RlEwNTZObmx4V0hRMEluMC5leUpsZUhBaU9qRTNOVGcyT0RjeU16WXNJbWxoZENJNk1UYzFPRFk0Tmprek5pd2lhblJwSWpvaU9UVTVNbVkxTWpJdE16bGxZUzAwWm1FMkxUaGlZek10WkRWaFpEWmtNMk0wWWpSaUlpd2lhWE56SWpvaWFIUjBjSE02THk5cll5NWpjV050TG5OMFlYSjBhVzVpYkc5NExtTnZiUzl5WldGc2JYTXZjM1JoY25ScGJtSnNiM2dpTENKaGRXUWlPaUpoWTJOdmRXNTBJaXdpYzNWaUlqb2lOV1psTTJNeU5tTXRNamN6TmkwME9HRTBMV0kyWTJZdFlUbGxNMkpqWm1Oa1pqQXdJaXdpZEhsd0lqb2lRbVZoY21WeUlpd2lZWHB3SWpvaWFIUjBjSE02THk5aGNHa3VjSEp2ZUhrdFpHVjJMbU54WTIwdWMzUmhjblJwYm1Kc2IzZ3VZMjl0TDNCeWIyWnBiR1VpTENKeVpXRnNiVjloWTJObGMzTWlPbnNpY205c1pYTWlPbHNpYjJabWJHbHVaVjloWTJObGMzTWlMQ0oxYldGZllYVjBhRzl5YVhwaGRHbHZiaUlzSW1SbFptRjFiSFF0Y205c1pYTXRjM1JoY25ScGJtSnNiM2dpWFgwc0luSmxjMjkxY21ObFgyRmpZMlZ6Y3lJNmV5SmhZMk52ZFc1MElqcDdJbkp2YkdWeklqcGJJbTFoYm1GblpTMWhZMk52ZFc1MElpd2liV0Z1WVdkbExXRmpZMjkxYm5RdGJHbHVhM01pTENKMmFXVjNMWEJ5YjJacGJHVWlYWDE5TENKelkyOXdaU0k2SWxKbFlXUkZiblJsY25CeWFYTmxJaXdpWTJ4cFpXNTBTRzl6ZENJNklqRTNNaTR4T0M0d0xqRWlMQ0pqYkdsbGJuUkJaR1J5WlhOeklqb2lNVGN5TGpFNExqQXVNU0lzSW1Oc2FXVnVkRjlwWkNJNkltaDBkSEJ6T2k4dllYQnBMbkJ5YjNoNUxXUmxkaTVqY1dOdExuTjBZWEowYVc1aWJHOTRMbU52YlM5d2NtOW1hV3hsSW4wLkU1OEtXZFdCMTlVdkRVVHpFeXBPRnJxVUczNmNyQkQ1bmZDZmZVdnBxd2hhcGt6ZVNiR0QwZTF2b2JMN2hxaWdYZlFna2VSNWVIRVJ6RGJqVndpTVVsUzd2eFRSSnltX1plc0tYUmFzeUpqeGc3SG1WcVpBemlGdmpsenV2OGdndEdqdUxZY2JDd2dxRW5fWU1xd2FMNlZVYXRVLXpOLTBVWjZ3T2toZHlGdGdxQTNQLXMzZzZ6bU9zMEs4Y2VUSEE4Ul9hRFlOSlgwcmZNVGsyR3oxZ0YzSV9GeGNQVmd3RlFXM0RqMVh1cjh2WW1jOV9DbmlmdmFWdzR2MzVmV3BDbjRyWGpNTXpuRW9XcHVRZno4NGZ2QUU1dVNMTUVXWG1tWWdNNUlxaUtjY2VDdTdxSmlKa0VvQ3JzT3NJVTAxdTdEZVF6VzhwUnZ1Vm5JQThTUmZjUSYjeDI3O308L3ByZT48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+cGFyc2VyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O2RhdGFfZm9vZF9jb25zb3J0aXVtLnByb3h5LnJlc291cmNlLlByb3h5UmVmcmVzaFBhcnNlciBvYmplY3QgYXQgMHg3ZmNjNWUzMmM5OTAmZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnJlc3BvbnNlPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+Jmx0O1Jlc3BvbnNlIFsyMDBdJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5zY29wZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3O1JlYWRFbnRlcnByaXNlJiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7ZGF0YV9mb29kX2NvbnNvcnRpdW0ucHJveHkucmVzb3VyY2UuUmVzb3VyY2VTZXJ2ZXJDbGllbnQgb2JqZWN0IGF0IDB4N2ZjYzVlMzFkZjkwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAKICAgICAgICA8L2xpPgogICAgICAKICAgICAgICAKICAgICAgICA8bGkgY2xhc3M9ImZyYW1lIHVzZXIiPgogICAgICAgICAgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmbmFtZSI+L2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3JlcXVlc3RzL21vZGVscy5weTwvY29kZT4sIGxpbmUgOTc1LCBpbiBqc29uCiAgICAgICAgICAKCiAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dCIgaWQ9ImMxNDA1MTU3MzA0NDYzMzYiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSI5NjgiIGNsYXNzPSJwcmUtY29udGV4dCIgaWQ9InByZTE0MDUxNTczMDQ0NjMzNiI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ2MzM2JywgJ3Bvc3QxNDA1MTU3MzA0NDYzMzYnKSI+PHByZT4gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlcXVlc3RzSlNPTkRlY29kZUVycm9yKGUubXNnLCBlLmRvYywgZS5wb3MpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDYzMzYnLCAncG9zdDE0MDUxNTczMDQ0NjMzNicpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ2MzM2JywgJ3Bvc3QxNDA1MTU3MzA0NDYzMzYnKSI+PHByZT4gICAgICAgIHRyeTo8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NjMzNicsICdwb3N0MTQwNTE1NzMwNDQ2MzM2JykiPjxwcmU+ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXhqc29uLmxvYWRzKHNlbGYudGV4dCwgKiprd2FyZ3MpPC9wcmU+PC9saT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDYzMzYnLCAncG9zdDE0MDUxNTczMDQ0NjMzNicpIj48cHJlPiAgICAgICAgZXhjZXB0IEpTT05EZWNvZGVFcnJvciBhcyBlOjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ2MzM2JywgJ3Bvc3QxNDA1MTU3MzA0NDYzMzYnKSI+PHByZT4gICAgICAgICAgICAjIENhdGNoIEpTT04tcmVsYXRlZCBlcnJvcnMgYW5kIHJhaXNlIGFzIHJlcXVlc3RzLkpTT05EZWNvZGVFcnJvcjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPGxpIG9uY2xpY2s9InRvZ2dsZSgncHJlMTQwNTE1NzMwNDQ2MzM2JywgJ3Bvc3QxNDA1MTU3MzA0NDYzMzYnKSI+PHByZT4gICAgICAgICAgICAjIFRoaXMgYWxpYXNlcyBqc29uLkpTT05EZWNvZGVFcnJvciBhbmQgc2ltcGxlanNvbi5KU09ORGVjb2RlRXJyb3I8L3ByZT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgIDxvbCBzdGFydD0iOTc1IiBjbGFzcz0iY29udGV4dC1saW5lIj4KICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NjMzNicsICdwb3N0MTQwNTE1NzMwNDQ2MzM2JykiPjxwcmU+ICAgICAgICAgICAgcmFpc2UgUmVxdWVzdHNKU09ORGVjb2RlRXJyb3IoZS5tc2csIGUuZG9jLCBlLnBvcykKICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXjwvcHJlPiA8c3Bhbj7igKY8L3NwYW4+PC9saT4KICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPG9sIHN0YXJ0PSc5NzYnIGNsYXNzPSJwb3N0LWNvbnRleHQiIGlkPSJwb3N0MTQwNTE1NzMwNDQ2MzM2Ij4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NjMzNicsICdwb3N0MTQwNTE1NzMwNDQ2MzM2JykiPjxwcmU+PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NjMzNicsICdwb3N0MTQwNTE1NzMwNDQ2MzM2JykiPjxwcmU+ICAgIEBwcm9wZXJ0eTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDYzMzYnLCAncG9zdDE0MDUxNTczMDQ0NjMzNicpIj48cHJlPiAgICBkZWYgbGlua3Moc2VsZik6PC9wcmU+PC9saT4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxsaSBvbmNsaWNrPSJ0b2dnbGUoJ3ByZTE0MDUxNTczMDQ0NjMzNicsICdwb3N0MTQwNTE1NzMwNDQ2MzM2JykiPjxwcmU+ICAgICAgICAmcXVvdDsmcXVvdDsmcXVvdDtSZXR1cm5zIHRoZSBwYXJzZWQgaGVhZGVyIGxpbmtzIG9mIHRoZSByZXNwb25zZSwgaWYgYW55LiZxdW90OyZxdW90OyZxdW90OzwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDYzMzYnLCAncG9zdDE0MDUxNTczMDQ0NjMzNicpIj48cHJlPjwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8bGkgb25jbGljaz0idG9nZ2xlKCdwcmUxNDA1MTU3MzA0NDYzMzYnLCAncG9zdDE0MDUxNTczMDQ0NjMzNicpIj48cHJlPiAgICAgICAgaGVhZGVyID0gc2VsZi5oZWFkZXJzLmdldCgmcXVvdDtsaW5rJnF1b3Q7KTwvcHJlPjwvbGk+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCgogICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxkZXRhaWxzPgogICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9ImNvbW1hbmRzIj5Mb2NhbCB2YXJzPC9zdW1tYXJ5PgogICAgICAgICAgICAKICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ2YXJzIiBpZD0idjE0MDUxNTczMDQ0NjMzNiI+CiAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGg+VmFyaWFibGU8L3RoPgogICAgICAgICAgICAgICAgICA8dGg+VmFsdWU8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPmt3YXJnczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPnt9PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPnNlbGY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mbHQ7UmVzcG9uc2UgWzIwMF0mZ3Q7PC9wcmU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgIAogICAgICAgIDwvbGk+CiAgICAgIAogICAgPC91bD4KICA8L2Rpdj4KCiAgPGZvcm0gYWN0aW9uPSJodHRwczovL2RwYXN0ZS5jb20vIiBuYW1lPSJwYXN0ZWZvcm0iIGlkPSJwYXN0ZWZvcm0iIG1ldGhvZD0icG9zdCI+CiAgPGRpdiBpZD0icGFzdGViaW5UcmFjZWJhY2siIGNsYXNzPSJwYXN0ZWJpbiI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5ndWFnZSIgdmFsdWU9IlB5dGhvbkNvbnNvbGUiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGl0bGUiCiAgICAgIHZhbHVlPSJKU09ORGVjb2RlRXJyb3IgYXQgL2RqYW5nb2xkcC1kZmMvd2ViaG9vay8iPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic291cmNlIiB2YWx1ZT0iRGphbmdvIERwYXN0ZSBBZ2VudCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwb3N0ZXIiIHZhbHVlPSJEamFuZ28iPgogICAgPHRleHRhcmVhIG5hbWU9ImNvbnRlbnQiIGlkPSJ0cmFjZWJhY2tfYXJlYSIgY29scz0iMTQwIiByb3dzPSIyNSI+CkVudmlyb25tZW50OgoKClJlcXVlc3QgTWV0aG9kOiBQT1NUClJlcXVlc3QgVVJMOiBodHRwczovL2FwaS5wcm94eS1kZXYuY3FjbS5zdGFydGluYmxveC5jb20vZGphbmdvbGRwLWRmYy93ZWJob29rLwoKRGphbmdvIFZlcnNpb246IDQuMi4yMApQeXRob24gVmVyc2lvbjogMy4xMS4xMwpJbnN0YWxsZWQgQXBwbGljYXRpb25zOgpbJiN4Mjc7ZGphbmdvbGRwX2FjY291bnQmI3gyNzssCiAmI3gyNztkYXRhX2Zvb2RfY29uc29ydGl1bSYjeDI3OywKICYjeDI3O2RqYW5nb2xkcF9jc3YmI3gyNzssCiAmI3gyNztvaWRjX3Byb3ZpZGVyJiN4Mjc7LAogJiN4Mjc7ZGphbmdvLmNvbnRyaWIuYWRtaW4mI3gyNzssCiAmI3gyNztkamFuZ28uY29udHJpYi5hdXRoJiN4Mjc7LAogJiN4Mjc7ZGphbmdvLmNvbnRyaWIuY29udGVudHR5cGVzJiN4Mjc7LAogJiN4Mjc7ZGphbmdvLmNvbnRyaWIuc2Vzc2lvbnMmI3gyNzssCiAmI3gyNztkamFuZ28uY29udHJpYi5tZXNzYWdlcyYjeDI3OywKICYjeDI3O2RqYW5nby5jb250cmliLnN0YXRpY2ZpbGVzJiN4Mjc7LAogJiN4Mjc7ZGphbmdvbGRwJiN4Mjc7LAogJiN4Mjc7Z3VhcmRpYW4mI3gyNztdCkluc3RhbGxlZCBNaWRkbGV3YXJlOgomI3gyNzsmI3gyNzsKCgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9yZXF1ZXN0cy9tb2RlbHMucHkiLCBsaW5lIDk3MSwgaW4ganNvbgogICAgcmV0dXJuIGNvbXBsZXhqc29uLmxvYWRzKHNlbGYudGV4dCwgKiprd2FyZ3MpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2Fsd2F5c2RhdGEvcHl0aG9uLzMuMTEvbGliL3B5dGhvbjMuMTEvanNvbi9fX2luaXRfXy5weSIsIGxpbmUgMzQ2LCBpbiBsb2FkcwogICAgcmV0dXJuIF9kZWZhdWx0X2RlY29kZXIuZGVjb2RlKHMpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2Fsd2F5c2RhdGEvcHl0aG9uLzMuMTEvbGliL3B5dGhvbjMuMTEvanNvbi9kZWNvZGVyLnB5IiwgbGluZSAzMzcsIGluIGRlY29kZQogICAgb2JqLCBlbmQgPSBzZWxmLnJhd19kZWNvZGUocywgaWR4PV93KHMsIDApLmVuZCgpKQogICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvYWx3YXlzZGF0YS9weXRob24vMy4xMS9saWIvcHl0aG9uMy4xMS9qc29uL2RlY29kZXIucHkiLCBsaW5lIDM1NSwgaW4gcmF3X2RlY29kZQogICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCZxdW90O0V4cGVjdGluZyB2YWx1ZSZxdW90OywgcywgZXJyLnZhbHVlKSBmcm9tIE5vbmUKICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KCkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uIChFeHBlY3RpbmcgdmFsdWU6IGxpbmUgMSBjb2x1bW4gMSAoY2hhciAwKSksIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgogIEZpbGUgIi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9kamFuZ28vY29yZS9oYW5kbGVycy9leGNlcHRpb24ucHkiLCBsaW5lIDU1LCBpbiBpbm5lcgogICAgcmVzcG9uc2UgPSBnZXRfcmVzcG9uc2UocmVxdWVzdCkKICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL2RqYW5nby9jb3JlL2hhbmRsZXJzL2Jhc2UucHkiLCBsaW5lIDE5NywgaW4gX2dldF9yZXNwb25zZQogICAgcmVzcG9uc2UgPSB3cmFwcGVkX2NhbGxiYWNrKHJlcXVlc3QsICpjYWxsYmFja19hcmdzLCAqKmNhbGxiYWNrX2t3YXJncykKICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL2RqYW5nby92aWV3cy9kZWNvcmF0b3JzL2NzcmYucHkiLCBsaW5lIDU2LCBpbiB3cmFwcGVyX3ZpZXcKICAgIHJldHVybiB2aWV3X2Z1bmMoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL2RqYW5nby92aWV3cy9nZW5lcmljL2Jhc2UucHkiLCBsaW5lIDEwNCwgaW4gdmlldwogICAgcmV0dXJuIHNlbGYuZGlzcGF0Y2gocmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9yZXN0X2ZyYW1ld29yay92aWV3cy5weSIsIGxpbmUgNTA5LCBpbiBkaXNwYXRjaAogICAgcmVzcG9uc2UgPSBzZWxmLmhhbmRsZV9leGNlcHRpb24oZXhjKQogICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3ZlbnYvbGliL3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9yZXN0X2ZyYW1ld29yay92aWV3cy5weSIsIGxpbmUgNDY5LCBpbiBoYW5kbGVfZXhjZXB0aW9uCiAgICBzZWxmLnJhaXNlX3VuY2F1Z2h0X2V4Y2VwdGlvbihleGMpCiAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3Jlc3RfZnJhbWV3b3JrL3ZpZXdzLnB5IiwgbGluZSA0ODAsIGluIHJhaXNlX3VuY2F1Z2h0X2V4Y2VwdGlvbgogICAgcmFpc2UgZXhjCiAgICBeXl5eXl5eXl4KICBGaWxlICIvaG9tZS9jcWNtLXByb3h5LWRldi9zdGFydGluYmxveC92ZW52L2xpYi9weXRob24zLjExL3NpdGUtcGFja2FnZXMvcmVzdF9mcmFtZXdvcmsvdmlld3MucHkiLCBsaW5lIDUwNiwgaW4gZGlzcGF0Y2gKICAgIHJlc3BvbnNlID0gaGFuZGxlcihyZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9ob21lL2NxY20tcHJveHktZGV2L3N0YXJ0aW5ibG94L3NpYnNlcnZlci9kYXRhX2Zvb2RfY29uc29ydGl1bS92aWV3cy5weSIsIGxpbmUgOTAsIGluIHBvc3QKICAgIHNlbGYucHJvY2VzcyhyZXF1ZXN0LCBkYXRhKQogICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvc2lic2VydmVyL2RhdGFfZm9vZF9jb25zb3J0aXVtL3ZpZXdzLnB5IiwgbGluZSA0NiwgaW4gcHJvY2VzcwogICAgUmVzb3VyY2VTZXJ2ZXJDbGllbnQoZiZxdW90O3tob3N0LnNjaGVtZX06Ly97aG9zdC5uZXRsb2N9LyZxdW90OykucmVxdWVzdF9zY29wZSgKICAgIF4KICBGaWxlICIvaG9tZS9jcWNtLXByb3h5LWRldi9zdGFydGluYmxveC9zaWJzZXJ2ZXIvZGF0YV9mb29kX2NvbnNvcnRpdW0vcHJveHkvcmVzb3VyY2UucHkiLCBsaW5lIDMyMiwgaW4gcmVxdWVzdF9zY29wZQogICAgc2VsZi5fcmVxdWVzdF9hbmRfcHJvY2Vzc19zY29wZV9hdF9lbmRwb2ludChwYXJzZXIsIHNjb3BlLCBlbmRwb2ludCkKICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvc2lic2VydmVyL2RhdGFfZm9vZF9jb25zb3J0aXVtL3Byb3h5L3Jlc291cmNlLnB5IiwgbGluZSAzMDMsIGluIF9yZXF1ZXN0X2FuZF9wcm9jZXNzX3Njb3BlX2F0X2VuZHBvaW50CiAgICBkYXRhID0gcmVzcG9uc2UuanNvbigpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL2hvbWUvY3FjbS1wcm94eS1kZXYvc3RhcnRpbmJsb3gvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3JlcXVlc3RzL21vZGVscy5weSIsIGxpbmUgOTc1LCBpbiBqc29uCiAgICByYWlzZSBSZXF1ZXN0c0pTT05EZWNvZGVFcnJvcihlLm1zZywgZS5kb2MsIGUucG9zKQogICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KCkV4Y2VwdGlvbiBUeXBlOiBKU09ORGVjb2RlRXJyb3IgYXQgL2RqYW5nb2xkcC1kZmMvd2ViaG9vay8KRXhjZXB0aW9uIFZhbHVlOiBFeHBlY3RpbmcgdmFsdWU6IGxpbmUgMSBjb2x1bW4gMSAoY2hhciAwKQo8L3RleHRhcmVhPgogIDxicj48YnI+CiAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNoYXJlIHRoaXMgdHJhY2ViYWNrIG9uIGEgcHVibGljIHdlYnNpdGUiPgogIDwvZGl2Pgo8L2Zvcm0+Cgo8L2Rpdj4KCgo8ZGl2IGlkPSJyZXF1ZXN0aW5mbyI+CiAgPGgyPlJlcXVlc3QgaW5mb3JtYXRpb248L2gyPgoKCiAgCiAgICA8aDMgaWQ9InVzZXItaW5mbyI+VVNFUjwvaDM+CiAgICA8cD5Bbm9ueW1vdXNVc2VyPC9wPgogIAoKICA8aDMgaWQ9ImdldC1pbmZvIj5HRVQ8L2gzPgogIAogICAgPHA+Tm8gR0VUIGRhdGE8L3A+CiAgCgogIDxoMyBpZD0icG9zdC1pbmZvIj5QT1NUPC9oMz4KICAKICAgIDxwPk5vIFBPU1QgZGF0YTwvcD4KICAKCiAgPGgzIGlkPSJmaWxlcy1pbmZvIj5GSUxFUzwvaDM+CiAgCiAgICA8cD5ObyBGSUxFUyBkYXRhPC9wPgogIAoKICA8aDMgaWQ9ImNvb2tpZS1pbmZvIj5DT09LSUVTPC9oMz4KICAKICAgIDxwPk5vIGNvb2tpZSBkYXRhPC9wPgogIAoKICA8aDMgaWQ9Im1ldGEtaW5mbyI+TUVUQTwvaDM+CiAgPHRhYmxlIGNsYXNzPSJyZXEiPgogICAgPHRoZWFkPgogICAgICA8dHI+CiAgICAgICAgPHRoPlZhcmlhYmxlPC90aD4KICAgICAgICA8dGg+VmFsdWU8L3RoPgogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkNPTlRFTlRfTEVOR1RIPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mI3gyNzsxMDUmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5DT05URU5UX1RZUEU8L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3O2FwcGxpY2F0aW9uL2pzb24mI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5IVFRQX0FDQ0VQVDwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7Ki8qJiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAKICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+SFRUUF9BQ0NFUFRfRU5DT0RJTkc8L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3O2d6aXA7cT0xLjAsZGVmbGF0ZTtxPTAuNixpZGVudGl0eTtxPTAuMyYjeDI3OzwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkhUVFBfQVVUSE9SSVpBVElPTjwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+KCYjeDI3O0JlYXJlciAmI3gyNzsKICYjeDI3O2V5SmhiR2NpT2lKU1V6STFOaUlzSW5SNWNDSWdPaUFpU2xkVUlpd2lhMmxrSWlBNklDSlJSbEpFUzFkYVEyaHpNbGxRWW5ScVlsOXlRVXR3UXpOek1GbzBUMkZDTUV0RlEwNTZObmx4V0hRMEluMC5leUpsZUhBaU9qRTNOVGcyT0RjeU16TXNJbWxoZENJNk1UYzFPRFk0Tmprek15d2lhblJwSWpvaVpUZGpNVGxrTURRdE9EaGhOQzAwTnpjeExXSTRORGN0TVRaaFptTmlNakl3TmpNMElpd2lhWE56SWpvaWFIUjBjSE02THk5cll5NWpjV050TG5OMFlYSjBhVzVpYkc5NExtTnZiUzl5WldGc2JYTXZjM1JoY25ScGJtSnNiM2dpTENKaGRXUWlPaUpoWTJOdmRXNTBJaXdpYzNWaUlqb2lNVGc0WWpnNU1qVXRZbVprT0MwME1UbGlMVGhsTlRVdE9XWmlOVFppT0RBd05qUTVJaXdpZEhsd0lqb2lRbVZoY21WeUlpd2lZWHB3SWpvaWFIUjBjSE02THk5emRHRm5hVzVuTG05d1pXNW1iMjlrYm1WMGQyOXlheTV2Y21jdWRXc3ZJaXdpWVdOeUlqb2lNU0lzSW1Gc2JHOTNaV1F0YjNKcFoybHVjeUk2V3lKb2RIUndjem92TDNOMFlXZHBibWN1YjNCbGJtWnZiMlJ1WlhSM2IzSnJMbTl5Wnk1MWF5OGlYU3dpY21WaGJHMWZZV05qWlhOeklqcDdJbkp2YkdWeklqcGJJbTltWm14cGJtVmZZV05qWlhOeklpd2lkVzFoWDJGMWRHaHZjbWw2WVhScGIyNGlMQ0prWldaaGRXeDBMWEp2YkdWekxYTjBZWEowYVc1aWJHOTRJbDE5TENKeVpYTnZkWEpqWlY5aFkyTmxjM01pT25zaVlXTmpiM1Z1ZENJNmV5SnliMnhsY3lJNld5SnRZVzVoWjJVdFlXTmpiM1Z1ZENJc0ltMWhibUZuWlMxaFkyTnZkVzUwTFd4cGJtdHpJaXdpZG1sbGR5MXdjbTltYVd4bElsMTlMQ0pvZEhSd2N6b3ZMM04wWVdkcGJtY3ViM0JsYm1admIyUnVaWFIzYjNKckxtOXlaeTUxYXk4aU9uc2ljbTlzWlhNaU9sc2lkVzFoWDNCeWIzUmxZM1JwYjI0aVhYMTlMQ0p6WTI5d1pTSTZJbGR5YVhSbFJXNTBaWEp3Y21selpTQndjbTltYVd4bElHVnRZV2xzSWl3aVpXMWhhV3hmZG1WeWFXWnBaV1FpT21aaGJITmxMQ0pqYkdsbGJuUkliM04wSWpvaU1UY3lMakU0TGpBdU1TSXNJbkJ5WldabGNuSmxaRjkxYzJWeWJtRnRaU0k2SW5ObGNuWnBZMlV0WVdOamIzVnVkQzFvZEhSd2N6b3ZMM04wWVdkcGJtY3ViM0JsYm1admIyUnVaWFIzYjNKckxtOXlaeTUxYXk4aUxDSmpiR2xsYm5SQlpHUnlaWE56SWpvaU1UY3lMakU0TGpBdU1TSXNJbU5zYVdWdWRGOXBaQ0k2SW1oMGRIQnpPaTh2YzNSaFoybHVaeTV2Y0dWdVptOXZaRzVsZEhkdmNtc3ViM0puTG5Wckx5SjkuQ0dyQVRZcDlPMkJvTGpSNWlFSEZZdDRRNnBhSEtBS2luNFFKTi1wZ21CcXltZWxuWE9qX1ZmanZSTjhQTXlPMHNLNzU0M0JfSTdLZmR3SzlvZWtoSE5GSHpKTkgxdnlSRkNqME05TzcyOXB4NWEwaFBpcnM3a3JONnREZm5yV0tYM2pQazA5ekFrZktSaEhQRnZ2NU1MUXZzaHNIM1lBSzZUNFhQbVVmbklEQ0pBVWJRbDdjb2NwejFyNHBTTmR5NHhNNm9CTm56c3NOdGFybjdOWEJlTFpOS2FicmJxUHkxR3dYNUlEbTcxYmwyX3o0bWdHZWhVd1BIZFozVzBZYjYzTy1ibHdXWHdTSVdoM2VHX1FONGQ5b00xMUI3RjJQOEQ3YjZ6eDJRRXd5eVkzc280ZHhVM0lueXlDNy1HVDdZNG1NbjE1dFhoN3JfejdEUmxWdUhBJiN4Mjc7KTwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkhUVFBfSE9TVDwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7YXBpLnByb3h5LWRldi5jcWNtLnN0YXJ0aW5ibG94LmNvbSYjeDI3OzwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkhUVFBfVVNFUl9BR0VOVDwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7RmFyYWRheSB2Mi45LjAmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5IVFRQX1ZJQTwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7MS4xIGFscHJveHkmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5IVFRQX1hfRk9SV0FSREVEX1BST1RPPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mI3gyNztodHRwcyYjeDI3OzwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkhUVFBfWF9SRUFMX0lQPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mI3gyNzsxODIuMjM5LjE5NC4xMTgmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5QQVRIX0lORk88L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3Oy9kamFuZ29sZHAtZGZjL3dlYmhvb2svJiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAKICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+UVVFUllfU1RSSU5HPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mI3gyNzsmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5SRU1PVEVfQUREUjwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7MTgyLjIzOS4xOTQuMTE4JiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAKICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+UkVRVUVTVF9NRVRIT0Q8L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3O1BPU1QmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5SRVFVRVNUX1VSSTwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7L2RqYW5nb2xkcC1kZmMvd2ViaG9vay8mI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5TQ1JJUFRfTkFNRTwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7JiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAKICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+U0VSVkVSX05BTUU8L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiYjeDI3O2FzdHJhbCYjeDI3OzwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPlNFUlZFUl9QT1JUPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mI3gyNzs4MTAwJiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAKICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+U0VSVkVSX1BST1RPQ09MPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT4mI3gyNztIVFRQLzEuMSYjeDI3OzwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPnV3c2dpLm5vZGU8L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPmImI3gyNzthc3RyYWwmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD51d3NnaS52ZXJzaW9uPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5iJiN4Mjc7Mi4wLjI4JiN4Mjc7PC9wcmU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAKICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+d3NnaS5lcnJvcnM8L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDtfaW8uVGV4dElPV3JhcHBlciBuYW1lPTIgbW9kZT0mI3gyNzt3JiN4Mjc7IGVuY29kaW5nPSYjeDI3O1VURi04JiN4Mjc7Jmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPndzZ2kuaW5wdXQ8L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPiZsdDt1d3NnaS5fSW5wdXQgb2JqZWN0IGF0IDB4N2ZjYzVlYzc1MjMwJmd0OzwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPndzZ2kubXVsdGlwcm9jZXNzPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5UcnVlPC9wcmU+PC90ZD4KICAgICAgICA8L3RyPgogICAgICAKICAgICAgICA8dHI+CiAgICAgICAgICA8dGQ+d3NnaS5tdWx0aXRocmVhZDwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+RmFsc2U8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD53c2dpLnJ1bl9vbmNlPC90ZD4KICAgICAgICAgIDx0ZCBjbGFzcz0iY29kZSI+PHByZT5GYWxzZTwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPndzZ2kudXJsX3NjaGVtZTwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+JiN4Mjc7aHR0cHMmI3gyNzs8L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD53c2dpLnZlcnNpb248L3RkPgogICAgICAgICAgPHRkIGNsYXNzPSJjb2RlIj48cHJlPigxLCAwKTwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICA8L3Rib2R5PgogIDwvdGFibGU+CgoKICA8aDMgaWQ9InNldHRpbmdzLWluZm8iPlNldHRpbmdzPC9oMz4KICA8aDQ+VXNpbmcgc2V0dGluZ3MgbW9kdWxlIDxjb2RlPjwvY29kZT48L2g0PgogIDx0YWJsZSBjbGFzcz0icmVxIj4KICAgIDx0aGVhZD4KICAgICAgPHRyPgogICAgICAgIDx0aD5TZXR0aW5nPC90aD4KICAgICAgICA8dGg+VmFsdWU8L3RoPgogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgICAgCiAgICAgICAgPHRyPgogICAgICAgICAgPHRkPkRKQU5HT0xEUF9QQUNLQUdFUzwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+WyYjeDI3O2RqYW5nb2xkcF9hY2NvdW50JiN4Mjc7LCAmI3gyNztkYXRhX2Zvb2RfY29uc29ydGl1bSYjeDI3OywgJiN4Mjc7ZGphbmdvbGRwX2NzdiYjeDI3O108L3ByZT48L3RkPgogICAgICAgIDwvdHI+CiAgICAgIAogICAgICAgIDx0cj4KICAgICAgICAgIDx0ZD5JTlNUQUxMRURfQVBQUzwvdGQ+CiAgICAgICAgICA8dGQgY2xhc3M9ImNvZGUiPjxwcmU+WyYjeDI3O2RqYW5nb2xkcF9hY2NvdW50JiN4Mjc7LAogJiN4Mjc7ZGF0YV9mb29kX2NvbnNvcnRpdW0mI3gyNzssCiAmI3gyNztkamFuZ29sZHBfY3N2JiN4Mjc7LAogJiN4Mjc7b2lkY19wcm92aWRlciYjeDI3OywKICYjeDI3O2RqYW5nby5jb250cmliLmFkbWluJiN4Mjc7LAogJiN4Mjc7ZGphbmdvLmNvbnRyaWIuYXV0aCYjeDI3OywKICYjeDI3O2RqYW5nby5jb250cmliLmNvbnRlbnR0eXBlcyYjeDI3OywKICYjeDI3O2RqYW5nby5jb250cmliLnNlc3Npb25zJiN4Mjc7LAogJiN4Mjc7ZGphbmdvLmNvbnRyaWIubWVzc2FnZXMmI3gyNzssCiAmI3gyNztkamFuZ28uY29udHJpYi5zdGF0aWNmaWxlcyYjeDI3OywKICYjeDI3O2RqYW5nb2xkcCYjeDI3OywKICYjeDI3O2d1YXJkaWFuJiN4Mjc7XTwvcHJlPjwvdGQ+CiAgICAgICAgPC90cj4KICAgICAgCiAgICA8L3Rib2R5PgogIDwvdGFibGU+Cgo8L2Rpdj4KCiAgPGRpdiBpZD0iZXhwbGFuYXRpb24iPgogICAgPHA+CiAgICAgIFlvdeKAmXJlIHNlZWluZyB0aGlzIGVycm9yIGJlY2F1c2UgeW91IGhhdmUgPGNvZGU+REVCVUcgPSBUcnVlPC9jb2RlPiBpbiB5b3VyCiAgICAgIERqYW5nbyBzZXR0aW5ncyBmaWxlLiBDaGFuZ2UgdGhhdCB0byA8Y29kZT5GYWxzZTwvY29kZT4sIGFuZCBEamFuZ28gd2lsbAogICAgICBkaXNwbGF5IGEgc3RhbmRhcmQgcGFnZSBnZW5lcmF0ZWQgYnkgdGhlIGhhbmRsZXIgZm9yIHRoaXMgc3RhdHVzIGNvZGUuCiAgICA8L3A+CiAgPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K
|
|
recorded_at: Wed, 24 Sep 2025 04:08:57 GMT
|
|
recorded_with: VCR 6.2.0
|