mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-11-04 13:07:11 +00:00
* fix(catalog): match preview length to authored compositions * fix(catalog): derive undeclared preview duration from motion
1 line
33 KiB
JSON
1 line
33 KiB
JSON
{"html":"<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=1920, height=1080\" />\n <script src=\"https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js\"></script>\n <style>* { margin: 0; padding: 0; } html, body { width: 1920px; height: 1080px; overflow: hidden; background: #0a0a0a; }\n [data-composition-src] { inset: 0; display: grid; place-items: center stretch; box-sizing: border-box; padding: 98px; }</style>\n</head>\n<body>\n <div data-composition-id=\"preview-root\" data-width=\"1920\" data-height=\"1080\" data-start=\"0\" data-duration=\"3.5\" data-hf-theme=\"dark\">\n <div data-composition-id=\"cursor-glyph-trail\" data-composition-src=\"data:text/html;base64,PCFkb2N0eXBlIGh0bWw+CjwhLS0KICBjdXJzb3ItZ2x5cGgtdHJhaWw6IGEgdHV0b3JpYWwgY3Vyc29yIHBhdGgsIG1vdW50YWJsZSBzdWItY29tcG9zaXRpb24KCiAgY29uY2VwdDogb24gYSBTZXR0aW5ncyBzY3JlZW4gdGhlIGFycm93IGNsaWNrcyB0aHJvdWdoIHRocmVlIHN0ZXBzICh0dXJuIG9uIHRoZSBlbWFpbAogIGRpZ2VzdCwgcGljayBXZWVrbHksIHNhdmUpLiBFYWNoIG1vdmUgbGVhdmVzIGEgZG90dGVkIHRyYWlsIHNwYWNlZCBldmVubHkgYnkgZGlzdGFuY2UsIGVhY2gKICBjbGljayBsZWF2ZXMgYSBudW1iZXJlZCBzdGVwIG1hcmtlciwgYW5kIGEgc3RlcCdzIHRyYWlsIGZhZGVzIGFzIHRoZSBuZXh0IG1vdmUgYmVnaW5zLCBzbwogIHRoZSB2aWV3ZXIgY2FuIGZvbGxvdyB0aGUgcGF0aCB3aXRob3V0IHRoZSBzY3JlZW4gZmlsbGluZyB1cC4KCiAgbW91bnQgY29udHJhY3Q6IGxvYWRlZCBieSBhIGhvc3QgdGhyb3VnaCBkYXRhLWNvbXBvc2l0aW9uLXNyYzsgb25seSA8dGVtcGxhdGU+IGlzIGNsb25lZC4KICAjcm9vdCBmaWxscyB0aGUgaG9zdCBjbGlwIChpbnNldDowKSBhbmQgZHJhd3MgaXRzIG93biBzZXR0aW5ncyB3aW5kb3cuIEEgaG9zdCBtYXkgcmVwbGFjZQogIHRoZSBhcnJvdyB3aXRoIDx0ZW1wbGF0ZSBkYXRhLXNsb3Q9ImN1cnNvci1nbHlwaC10cmFpbC1hY3RvciI+IGF0IGRvY3VtZW50IGxldmVsLgoKICBlbnZlbG9wZSAoZGVmYXVsdCAzLjVzKTogbW92ZXMgMC4xLCAxLjEsIDIuMSAoMC41cyBlYWNoKSwgY2xpY2tzIDAuOCwgMS44LCAyLjgsIGhvbGQsCiAgb3B0aW9uYWwgMC40NXMgZXhpdC4gU2hvcnRlciBkdXJhdGlvbnMgY29tcHJlc3MgZXZlcnkgYmVhdCBldmVubHkuCi0tPgo8aHRtbAogIGxhbmc9ImVuIgogIGRhdGEtY29tcG9zaXRpb24taWQ9ImN1cnNvci1nbHlwaC10cmFpbCIKICBkYXRhLWNvbXBvc2l0aW9uLWR1cmF0aW9uPSIzLjUiCiAgZGF0YS1jb21wb3NpdGlvbi12YXJpYWJsZXM9J1sKICAgIHsgImlkIjogImdseXBocyIsICJ0eXBlIjogInN0cmluZyIsICJyb2xlIjogImNvbnRlbnQiLCAibGFiZWwiOiAiR2x5cGhzIChkZXByZWNhdGVkKSIsICJkZXNjcmlwdGlvbiI6ICJEZXByZWNhdGVkIGFuZCBpZ25vcmVkOiB0aGUgdHJhaWwgZHJhd3MgZXZlbmx5IHNwYWNlZCBkb3RzLiIsICJkZWZhdWx0IjogIiIgfSwKICAgIHsgImlkIjogImRlbnNpdHkiLCAidHlwZSI6ICJlbnVtIiwgInJvbGUiOiAic3R5bGUiLCAibGFiZWwiOiAiRGVuc2l0eSIsICJkZXNjcmlwdGlvbiI6ICJTcGFjaW5nIGJldHdlZW4gdHJhaWwgZG90cy4iLCAiZGVmYXVsdCI6ICJtZWQiLCAib3B0aW9ucyI6IFt7ICJ2YWx1ZSI6ICJsb3ciLCAibGFiZWwiOiAiTG93IiB9LCB7ICJ2YWx1ZSI6ICJtZWQiLCAibGFiZWwiOiAiTWVkaXVtIiB9LCB7ICJ2YWx1ZSI6ICJoaWdoIiwgImxhYmVsIjogIkhpZ2giIH1dIH0sCiAgICB7ICJpZCI6ICJwYXRoIiwgInR5cGUiOiAiZW51bSIsICJyb2xlIjogInN0eWxlIiwgImxhYmVsIjogIlBhdGgiLCAiZGVzY3JpcHRpb24iOiAiSG93IGVhY2ggbW92ZSBiZW5kczogc3dlZXAgaXMgYSBnZW50bGUgY3VydmUsIGFyYyBhIGRlZXBlciBvbmUsIHppZ3phZyBhIHN0cmFpZ2h0IGxpbmUuIiwgImRlZmF1bHQiOiAic3dlZXAiLCAib3B0aW9ucyI6IFt7ICJ2YWx1ZSI6ICJzd2VlcCIsICJsYWJlbCI6ICJTd2VlcCIgfSwgeyAidmFsdWUiOiAiYXJjIiwgImxhYmVsIjogIkFyYyIgfSwgeyAidmFsdWUiOiAiemlnemFnIiwgImxhYmVsIjogIlppZ3phZyIgfV0gfSwKICAgIHsgImlkIjogImZhZGUiLCAidHlwZSI6ICJudW1iZXIiLCAicm9sZSI6ICJ0aW1pbmciLCAibGFiZWwiOiAiRmFkZSIsICJkZXNjcmlwdGlvbiI6ICJTZWNvbmRzIGEgc3RlcCB0cmFpbCB0YWtlcyB0byBmYWRlIG9uY2UgdGhlIG5leHQgbW92ZSBiZWdpbnMsIGNsYW1wZWQgMC4zIHRvIDEuNS4iLCAiZGVmYXVsdCI6IDAuNSB9LAogICAgeyAiaWQiOiAiYWNjZW50IiwgInR5cGUiOiAiZW51bSIsICJyb2xlIjogInN0eWxlIiwgImxhYmVsIjogIkFjY2VudCIsICJkZXNjcmlwdGlvbiI6ICJUcmFpbCBhbmQgc3RlcCBtYXJrZXIgY29sb3I6IGdyZWVuIHJpZGVzIC0tYnJhbmQsIGJsdWUgcmlkZXMgLS1hY2NlbnQsIHZpb2xldCByaWRlcyAtLWFjY2VudC0yLiIsICJkZWZhdWx0IjogImdyZWVuIiwgIm9wdGlvbnMiOiBbeyAidmFsdWUiOiAiZ3JlZW4iLCAibGFiZWwiOiAiR3JlZW4iIH0sIHsgInZhbHVlIjogImJsdWUiLCAibGFiZWwiOiAiQmx1ZSIgfSwgeyAidmFsdWUiOiAidmlvbGV0IiwgImxhYmVsIjogIlZpb2xldCIgfV0gfSwKICAgIHsgImlkIjogImV4aXQiLCAidHlwZSI6ICJlbnVtIiwgInJvbGUiOiAidGltaW5nIiwgImxhYmVsIjogIkV4aXQiLCAiZGVzY3JpcHRpb24iOiAiT3B0aW9uYWwgZGVwYXJ0dXJlLiBEZWZhdWx0IG5vbmU6IHRoZSBmaW5pc2hlZCBzY3JlZW4gaG9sZHMgdW50aWwgdGhlIGZyYW1lIGN1dHMuIiwgImRlZmF1bHQiOiAibm9uZSIsICJvcHRpb25zIjogW3sgInZhbHVlIjogIm5vbmUiLCAibGFiZWwiOiAiTm9uZSIgfSwgeyAidmFsdWUiOiAiZmFkZSIsICJsYWJlbCI6ICJGYWRlIiB9LCB7ICJ2YWx1ZSI6ICJ1cCIsICJsYWJlbCI6ICJVcCIgfV0gfQogIF0nCj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPHRpdGxlPkN1cnNvciBHbHlwaCBUcmFpbDwvdGl0bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHRlbXBsYXRlPgogICAgICA8c3R5bGU+CiAgICAgICAgI3Jvb3QgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgY29udGFpbmVyLXR5cGU6IHNpemU7CiAgICAgICAgICBmb250LWZhbWlseTogSW50ZXIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZjsKICAgICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgICAgY29sb3I6ICMxZDFkMWY7CiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgIC0tY2d0LWluazogIzFkMWQxZjsKICAgICAgICAgIC0tY2d0LWRpbTogIzZlNmU3MzsKICAgICAgICAgIC0tY2d0LWxpbmU6IHJnYmEoMCwgMCwgMCwgMC4wNyk7CiAgICAgICAgfQogICAgICAgIC5jZ3Qtc3RhZ2UgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIH0KICAgICAgICAuY2d0LXdpbiB7CiAgICAgICAgICB3aWR0aDogNjBjcXc7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxLjFjcXc7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIGJveC1zaGFkb3c6CiAgICAgICAgICAgIDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDYpLAogICAgICAgICAgICAwIDAuMWNxdyAwLjJjcXcgcmdiYSgwLCAwLCAwLCAwLjA1KSwKICAgICAgICAgICAgMCAxLjRjcXcgMy42Y3F3IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICB9CiAgICAgICAgLmNndC1iYXIgewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBnYXA6IDAuNDVjcXc7CiAgICAgICAgICBoZWlnaHQ6IDIuOGNxdzsKICAgICAgICAgIHBhZGRpbmc6IDAgMS4xY3F3OwogICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNndC1saW5lKTsKICAgICAgICB9CiAgICAgICAgLmNndC1iYXIgaSB7CiAgICAgICAgICB3aWR0aDogMC42MmNxdzsKICAgICAgICAgIGhlaWdodDogMC42MmNxdzsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgICAgICAgfQogICAgICAgIC5jZ3QtYmFyIHNwYW4gewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgbGVmdDogMDsKICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgZm9udC1zaXplOiAwLjhjcXc7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgY29sb3I6IHZhcigtLWNndC1kaW0pOwogICAgICAgIH0KICAgICAgICAuY2d0LWJvZHkgewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICB9CiAgICAgICAgLmNndC1uYXYgewogICAgICAgICAgd2lkdGg6IDE0Y3F3OwogICAgICAgICAgcGFkZGluZzogMS4yY3F3IDAuOGNxdzsKICAgICAgICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjg7CiAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jZ3QtbGluZSk7CiAgICAgICAgICBmb250LXNpemU6IDAuODZjcXc7CiAgICAgICAgfQogICAgICAgIC5jZ3QtbmF2IGIgewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBtYXJnaW46IDAuOWNxdyAwLjZjcXcgMC4zNWNxdzsKICAgICAgICAgIGZvbnQtc2l6ZTogMC42NmNxdzsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtOwogICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgIGNvbG9yOiB2YXIoLS1jZ3QtZGltKTsKICAgICAgICB9CiAgICAgICAgLmNndC1uYXYgYjpmaXJzdC1jaGlsZCB7CiAgICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgIH0KICAgICAgICAuY2d0LW5hdiBkaXYgewogICAgICAgICAgcGFkZGluZzogMC40MmNxdyAwLjZjcXc7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjRjcXc7CiAgICAgICAgICBjb2xvcjogIzNhM2EzYzsKICAgICAgICB9CiAgICAgICAgLmNndC1uYXYgLmlzLW9uIHsKICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wNik7CiAgICAgICAgICBjb2xvcjogdmFyKC0tY2d0LWluayk7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIH0KICAgICAgICAuY2d0LW1haW4gewogICAgICAgICAgZmxleDogMTsKICAgICAgICAgIHBhZGRpbmc6IDJjcXcgMi40Y3F3IDEuOGNxdzsKICAgICAgICB9CiAgICAgICAgLmNndC1tYWluIGgxIHsKICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgIGZvbnQtc2l6ZTogMS41Y3F3OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDY1MDsKICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgICAgIH0KICAgICAgICAuY2d0LWxlZGUgewogICAgICAgICAgbWFyZ2luOiAwLjM1Y3F3IDAgMS4yY3F3OwogICAgICAgICAgZm9udC1zaXplOiAwLjljcXc7CiAgICAgICAgICBjb2xvcjogdmFyKC0tY2d0LWRpbSk7CiAgICAgICAgfQogICAgICAgIC5jZ3Qtcm93IHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgZ2FwOiAyY3F3OwogICAgICAgICAgcGFkZGluZzogMS4xY3F3IDA7CiAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2d0LWxpbmUpOwogICAgICAgIH0KICAgICAgICAuY2d0LWxhYmVsIHsKICAgICAgICAgIGZvbnQtc2l6ZTogMC45OGNxdzsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgfQogICAgICAgIC5jZ3QtZGVzYyB7CiAgICAgICAgICBtYXJnaW4tdG9wOiAwLjJjcXc7CiAgICAgICAgICBmb250LXNpemU6IDAuODRjcXc7CiAgICAgICAgICBjb2xvcjogdmFyKC0tY2d0LWRpbSk7CiAgICAgICAgfQogICAgICAgIC5jZ3QtdG9nZ2xlIHsKICAgICAgICAgIC0tY2d0LW9uOiAwOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgZmxleDogbm9uZTsKICAgICAgICAgIHdpZHRoOiAyLjVjcXc7CiAgICAgICAgICBoZWlnaHQ6IDEuNDRjcXc7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxY3F3OwogICAgICAgICAgYmFja2dyb3VuZDogI2UzZTNlNjsKICAgICAgICB9CiAgICAgICAgLmNndC10b2dnbGU6OmJlZm9yZSB7CiAgICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGluc2V0OiAwOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNndC1pbmspOwogICAgICAgICAgb3BhY2l0eTogdmFyKC0tY2d0LW9uKTsKICAgICAgICB9CiAgICAgICAgLmNndC10b2dnbGUgaSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBsZWZ0OiAwLjE2Y3F3OwogICAgICAgICAgdG9wOiAwLjE2Y3F3OwogICAgICAgICAgd2lkdGg6IDEuMTJjcXc7CiAgICAgICAgICBoZWlnaHQ6IDEuMTJjcXc7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgICAgICAgYm94LXNoYWRvdzogMCAwLjA2Y3F3IDAuMTZjcXcgcmdiYSgwLCAwLCAwLCAwLjI1KTsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKHZhcigtLWNndC1vbikgKiAxLjA2Y3F3KSk7CiAgICAgICAgfQogICAgICAgIC5jZ3Qtc2VnIHsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBmbGV4OiBub25lOwogICAgICAgICAgcGFkZGluZzogMC4xNmNxdzsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNTVjcXc7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWZlZmYxOwogICAgICAgICAgZm9udC1zaXplOiAwLjg0Y3F3OwogICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB9CiAgICAgICAgLmNndC1zZWcgc3BhbiB7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBwYWRkaW5nOiAwLjM2Y3F3IDAuOTVjcXc7CiAgICAgICAgfQogICAgICAgIC5jZ3Qtc2VnIC5jZ3QtcGlsbCB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDAuMTZjcXc7CiAgICAgICAgICBib3R0b206IDAuMTZjcXc7CiAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJjcXc7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOwogICAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgICAgMCAwIDAgMC41cHggcmdiYSgwLCAwLCAwLCAwLjA2KSwKICAgICAgICAgICAgMCAwLjA2Y3F3IDAuMTZjcXcgcmdiYSgwLCAwLCAwLCAwLjE0KTsKICAgICAgICB9CiAgICAgICAgLmNndC1mb290IHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgICAgZ2FwOiAwLjZjcXc7CiAgICAgICAgICBwYWRkaW5nLXRvcDogMS4yY3F3OwogICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNndC1saW5lKTsKICAgICAgICB9CiAgICAgICAgLmNndC1idG4gewogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgcGFkZGluZzogMC41Y3F3IDFjcXc7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVjcXc7CiAgICAgICAgICBmb250LXNpemU6IDAuODZjcXc7CiAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgICAgICAgfQogICAgICAgIC5jZ3QtcHJpbWFyeSB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jZ3QtaW5rKTsKICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICB9CiAgICAgICAgLmNndC1wcmltYXJ5IHNwYW4gewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGdhcDogMC4zY3F3OwogICAgICAgIH0KICAgICAgICAuY2d0LXByaW1hcnkgLmNndC1zYXZlZCB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICAgIC5jZ3Qtc2F2ZWQgc3ZnIHsKICAgICAgICAgIHdpZHRoOiAwLjhjcXc7CiAgICAgICAgICBoZWlnaHQ6IDAuOGNxdzsKICAgICAgICB9CiAgICAgICAgLmNndC10cmFpbCB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBpbnNldDogMDsKICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgIH0KICAgICAgICAuY2d0LXRyYWlsIHBvbHlsaW5lIHsKICAgICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgICBzdHJva2U6IHZhcigtLWNndC1hY2NlbnQpOwogICAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgICAgIH0KICAgICAgICAuY2d0LXRyYWlsIGNpcmNsZSB7CiAgICAgICAgICBmaWxsOiBub25lOwogICAgICAgICAgc3Ryb2tlOiB2YXIoLS1jZ3QtYWNjZW50KTsKICAgICAgICB9CiAgICAgICAgLmNndC1zdGVwIHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2d0LWFjY2VudCk7CiAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2NTA7CiAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4xMmNxdyAjZmZmZmZmOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgLmNndC1hY3RvciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgdG9wOiAwOwogICAgICAgIH0KICAgICAgICAuY2d0LWN1cnNvciB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAyMC44MzMlIDEyLjUlOwogICAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDNweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpKTsKICAgICAgICB9CiAgICAgICAgLmNndC1jdXJzb3IgcGF0aCB7CiAgICAgICAgICBmaWxsOiAjZmZmZmZmOwogICAgICAgICAgc3Ryb2tlOiAjMTQxNDE0OwogICAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjQ7CiAgICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwogICAgICAgIH0KICAgICAgICAuY2d0LXNsb3QgewogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgoKICAgICAgPGRpdiBpZD0icm9vdCIgZGF0YS1jb21wb3NpdGlvbi1pZD0iY3Vyc29yLWdseXBoLXRyYWlsIiBkYXRhLWR1cmF0aW9uPSIzLjUiPgogICAgICAgIDxkaXYgY2xhc3M9ImNndC1zdGFnZSIgaWQ9ImNndC1zdGFnZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjZ3Qtd2luIiBpZD0iY2d0LXdpbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNndC1iYXIiPjxpPjwvaT48aT48L2k+PGk+PC9pPjxzcGFuPlNldHRpbmdzPC9zcGFuPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZ3QtYm9keSI+CiAgICAgICAgICAgICAgPG5hdiBjbGFzcz0iY2d0LW5hdiI+CiAgICAgICAgICAgICAgICA8Yj5BY2NvdW50PC9iPgogICAgICAgICAgICAgICAgPGRpdj5Qcm9maWxlPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpcy1vbiI+Tm90aWZpY2F0aW9uczwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj5BcHBlYXJhbmNlPC9kaXY+CiAgICAgICAgICAgICAgICA8Yj5Xb3Jrc3BhY2U8L2I+CiAgICAgICAgICAgICAgICA8ZGl2Pk1lbWJlcnM8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+QmlsbGluZzwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj5JbnRlZ3JhdGlvbnM8L2Rpdj4KICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iY2d0LW1haW4iPgogICAgICAgICAgICAgICAgPGgxPk5vdGlmaWNhdGlvbnM8L2gxPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNndC1sZWRlIj5DaG9vc2Ugd2hhdCB3ZSBlbWFpbCB5b3UsIGFuZCBob3cgb2Z0ZW4uPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LXJvdyI+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LWxhYmVsIj5FbWFpbCBkaWdlc3Q8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZ3QtZGVzYyI+Q29tbWVudHMsIG1lbnRpb25zIGFuZCBmaWxlIGNoYW5nZXMgaW4gb25lIGVtYWlsLjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNndC10b2dnbGUiIGlkPSJjZ3QtZGlnZXN0Ij48aT48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZ3Qtcm93IiBpZD0iY2d0LWZyZXEiPgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNndC1sYWJlbCI+RnJlcXVlbmN5PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LWRlc2MiPldoZW4gdGhlIGRpZ2VzdCBsYW5kcyBpbiB5b3VyIGluYm94LjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LXNlZyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNndC1waWxsIiBpZD0iY2d0LXBpbGwiPjwvc3Bhbj48c3BhbiBpZD0iY2d0LWRhaWx5Ij5EYWlseTwvc3BhbgogICAgICAgICAgICAgICAgICAgID48c3BhbiBpZD0iY2d0LXdlZWtseSI+V2Vla2x5PC9zcGFuPjxzcGFuPk1vbnRobHk8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZ3Qtcm93Ij4KICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZ3QtbGFiZWwiPk1lbnRpb25zPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LWRlc2MiPkVtYWlsIG1lIHJpZ2h0IGF3YXkgd2hlbiBzb21lb25lIG1lbnRpb25zIG1lLjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNndC10b2dnbGUiIHN0eWxlPSItLWNndC1vbjogMSI+PGk+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LWZvb3QiPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2d0LWJ0biI+Q2FuY2VsPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2d0LWJ0biBjZ3QtcHJpbWFyeSIgaWQ9ImNndC1zYXZlIgogICAgICAgICAgICAgICAgICAgID48c3BhbiBpZD0iY2d0LXNhdmUtbGFiZWwiPlNhdmUgY2hhbmdlczwvc3BhbgogICAgICAgICAgICAgICAgICAgID48c3BhbiBjbGFzcz0iY2d0LXNhdmVkIiBpZD0iY2d0LXNhdmVkIgogICAgICAgICAgICAgICAgICAgICAgPjxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTMgOC41IEw2LjUgMTIgTDEzIDQuNSIKICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0iY3VycmVudENvbG9yIgogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD0iMiIKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIKICAgICAgICAgICAgICAgICAgICAgICAgLz48L3N2ZwogICAgICAgICAgICAgICAgICAgICAgPlNhdmVkPC9zcGFuCiAgICAgICAgICAgICAgICAgICAgPjwvc3BhbgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJjZ3QtdHJhaWwiIGlkPSJjZ3QtdHJhaWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgPHBvbHlsaW5lPjwvcG9seWxpbmU+CiAgICAgICAgICAgIDxwb2x5bGluZT48L3BvbHlsaW5lPgogICAgICAgICAgICA8cG9seWxpbmU+PC9wb2x5bGluZT4KICAgICAgICAgICAgPGNpcmNsZT48L2NpcmNsZT4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LXN0ZXAiPjE8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNndC1zdGVwIj4yPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjZ3Qtc3RlcCI+MzwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY2d0LWFjdG9yIiBpZD0iY2d0LWFjdG9yIj4KICAgICAgICAgICAgPHN2ZyBjbGFzcz0iY2d0LWN1cnNvciIgdmlld0JveD0iMCAwIDI0IDI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgPHBhdGggZD0iTTUgMyBMNSAxOSBMOSAxNSBMMTIgMjIgTDE1IDIwLjUgTDExLjUgMTQgTDE4IDE0IFoiIC8+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vZ3NhcEAzLjE0LjIvZGlzdC9nc2FwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgIDxzY3JpcHQ+CiAgICAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAgICAgICB2YXIgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvb3QiKTsKICAgICAgICAgIHZhciBzdGFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZ3Qtc3RhZ2UiKTsKICAgICAgICAgIHZhciB3aW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2d0LXdpbiIpOwogICAgICAgICAgdmFyIHRyYWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNndC10cmFpbCIpOwogICAgICAgICAgdmFyIGxpbmVzID0gdHJhaWwucXVlcnlTZWxlY3RvckFsbCgicG9seWxpbmUiKTsKICAgICAgICAgIHZhciByaW5nID0gdHJhaWwucXVlcnlTZWxlY3RvcigiY2lyY2xlIik7CiAgICAgICAgICB2YXIgYmFkZ2VzID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuY2d0LXN0ZXAiKTsKICAgICAgICAgIHZhciBhY3RvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZ3QtYWN0b3IiKTsKICAgICAgICAgIHZhciBjdXJzb3IgPSBhY3Rvci5xdWVyeVNlbGVjdG9yKCIuY2d0LWN1cnNvciIpOwogICAgICAgICAgdmFyIGRpZ2VzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZ3QtZGlnZXN0Iik7CiAgICAgICAgICB2YXIgZnJlcSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZ3QtZnJlcSIpOwogICAgICAgICAgdmFyIHBpbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2d0LXBpbGwiKTsKICAgICAgICAgIHZhciBkYWlseSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZ3QtZGFpbHkiKTsKICAgICAgICAgIHZhciB3ZWVrbHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2d0LXdlZWtseSIpOwogICAgICAgICAgdmFyIHNhdmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2d0LXNhdmUiKTsKICAgICAgICAgIHZhciBzYXZlTGFiZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2d0LXNhdmUtbGFiZWwiKTsKICAgICAgICAgIHZhciBzYXZlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjZ3Qtc2F2ZWQiKTsKCiAgICAgICAgICB2YXIgREVGQVVMVFMgPSB7fTsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIEpTT04ucGFyc2UoaHRtbC5nZXRBdHRyaWJ1dGUoImRhdGEtY29tcG9zaXRpb24tdmFyaWFibGVzIikgfHwgIltdIikuZm9yRWFjaCgKICAgICAgICAgICAgICBmdW5jdGlvbiAodmFyaWFibGUpIHsKICAgICAgICAgICAgICAgIERFRkFVTFRTW3ZhcmlhYmxlLmlkXSA9IHZhcmlhYmxlLmRlZmF1bHQ7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgIC8qIG1hbGZvcm1lZCBkZWNsYXJhdGlvbiBmYWxscyBiYWNrIHRvIHRoZSBpbmxpbmUgZGVmYXVsdHMgYmVsb3cgKi8KICAgICAgICAgIH0KICAgICAgICAgIHZhciBzY29wZWRWYXJpYWJsZXMgPSB7fTsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICh3aW5kb3cuX19oeXBlcmZyYW1lcyAmJiB0eXBlb2Ygd2luZG93Ll9faHlwZXJmcmFtZXMuZ2V0VmFyaWFibGVzID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgICAgc2NvcGVkVmFyaWFibGVzID0gd2luZG93Ll9faHlwZXJmcmFtZXMuZ2V0VmFyaWFibGVzKCkgfHwge307CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgIC8qIG5vIHNjb3BlZCB2YXJpYWJsZXMgQVBJIGluIHRoaXMgY29udGV4dCAqLwogICAgICAgICAgfQogICAgICAgICAgdmFyIHZhcnMgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUUywgd2luZG93Ll9faGZWYXJpYWJsZXMgfHwge30sIHNjb3BlZFZhcmlhYmxlcyk7CgogICAgICAgICAgLy8gSGFyZGNvZGVkOiB0aGUgY29tcG9zaXRvciByZXdyaXRlcyB0aGUgd3JhcHBlcidzIGF0dHJpYnV0ZXMgb24gbW91bnQuCiAgICAgICAgICB2YXIgY29tcG9zaXRpb25JZCA9ICJjdXJzb3ItZ2x5cGgtdHJhaWwiOwogICAgICAgICAgdmFyIGR1cmF0aW9uID0gTWF0aC5tYXgoCiAgICAgICAgICAgIDAuMDAxLAogICAgICAgICAgICBwYXJzZUZsb2F0KAogICAgICAgICAgICAgIHJvb3QuZGF0YXNldC5kdXJhdGlvbiB8fCBodG1sLmdldEF0dHJpYnV0ZSgiZGF0YS1jb21wb3NpdGlvbi1kdXJhdGlvbiIpIHx8ICIzLjUiLAogICAgICAgICAgICApLAogICAgICAgICAgKTsKICAgICAgICAgIHZhciBTUEFDSU5HID0geyBsb3c6IDMwLCBtZWQ6IDIxLCBoaWdoOiAxNSB9W3ZhcnMuZGVuc2l0eV0gfHwgMjE7CiAgICAgICAgICB2YXIgQkVORCA9IHsgc3dlZXA6IDAuMTIsIGFyYzogMC4yNiwgemlnemFnOiAwIH1bdmFycy5wYXRoXTsKICAgICAgICAgIGlmIChCRU5EID09PSB1bmRlZmluZWQpIEJFTkQgPSAwLjEyOwogICAgICAgICAgdmFyIGZhZGVSYXcgPSBwYXJzZUZsb2F0KHZhcnMuZmFkZSk7CiAgICAgICAgICB2YXIgZmFkZSA9IGlzRmluaXRlKGZhZGVSYXcpID8gTWF0aC5taW4oMS41LCBNYXRoLm1heCgwLjMsIGZhZGVSYXcpKSA6IDAuNTsKICAgICAgICAgIHZhciBhY2NlbnRDb2xvcnMgPSB7CiAgICAgICAgICAgIGdyZWVuOiAidmFyKC0tYnJhbmQsICMzNGM3NTkpIiwKICAgICAgICAgICAgYmx1ZTogInZhcigtLWFjY2VudCwgIzBhODRmZikiLAogICAgICAgICAgICB2aW9sZXQ6ICJ2YXIoLS1hY2NlbnQtMiwgI2FmNTJkZSkiLAogICAgICAgICAgfTsKICAgICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoIi0tY2d0LWFjY2VudCIsIGFjY2VudENvbG9yc1t2YXJzLmFjY2VudF0gfHwgYWNjZW50Q29sb3JzLmdyZWVuKTsKICAgICAgICAgIHZhciBleGl0ID0gdmFycy5leGl0ID09PSAiZmFkZSIgfHwgdmFycy5leGl0ID09PSAidXAiID8gdmFycy5leGl0IDogIm5vbmUiOwoKICAgICAgICAgIHZhciBzbG90ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGVtcGxhdGVbZGF0YS1zbG90PSJjdXJzb3ItZ2x5cGgtdHJhaWwtYWN0b3IiXScpOwogICAgICAgICAgaWYgKHNsb3QpIHsKICAgICAgICAgICAgdmFyIHNsb3RCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgc2xvdEJveC5jbGFzc05hbWUgPSAiY2d0LXNsb3QiOwogICAgICAgICAgICBzbG90Qm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmltcG9ydE5vZGUoc2xvdC5jb250ZW50LCB0cnVlKSk7CiAgICAgICAgICAgIGN1cnNvci5yZXBsYWNlV2l0aChzbG90Qm94KTsKICAgICAgICAgICAgY3Vyc29yID0gc2xvdEJveDsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgVyA9IHJvb3QuY2xpZW50V2lkdGggfHwgMTkyMDsKICAgICAgICAgIHZhciB1ID0gVyAvIDE5MjA7CiAgICAgICAgICB2YXIgQVJST1cgPSA2NCAqIHU7CiAgICAgICAgICBpZiAoIXNsb3QpIHsKICAgICAgICAgICAgY3Vyc29yLnN0eWxlLndpZHRoID0gY3Vyc29yLnN0eWxlLmhlaWdodCA9IEFSUk9XICsgInB4IjsKICAgICAgICAgICAgY3Vyc29yLnN0eWxlLmxlZnQgPSAoLTUgLyAyNCkgKiBBUlJPVyArICJweCI7CiAgICAgICAgICAgIGN1cnNvci5zdHlsZS50b3AgPSAoLTMgLyAyNCkgKiBBUlJPVyArICJweCI7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgRE9UID0gNiAqIHU7CiAgICAgICAgICB2YXIgQkFER0UgPSAzMCAqIHU7CiAgICAgICAgICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7CiAgICAgICAgICAgIGxpbmUuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLCBET1QpOwogICAgICAgICAgICBsaW5lLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWRhc2hhcnJheSIsICIwICIgKyBTUEFDSU5HICogdSk7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLCAyICogdSk7CiAgICAgICAgICBiYWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoYmFkZ2UpIHsKICAgICAgICAgICAgYmFkZ2Uuc3R5bGUud2lkdGggPSBiYWRnZS5zdHlsZS5oZWlnaHQgPSBCQURHRSArICJweCI7CiAgICAgICAgICAgIGJhZGdlLnN0eWxlLmZvbnRTaXplID0gMTUgKiB1ICsgInB4IjsKICAgICAgICAgIH0pOwoKICAgICAgICAgIHZhciBCQVNFID0gMy41OwogICAgICAgICAgdmFyIE9VVF9CQVNFID0gZXhpdCA9PT0gIm5vbmUiID8gMCA6IDAuNDU7CiAgICAgICAgICB2YXIgc3F1ZWV6ZSA9IE1hdGgubWluKDEsIGR1cmF0aW9uIC8gKEJBU0UgKyBPVVRfQkFTRSkpOwogICAgICAgICAgdmFyIE1PVkUgPSAwLjUgKiBzcXVlZXplOwogICAgICAgICAgLy8gUGVyIHN0ZXA6IG1vdmUgc3RhcnQsIGNsaWNrOyBiYWRnZSBvZmZzZXQgZnJvbSB0aGUgY2xpY2sgcG9pbnQgaW4gMTkyMC13aWRlIHB4LgogICAgICAgICAgdmFyIFNURVBTID0gWwogICAgICAgICAgICB7IGdvOiAwLjEsIGNsaWNrOiAwLjgsIGJ4OiAtMzQsIGJ5OiAtMzAgfSwKICAgICAgICAgICAgeyBnbzogMS4xLCBjbGljazogMS44LCBieDogLTI4LCBieTogLTM2IH0sCiAgICAgICAgICAgIHsgZ286IDIuMSwgY2xpY2s6IDIuOCwgYng6IDM0LCBieTogLTM2IH0sCiAgICAgICAgICBdOwogICAgICAgICAgU1RFUFMuZm9yRWFjaChmdW5jdGlvbiAocykgewogICAgICAgICAgICBzLmdvICo9IHNxdWVlemU7CiAgICAgICAgICAgIHMuY2xpY2sgKj0gc3F1ZWV6ZTsKICAgICAgICAgIH0pOwogICAgICAgICAgdmFyIExBU1RfRkFERSA9IDIuOTUgKiBzcXVlZXplOwogICAgICAgICAgdmFyIE9VVCA9IE9VVF9CQVNFICogc3F1ZWV6ZTsKICAgICAgICAgIHZhciBPVVRfU1RBUlQgPSBkdXJhdGlvbiAtIE9VVDsKCiAgICAgICAgICB2YXIgZWFzZU91dCA9IGdzYXAucGFyc2VFYXNlKCJwb3dlcjMub3V0Iik7CiAgICAgICAgICB2YXIgZWFzZUluT3V0ID0gZ3NhcC5wYXJzZUVhc2UoInBvd2VyMi5pbk91dCIpOwogICAgICAgICAgdmFyIGZhZGVFYXNlID0gZ3NhcC5wYXJzZUVhc2UoInBvd2VyMS5vdXQiKTsKICAgICAgICAgIHZhciBleGl0RWFzZSA9IGdzYXAucGFyc2VFYXNlKCJwb3dlcjIuaW4iKTsKICAgICAgICAgIHZhciByaW5nRWFzZSA9IGdzYXAucGFyc2VFYXNlKCJwb3dlcjIub3V0Iik7CiAgICAgICAgICBmdW5jdGlvbiBzZWcodCwgYSwgYikgewogICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgKHQgLSBhKSAvIChiIC0gYSkpKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBMYXlvdXQtc3BhY2Ugb2Zmc2V0cywgd2hpY2ggaWdub3JlIGFueSB0cmFuc2Zvcm0gYSBob3N0IHB1dHMgb24gdGhlIHBsYXllci4KICAgICAgICAgIGZ1bmN0aW9uIG9mZnNldEluKGVsKSB7CiAgICAgICAgICAgIHZhciB4ID0gMDsKICAgICAgICAgICAgdmFyIHkgPSAwOwogICAgICAgICAgICB3aGlsZSAoZWwgJiYgZWwgIT09IHJvb3QpIHsKICAgICAgICAgICAgICB4ICs9IGVsLm9mZnNldExlZnQ7CiAgICAgICAgICAgICAgeSArPSBlbC5vZmZzZXRUb3A7CiAgICAgICAgICAgICAgZWwgPSBlbC5vZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgeDogeCwgeTogeSB9OwogICAgICAgICAgfQogICAgICAgICAgZnVuY3Rpb24gcG9pbnRJbihlbCwgZngsIGZ5KSB7CiAgICAgICAgICAgIHZhciBvID0gb2Zmc2V0SW4oZWwpOwogICAgICAgICAgICByZXR1cm4geyB4OiBvLnggKyBlbC5vZmZzZXRXaWR0aCAqIGZ4LCB5OiBvLnkgKyBlbC5vZmZzZXRIZWlnaHQgKiBmeSB9OwogICAgICAgICAgfQoKICAgICAgICAgIC8vIEEgbW92ZSBpcyBhIHF1YWRyYXRpYyBjdXJ2ZSBzYW1wbGVkIGludG8gYSBwb2x5bGluZSB3aXRoIGN1bXVsYXRpdmUgbGVuZ3Rocy4KICAgICAgICAgIGZ1bmN0aW9uIGxlZyhhLCBiKSB7CiAgICAgICAgICAgIHZhciBkeCA9IGIueCAtIGEueDsKICAgICAgICAgICAgdmFyIGR5ID0gYi55IC0gYS55OwogICAgICAgICAgICB2YXIgYyA9IHsgeDogKGEueCArIGIueCkgLyAyIC0gZHkgKiBCRU5ELCB5OiAoYS55ICsgYi55KSAvIDIgKyBkeCAqIEJFTkQgfTsKICAgICAgICAgICAgdmFyIHB0cyA9IFtdOwogICAgICAgICAgICB2YXIgbGVuID0gWzBdOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSA0ODsgaSsrKSB7CiAgICAgICAgICAgICAgdmFyIGsgPSBpIC8gNDg7CiAgICAgICAgICAgICAgdmFyIG0gPSAxIC0gazsKICAgICAgICAgICAgICBwdHMucHVzaCh7CiAgICAgICAgICAgICAgICB4OiBtICogbSAqIGEueCArIDIgKiBtICogayAqIGMueCArIGsgKiBrICogYi54LAogICAgICAgICAgICAgICAgeTogbSAqIG0gKiBhLnkgKyAyICogbSAqIGsgKiBjLnkgKyBrICogayAqIGIueSwKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgIGxlbi5wdXNoKGxlbltpIC0gMV0gKyBNYXRoLmh5cG90KHB0c1tpXS54IC0gcHRzW2kgLSAxXS54LCBwdHNbaV0ueSAtIHB0c1tpIC0gMV0ueSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IHB0czogcHRzLCBsZW46IGxlbiwgdG90YWw6IGxlbls0OF0gfTsKICAgICAgICAgIH0KICAgICAgICAgIGZ1bmN0aW9uIGF0KEwsIHMpIHsKICAgICAgICAgICAgdmFyIGkgPSAxOwogICAgICAgICAgICB3aGlsZSAoaSA8IDQ4ICYmIEwubGVuW2ldIDwgcykgaSsrOwogICAgICAgICAgICB2YXIgayA9IChzIC0gTC5sZW5baSAtIDFdKSAvIChMLmxlbltpXSAtIEwubGVuW2kgLSAxXSB8fCAxKTsKICAgICAgICAgICAgdmFyIGEgPSBMLnB0c1tpIC0gMV07CiAgICAgICAgICAgIHZhciBiID0gTC5wdHNbaV07CiAgICAgICAgICAgIHJldHVybiB7IGk6IGksIHg6IGEueCArIChiLnggLSBhLngpICogaywgeTogYS55ICsgKGIueSAtIGEueSkgKiBrIH07CiAgICAgICAgICB9CiAgICAgICAgICAvLyBUcmFpbCBkb3RzIHN0YXJ0IGNsZWFyIG9mIHRoZSBwcmV2aW91cyBtYXJrZXIgYW5kIHN0b3AgYXQgdGhlIHRpcC4KICAgICAgICAgIGZ1bmN0aW9uIHRyYWlsUG9pbnRzKEwsIHMwLCBzMSkgewogICAgICAgICAgICBpZiAoczEgPD0gczApIHJldHVybiAiIjsKICAgICAgICAgICAgdmFyIHAwID0gYXQoTCwgczApOwogICAgICAgICAgICB2YXIgcDEgPSBhdChMLCBzMSk7CiAgICAgICAgICAgIHZhciBvdXQgPSBbcDAueC50b0ZpeGVkKDIpICsgIiwiICsgcDAueS50b0ZpeGVkKDIpXTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IHAwLmk7IGkgPCBwMS5pOyBpKyspCiAgICAgICAgICAgICAgb3V0LnB1c2goTC5wdHNbaV0ueC50b0ZpeGVkKDIpICsgIiwiICsgTC5wdHNbaV0ueS50b0ZpeGVkKDIpKTsKICAgICAgICAgICAgb3V0LnB1c2gocDEueC50b0ZpeGVkKDIpICsgIiwiICsgcDEueS50b0ZpeGVkKDIpKTsKICAgICAgICAgICAgcmV0dXJuIG91dC5qb2luKCIgIik7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBQcmVzcyB0byAwLjksIGEgc2hvcnQgaG9sZCwgdGhlbiByZWxlYXNlLgogICAgICAgICAgZnVuY3Rpb24gcHJlc3ModCwgY2xpY2spIHsKICAgICAgICAgICAgdmFyIGQgPSB0IC0gY2xpY2s7CiAgICAgICAgICAgIGlmIChkIDwgMCB8fCBkID4gMC4yMiAqIHNxdWVlemUpIHJldHVybiAxOwogICAgICAgICAgICBpZiAoZCA8IDAuMDYgKiBzcXVlZXplKSByZXR1cm4gMSAtIDAuMSAqIChkIC8gKDAuMDYgKiBzcXVlZXplKSk7CiAgICAgICAgICAgIGlmIChkIDwgMC4xICogc3F1ZWV6ZSkgcmV0dXJuIDAuOTsKICAgICAgICAgICAgcmV0dXJuIDAuOSArIDAuMSAqIGVhc2VPdXQoc2VnKGQsIDAuMSAqIHNxdWVlemUsIDAuMjIgKiBzcXVlZXplKSk7CiAgICAgICAgICB9CgogICAgICAgICAgZnVuY3Rpb24gcmVuZGVyKHQpIHsKICAgICAgICAgICAgdmFyIHRhcmdldHMgPSBbCiAgICAgICAgICAgICAgcG9pbnRJbih3aW4sIDEuMSwgMS4xMiksCiAgICAgICAgICAgICAgcG9pbnRJbihkaWdlc3QsIDAuMzQsIDAuNSksCiAgICAgICAgICAgICAgcG9pbnRJbih3ZWVrbHksIDAuNSwgMC41NSksCiAgICAgICAgICAgICAgcG9pbnRJbihzYXZlLCAwLjg0LCAwLjYyKSwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgdmFyIHRpcCA9IHRhcmdldHNbMF07CiAgICAgICAgICAgIHZhciBzY2FsZSA9IDE7CiAgICAgICAgICAgIHZhciByaW5nSyA9IDA7CiAgICAgICAgICAgIHZhciByaW5nQXQgPSB0aXA7CiAgICAgICAgICAgIFNURVBTLmZvckVhY2goZnVuY3Rpb24gKHMsIGspIHsKICAgICAgICAgICAgICB2YXIgTCA9IGxlZyh0YXJnZXRzW2tdLCB0YXJnZXRzW2sgKyAxXSk7CiAgICAgICAgICAgICAgdmFyIGUgPSBlYXNlT3V0KHNlZyh0LCBzLmdvLCBzLmdvICsgTU9WRSkpOwogICAgICAgICAgICAgIHZhciBmYWRlRnJvbSA9IGsgPCAyID8gU1RFUFNbayArIDFdLmdvIDogTEFTVF9GQURFOwogICAgICAgICAgICAgIHZhciBhbHBoYSA9IDEgLSBmYWRlRWFzZShzZWcodCwgZmFkZUZyb20sIGZhZGVGcm9tICsgZmFkZSAqIHNxdWVlemUpKTsKICAgICAgICAgICAgICB2YXIgc2hvd24gPSB0ID4gcy5nbyAmJiBhbHBoYSA+IDA7CiAgICAgICAgICAgICAgbGluZXNba10uc2V0QXR0cmlidXRlKCJwb2ludHMiLCBzaG93biA/IHRyYWlsUG9pbnRzKEwsIDIyICogdSwgZSAqIEwudG90YWwpIDogIiIpOwogICAgICAgICAgICAgIGxpbmVzW2tdLnN0eWxlLm9wYWNpdHkgPSBzaG93biA/IGFscGhhLnRvRml4ZWQoNCkgOiAiMCI7CiAgICAgICAgICAgICAgaWYgKHQgPj0gcy5nbykgdGlwID0gYXQoTCwgZSAqIEwudG90YWwpOwogICAgICAgICAgICAgIHNjYWxlICo9IHByZXNzKHQsIHMuY2xpY2spOwoKICAgICAgICAgICAgICB2YXIgciA9IHNlZyh0LCBzLmNsaWNrLCBzLmNsaWNrICsgMC4zICogc3F1ZWV6ZSk7CiAgICAgICAgICAgICAgaWYgKHIgPiAwICYmIHIgPCAxKSB7CiAgICAgICAgICAgICAgICByaW5nSyA9IHI7CiAgICAgICAgICAgICAgICByaW5nQXQgPSB0YXJnZXRzW2sgKyAxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIGIgPSBlYXNlT3V0KHNlZyh0LCBzLmNsaWNrLCBzLmNsaWNrICsgMC4yICogc3F1ZWV6ZSkpOwogICAgICAgICAgICAgIGJhZGdlc1trXS5zdHlsZS5vcGFjaXR5ID0gYi50b0ZpeGVkKDQpOwogICAgICAgICAgICAgIGJhZGdlc1trXS5zdHlsZS50cmFuc2Zvcm0gPQogICAgICAgICAgICAgICAgInRyYW5zbGF0ZSgiICsKICAgICAgICAgICAgICAgICh0YXJnZXRzW2sgKyAxXS54ICsgcy5ieCAqIHUgLSBCQURHRSAvIDIpICsKICAgICAgICAgICAgICAgICJweCwiICsKICAgICAgICAgICAgICAgICh0YXJnZXRzW2sgKyAxXS55ICsgcy5ieSAqIHUgLSBCQURHRSAvIDIpICsKICAgICAgICAgICAgICAgICJweCkgc2NhbGUoIiArCiAgICAgICAgICAgICAgICAoMC45ICsgMC4xICogYikgKwogICAgICAgICAgICAgICAgIikiOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIHJlID0gcmluZ0Vhc2UocmluZ0spOwogICAgICAgICAgICByaW5nLnNldEF0dHJpYnV0ZSgiY3giLCByaW5nQXQueCk7CiAgICAgICAgICAgIHJpbmcuc2V0QXR0cmlidXRlKCJjeSIsIHJpbmdBdC55KTsKICAgICAgICAgICAgcmluZy5zZXRBdHRyaWJ1dGUoInIiLCAoMTAgKyAxNiAqIHJlKSAqIHUpOwogICAgICAgICAgICByaW5nLnN0eWxlLm9wYWNpdHkgPSByaW5nSyA+IDAgPyAoMC41ICogKDEgLSByZSkpLnRvRml4ZWQoNCkgOiAiMCI7CgogICAgICAgICAgICB2YXIgb24gPSBlYXNlT3V0KHNlZyh0LCBTVEVQU1swXS5jbGljaywgU1RFUFNbMF0uY2xpY2sgKyAwLjIgKiBzcXVlZXplKSk7CiAgICAgICAgICAgIGRpZ2VzdC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1jZ3Qtb24iLCBvbi50b0ZpeGVkKDQpKTsKICAgICAgICAgICAgZnJlcS5zdHlsZS5vcGFjaXR5ID0gKDAuNCArIDAuNiAqIG9uKS50b0ZpeGVkKDQpOwogICAgICAgICAgICB2YXIgcGljayA9IGVhc2VJbk91dChzZWcodCwgU1RFUFNbMV0uY2xpY2ssIFNURVBTWzFdLmNsaWNrICsgMC4yNCAqIHNxdWVlemUpKTsKICAgICAgICAgICAgcGlsbC5zdHlsZS53aWR0aCA9CiAgICAgICAgICAgICAgZGFpbHkub2Zmc2V0V2lkdGggKyAod2Vla2x5Lm9mZnNldFdpZHRoIC0gZGFpbHkub2Zmc2V0V2lkdGgpICogcGljayArICJweCI7CiAgICAgICAgICAgIHBpbGwuc3R5bGUudHJhbnNmb3JtID0KICAgICAgICAgICAgICAidHJhbnNsYXRlWCgiICsKICAgICAgICAgICAgICAoZGFpbHkub2Zmc2V0TGVmdCArICh3ZWVrbHkub2Zmc2V0TGVmdCAtIGRhaWx5Lm9mZnNldExlZnQpICogcGljaykgKwogICAgICAgICAgICAgICJweCkiOwogICAgICAgICAgICB2YXIgZG9uZSA9IGVhc2VPdXQoCiAgICAgICAgICAgICAgc2VnKHQsIFNURVBTWzJdLmNsaWNrICsgMC4wNiAqIHNxdWVlemUsIFNURVBTWzJdLmNsaWNrICsgMC4yNCAqIHNxdWVlemUpLAogICAgICAgICAgICApOwogICAgICAgICAgICBzYXZlTGFiZWwuc3R5bGUub3BhY2l0eSA9ICgxIC0gZG9uZSkudG9GaXhlZCg0KTsKICAgICAgICAgICAgc2F2ZWQuc3R5bGUub3BhY2l0eSA9IGRvbmUudG9GaXhlZCg0KTsKICAgICAgICAgICAgdmFyIHByZXNzZWQgPSBwcmVzcyh0LCBTVEVQU1syXS5jbGljayk7CiAgICAgICAgICAgIHNhdmUuc3R5bGUudHJhbnNmb3JtID0gInNjYWxlKCIgKyAoMSAtICgxIC0gcHJlc3NlZCkgKiAwLjMpICsgIikiOwoKICAgICAgICAgICAgYWN0b3Iuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGlwLnggKyAicHgsIiArIHRpcC55ICsgInB4KSI7CiAgICAgICAgICAgIGN1cnNvci5zdHlsZS50cmFuc2Zvcm0gPSBzY2FsZSA9PT0gMSA/ICIiIDogInNjYWxlKCIgKyBzY2FsZSArICIpIjsKCiAgICAgICAgICAgIHZhciB4ID0gZXhpdCA9PT0gIm5vbmUiID8gMCA6IGV4aXRFYXNlKHNlZyh0LCBPVVRfU1RBUlQsIE9VVF9TVEFSVCArIE9VVCkpOwogICAgICAgICAgICBzdGFnZS5zdHlsZS5vcGFjaXR5ID0gKDEgLSB4KS50b0ZpeGVkKDQpOwogICAgICAgICAgICBzdGFnZS5zdHlsZS50cmFuc2Zvcm0gPSBleGl0ID09PSAidXAiID8gInRyYW5zbGF0ZVkoIiArIC00ICogeCArICJjcWgpIiA6ICIiOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBjbG9jayA9IHsgdDogMCB9OwogICAgICAgICAgdmFyIHRsID0gZ3NhcC50aW1lbGluZSh7IHBhdXNlZDogdHJ1ZSB9KTsKICAgICAgICAgIHRsLnRvKAogICAgICAgICAgICBjbG9jaywKICAgICAgICAgICAgewogICAgICAgICAgICAgIHQ6IGR1cmF0aW9uLAogICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiwKICAgICAgICAgICAgICBlYXNlOiAibm9uZSIsCiAgICAgICAgICAgICAgb25VcGRhdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJlbmRlcihjbG9jay50KTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICAwLAogICAgICAgICAgKTsKICAgICAgICAgIHJlbmRlcigwKTsKICAgICAgICAgIHRsLnNlZWsoMCk7CiAgICAgICAgICB3aW5kb3cuX190aW1lbGluZXMgPSB3aW5kb3cuX190aW1lbGluZXMgfHwge307CiAgICAgICAgICB3aW5kb3cuX190aW1lbGluZXNbY29tcG9zaXRpb25JZF0gPSB0bDsKICAgICAgICB9KSgpOwogICAgICA8L3NjcmlwdD4KICAgIDwvdGVtcGxhdGU+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==\" data-start=\"0\" data-duration=\"3.5\" data-track-index=\"0\" data-width=\"1920\" data-height=\"1080\"></div>\n </div>\n <script>\n window.__timelines = window.__timelines || {};\n window.__timelines[\"preview-root\"] = gsap.timeline({ paused: true });\n </script>\n</body>\n</html>"} |