@graphcommerce/image 2.105.5 → 2.105.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/example/.next/build-manifest.json +34 -0
  2. package/example/.next/cache/images/-HVj9kxSkhJbEZEzJL5NAtVW-u8TJ523pV0gOjw1--U=/1656761718343.g+b6VAyYfz-VIgqhPopw+-RX62-WCBq5CTxdVPJ75Vk=.webp +0 -0
  3. package/example/.next/cache/images/0AxIIzYSO-2GyMgpS4xIF3BFoscLS34mhauz5mXVqJI=/1656759656442.NBBV5492hL3QVNkmiFNlwRcY6wuplArFk0uPSkVzZ58=.webp +0 -0
  4. package/example/.next/cache/images/1uj6MCqnWAg9G4AXu+RJEh7K5QHy8VI4Y8ObOpU5IWQ=/1656757031249.VBybHurr5aiEFOzpuVXHhwBOCF1G+Hnp8-GFzxjCNKg=.webp +0 -0
  5. package/example/.next/cache/images/2CMowrXl2P7YIz49CHi5gPtsp-gXV9ZDKqoWiS5hkgg=/1625470305766.rUaLjCqfuLKwkvaizd3g3TjzYGo3W8ANpZIUgzZh00Y=.webp +0 -0
  6. package/example/.next/cache/images/2prvJygajL4oBYGVG5HGNf-JaL-XmFDIpbahHqRCWEg=/1625298564969.7tWao0CKoVY673JEnP1IP-G6bNjQvDP5sxvUAq1X3KM=.webp +0 -0
  7. package/example/.next/cache/images/3NxY-MLy0nY73yQFX-qsDAkXMgiMq8iWud4VVdU8I0o=/1625299547154.rpuCm5pugpQ6IK28LsWKUGLk+P2ZtehuBgJTOX-6zlA=.webp +0 -0
  8. package/example/.next/cache/images/3UPUXn6t--gJO9HNBHFJulrS3paVQoKP5-Wu41KkrR8=/1656758598282.BZMn4WYPgB+gq-BR3w1-5MwG1AdBRAVpYWGWxNVW-KE=.webp +0 -0
  9. package/example/.next/cache/images/3ucItT2KUqDcjKA+4Dl8YhPsb3qbPW8shQeD5JogEp0=/1656749533975.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  10. package/example/.next/cache/images/4aSxJpLrV7SgzFGFQe1JbHJTiVGRNl4YdKl2iZqTz6c=/1625299570724.mruw0gK2J1y6VIaCvayFrs7ltIasseRnQjCS1Rx7zNI=.webp +0 -0
  11. package/example/.next/cache/images/4u0SwKJhO4a+ZARfOmnUAY+bQvzdjsw8AOIk6sRiVTM=/1625469705760.rueREa67ebDmXGY+W3G-eopQp5EK-SQHOa4KHFuqVNo=.webp +0 -0
  12. package/example/.next/cache/images/5H41dGaHwg71zktiD3Ks9K8yaZ1e9lsBag4NHyoIUdo=/1625219570987.zIxZGRHl91NEtnV4nbyU0rB3EtEyR9Lxnri-+voKAvs=.webp +0 -0
  13. package/example/.next/cache/images/64IULfOR-D0oVW4sHrfc5WtPLdjLPbkoNKHdCwWGSuQ=/1625219570994.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  14. package/example/.next/cache/images/6Dgu5A6GajPsgDQ66k-pbq0Iyr0Byrn7+mivxE4fvVU=/1656758443091.KL97JxovJgisoPc5EXEfrrnnqyRymWEBTSqLA8Uy5lE=.webp +0 -0
  15. package/example/.next/cache/images/6Zcso+WcU0OlZ-atPSh40Gljk74hWpvqMF88bf-3Qys=/1656749578452.zIxZGRHl91NEtnV4nbyU0rB3EtEyR9Lxnri-+voKAvs=.webp +0 -0
  16. package/example/.next/cache/images/7Xkon9LFmZ6wE0IgEIsfUN0bOr0oCSOXaDnnrVjSoXo=/1625300548289.8yJB9XC45AIM6XoUsu8htXCK2wYvqnWCKbnxO3MmpsU=.webp +0 -0
  17. package/example/.next/cache/images/7vvZbnWp2pvmwNgUNIKXmCk9XhfIOYqyBy1xwOMmxZE=/1625470260322.onl4+lYWryHL62flX4FJdXEMQ1UVnyT5sBYF1DggMaQ=.webp +0 -0
  18. package/example/.next/cache/images/83VK7ld0YcmgdOG+R2h+ckiGWOVKzIn42CnTelSeAD0=/1657107410585.OC5j-AyaLksS78WoFh2ZPpURObFKvSCnpt9rqzn7tNY=.webp +0 -0
  19. package/example/.next/cache/images/8qtv2hTcdwZiVYN5j5XNVw4eDlHblWR91R1ilGPHF4g=/1625300457906.pVKudFsHslINh1TOUoOPSHb8op8iqiQ3IVE78QQH0qU=.webp +0 -0
  20. package/example/.next/cache/images/B8i6U4dvhS5QlonuTChvnVeIfVNcMFP5Ze9dGHpLu0A=/1625213911796.zMx5v1d6EgYxzhH5u9vceuQAZdrlkrwNiW-EzuaYMnw=.webp +0 -0
  21. package/example/.next/cache/images/BW0ysRJMh9oulzEYbELupyRAI1rZZ5be0xuxnDLc-bw=/1656761231260.zspGYR3AWdcc816W2F6Ne1-JNgSDBH1h6KEFeVLnWok=.webp +0 -0
  22. package/example/.next/cache/images/BY6YpwPh82mp5JiBEti5gmwC-9O4ohRUPluASqROc10=/1625498155146.EJMSOifv8id0Peguf7ikEne7xMi9Ac9iDe9kTIAAXvY=.webp +0 -0
  23. package/example/.next/cache/images/CUGp4g70zl+vsFGT41IZkj-Y2votkqh3Eezzs9H3H5w=/1625299521288.EnYAcm4cT6T5yKVAQDTY6cZti0zsxnVbImrF7LfgF1Y=.webp +0 -0
  24. package/example/.next/cache/images/DJ3B5hLxX-+UMbqed+x58+rl9juscSn+Ra7YA8CNkkY=/1625484120800.SAng7YQ8PDlPQNubgLkMMsiFwaPCuTeDBsfUyvmttG4=.webp +0 -0
  25. package/example/.next/cache/images/DW4yKnn+mYRfs8-2Ko5oE3DrZbJMhFNEmGp90CyT7O0=/1625300236026.VFNPRZf-z9qFOV2S5AbunCkRGCcPXzlwiTKrNjmNGi8=.webp +0 -0
  26. package/example/.next/cache/images/Dh5jFfTTZHXju+2VMueg1Lo7sM3GkEWBlgWZ37h29ME=/1625474260306.gkzHU98m9zIqApL3d93FWcZqGULcRirOdpOxzJgPTK8=.webp +0 -0
  27. package/example/.next/cache/images/Du4jaIoZ-PXvqN2avgQOOGlaQg-Vt4QUVcukv77Hm7w=/1656756770777.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  28. package/example/.next/cache/images/EqW5whXX7fgu5+SPdxyBZ4fE0fOWCLMo9b5W7hd28iY=/1625571324722.txUxO6DkO8veTJ1oLkXvvNgVuTbvHdj4MVBwHIu-eus=.webp +0 -0
  29. package/example/.next/cache/images/GKXPXPApDNp1ZIjYBtQk7dd3rnbKh7NElD+WIyHa8js=/1656756098400.lgHCIyknPFqSgPVSBuQffgINRpboZCYlBKftrwpBLkA=.webp +0 -0
  30. package/example/.next/cache/images/GTOHdx8sLxs79IJinD+Nk80LrOg0DaC9h3d8TAby3bs=/1657107680617.OC5j-AyaLksS78WoFh2ZPpURObFKvSCnpt9rqzn7tNY=.webp +0 -0
  31. package/example/.next/cache/images/GnqqaGL66JFx1j+fCokxnnujneezplnVU7gYhckh9+A=/1625299583173.dgcaCltbHvvFCi1sPMucuHCL9UCtWiFSyOAYH-v2LtU=.webp +0 -0
  32. package/example/.next/cache/images/HTqsLdQpcguBI7BE1SfU-i2MwHyN3krlryhF1BEPj3M=/1657107680404.c8k-vRV2T9vq1REo-K4LzVwKVUP5lQuho4ubYzHj544=.webp +0 -0
  33. package/example/.next/cache/images/HroIIPKGVQ42ycMx-gSdWVFfchcgf8J-XU3FJOZhpmk=/1625570328298.IUpe91jGi-RlVgrjYmX7wkMcXIIYvodu5j4BqaKZcss=.webp +0 -0
  34. package/example/.next/cache/images/HsTN95OGw5aJGpWWSep-H7pXMN32ZSfW86FEPFe02K8=/1625299498281.1gBokMmVVuor1gnCAbJvXKp1sytwxY0A-VcmYIwXm7g=.webp +0 -0
  35. package/example/.next/cache/images/JRIhYbicTTQFjjKlC-aW9QRo+2KiSk80+wi0T+FeWQ4=/1656756648992.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  36. package/example/.next/cache/images/KtPkhGYwacFij4NA7Z4VNrRLb21KQUty7jAgxxv7tAE=/1625565460203.83IxQdLmWiSE2uISXx1KtUWFzH+wlQzRq3azOBbUtnQ=.webp +0 -0
  37. package/example/.next/cache/images/MPZjiVEFZqHRi2TtFwyHot9phvfEIcDLWmmyrYFIHAQ=/1625299521601.0uwV84UCn-oB-gRLRxi8DD2sl7zK5emgxfblkV3Dvhc=.webp +0 -0
  38. package/example/.next/cache/images/MT6MCs8Nc+PJ2byqQCa1HW8Xp4OTRNnb6kLgLwDGLZo=/1656762484828.heenQ4-yt4r55ULQ0ofqHJ1j8eTKD8ksx640PPhaqP8=.webp +0 -0
  39. package/example/.next/cache/images/MiOwljI0QJwKEuOg3n2Gp3J0qyXXNOXE8ttWHB7CHa0=/1625567166356.KCzRRP4Cub2rpOYKetN+L9dCJTAsFVW-GkP0NRsQbcM=.webp +0 -0
  40. package/example/.next/cache/images/OcFEP0e8eNeBt9ck16eoMwSpfJleEwCMpm1ZbdqT4uo=/1656749533901.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  41. package/example/.next/cache/images/PPUtJ0W6DfemefElrKITkTNq7MVnHyMS38XuEtsy89U=/1656761403704.zlagepWT8AKDwOh4aJODpXTOFN+FobGMo1L6WuOVNwY=.webp +0 -0
  42. package/example/.next/cache/images/PaxNiuRifROBs1R1uM75REC6kUAfiYOLrtQAiK1P2nU=/1625213904646.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  43. package/example/.next/cache/images/PqLR89B4R1+qzyEVqVw9OQhSmFy5JuXLa64i3LYpJxE=/1625299444323.ThlpSva2rHbbbp958zCj1tdrgMqjFcGYnaDRo2wQQLU=.webp +0 -0
  44. package/example/.next/cache/images/Q8f9uZJBks2H-YkwdWd2QMgMX5mL5FBMo0VsHO-ctdo=/1656760649959.qh3caBPe-Th-zaMPDt-ZdhSBl91dRP8N9s3EJ6UMQCs=.webp +0 -0
  45. package/example/.next/cache/images/RP6k9Bj4-jsHEycAYxFHZhLqKTmbLMjucvDSvlyLLZs=/1657107680610.Yg+3ChC1edO6kEAwbaim2hCjb8Wyh4toEpEOzcilUL0=.webp +0 -0
  46. package/example/.next/cache/images/SHd0AXJTfPXkImZMKmp27MvqUvYI111zyzIOkLgtCb0=/1625299593567.TvdLtgnmAXbrBjg8nRUCWyBuQNstKWJTmF-wV4728B8=.webp +0 -0
  47. package/example/.next/cache/images/SHhlhVL9L57O78uM0iSaBgxVR9J7EKRa67Ito-z2rr4=/1625300308618.po7Imjgw32SuMQKt1-Oty+v5w-l64kmnJHzwul9giqo=.webp +0 -0
  48. package/example/.next/cache/images/SKUjqmwgFQbQ2Q6MjsEPStCv9Q-+CeDEv66+YXRb2wY=/1625299577727.ZqADH5sK9bpHXGGKzDBkLCjPfDO+oTBSZlFZyEAOo9w=.webp +0 -0
  49. package/example/.next/cache/images/ShHgXRk5XG5XLtxR20jbimMMzYyCjZYWCyrSOBcRyoU=/1625299553057.Tg2j6WSVMgii8RrZgrt4twY3IKhtmUMHplwYzi-hh70=.webp +0 -0
  50. package/example/.next/cache/images/TZiyZjIDqFs6d60EaSVU3oX2L1bCkImChBpIWqOREeg=/1625299514280.rC+4Pdzi1RPfIvqsEFdtuGJL9sPG4+sel+0v3cfnJpk=.webp +0 -0
  51. package/example/.next/cache/images/YKC4gyKqaL5abLjWnWAv+OgECV0oK00TZ1P5130s4ig=/1625300636674.q2+QpCTCb2zgc0H3rXxU17I4lALn3BLpChG0i7WZMew=.webp +0 -0
  52. package/example/.next/cache/images/Z0Y8VikQqHdIyl12mjEQKArSNnKgqb5MgUYp+RJ5EO4=/1656761463364.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  53. package/example/.next/cache/images/aoSFeHouZT4mEYTInYHZHTBtgeKvEELQADTBcRV6hkw=/1625298476457.T0UaZPCESw+8pja9oQlbUDVINYgmacs0lCsbFS5R7vc=.webp +0 -0
  54. package/example/.next/cache/images/c9dcuiQ8O5e6pwHRxJtUCx3tFTD5fk0GH07hStsE6Q0=/1657107680401.jwYrFWs2M9PlA3K2ZZaR7tQk1BCwIU3EyAw9b-RBJGc=.webp +0 -0
  55. package/example/.next/cache/images/cTF2A44FXn8nLM91wKUoIEqhphWsnHQeM19UXTYuCjU=/1625566943586.FsHRv9b2D1Qu0XuUCIC0AB2goFSO+maM7H+SE4GSn1U=.webp +0 -0
  56. package/example/.next/cache/images/cVH7moJ73vvxuB1En1mtSjyjCAn7ZedMLuWgvI8YD9U=/1656759920737.rpQVMyg-AaUmlLQcsNkRBcHwqIhhb5bVfXmej8NL3Ls=.webp +0 -0
  57. package/example/.next/cache/images/dSxPG4mvFB-hsFa2WNNKGVH+EM8F73q59MOz+d84wt0=/1625470290291.9SaCLJMI8CiS-JzFL7TaZTfWXnpzp2E6eTe+RFZYv-c=.webp +0 -0
  58. package/example/.next/cache/images/dw-FglYBg89Atjb1B0R85+AwxeHSPUjuO8Kh1CV0-m4=/1625497900295.xFYayjV9nBGOKUTVq5XxlGEIWR5B5NOtP2X6N9gcAUo=.webp +0 -0
  59. package/example/.next/cache/images/f0TzeTFnAY-0ltYUi9v76DWDq3xCt2-9uBbQx4xeK3E=/1625299582181.v4L5Aguf03P1aXwUUG2yzWa4jsIkRvG35rv7Xk2e3Yg=.webp +0 -0
  60. package/example/.next/cache/images/fy3he+3cRQ9wtXvPOgCMpbECVEZpx-cdDDs+J0bnCl0=/1625219592716.zIxZGRHl91NEtnV4nbyU0rB3EtEyR9Lxnri-+voKAvs=.webp +0 -0
  61. package/example/.next/cache/images/g9PwkkYlS8p6OZa5PbvEmIxLFhwMULmPZ4JXWpN+m9E=/1625299465140.loc887GnjFgThYkCZOwQOxrUnC1XK+hbFpOxLOZV2YE=.webp +0 -0
  62. package/example/.next/cache/images/gEWhGfMHCTTgqNTJGXoavWIjsPe5-XHrTCOZoM0K3A0=/1625299501484.jzxT8QO8RG7s8Kz3g63dSfVxZEFiu6uGPLFz3e2W7cU=.webp +0 -0
  63. package/example/.next/cache/images/iHANQk+34mFntRtrtUkKrthnmdjp6ruWLqwvBnj0shA=/1625219571001.+yVlIMc84gsVdgGr6dfpa+NKaYqXQLJb4rxP95iokjo=.webp +0 -0
  64. package/example/.next/cache/images/iTGjNMCKRRKWT6Se1ypy6B8G7VG3aE81NoYZWWuFkRM=/1625299505650.WGHxeAxX5Th696JjcRa8sgeI+xCA-D31-rJYa1TfqYc=.webp +0 -0
  65. package/example/.next/cache/images/iUy4uGqOpV5cYkmJQ6H1OenGKhlJKn8YXFjNrlAcoJM=/1625474121167.YG1FPtrJnhaldgLFyM0PYUrKRS4YzNPynIHRBAsZJpI=.webp +0 -0
  66. package/example/.next/cache/images/jiDD0qNI10KXQQAUzeRuRNNktq5a6AhagAaeeFC-TAQ=/1656761403766.MdJnQq7SbBrJRtJEjPRng-ovqekSsQAPxEoERZwU0AY=.webp +0 -0
  67. package/example/.next/cache/images/k6CGZJxOx65S31BJg2vWXcUUTInuc28HlY+vruC5p08=/1625300551403.vqRL7Mz7oVbXyhRHwxk5vtqXEHKbcR-xYitHMim2KoM=.webp +0 -0
  68. package/example/.next/cache/images/lUg+tPaN1bFXtqfifZGZF3zOXqUiJsVHbrj7P0CI9eE=/1656749479842.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  69. package/example/.next/cache/images/m2NzDIE4Ft53TdiwYp3ymfmxd-MB8H+NCDL9HP2heoQ=/1625570988005.GgcoTYV3RHmRWw83xvhRld3iVysMAhdfGrX91Zl0skk=.webp +0 -0
  70. package/example/.next/cache/images/n6WUQmM45C8h6AyLZQVtPJihzo+YXCGPZPoSLlieaeg=/1656749479842.+yVlIMc84gsVdgGr6dfpa+NKaYqXQLJb4rxP95iokjo=.webp +0 -0
  71. package/example/.next/cache/images/nRr2Uwi8fvy6WIpGEwEQdqIUrjmlZc6rJPhxxJa82Es=/1625213880032.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  72. package/example/.next/cache/images/o0N432kChXWOqK5UVRtqLsLDWb5+dYe2JvYO6d24vc0=/1625482549426.CaPu+NWbHtURILwAbvjOMW3vT0776ONf0tXGWzsaDnA=.webp +0 -0
  73. package/example/.next/cache/images/oCrD0LhpE+c2Igt0JD1Yw0kC7aOo62HQ-5wedgqBbzc=/1656761398353.f9SVRkSQOaIIA6GikQ8gIzTuFdteePWKPeSdEPKiVZ4=.webp +0 -0
  74. package/example/.next/cache/images/oQ6ibo6F3ySy2ESJgLZIdmbcWTiOP3Q0KhY2fpikQ5k=/1625299093245.wohGDcrAnckq4RxHw2+ScWJWe1Dk5fIwjyVoVBt5cEE=.webp +0 -0
  75. package/example/.next/cache/images/p7XzvB8oyN5nfu11eCA42SeEp7sL+LPQQoRU64YT1cc=/1625299322699.eYKIZha0lC4+LSV+ZINxWGGOfgqw30+9w2erMlPbFTA=.webp +0 -0
  76. package/example/.next/cache/images/pnG318NZ2UvU2k21miucoxLsd8wGC5T6lVtcIzbPgd0=/1625299443084.RDAllNEC0jZGUcFFZqqZrEKfEVth-wpANCdkO+jAVvE=.webp +0 -0
  77. package/example/.next/cache/images/sDmCscY0vQ6Ce3yhoIzfNRxh-aSDxq+RTOoq0cUN4cI=/1656756694154.vDQunPJtcqmDa5Dw3GNOsYnbPoyIC9zEHXjUgRX+5VI=.webp +0 -0
  78. package/example/.next/cache/images/tv5navWlSovKHHXAA+lKFltBgdnGNbCL3KnX761Ycus=/1625566936879.641rNXHFuO1fzs0BSgp5C+Sw+zWBQp6CJs4+utqZU1c=.webp +0 -0
  79. package/example/.next/cache/images/utC1kNaPpZdZepwnTfNu9cW-3ICXwUkEoLi+pTgGKO8=/1656749851790.zMx5v1d6EgYxzhH5u9vceuQAZdrlkrwNiW-EzuaYMnw=.webp +0 -0
  80. package/example/.next/cache/images/v156Um7QIAhI-jW4GZuohhI1SVZ3A-C5W7stSH6+Ex8=/1625571324722.GGkUlkTqDjM2yzNmjFvUx-dBg-dCLrVvQNFj1xYp+L4=.webp +0 -0
  81. package/example/.next/cache/images/ve17AGz6UzylkfjhegWUnZ4SUXdLbpBWd-M+DAbqhVo=/1625213911797.zMx5v1d6EgYxzhH5u9vceuQAZdrlkrwNiW-EzuaYMnw=.webp +0 -0
  82. package/example/.next/cache/images/w+++27-2ebMrzNGxoKhSr9vf0VqhIlpV3xO8-nmznSM=/1625219570994.+yVlIMc84gsVdgGr6dfpa+NKaYqXQLJb4rxP95iokjo=.webp +0 -0
  83. package/example/.next/cache/images/wEVHpFSN5nWkDzJM1zD9IzkT-5+9aLCjtzZlx7FnChA=/1625300569493.rBN4UJXzzvwnwMc6lkdFNiOodKZnuw9BElwqky7XTJ0=.webp +0 -0
  84. package/example/.next/cache/images/wOSsRjxgCIRti4Y51UNQVHeNw92Sg-OV6tSME5c2+RU=/1657107410586.c+9x+gNEkQckj5C8j9I5aZJiJf35+8bi-q7MlbQBOlk=.webp +0 -0
  85. package/example/.next/cache/images/wciNuT5QUpxVMjbdEd5KWYQAkxr4pu0mSsO8CrnNuRo=/1625300606596.WAxNBjGkgmTuieJ8l+3FtINuMozp8NMBQx9OfMbxvLY=.webp +0 -0
  86. package/example/.next/cache/images/xQ--vjMXdpyez6gYJhx5c22xjy6UfzN8shB+AT-WnQw=/1625213880032.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  87. package/example/.next/cache/images/xfzsIzvsjdsLHqIoLrdTT1AjZi9+RIje5JHlDlzw+LQ=/1625299556299.c43pjJ8oT5uj6rWCkZRR+sYJ2unczuZsJsvTPoYMCNg=.webp +0 -0
  88. package/example/.next/cache/images/xvjW0MVJv7OygHiGuo5gvdejePhehBB84DWWy0RobDg=/1625571376478.kZnEJ9pDGRP7pgjpXGDPuV-HLcq5hWt9eWAFm6G84OI=.webp +0 -0
  89. package/example/.next/cache/images/yEcVQvBB4mvzdzhAgu6yUci93hNSew5goqdazysmcaw=/1625299488426.1uAYRUalqmHfx5q0dqBXjl-shnwNiMuPt3-D6D6kgHw=.webp +0 -0
  90. package/example/.next/cache/images/yX0fhb7SMjwEomDwIq68YQHaZlZCZl7B8XxgNuNT2Ds=/1625219571007.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  91. package/example/.next/cache/images/zh5j6vOXiawy6rDIG3BLBs4itvIs0VVtnkvSFIKa5g4=/1625213904647.i+PvewsVBTnrxKjImamNkgl0fCG8DPKrY-1y1ZQKR3c=.webp +0 -0
  92. package/example/.next/cache/images/zmAZ9S2RPA8WIuVoev9YQINu8aQgcsNtDGNiLjNAYlU=/1656756588278.ifTqMK-gjLzo3qsY-0kwQOYgfnZzrDlPk0kqF90U9p8=.webp +0 -0
  93. package/example/.next/cache/webpack/client-development/0.pack +0 -0
  94. package/example/.next/cache/webpack/client-development/1.pack +0 -0
  95. package/example/.next/cache/webpack/client-development/2.pack +0 -0
  96. package/example/.next/cache/webpack/client-development/3.pack +0 -0
  97. package/example/.next/cache/webpack/client-development/4.pack +0 -0
  98. package/example/.next/cache/webpack/client-development/5.pack +0 -0
  99. package/example/.next/cache/webpack/client-development/6.pack +0 -0
  100. package/example/.next/cache/webpack/client-development/7.pack +0 -0
  101. package/example/.next/cache/webpack/client-development/8.pack +0 -0
  102. package/example/.next/cache/webpack/client-development/9.pack +0 -0
  103. package/example/.next/cache/webpack/client-development/index.pack +0 -0
  104. package/example/.next/cache/webpack/client-development/index.pack.old +0 -0
  105. package/example/.next/cache/webpack/server-development/0.pack +0 -0
  106. package/example/.next/cache/webpack/server-development/1.pack +0 -0
  107. package/example/.next/cache/webpack/server-development/2.pack +0 -0
  108. package/example/.next/cache/webpack/server-development/3.pack +0 -0
  109. package/example/.next/cache/webpack/server-development/4.pack +0 -0
  110. package/example/.next/cache/webpack/server-development/5.pack +0 -0
  111. package/example/.next/cache/webpack/server-development/6.pack +0 -0
  112. package/example/.next/cache/webpack/server-development/7.pack +0 -0
  113. package/example/.next/cache/webpack/server-development/8.pack +0 -0
  114. package/example/.next/cache/webpack/server-development/index.pack +0 -0
  115. package/example/.next/cache/webpack/server-development/index.pack.old +0 -0
  116. package/example/.next/cache/withYarn1Workspaces.3d60d45801.json +1 -0
  117. package/example/.next/cache/withYarn1Workspaces.d8e240ca09.json +1 -0
  118. package/example/.next/react-loadable-manifest.json +8 -0
  119. package/example/.next/server/pages/_app.js +47 -0
  120. package/example/.next/server/pages/_document.js +209 -0
  121. package/example/.next/server/pages/_error.js +68 -0
  122. package/example/.next/server/pages/index.js +135 -0
  123. package/example/.next/server/pages/next/dist/pages/_error.js +68 -0
  124. package/example/.next/server/pages-manifest.json +6 -0
  125. package/example/.next/server/static/image/components/image.66235d2f01fd4fba70eb3938db05810e.jpg +0 -0
  126. package/example/.next/server/webpack-runtime.js +168 -0
  127. package/example/.next/static/chunks/amp.js +84 -0
  128. package/example/.next/static/chunks/main.js +1140 -0
  129. package/example/.next/static/chunks/node_modules_next_dist_client_dev_noop_js.js +22 -0
  130. package/example/.next/static/chunks/pages/_app.js +74 -0
  131. package/example/.next/static/chunks/pages/_error.js +95 -0
  132. package/example/.next/static/chunks/pages/index.js +280 -0
  133. package/example/.next/static/chunks/pages/next/dist/pages/_error.js +148 -0
  134. package/example/.next/static/chunks/polyfills.js +40 -0
  135. package/example/.next/static/chunks/react-refresh.js +63 -0
  136. package/example/.next/static/chunks/webpack.js +1277 -0
  137. package/example/.next/static/development/_buildManifest.js +1 -0
  138. package/example/.next/static/development/_ssgManifest.js +1 -0
  139. package/example/.next/static/image/components/image.66235d2f01fd4fba70eb3938db05810e.jpg +0 -0
  140. package/example/.next/static/webpack/0588aaab49febd8cfe1c.webpack.hot-update.json +1 -0
  141. package/example/.next/static/webpack/072a7d130e228881d052.webpack.hot-update.json +1 -0
  142. package/example/.next/static/webpack/0762084187c63da9472d.webpack.hot-update.json +1 -0
  143. package/example/.next/static/webpack/0cea8b02db9004a9010b.webpack.hot-update.json +1 -0
  144. package/example/.next/static/webpack/0e5144f94622b3a25db6.webpack.hot-update.json +1 -0
  145. package/example/.next/static/webpack/1252cfc380272b4fe2e6.webpack.hot-update.json +1 -0
  146. package/example/.next/static/webpack/1402ac884dae19bf86c6.webpack.hot-update.json +1 -0
  147. package/example/.next/static/webpack/147aac9d3d7030a41f7f.webpack.hot-update.json +1 -0
  148. package/example/.next/static/webpack/1bda8bbbca0e0f13f045.webpack.hot-update.json +1 -0
  149. package/example/.next/static/webpack/234d4ce3b70ffd983ba8.webpack.hot-update.json +1 -0
  150. package/example/.next/static/webpack/26b79f15961d39636a40.webpack.hot-update.json +1 -0
  151. package/example/.next/static/webpack/2826318bc6ba4bd9d644.webpack.hot-update.json +1 -0
  152. package/example/.next/static/webpack/2a955e2b9072adb73190.webpack.hot-update.json +1 -0
  153. package/example/.next/static/webpack/2c2aaee83efae1379187.webpack.hot-update.json +1 -0
  154. package/example/.next/static/webpack/3555adce6517c2f7e42e.webpack.hot-update.json +1 -0
  155. package/example/.next/static/webpack/3588af142e46a835343c.webpack.hot-update.json +1 -0
  156. package/example/.next/static/webpack/37f12cbe9b48a34c52c2.webpack.hot-update.json +1 -0
  157. package/example/.next/static/webpack/3ac52037129af449eb72.webpack.hot-update.json +1 -0
  158. package/example/.next/static/webpack/3b42c94e63de900303b9.webpack.hot-update.json +1 -0
  159. package/example/.next/static/webpack/3c79280973f09aaa87fe.webpack.hot-update.json +1 -0
  160. package/example/.next/static/webpack/3c87c0ea5ce694e8d1c5.webpack.hot-update.json +1 -0
  161. package/example/.next/static/webpack/3de319507c766ee73bea.webpack.hot-update.json +1 -0
  162. package/example/.next/static/webpack/43b43eb8c73ce45f78f3.webpack.hot-update.json +1 -0
  163. package/example/.next/static/webpack/43c79a23f821cd622aee.webpack.hot-update.json +1 -0
  164. package/example/.next/static/webpack/4e0a0f884a956cbb5abe.webpack.hot-update.json +1 -0
  165. package/example/.next/static/webpack/50a19b6d8c63681a6f59.webpack.hot-update.json +1 -0
  166. package/example/.next/static/webpack/51822142283bf3a4fb5a.webpack.hot-update.json +1 -0
  167. package/example/.next/static/webpack/55ee69f8d85488769153.webpack.hot-update.json +1 -0
  168. package/example/.next/static/webpack/57d0775bfd690a4598a7.webpack.hot-update.json +1 -0
  169. package/example/.next/static/webpack/585753f40a2ba758aaeb.webpack.hot-update.json +1 -0
  170. package/example/.next/static/webpack/58da75bd3cf67c71206b.webpack.hot-update.json +1 -0
  171. package/example/.next/static/webpack/5d0aa62f686882951598.webpack.hot-update.json +1 -0
  172. package/example/.next/static/webpack/5de110501cdd600f11d7.webpack.hot-update.json +1 -0
  173. package/example/.next/static/webpack/63775ccd9a7849e5764c.webpack.hot-update.json +1 -0
  174. package/example/.next/static/webpack/6b4663280b1db8f5e905.webpack.hot-update.json +1 -0
  175. package/example/.next/static/webpack/6d11705f01219ee2fa3d.webpack.hot-update.json +1 -0
  176. package/example/.next/static/webpack/6d4eca6985c3546f0f71.webpack.hot-update.json +1 -0
  177. package/example/.next/static/webpack/6e6063845501820278cd.webpack.hot-update.json +1 -0
  178. package/example/.next/static/webpack/74a36e7ef8e1ce4fdf4a.webpack.hot-update.json +1 -0
  179. package/example/.next/static/webpack/796fe50a2b9d66aec2d7.webpack.hot-update.json +1 -0
  180. package/example/.next/static/webpack/878b2eb56dd102f8d1de.webpack.hot-update.json +1 -0
  181. package/example/.next/static/webpack/8d58abc5879781fbdb2f.webpack.hot-update.json +1 -0
  182. package/example/.next/static/webpack/8f405c984e4934b20605.webpack.hot-update.json +1 -0
  183. package/example/.next/static/webpack/90295054405377c77f5b.webpack.hot-update.json +1 -0
  184. package/example/.next/static/webpack/9310bbbf11c1977e9d98.webpack.hot-update.json +1 -0
  185. package/example/.next/static/webpack/9a0237d669946cc844e6.webpack.hot-update.json +1 -0
  186. package/example/.next/static/webpack/9aeee506244bc34b7b4b.webpack.hot-update.json +1 -0
  187. package/example/.next/static/webpack/9f473ce1942e5fdb3632.webpack.hot-update.json +1 -0
  188. package/example/.next/static/webpack/a1185fb9adfe5b70bc2f.webpack.hot-update.json +1 -0
  189. package/example/.next/static/webpack/a11eb25c0fca8e105e00.webpack.hot-update.json +1 -0
  190. package/example/.next/static/webpack/a48bbb1152e41e6a3cf2.webpack.hot-update.json +1 -0
  191. package/example/.next/static/webpack/aa3b500d2bc6950dbadd.webpack.hot-update.json +1 -0
  192. package/example/.next/static/webpack/ab0b9af23ef3fd93299c.webpack.hot-update.json +1 -0
  193. package/example/.next/static/webpack/aea6a75d56441fbbdaff.webpack.hot-update.json +1 -0
  194. package/example/.next/static/webpack/af81bfc5f0a8c32c3b51.webpack.hot-update.json +1 -0
  195. package/example/.next/static/webpack/b370b882a7b8cbf89abd.webpack.hot-update.json +1 -0
  196. package/example/.next/static/webpack/b3e2c4a7565fcfca527f.webpack.hot-update.json +1 -0
  197. package/example/.next/static/webpack/c6068e16d94c09cfd6b6.webpack.hot-update.json +1 -0
  198. package/example/.next/static/webpack/c73596b5b037cb23ec6b.webpack.hot-update.json +1 -0
  199. package/example/.next/static/webpack/c7dab37225cb7bc65af3.webpack.hot-update.json +1 -0
  200. package/example/.next/static/webpack/d2f930e23e921b06ed5c.webpack.hot-update.json +1 -0
  201. package/example/.next/static/webpack/d371d7c066578693521e.webpack.hot-update.json +1 -0
  202. package/example/.next/static/webpack/d965a3cf3815af872d29.webpack.hot-update.json +1 -0
  203. package/example/.next/static/webpack/da33d321cff0dda32eb0.webpack.hot-update.json +1 -0
  204. package/example/.next/static/webpack/dba31d980c30d691d16b.webpack.hot-update.json +1 -0
  205. package/example/.next/static/webpack/dd8aa6ef77cd74d84ec3.webpack.hot-update.json +1 -0
  206. package/example/.next/static/webpack/e15c892c8dbe9bc25020.webpack.hot-update.json +1 -0
  207. package/example/.next/static/webpack/e8bf5676cc19a6345ad3.webpack.hot-update.json +1 -0
  208. package/example/.next/static/webpack/eddd97db36cfbd0a1e7c.webpack.hot-update.json +1 -0
  209. package/example/.next/static/webpack/f031b79058783bc1558e.webpack.hot-update.json +1 -0
  210. package/example/.next/static/webpack/f3fa39ef803627283382.webpack.hot-update.json +1 -0
  211. package/example/.next/static/webpack/f48796a76815229d67ab.webpack.hot-update.json +1 -0
  212. package/example/.next/static/webpack/feb45f4041e620b79d86.webpack.hot-update.json +1 -0
  213. package/example/.next/static/webpack/ff24e5856387293df7e5.webpack.hot-update.json +1 -0
  214. package/example/.next/static/webpack/pages/index.072a7d130e228881d052.hot-update.js +22 -0
  215. package/example/.next/static/webpack/pages/index.0762084187c63da9472d.hot-update.js +22 -0
  216. package/example/.next/static/webpack/pages/index.0cea8b02db9004a9010b.hot-update.js +22 -0
  217. package/example/.next/static/webpack/pages/index.0e5144f94622b3a25db6.hot-update.js +22 -0
  218. package/example/.next/static/webpack/pages/index.1402ac884dae19bf86c6.hot-update.js +22 -0
  219. package/example/.next/static/webpack/pages/index.147aac9d3d7030a41f7f.hot-update.js +22 -0
  220. package/example/.next/static/webpack/pages/index.26b79f15961d39636a40.hot-update.js +22 -0
  221. package/example/.next/static/webpack/pages/index.2a955e2b9072adb73190.hot-update.js +22 -0
  222. package/example/.next/static/webpack/pages/index.3555adce6517c2f7e42e.hot-update.js +22 -0
  223. package/example/.next/static/webpack/pages/index.37f12cbe9b48a34c52c2.hot-update.js +22 -0
  224. package/example/.next/static/webpack/pages/index.3ac52037129af449eb72.hot-update.js +22 -0
  225. package/example/.next/static/webpack/pages/index.3c79280973f09aaa87fe.hot-update.js +22 -0
  226. package/example/.next/static/webpack/pages/index.43b43eb8c73ce45f78f3.hot-update.js +22 -0
  227. package/example/.next/static/webpack/pages/index.43c79a23f821cd622aee.hot-update.js +22 -0
  228. package/example/.next/static/webpack/pages/index.4e0a0f884a956cbb5abe.hot-update.js +22 -0
  229. package/example/.next/static/webpack/pages/index.50a19b6d8c63681a6f59.hot-update.js +22 -0
  230. package/example/.next/static/webpack/pages/index.51822142283bf3a4fb5a.hot-update.js +22 -0
  231. package/example/.next/static/webpack/pages/index.58da75bd3cf67c71206b.hot-update.js +22 -0
  232. package/example/.next/static/webpack/pages/index.5d0aa62f686882951598.hot-update.js +22 -0
  233. package/example/.next/static/webpack/pages/index.5de110501cdd600f11d7.hot-update.js +22 -0
  234. package/example/.next/static/webpack/pages/index.63775ccd9a7849e5764c.hot-update.js +22 -0
  235. package/example/.next/static/webpack/pages/index.6d11705f01219ee2fa3d.hot-update.js +22 -0
  236. package/example/.next/static/webpack/pages/index.6d4eca6985c3546f0f71.hot-update.js +22 -0
  237. package/example/.next/static/webpack/pages/index.6e6063845501820278cd.hot-update.js +22 -0
  238. package/example/.next/static/webpack/pages/index.74a36e7ef8e1ce4fdf4a.hot-update.js +22 -0
  239. package/example/.next/static/webpack/pages/index.796fe50a2b9d66aec2d7.hot-update.js +22 -0
  240. package/example/.next/static/webpack/pages/index.8d58abc5879781fbdb2f.hot-update.js +22 -0
  241. package/example/.next/static/webpack/pages/index.90295054405377c77f5b.hot-update.js +22 -0
  242. package/example/.next/static/webpack/pages/index.9310bbbf11c1977e9d98.hot-update.js +22 -0
  243. package/example/.next/static/webpack/pages/index.9a0237d669946cc844e6.hot-update.js +22 -0
  244. package/example/.next/static/webpack/pages/index.9aeee506244bc34b7b4b.hot-update.js +22 -0
  245. package/example/.next/static/webpack/pages/index.9f473ce1942e5fdb3632.hot-update.js +22 -0
  246. package/example/.next/static/webpack/pages/index.a48bbb1152e41e6a3cf2.hot-update.js +22 -0
  247. package/example/.next/static/webpack/pages/index.aa3b500d2bc6950dbadd.hot-update.js +22 -0
  248. package/example/.next/static/webpack/pages/index.aea6a75d56441fbbdaff.hot-update.js +22 -0
  249. package/example/.next/static/webpack/pages/index.b3e2c4a7565fcfca527f.hot-update.js +22 -0
  250. package/example/.next/static/webpack/pages/index.c6068e16d94c09cfd6b6.hot-update.js +22 -0
  251. package/example/.next/static/webpack/pages/index.c7dab37225cb7bc65af3.hot-update.js +22 -0
  252. package/example/.next/static/webpack/pages/index.d2f930e23e921b06ed5c.hot-update.js +22 -0
  253. package/example/.next/static/webpack/pages/index.d371d7c066578693521e.hot-update.js +22 -0
  254. package/example/.next/static/webpack/pages/index.d965a3cf3815af872d29.hot-update.js +22 -0
  255. package/example/.next/static/webpack/pages/index.dba31d980c30d691d16b.hot-update.js +22 -0
  256. package/example/.next/static/webpack/pages/index.dd8aa6ef77cd74d84ec3.hot-update.js +22 -0
  257. package/example/.next/static/webpack/pages/index.e15c892c8dbe9bc25020.hot-update.js +22 -0
  258. package/example/.next/static/webpack/pages/index.e8bf5676cc19a6345ad3.hot-update.js +22 -0
  259. package/example/.next/static/webpack/pages/index.eddd97db36cfbd0a1e7c.hot-update.js +22 -0
  260. package/example/.next/static/webpack/pages/index.f3fa39ef803627283382.hot-update.js +22 -0
  261. package/example/.next/static/webpack/pages/index.f48796a76815229d67ab.hot-update.js +22 -0
  262. package/example/.next/static/webpack/pages/index.feb45f4041e620b79d86.hot-update.js +22 -0
  263. package/example/.next/static/webpack/webpack.0588aaab49febd8cfe1c.hot-update.js +19 -0
  264. package/example/.next/static/webpack/webpack.072a7d130e228881d052.hot-update.js +19 -0
  265. package/example/.next/static/webpack/webpack.0762084187c63da9472d.hot-update.js +19 -0
  266. package/example/.next/static/webpack/webpack.0cea8b02db9004a9010b.hot-update.js +19 -0
  267. package/example/.next/static/webpack/webpack.0e5144f94622b3a25db6.hot-update.js +19 -0
  268. package/example/.next/static/webpack/webpack.1252cfc380272b4fe2e6.hot-update.js +19 -0
  269. package/example/.next/static/webpack/webpack.1402ac884dae19bf86c6.hot-update.js +19 -0
  270. package/example/.next/static/webpack/webpack.147aac9d3d7030a41f7f.hot-update.js +19 -0
  271. package/example/.next/static/webpack/webpack.1bda8bbbca0e0f13f045.hot-update.js +19 -0
  272. package/example/.next/static/webpack/webpack.234d4ce3b70ffd983ba8.hot-update.js +19 -0
  273. package/example/.next/static/webpack/webpack.26b79f15961d39636a40.hot-update.js +19 -0
  274. package/example/.next/static/webpack/webpack.2826318bc6ba4bd9d644.hot-update.js +19 -0
  275. package/example/.next/static/webpack/webpack.2a955e2b9072adb73190.hot-update.js +19 -0
  276. package/example/.next/static/webpack/webpack.2c2aaee83efae1379187.hot-update.js +19 -0
  277. package/example/.next/static/webpack/webpack.3555adce6517c2f7e42e.hot-update.js +19 -0
  278. package/example/.next/static/webpack/webpack.3588af142e46a835343c.hot-update.js +19 -0
  279. package/example/.next/static/webpack/webpack.37f12cbe9b48a34c52c2.hot-update.js +19 -0
  280. package/example/.next/static/webpack/webpack.3ac52037129af449eb72.hot-update.js +19 -0
  281. package/example/.next/static/webpack/webpack.3b42c94e63de900303b9.hot-update.js +19 -0
  282. package/example/.next/static/webpack/webpack.3c79280973f09aaa87fe.hot-update.js +19 -0
  283. package/example/.next/static/webpack/webpack.3c87c0ea5ce694e8d1c5.hot-update.js +19 -0
  284. package/example/.next/static/webpack/webpack.3de319507c766ee73bea.hot-update.js +19 -0
  285. package/example/.next/static/webpack/webpack.43b43eb8c73ce45f78f3.hot-update.js +19 -0
  286. package/example/.next/static/webpack/webpack.43c79a23f821cd622aee.hot-update.js +19 -0
  287. package/example/.next/static/webpack/webpack.4e0a0f884a956cbb5abe.hot-update.js +19 -0
  288. package/example/.next/static/webpack/webpack.50a19b6d8c63681a6f59.hot-update.js +19 -0
  289. package/example/.next/static/webpack/webpack.51822142283bf3a4fb5a.hot-update.js +19 -0
  290. package/example/.next/static/webpack/webpack.55ee69f8d85488769153.hot-update.js +19 -0
  291. package/example/.next/static/webpack/webpack.57d0775bfd690a4598a7.hot-update.js +19 -0
  292. package/example/.next/static/webpack/webpack.585753f40a2ba758aaeb.hot-update.js +19 -0
  293. package/example/.next/static/webpack/webpack.58da75bd3cf67c71206b.hot-update.js +19 -0
  294. package/example/.next/static/webpack/webpack.5d0aa62f686882951598.hot-update.js +19 -0
  295. package/example/.next/static/webpack/webpack.5de110501cdd600f11d7.hot-update.js +19 -0
  296. package/example/.next/static/webpack/webpack.63775ccd9a7849e5764c.hot-update.js +19 -0
  297. package/example/.next/static/webpack/webpack.6b4663280b1db8f5e905.hot-update.js +19 -0
  298. package/example/.next/static/webpack/webpack.6d11705f01219ee2fa3d.hot-update.js +19 -0
  299. package/example/.next/static/webpack/webpack.6d4eca6985c3546f0f71.hot-update.js +19 -0
  300. package/example/.next/static/webpack/webpack.6e6063845501820278cd.hot-update.js +19 -0
  301. package/example/.next/static/webpack/webpack.74a36e7ef8e1ce4fdf4a.hot-update.js +19 -0
  302. package/example/.next/static/webpack/webpack.796fe50a2b9d66aec2d7.hot-update.js +19 -0
  303. package/example/.next/static/webpack/webpack.878b2eb56dd102f8d1de.hot-update.js +19 -0
  304. package/example/.next/static/webpack/webpack.8d58abc5879781fbdb2f.hot-update.js +19 -0
  305. package/example/.next/static/webpack/webpack.8f405c984e4934b20605.hot-update.js +30 -0
  306. package/example/.next/static/webpack/webpack.90295054405377c77f5b.hot-update.js +19 -0
  307. package/example/.next/static/webpack/webpack.9310bbbf11c1977e9d98.hot-update.js +19 -0
  308. package/example/.next/static/webpack/webpack.9a0237d669946cc844e6.hot-update.js +19 -0
  309. package/example/.next/static/webpack/webpack.9aeee506244bc34b7b4b.hot-update.js +19 -0
  310. package/example/.next/static/webpack/webpack.9f473ce1942e5fdb3632.hot-update.js +19 -0
  311. package/example/.next/static/webpack/webpack.a1185fb9adfe5b70bc2f.hot-update.js +19 -0
  312. package/example/.next/static/webpack/webpack.a11eb25c0fca8e105e00.hot-update.js +19 -0
  313. package/example/.next/static/webpack/webpack.a48bbb1152e41e6a3cf2.hot-update.js +19 -0
  314. package/example/.next/static/webpack/webpack.aa3b500d2bc6950dbadd.hot-update.js +19 -0
  315. package/example/.next/static/webpack/webpack.ab0b9af23ef3fd93299c.hot-update.js +19 -0
  316. package/example/.next/static/webpack/webpack.aea6a75d56441fbbdaff.hot-update.js +19 -0
  317. package/example/.next/static/webpack/webpack.af81bfc5f0a8c32c3b51.hot-update.js +19 -0
  318. package/example/.next/static/webpack/webpack.b370b882a7b8cbf89abd.hot-update.js +19 -0
  319. package/example/.next/static/webpack/webpack.b3e2c4a7565fcfca527f.hot-update.js +19 -0
  320. package/example/.next/static/webpack/webpack.c6068e16d94c09cfd6b6.hot-update.js +19 -0
  321. package/example/.next/static/webpack/webpack.c73596b5b037cb23ec6b.hot-update.js +19 -0
  322. package/example/.next/static/webpack/webpack.c7dab37225cb7bc65af3.hot-update.js +19 -0
  323. package/example/.next/static/webpack/webpack.d2f930e23e921b06ed5c.hot-update.js +19 -0
  324. package/example/.next/static/webpack/webpack.d371d7c066578693521e.hot-update.js +19 -0
  325. package/example/.next/static/webpack/webpack.d965a3cf3815af872d29.hot-update.js +19 -0
  326. package/example/.next/static/webpack/webpack.da33d321cff0dda32eb0.hot-update.js +19 -0
  327. package/example/.next/static/webpack/webpack.dba31d980c30d691d16b.hot-update.js +19 -0
  328. package/example/.next/static/webpack/webpack.dd8aa6ef77cd74d84ec3.hot-update.js +19 -0
  329. package/example/.next/static/webpack/webpack.e15c892c8dbe9bc25020.hot-update.js +19 -0
  330. package/example/.next/static/webpack/webpack.e8bf5676cc19a6345ad3.hot-update.js +19 -0
  331. package/example/.next/static/webpack/webpack.eddd97db36cfbd0a1e7c.hot-update.js +19 -0
  332. package/example/.next/static/webpack/webpack.f031b79058783bc1558e.hot-update.js +19 -0
  333. package/example/.next/static/webpack/webpack.f3fa39ef803627283382.hot-update.js +19 -0
  334. package/example/.next/static/webpack/webpack.f48796a76815229d67ab.hot-update.js +19 -0
  335. package/example/.next/static/webpack/webpack.feb45f4041e620b79d86.hot-update.js +19 -0
  336. package/example/.next/static/webpack/webpack.ff24e5856387293df7e5.hot-update.js +19 -0
  337. package/example/package.json +8 -8
  338. package/package.json +10 -10
@@ -0,0 +1,22 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ self["webpackHotUpdate_N_E"]("pages/index",{
10
+
11
+ /***/ "../components/Image.tsx":
12
+ /*!*******************************!*\
13
+ !*** ../components/Image.tsx ***!
14
+ \*******************************/
15
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
16
+
17
+ "use strict";
18
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isStaticRequire\": function() { return /* binding */ isStaticRequire; },\n/* harmony export */ \"isStaticImageData\": function() { return /* binding */ isStaticImageData; },\n/* harmony export */ \"isStaticImport\": function() { return /* binding */ isStaticImport; },\n/* harmony export */ \"getInt\": function() { return /* binding */ getInt; },\n/* harmony export */ \"Image\": function() { return /* binding */ Image; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../../../node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @bedrock-layout/use-forwarded-ref */ \"../../../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js\");\n/* harmony import */ var next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/next-server/server/image-config */ \"../../../node_modules/next/dist/next-server/server/image-config.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/head */ \"../../../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _config_config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config/config */ \"../config/config.ts\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n\n\nvar _jsxFileName = \"/Users/paulhachmang/Sites/reachdigital-next/packages/image/components/Image.tsx\",\n _s = $RefreshSig$();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable prefer-const */\n\n/* eslint-disable no-param-reassign */\n\n/* eslint-disable @next/next/no-img-element */\n\n/* eslint-disable jsx-a11y/alt-text */\n\n\n\n\n\n\nif (false) {}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined];\nconst loaders = new Map([['imgix', _config_config__WEBPACK_IMPORTED_MODULE_6__.imgixLoader], ['cloudinary', _config_config__WEBPACK_IMPORTED_MODULE_6__.cloudinaryLoader], ['akamai', _config_config__WEBPACK_IMPORTED_MODULE_6__.akamaiLoader], ['default', _config_config__WEBPACK_IMPORTED_MODULE_6__.defaultLoader]]);\nconst VALID_LAYOUT_VALUES = ['fill', 'responsive', 'intrinsic', 'fixed'];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));\n} // sort smallest to largest\n\nconst allSizes = [..._config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes, ..._config_config__WEBPACK_IMPORTED_MODULE_6__.configImageSizes];\n_config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes.sort((a, b) => a - b);\nallSizes.sort((a, b) => a - b);\n\nfunction getWidths(width, layout, sizes = '', scale) {\n if (sizes && layout === 'fill' || layout === 'responsive') {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = viewportWidthRe.exec(sizes); match) {\n var _match;\n\n percentSizes.push(parseInt((_match = match) === null || _match === void 0 ? void 0 : _match[2], 10));\n }\n\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter(s => s >= _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes[0] * smallestRatio),\n kind: 'w'\n };\n } // Find all the \"px\" sizes used in the sizes prop\n\n\n const pxWidthRe = /(^|\\s)(1?\\d+)px/g;\n const pxSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = pxWidthRe.exec(sizes); match) {\n var _match2;\n\n pxSizes.push(parseInt((_match2 = match) === null || _match2 === void 0 ? void 0 : _match2[2], 10));\n }\n\n if (pxSizes.length) {\n return {\n widths: pxSizes.map(pxSize => {\n var _allSizes$filter, _allSizes$filter2;\n\n const scaled = (_allSizes$filter = allSizes.filter(s => s * scale > pxSize)) === null || _allSizes$filter === void 0 ? void 0 : _allSizes$filter[0];\n const dpr2 = (_allSizes$filter2 = allSizes.filter(s => s > pxSize)) === null || _allSizes$filter2 === void 0 ? void 0 : _allSizes$filter2[0];\n return scale > 1 ? Math.max(scaled, dpr2) : Math.min(scaled, dpr2);\n }),\n kind: 'w'\n };\n }\n\n return {\n widths: allSizes,\n kind: 'w'\n };\n }\n\n if (typeof width !== 'number' || layout === 'fill') {\n return {\n widths: _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes,\n kind: 'w'\n };\n }\n\n const widths = [...new Set( // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2\n /* , width * 3*/\n ].map(w => allSizes.find(p => p >= w) || allSizes[allSizes.length - 1]))];\n return {\n widths,\n kind: 'x'\n };\n}\n\nfunction generateSourceAttrs({\n src,\n layout,\n width,\n quality = 44,\n sizes,\n loader,\n scale\n}) {\n const {\n widths,\n kind\n } = getWidths(width, layout, sizes, scale);\n return {\n sizes: !sizes && kind === 'w' ? `50vw` : sizes,\n srcSet: widths.map((w, i) => `${loader({\n src,\n quality,\n width: w\n })} ${kind === 'w' ? Math.round(w * scale) : i + 1}${kind}`).join(', ')\n };\n}\n\nfunction getInt(x) {\n if (typeof x === 'number') {\n return x;\n }\n\n if (typeof x === 'string') {\n return parseInt(x, 10);\n }\n\n return undefined;\n}\n\nfunction defaultImageLoader(loaderProps) {\n const load = loaders.get(_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader);\n\n if (load) {\n return load(_objectSpread({\n root: _config_config__WEBPACK_IMPORTED_MODULE_6__.configPath\n }, loaderProps));\n }\n\n throw new Error(`[@reachdigital/image]: Unknown \"loader\" found in \"next.config.js\". Expected: ${next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__.VALID_LOADERS.join(', ')}. Received: ${_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader}`);\n} // See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\n\n\nfunction removePlaceholder(img, placeholder) {\n if (placeholder === 'blur' && img) {\n const handleLoad = () => {\n if (!img.src.startsWith('data:')) {\n const p = 'decode' in img ? img.decode() : Promise.resolve(); // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n p.catch(() => {}).then(() => {\n img.style.filter = 'none';\n img.style.backgroundSize = 'none';\n img.style.backgroundImage = 'none';\n });\n }\n };\n\n if (img.complete) {\n // If the real image fails to load, this will still remove the placeholder.\n // This is the desired behavior for now, and will be revisited when error\n // handling is worked on for the image component itself.\n handleLoad();\n } else {\n img.onload = handleLoad;\n }\n }\n}\n/** Checks whether an image is currently in the viewport */\n\n\nfunction isInViewport(elem) {\n const {\n top,\n right,\n bottom,\n left\n } = elem.getBoundingClientRect();\n return bottom >= 0 && right >= 0 && top <= window.innerHeight && left <= window.innerWidth;\n}\n\nfunction isSizesRecord(sizes) {\n return typeof sizes === 'object';\n}\n\nfunction sizesEntries(sizes) {\n if (isSizesRecord(sizes)) {\n return Object.entries(sizes).map(([breakpoint, size]) => [Number(breakpoint), size]).sort(([sizeA], [sizeB]) => sizeB - sizeA);\n }\n\n return [[0, sizes]];\n}\n\nfunction generateSizesString(sizes) {\n return sizesEntries(sizes).map(([breakpoint, size]) => {\n if (breakpoint === 0) return size;\n return `(min-width: ${breakpoint}px) ${size}`;\n }).join(', ');\n}\n/** Since we're handling stuff ourselves we omit some stuff */\n\n\nconst Image = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().forwardRef(_c = _s((_ref, forwardedRef) => {\n var _generateSizesString, _loading;\n\n _s();\n\n let {\n src,\n sizes: sizesIncomming,\n unoptimized = false,\n loading,\n layout = 'responsive',\n quality,\n width,\n height,\n style,\n loader = defaultImageLoader,\n placeholder = 'empty',\n blurDataURL\n } = _ref,\n imgProps = (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__.default)(_ref, [\"src\", \"sizes\", \"unoptimized\", \"loading\", \"layout\", \"quality\", \"width\", \"height\", \"style\", \"loader\", \"placeholder\", \"blurDataURL\"]);\n\n const ref = (0,_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default)(forwardedRef);\n const sizesOrig = layout === 'fixed' && width && !sizesIncomming ? `${width}px` : sizesIncomming;\n const sizes = (_generateSizesString = generateSizesString(sizesOrig)) !== null && _generateSizesString !== void 0 ? _generateSizesString : '50vw'; // If no responsive sizes are given, we're defaulting to 50vw on mobile\n // const [sizes, setSizes] = useState(toSizesString(sizesOrig) ?? `50vw`)\n\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (false) {}\n if (!ref.current) return () => {}; // Warn the user when he isn't providing sizes and how to proceed\n\n const ro = new ResizeObserver(([entry]) => {\n var _sizesEntries$find;\n\n const currentvw = entry.contentRect.width;\n let ratio;\n let msg = '';\n const [breakpoint, size] = (_sizesEntries$find = sizesEntries(sizesOrig).find(([s]) => s === 0 ? true : window.matchMedia(`(min-width: ${s})`))) !== null && _sizesEntries$find !== void 0 ? _sizesEntries$find : [0, '100vw'];\n\n if (size) {\n const el = document.createElement('div');\n el.setAttribute('style', `width: ${size}`);\n document.body.appendChild(el);\n const measuredWidth = el.getBoundingClientRect().width; // el.remove()\n\n ratio = measuredWidth ** 2 / currentvw ** 2;\n msg += `Image has \"sizes\" property set, but size 'min-width(${breakpoint}px) ${size}' is incorrect.`;\n } else {\n msg += `Image has no \"sizes\" property set.`;\n ratio = (window.innerWidth * 0.5) ** 2 / currentvw ** 2;\n }\n\n const round = nr => Math.round(nr * 100) / 100;\n\n if (ratio > 1.2) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(ratio)}x too many pixels`, entry.target);\n } else if (ratio < 0.8) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(1 / ratio)}x too few pixels`, entry.target);\n }\n });\n ro.observe(ref.current);\n return () => ro.disconnect();\n }, [layout, ref, sizesOrig, src, width]);\n let staticSrc = '';\n\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n\n if (!staticImageData.src) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(staticImageData)}`);\n }\n\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height;\n width = width || staticImageData.width;\n\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(staticImageData)}`);\n }\n }\n }\n\n src = typeof src === 'string' ? src : staticSrc;\n const widthInt = getInt(width);\n const heightInt = getInt(height);\n const qualityInt = getInt(quality);\n\n if (true) {\n if (!src) {\n throw new Error(`[@reachdigital/image]: Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`@reachdigital/image\\` component. Received: ${JSON.stringify({\n width,\n height,\n quality\n })}`);\n }\n\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(String).join(',')}.`);\n }\n\n if (typeof widthInt !== 'undefined' && Number.isNaN(widthInt) || typeof heightInt !== 'undefined' && Number.isNaN(heightInt)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`);\n }\n\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`);\n }\n\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n console.warn(`[@reachdigital/image]: Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`);\n }\n\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp']; // should match next-image-loader\n\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')}\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`);\n }\n }\n }\n\n if (typeof widthInt === 'undefined' && typeof heightInt === 'undefined') {\n if (layout === 'fill') {// handle fill\n } else if (true) {\n // <Image src=\"i.png\" />\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`);\n }\n }\n\n (_loading = loading) !== null && _loading !== void 0 ? _loading : loading = 'lazy';\n\n if (src && src.startsWith('data:')) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n }\n\n const attributes3x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1.5\n });\n const attributes2x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1\n });\n const attributes1x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 0.5\n });\n if (layout !== 'fixed' && !style) style = {};\n if (layout === 'responsive') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto'\n });\n if (layout === 'intrinsic') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto',\n maxWidth: width\n });\n if (layout === 'fill') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: '100%'\n });\n return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [unoptimized ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread({\n ref: ref\n }, imgProps), {}, {\n src: src,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 612,\n columnNumber: 11\n }, undefined) : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"picture\", {\n children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\"\n }, attributes3x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 615,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 1.5)\"\n }, attributes2x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 616,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread(_objectSpread({\n ref: ref\n }, imgProps), attributes1x), {}, {\n loading: loading,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 617,\n columnNumber: 13\n }, undefined)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 614,\n columnNumber: 11\n }, undefined), loading === 'eager' && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_4___default()), {\n children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"preload\",\n as: \"image\",\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\" // @ts-expect-error imagesrcset is not yet in the link element type\n ,\n imagesrcset: attributes1x.srcSet,\n imagesizes: sizes\n }, `__nimg-2x-${attributes1x.srcSet}${attributes1x.sizes}`, false, {\n fileName: _jsxFileName,\n lineNumber: 630,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 629,\n columnNumber: 11\n }, undefined)]\n }, void 0, true);\n}, \"uc1ywpQv+s/tGng4xj/L6VVOIq8=\", false, function () {\n return [_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default];\n}));\n_c2 = Image;\nImage.displayName = 'NextPicture';\n\n\nvar _c, _c2;\n\n$RefreshReg$(_c, \"Image$React.forwardRef\");\n$RefreshReg$(_c2, \"Image\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL2NvbXBvbmVudHMvSW1hZ2UudHN4PzJiNmQiXSwibmFtZXMiOlsiVkFMSURfTE9BRElOR19WQUxVRVMiLCJ1bmRlZmluZWQiLCJsb2FkZXJzIiwiTWFwIiwiaW1naXhMb2FkZXIiLCJjbG91ZGluYXJ5TG9hZGVyIiwiYWthbWFpTG9hZGVyIiwiZGVmYXVsdExvYWRlciIsIlZBTElEX0xBWU9VVF9WQUxVRVMiLCJpc1N0YXRpY1JlcXVpcmUiLCJzcmMiLCJkZWZhdWx0IiwiaXNTdGF0aWNJbWFnZURhdGEiLCJpc1N0YXRpY0ltcG9ydCIsImFsbFNpemVzIiwiY29uZmlnRGV2aWNlU2l6ZXMiLCJjb25maWdJbWFnZVNpemVzIiwiYSIsImIiLCJzb3J0IiwiZ2V0V2lkdGhzIiwid2lkdGgiLCJsYXlvdXQiLCJzaXplcyIsInNjYWxlIiwidmlld3BvcnRXaWR0aFJlIiwicGVyY2VudFNpemVzIiwibWF0Y2giLCJleGVjIiwicHVzaCIsInBhcnNlSW50IiwibGVuZ3RoIiwic21hbGxlc3RSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aWR0aHMiLCJmaWx0ZXIiLCJzIiwia2luZCIsInB4V2lkdGhSZSIsInB4U2l6ZXMiLCJtYXAiLCJweFNpemUiLCJzY2FsZWQiLCJkcHIyIiwibWF4IiwiU2V0IiwidyIsImZpbmQiLCJwIiwiZ2VuZXJhdGVTb3VyY2VBdHRycyIsInF1YWxpdHkiLCJsb2FkZXIiLCJzcmNTZXQiLCJpIiwicm91bmQiLCJqb2luIiwiZ2V0SW50IiwieCIsImRlZmF1bHRJbWFnZUxvYWRlciIsImxvYWRlclByb3BzIiwibG9hZCIsImdldCIsImNvbmZpZ0xvYWRlciIsInJvb3QiLCJjb25maWdQYXRoIiwiRXJyb3IiLCJWQUxJRF9MT0FERVJTIiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJpbWciLCJwbGFjZWhvbGRlciIsImhhbmRsZUxvYWQiLCJzdGFydHNXaXRoIiwiZGVjb2RlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjYXRjaCIsInRoZW4iLCJzdHlsZSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZEltYWdlIiwiY29tcGxldGUiLCJvbmxvYWQiLCJpc0luVmlld3BvcnQiLCJlbGVtIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiaXNTaXplc1JlY29yZCIsInNpemVzRW50cmllcyIsIk9iamVjdCIsImVudHJpZXMiLCJicmVha3BvaW50Iiwic2l6ZSIsIk51bWJlciIsInNpemVBIiwic2l6ZUIiLCJnZW5lcmF0ZVNpemVzU3RyaW5nIiwiSW1hZ2UiLCJSZWFjdCIsImZvcndhcmRlZFJlZiIsInNpemVzSW5jb21taW5nIiwidW5vcHRpbWl6ZWQiLCJsb2FkaW5nIiwiaGVpZ2h0IiwiYmx1ckRhdGFVUkwiLCJpbWdQcm9wcyIsInJlZiIsInVzZUZvcndhcmRlZFJlZiIsInNpemVzT3JpZyIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJybyIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cnkiLCJjdXJyZW50dnciLCJjb250ZW50UmVjdCIsInJhdGlvIiwibXNnIiwibWF0Y2hNZWRpYSIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiYm9keSIsImFwcGVuZENoaWxkIiwibWVhc3VyZWRXaWR0aCIsIm5yIiwiY29uc29sZSIsIndhcm4iLCJ0YXJnZXQiLCJvYnNlcnZlIiwiZGlzY29ubmVjdCIsInN0YXRpY1NyYyIsInN0YXRpY0ltYWdlRGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3aWR0aEludCIsImhlaWdodEludCIsInF1YWxpdHlJbnQiLCJpbmNsdWRlcyIsIlN0cmluZyIsImlzTmFOIiwiVkFMSURfQkxVUl9FWFQiLCJhdHRyaWJ1dGVzM3giLCJhdHRyaWJ1dGVzMngiLCJhdHRyaWJ1dGVzMXgiLCJtYXhXaWR0aCIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoi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RyxFQUFDLFNBRk47QUFHRSxVQUFFLEVBQUMsT0FITDtBQUlFLGFBQUssRUFBQyx1Q0FKUixDQUtFO0FBTEY7QUFNRSxtQkFBVyxFQUFFMkMsWUFBWSxDQUFDbEcsTUFONUI7QUFPRSxrQkFBVSxFQUFFOUI7QUFQZCxTQUNRLGFBQVlnSSxZQUFZLENBQUNsRyxNQUFPLEdBQUVrRyxZQUFZLENBQUNoSSxLQUFNLEVBRDdEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFERjtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQW5CSjtBQUFBLGtCQURGO0FBa0NELENBelBXO0FBQUEsVUFtQkUwRixzRUFuQkY7QUFBQSxHQUFkO01BQU1WLEs7QUEyUE5BLEtBQUssQ0FBQ2tELFdBQU4sR0FBb0IsYUFBcEI7QUFFQSIsImZpbGUiOiIuLi9jb21wb25lbnRzL0ltYWdlLnRzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1jb25zdCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEBuZXh0L25leHQvbm8taW1nLWVsZW1lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2FsdC10ZXh0ICovXG5pbXBvcnQgdXNlRm9yd2FyZGVkUmVmIGZyb20gJ0BiZWRyb2NrLWxheW91dC91c2UtZm9yd2FyZGVkLXJlZidcbmltcG9ydCB7IExvYWRlclZhbHVlLCBWQUxJRF9MT0FERVJTIH0gZnJvbSAnbmV4dC9kaXN0L25leHQtc2VydmVyL3NlcnZlci9pbWFnZS1jb25maWcnXG5pbXBvcnQgSGVhZCBmcm9tICduZXh0L2hlYWQnXG5pbXBvcnQgdHlwZSB7IEltYWdlTG9hZGVyUHJvcHMsIEltYWdlTG9hZGVyIH0gZnJvbSAnbmV4dC9pbWFnZSdcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlUmVzaXplT2JzZXJ2ZXIgZnJvbSAndXNlLXJlc2l6ZS1vYnNlcnZlcidcbmltcG9ydCB7XG4gIGFrYW1haUxvYWRlcixcbiAgY2xvdWRpbmFyeUxvYWRlcixcbiAgY29uZmlnRGV2aWNlU2l6ZXMsXG4gIGNvbmZpZ0ltYWdlU2l6ZXMsXG4gIGNvbmZpZ0xvYWRlcixcbiAgY29uZmlnUGF0aCxcbiAgRGVmYXVsdEltYWdlTG9hZGVyUHJvcHMsXG4gIGRlZmF1bHRMb2FkZXIsXG4gIGltZ2l4TG9hZGVyLFxufSBmcm9tICcuLi9jb25maWcvY29uZmlnJ1xuaW1wb3J0IHVzZUNvbm5lY3Rpb25UeXBlIGZyb20gJy4uL2hvb2tzL3VzZUNvbm5lY3Rpb25UeXBlJ1xuXG5pZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gIGdsb2JhbC5fX05FWFRfSU1BR0VfSU1QT1JURUQgPSB0cnVlXG59XG5cbmV4cG9ydCB0eXBlIHsgSW1hZ2VMb2FkZXJQcm9wcywgSW1hZ2VMb2FkZXIgfVxuXG5jb25zdCBWQUxJRF9MT0FESU5HX1ZBTFVFUyA9IFsnbGF6eScsICdlYWdlcicsIHVuZGVmaW5lZF0gYXMgY29uc3RcbnR5cGUgTG9hZGluZ1ZhbHVlID0gdHlwZW9mIFZBTElEX0xPQURJTkdfVkFMVUVTW251bWJlcl1cblxuY29uc3QgbG9hZGVycyA9IG5ldyBNYXA8TG9hZGVyVmFsdWUsIChwcm9wczogRGVmYXVsdEltYWdlTG9hZGVyUHJvcHMpID0+IHN0cmluZz4oW1xuICBbJ2ltZ2l4JywgaW1naXhMb2FkZXJdLFxuICBbJ2Nsb3VkaW5hcnknLCBjbG91ZGluYXJ5TG9hZGVyXSxcbiAgWydha2FtYWknLCBha2FtYWlMb2FkZXJdLFxuICBbJ2RlZmF1bHQnLCBkZWZhdWx0TG9hZGVyXSxcbl0pXG5cbmNvbnN0IFZBTElEX0xBWU9VVF9WQUxVRVMgPSBbJ2ZpbGwnLCAncmVzcG9uc2l2ZScsICdpbnRyaW5zaWMnLCAnZml4ZWQnXSBhcyBjb25zdFxudHlwZSBMYXlvdXRWYWx1ZSA9ICdmaWxsJyB8ICdmaXhlZCcgfCAnaW50cmluc2ljJyB8ICdyZXNwb25zaXZlJyB8IHVuZGVmaW5lZFxuXG50eXBlIFBsYWNlaG9sZGVyVmFsdWUgPSAnYmx1cicgfCAnZW1wdHknXG5cbnR5cGUgSW1nRWxlbWVudFN0eWxlID0gTm9uTnVsbGFibGU8SlNYLkludHJpbnNpY0VsZW1lbnRzWydpbWcnXVsnc3R5bGUnXT5cblxuaW50ZXJmYWNlIFN0YXRpY0ltYWdlRGF0YSB7XG4gIHNyYzogc3RyaW5nXG4gIGhlaWdodDogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgYmx1ckRhdGFVUkw/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFN0YXRpY1JlcXVpcmUge1xuICBkZWZhdWx0OiBTdGF0aWNJbWFnZURhdGFcbn1cblxudHlwZSBTdGF0aWNJbXBvcnQgPSBTdGF0aWNSZXF1aXJlIHwgU3RhdGljSW1hZ2VEYXRhXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY1JlcXVpcmUoc3JjOiBTdGF0aWNSZXF1aXJlIHwgU3RhdGljSW1hZ2VEYXRhKTogc3JjIGlzIFN0YXRpY1JlcXVpcmUge1xuICByZXR1cm4gKHNyYyBhcyBTdGF0aWNSZXF1aXJlKS5kZWZhdWx0ICE9PSB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljSW1hZ2VEYXRhKHNyYzogU3RhdGljUmVxdWlyZSB8IFN0YXRpY0ltYWdlRGF0YSk6IHNyYyBpcyBTdGF0aWNJbWFnZURhdGEge1xuICByZXR1cm4gKHNyYyBhcyBTdGF0aWNJbWFnZURhdGEpLnNyYyAhPT0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0ltcG9ydChzcmM6IHN0cmluZyB8IFN0YXRpY0ltcG9ydCk6IHNyYyBpcyBTdGF0aWNJbXBvcnQge1xuICByZXR1cm4gdHlwZW9mIHNyYyA9PT0gJ29iamVjdCcgJiYgKGlzU3RhdGljUmVxdWlyZShzcmMpIHx8IGlzU3RhdGljSW1hZ2VEYXRhKHNyYykpXG59XG5cbi8vIHNvcnQgc21hbGxlc3QgdG8gbGFyZ2VzdFxuY29uc3QgYWxsU2l6ZXMgPSBbLi4uY29uZmlnRGV2aWNlU2l6ZXMsIC4uLmNvbmZpZ0ltYWdlU2l6ZXNdXG5jb25maWdEZXZpY2VTaXplcy5zb3J0KChhLCBiKSA9PiBhIC0gYilcbmFsbFNpemVzLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuXG5mdW5jdGlvbiBnZXRXaWR0aHMoXG4gIHdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGxheW91dDogTGF5b3V0VmFsdWUsXG4gIHNpemVzID0gJycsXG4gIHNjYWxlOiBudW1iZXIsXG4pOiB7IHdpZHRoczogbnVtYmVyW107IGtpbmQ6ICd3JyB8ICd4JyB9IHtcbiAgaWYgKChzaXplcyAmJiBsYXlvdXQgPT09ICdmaWxsJykgfHwgbGF5b3V0ID09PSAncmVzcG9uc2l2ZScpIHtcbiAgICAvLyBGaW5kIGFsbCB0aGUgXCJ2d1wiIHBlcmNlbnQgc2l6ZXMgdXNlZCBpbiB0aGUgc2l6ZXMgcHJvcFxuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGhSZSA9IC8oXnxcXHMpKDE/XFxkP1xcZCl2dy9nXG4gICAgY29uc3QgcGVyY2VudFNpemVzOiBudW1iZXJbXSA9IFtdXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgZm9yIChsZXQgbWF0Y2g6IHN0cmluZ1tdIHwgbnVsbDsgKG1hdGNoID0gdmlld3BvcnRXaWR0aFJlLmV4ZWMoc2l6ZXMpKTsgbWF0Y2gpIHtcbiAgICAgIHBlcmNlbnRTaXplcy5wdXNoKHBhcnNlSW50KG1hdGNoPy5bMl0sIDEwKSlcbiAgICB9XG4gICAgaWYgKHBlcmNlbnRTaXplcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNtYWxsZXN0UmF0aW8gPSBNYXRoLm1pbiguLi5wZXJjZW50U2l6ZXMpICogMC4wMVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aHM6IGFsbFNpemVzLmZpbHRlcigocykgPT4gcyA+PSBjb25maWdEZXZpY2VTaXplc1swXSAqIHNtYWxsZXN0UmF0aW8pLFxuICAgICAgICBraW5kOiAndycsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBhbGwgdGhlIFwicHhcIiBzaXplcyB1c2VkIGluIHRoZSBzaXplcyBwcm9wXG4gICAgY29uc3QgcHhXaWR0aFJlID0gLyhefFxccykoMT9cXGQrKXB4L2dcbiAgICBjb25zdCBweFNpemVzOiBudW1iZXJbXSA9IFtdXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgZm9yIChsZXQgbWF0Y2g6IHN0cmluZ1tdIHwgbnVsbDsgKG1hdGNoID0gcHhXaWR0aFJlLmV4ZWMoc2l6ZXMpKTsgbWF0Y2gpIHtcbiAgICAgIHB4U2l6ZXMucHVzaChwYXJzZUludChtYXRjaD8uWzJdLCAxMCkpXG4gICAgfVxuXG4gICAgaWYgKHB4U2l6ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aHM6IHB4U2l6ZXMubWFwKChweFNpemUpID0+IHtcbiAgICAgICAgICBjb25zdCBzY2FsZWQgPSBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgKiBzY2FsZSA+IHB4U2l6ZSk/LlswXVxuICAgICAgICAgIGNvbnN0IGRwcjIgPSBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgPiBweFNpemUpPy5bMF1cbiAgICAgICAgICByZXR1cm4gc2NhbGUgPiAxID8gTWF0aC5tYXgoc2NhbGVkLCBkcHIyKSA6IE1hdGgubWluKHNjYWxlZCwgZHByMilcbiAgICAgICAgfSksXG4gICAgICAgIGtpbmQ6ICd3JyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB3aWR0aHM6IGFsbFNpemVzLCBraW5kOiAndycgfVxuICB9XG4gIGlmICh0eXBlb2Ygd2lkdGggIT09ICdudW1iZXInIHx8IGxheW91dCA9PT0gJ2ZpbGwnKSB7XG4gICAgcmV0dXJuIHsgd2lkdGhzOiBjb25maWdEZXZpY2VTaXplcywga2luZDogJ3cnIH1cbiAgfVxuXG4gIGNvbnN0IHdpZHRocyA9IFtcbiAgICAuLi5uZXcgU2V0KFxuICAgICAgLy8gPiBUaGlzIG1lYW5zIHRoYXQgbW9zdCBPTEVEIHNjcmVlbnMgdGhhdCBzYXkgdGhleSBhcmUgM3ggcmVzb2x1dGlvbixcbiAgICAgIC8vID4gYXJlIGFjdHVhbGx5IDN4IGluIHRoZSBncmVlbiBjb2xvciwgYnV0IG9ubHkgMS41eCBpbiB0aGUgcmVkIGFuZFxuICAgICAgLy8gPiBibHVlIGNvbG9ycy4gU2hvd2luZyBhIDN4IHJlc29sdXRpb24gaW1hZ2UgaW4gdGhlIGFwcCB2cyBhIDJ4XG4gICAgICAvLyA+IHJlc29sdXRpb24gaW1hZ2Ugd2lsbCBiZSB2aXN1YWxseSB0aGUgc2FtZSwgdGhvdWdoIHRoZSAzeCBpbWFnZVxuICAgICAgLy8gPiB0YWtlcyBzaWduaWZpY2FudGx5IG1vcmUgZGF0YS4gRXZlbiB0cnVlIDN4IHJlc29sdXRpb24gc2NyZWVucyBhcmVcbiAgICAgIC8vID4gd2FzdGVmdWwgYXMgdGhlIGh1bWFuIGV5ZSBjYW5ub3Qgc2VlIHRoYXQgbGV2ZWwgb2YgZGV0YWlsIHdpdGhvdXRcbiAgICAgIC8vID4gc29tZXRoaW5nIGxpa2UgYSBtYWduaWZ5aW5nIGdsYXNzLlxuICAgICAgLy8gaHR0cHM6Ly9ibG9nLnR3aXR0ZXIuY29tL2VuZ2luZWVyaW5nL2VuX3VzL3RvcGljcy9pbmZyYXN0cnVjdHVyZS8yMDE5L2NhcHBpbmctaW1hZ2UtZmlkZWxpdHktb24tdWx0cmEtaGlnaC1yZXNvbHV0aW9uLWRldmljZXMuaHRtbFxuICAgICAgW3dpZHRoLCB3aWR0aCAqIDIgLyogLCB3aWR0aCAqIDMqL10ubWFwKFxuICAgICAgICAodykgPT4gYWxsU2l6ZXMuZmluZCgocCkgPT4gcCA+PSB3KSB8fCBhbGxTaXplc1thbGxTaXplcy5sZW5ndGggLSAxXSxcbiAgICAgICksXG4gICAgKSxcbiAgXVxuICByZXR1cm4geyB3aWR0aHMsIGtpbmQ6ICd4JyB9XG59XG5cbnR5cGUgR2VuSW1nQXR0cnNEYXRhID0ge1xuICBzcmM6IHN0cmluZ1xuICBsYXlvdXQ6IExheW91dFZhbHVlXG4gIGxvYWRlcjogSW1hZ2VMb2FkZXJcbiAgd2lkdGg/OiBudW1iZXJcbiAgcXVhbGl0eT86IG51bWJlclxuICBzaXplcz86IHN0cmluZ1xuICBzY2FsZTogbnVtYmVyXG59XG5cbnR5cGUgR2VuSW1nQXR0cnNSZXN1bHQgPSB7XG4gIHNyY1NldDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIHNpemVzOiBzdHJpbmcgfCB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gIHNyYyxcbiAgbGF5b3V0LFxuICB3aWR0aCxcbiAgcXVhbGl0eSA9IDQ0LFxuICBzaXplcyxcbiAgbG9hZGVyLFxuICBzY2FsZSxcbn06IEdlbkltZ0F0dHJzRGF0YSk6IEdlbkltZ0F0dHJzUmVzdWx0IHtcbiAgY29uc3QgeyB3aWR0aHMsIGtpbmQgfSA9IGdldFdpZHRocyh3aWR0aCwgbGF5b3V0LCBzaXplcywgc2NhbGUpXG5cbiAgcmV0dXJuIHtcbiAgICBzaXplczogIXNpemVzICYmIGtpbmQgPT09ICd3JyA/IGA1MHZ3YCA6IHNpemVzLFxuICAgIHNyY1NldDogd2lkdGhzXG4gICAgICAubWFwKFxuICAgICAgICAodywgaSkgPT5cbiAgICAgICAgICBgJHtsb2FkZXIoeyBzcmMsIHF1YWxpdHksIHdpZHRoOiB3IH0pfSAke1xuICAgICAgICAgICAga2luZCA9PT0gJ3cnID8gTWF0aC5yb3VuZCh3ICogc2NhbGUpIDogaSArIDFcbiAgICAgICAgICB9JHtraW5kfWAsXG4gICAgICApXG4gICAgICAuam9pbignLCAnKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50KHg6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodHlwZW9mIHggPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHhcbiAgfVxuICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KHgsIDEwKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEltYWdlTG9hZGVyKGxvYWRlclByb3BzOiBJbWFnZUxvYWRlclByb3BzKSB7XG4gIGNvbnN0IGxvYWQgPSBsb2FkZXJzLmdldChjb25maWdMb2FkZXIpXG4gIGlmIChsb2FkKSB7XG4gICAgcmV0dXJuIGxvYWQoeyByb290OiBjb25maWdQYXRoLCAuLi5sb2FkZXJQcm9wcyB9KVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBVbmtub3duIFwibG9hZGVyXCIgZm91bmQgaW4gXCJuZXh0LmNvbmZpZy5qc1wiLiBFeHBlY3RlZDogJHtWQUxJRF9MT0FERVJTLmpvaW4oXG4gICAgICAnLCAnLFxuICAgICl9LiBSZWNlaXZlZDogJHtjb25maWdMb2FkZXJ9YCxcbiAgKVxufVxuXG4vLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzM5Nzc3ODMzLzI2NjUzNSBmb3Igd2h5IHdlIHVzZSB0aGlzIHJlZlxuLy8gaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBpbWcncyBvbkxvYWQgYXR0cmlidXRlLlxuZnVuY3Rpb24gcmVtb3ZlUGxhY2Vob2xkZXIoaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCwgcGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyVmFsdWUpIHtcbiAgaWYgKHBsYWNlaG9sZGVyID09PSAnYmx1cicgJiYgaW1nKSB7XG4gICAgY29uc3QgaGFuZGxlTG9hZCA9ICgpID0+IHtcbiAgICAgIGlmICghaW1nLnNyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICAgIGNvbnN0IHAgPSAnZGVjb2RlJyBpbiBpbWcgPyBpbWcuZGVjb2RlKCkgOiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHAuY2F0Y2goKCkgPT4ge30pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGltZy5zdHlsZS5maWx0ZXIgPSAnbm9uZSdcbiAgICAgICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZFNpemUgPSAnbm9uZSdcbiAgICAgICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ25vbmUnXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbWcuY29tcGxldGUpIHtcbiAgICAgIC8vIElmIHRoZSByZWFsIGltYWdlIGZhaWxzIHRvIGxvYWQsIHRoaXMgd2lsbCBzdGlsbCByZW1vdmUgdGhlIHBsYWNlaG9sZGVyLlxuICAgICAgLy8gVGhpcyBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvciBmb3Igbm93LCBhbmQgd2lsbCBiZSByZXZpc2l0ZWQgd2hlbiBlcnJvclxuICAgICAgLy8gaGFuZGxpbmcgaXMgd29ya2VkIG9uIGZvciB0aGUgaW1hZ2UgY29tcG9uZW50IGl0c2VsZi5cbiAgICAgIGhhbmRsZUxvYWQoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpbWcub25sb2FkID0gaGFuZGxlTG9hZFxuICAgIH1cbiAgfVxufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYW4gaW1hZ2UgaXMgY3VycmVudGx5IGluIHRoZSB2aWV3cG9ydCAqL1xuZnVuY3Rpb24gaXNJblZpZXdwb3J0KGVsZW06IEhUTUxJbWFnZUVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQgfSA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIGJvdHRvbSA+PSAwICYmIHJpZ2h0ID49IDAgJiYgdG9wIDw9IHdpbmRvdy5pbm5lckhlaWdodCAmJiBsZWZ0IDw9IHdpbmRvdy5pbm5lcldpZHRoXG59XG5cbnR5cGUgU2l6ZXNTdHJpbmcgPSBgJHtudW1iZXJ9dndgIHwgYCR7bnVtYmVyfXB4YFxudHlwZSBTaXplc1JlY29yZCA9IFJlY29yZDxudW1iZXIsIFNpemVzU3RyaW5nPlxudHlwZSBTaXplcyA9IFNpemVzU3RyaW5nIHwgU2l6ZXNSZWNvcmQgfCB1bmRlZmluZWRcblxuZnVuY3Rpb24gaXNTaXplc1JlY29yZChzaXplcz86IFNpemVzKTogc2l6ZXMgaXMgU2l6ZXNSZWNvcmQge1xuICByZXR1cm4gdHlwZW9mIHNpemVzID09PSAnb2JqZWN0J1xufVxuXG5mdW5jdGlvbiBzaXplc0VudHJpZXMoc2l6ZXM6IFNpemVzKTogKHJlYWRvbmx5IFtudW1iZXIsIFNpemVzU3RyaW5nIHwgdW5kZWZpbmVkXSlbXSB7XG4gIGlmIChpc1NpemVzUmVjb3JkKHNpemVzKSkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhzaXplcylcbiAgICAgIC5tYXAoKFticmVha3BvaW50LCBzaXplXSkgPT4gW051bWJlcihicmVha3BvaW50KSwgc2l6ZV0gYXMgY29uc3QpXG4gICAgICAuc29ydCgoW3NpemVBXSwgW3NpemVCXSkgPT4gc2l6ZUIgLSBzaXplQSlcbiAgfVxuICByZXR1cm4gW1swLCBzaXplc10gYXMgY29uc3RdXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU2l6ZXNTdHJpbmcoc2l6ZXM/OiBTaXplcykge1xuICByZXR1cm4gc2l6ZXNFbnRyaWVzKHNpemVzKVxuICAgIC5tYXAoKFticmVha3BvaW50LCBzaXplXSkgPT4ge1xuICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IDApIHJldHVybiBzaXplXG4gICAgICByZXR1cm4gYChtaW4td2lkdGg6ICR7YnJlYWtwb2ludH1weCkgJHtzaXplfWBcbiAgICB9KVxuICAgIC5qb2luKCcsICcpXG59XG5cbi8qKiBTaW5jZSB3ZSdyZSBoYW5kbGluZyBzdHVmZiBvdXJzZWx2ZXMgd2Ugb21pdCBzb21lIHN0dWZmICovXG50eXBlIEludHJpc2luY0ltYWdlID0gT21pdDxcbiAgSlNYLkludHJpbnNpY0VsZW1lbnRzWydpbWcnXSxcbiAgJ3NyYycgfCAnc3JjU2V0JyB8ICdyZWYnIHwgJ3dpZHRoJyB8ICdoZWlnaHQnIHwgJ2xvYWRpbmcnIHwgJ3NpemVzJyB8ICd3aWR0aCcgfCAnaGVpZ2h0J1xuPiAmIHsgbG9hZGluZz86IExvYWRpbmdWYWx1ZSB9XG5cbmV4cG9ydCB0eXBlIEJhc2VJbWFnZVByb3BzID0gSW50cmlzaW5jSW1hZ2UgJiB7XG4gIGxvYWRlcj86IEltYWdlTG9hZGVyXG4gIHF1YWxpdHk/OiBudW1iZXIgfCBzdHJpbmdcbiAgdW5vcHRpbWl6ZWQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFBvc3NpYmxlIHZhbHVlczpcbiAgICpcbiAgICogLSBgZml4ZWRgOiB0aGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIG5vdCBjaGFuZ2UgYXMgdGhlIHZpZXdwb3J0IGNoYW5nZXMgKG5vIHJlc3BvbnNpdmVuZXNzKVxuICAgKiAgIHNpbWlsYXIgdG8gdGhlIG5hdGl2ZSBpbWcgZWxlbWVudC5cbiAgICogLSBgaW50cmluc2ljYDogdGhlIGltYWdlIHdpbGwgc2NhbGUgdGhlIGRpbWVuc2lvbnMgZG93biBmb3Igc21hbGxlciB2aWV3cG9ydHMgYnV0IG1haW50YWluIHRoZVxuICAgKiAgIG9yaWdpbmFsIGRpbWVuc2lvbnMgKHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuKSBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAgICogLSBgcmVzcG9uc2l2ZWA6IHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGFuZCBzY2FsZSB1cCBmb3JcbiAgICogICBsYXJnZXIgdmlld3BvcnRzLlxuICAgKi9cbiAgbGF5b3V0PzogTGF5b3V0VmFsdWVcblxuICAvKiogU2l6ZSB0aGUgaW1hZ2UgaXMgcmVuZGVyZWQgb24gbW9iaWxlICovXG4gIHNpemVzPzogU2l6ZXNTdHJpbmcgfCBTaXplc1JlY29yZFxufVxuXG4vKipcbiAqIFdoZW4gYGZpeGVkYCwgdGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBub3QgY2hhbmdlIGFzIHRoZSB2aWV3cG9ydCBjaGFuZ2VzIChubyByZXNwb25zaXZlbmVzcylcbiAqIHNpbWlsYXIgdG8gdGhlIG5hdGl2ZSBpbWcgZWxlbWVudC5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gLz5cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRvIHJlbmRlciB0aGUgaW1hZ2UgYXQgdGhlIGdpdmVuIHdpZHRoL2hlaWdodCBhbmQgbm90IGNoYW5nZSBiYXNlZCBvbiBicm93c2VyIHNpemUuXG4gKi9cbnR5cGUgTGF5b3V0VHlwZU5hdGl2ZSA9IHtcbiAgbGF5b3V0PzogJ2ZpeGVkJ1xuICAvKipcbiAgICogVGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IHZhbHVlcyBhcmUgdGhlIHZhbHVlcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYXNwZWN0IHJhdGlvIG9tIHRoZSBpbWFnZVxuICAgKiBhbmQgcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgYnJvd3Nlci5cbiAgICpcbiAgICogV2l0aCBsYXlvdXQ9Zml4ZWQgYW5kIG5vIHN0eWxpbmcgdGhlIGltYWdlIGlzIHJlbmRlcmVkIGF0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuLlxuICAgKi9cbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxufVxuXG4vKipcbiAqIFdoZW4gYGludHJpbnNpY2AsIHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGJ1dCBtYWludGFpbiB0aGVcbiAqIG9yaWdpbmFsIGRpbWVuc2lvbnMgKHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuKSBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycgbWF4V2lkdGg6IGAke3dpZHRofXB4YCB9fVxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IHdhbnQgdG8gcmVuZGVyIGFuIGltYWdlIGJ1dCBkb24ndCBzY2FsZSBpdCB1cC5cbiAqL1xudHlwZSBMYXlvdXRUeXBlSW50cmluc2ljID0ge1xuICBsYXlvdXQ/OiAnaW50cmluc2ljJ1xuXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcblxuICBzdHlsZT86IE9taXQ8SW1nRWxlbWVudFN0eWxlLCAnd2lkdGgnIHwgJ2hlaWdodCcgfCAnbWF4V2lkdGgnPlxufVxuXG4vKipcbiAqIFdoZW4gYHJlc3BvbnNpdmVgLCB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBhbmQgc2NhbGUgdXBcbiAqIGZvciBsYXJnZXIgdmlld3BvcnRzLlxuICpcbiAqIGBgYHRzeFxuICogPGltZyBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyBtYXhXaWR0aDogJHt3aWR0aH0gfX1cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRoZSBpbWFnZSB0byBmaWxsIGl0J3MgcGFyZW50IGNvbnRhaW5lciBpbiB3aWR0aFxuICovXG50eXBlIExheW91dFR5cGVSZXNwb25zaXZlID0ge1xuICBsYXlvdXQ/OiAncmVzcG9uc2l2ZSdcblxuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG5cbiAgc3R5bGU/OiBPbWl0PEltZ0VsZW1lbnRTdHlsZSwgJ3dpZHRoJyB8ICdoZWlnaHQnPlxufVxuXG4vKipcbiAqIFdoZW4gYGZpbGxgLCB0aGUgaW1hZ2Ugd2lsbCBzdHJldGNoIGJvdGggd2lkdGggYW5kIGhlaWdodCB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcGFyZW50XG4gKiBlbGVtZW50LCBwYWlyZWQgd2l0aCB0aGUgb2JqZWN0Rml0IHByb3BlcnR5LlxuICpcbiAqIFNpbmNlIHRoZSB3aWR0aC9oZWlnaHQgaXNuJ3QgcmVxdWlyZWQgdG8gcmVuZGVyIHRoZSBwYWdlIHdlIGNhbiBvbWl0IGl0LlxuICpcbiAqIGBgYHRzeFxuICogPGltZyB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9fVxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IGhhdmUgYSBwcmVkZWZpbmVkIGFyZWEgc2V0IHRvIHJlbmRlciBhbiBpbWFnZVxuICovXG50eXBlIExheW91dFR5cGVGaWxsID0ge1xuICBsYXlvdXQ/OiAnZmlsbCdcblxuICB3aWR0aD86IG5ldmVyXG4gIGhlaWdodD86IG5ldmVyXG5cbiAgLy8gb2JqZWN0Rml0OiBJbWdFbGVtZW50U3R5bGVbJ29iamVjdEZpdCddXG4gIHN0eWxlPzogT21pdDxJbWdFbGVtZW50U3R5bGUsICd3aWR0aCcgfCAnaGVpZ2h0Jz5cbn1cblxuZXhwb3J0IHR5cGUgU3RyaW5nSW1hZ2VQcm9wcyA9IHtcbiAgc3JjOiBzdHJpbmdcbn0gJiAoTGF5b3V0VHlwZUZpbGwgfCBMYXlvdXRUeXBlUmVzcG9uc2l2ZSB8IExheW91dFR5cGVOYXRpdmUgfCBMYXlvdXRUeXBlSW50cmluc2ljKSAmXG4gIChcbiAgICB8IHsgcGxhY2Vob2xkZXI/OiBFeGNsdWRlPFBsYWNlaG9sZGVyVmFsdWUsICdibHVyJz47IGJsdXJEYXRhVVJMPzogbmV2ZXIgfVxuICAgIHwgeyBwbGFjZWhvbGRlcjogJ2JsdXInOyBibHVyRGF0YVVSTDogc3RyaW5nIH1cbiAgKVxuXG5leHBvcnQgdHlwZSBPYmplY3RJbWFnZVByb3BzID0ge1xuICBzcmM6IFN0YXRpY0ltcG9ydFxuICB3aWR0aD86IG51bWJlclxuICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbGF5b3V0PzogTGF5b3V0VmFsdWVcbiAgcGxhY2Vob2xkZXI/OiBQbGFjZWhvbGRlclZhbHVlXG4gIGJsdXJEYXRhVVJMPzogbmV2ZXJcbn1cblxuZXhwb3J0IHR5cGUgSW1hZ2VQcm9wcyA9IEJhc2VJbWFnZVByb3BzICYgKFN0cmluZ0ltYWdlUHJvcHMgfCBPYmplY3RJbWFnZVByb3BzKVxuXG5leHBvcnQgdHlwZSBTdHJpbmdJbWFnZSA9IEJhc2VJbWFnZVByb3BzICYgU3RyaW5nSW1hZ2VQcm9wc1xuZXhwb3J0IHR5cGUgT2JqZWN0SW1hZ2UgPSBCYXNlSW1hZ2VQcm9wcyAmIE9iamVjdEltYWdlUHJvcHNcblxuY29uc3QgSW1hZ2UgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbWFnZUVsZW1lbnQsIEltYWdlUHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgc3JjLFxuICAgICAgc2l6ZXM6IHNpemVzSW5jb21taW5nLFxuICAgICAgdW5vcHRpbWl6ZWQgPSBmYWxzZSxcbiAgICAgIGxvYWRpbmcsXG4gICAgICBsYXlvdXQgPSAncmVzcG9uc2l2ZScsXG4gICAgICBxdWFsaXR5LFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBzdHlsZSxcbiAgICAgIGxvYWRlciA9IGRlZmF1bHRJbWFnZUxvYWRlcixcbiAgICAgIHBsYWNlaG9sZGVyID0gJ2VtcHR5JyxcbiAgICAgIGJsdXJEYXRhVVJMLFxuICAgICAgLi4uaW1nUHJvcHNcbiAgICB9LFxuICAgIGZvcndhcmRlZFJlZixcbiAgKSA9PiB7XG4gICAgY29uc3QgcmVmID0gdXNlRm9yd2FyZGVkUmVmKGZvcndhcmRlZFJlZilcblxuICAgIGNvbnN0IHNpemVzT3JpZyA9XG4gICAgICBsYXlvdXQgPT09ICdmaXhlZCcgJiYgd2lkdGggJiYgIXNpemVzSW5jb21taW5nXG4gICAgICAgID8gKGAke3dpZHRofXB4YCBhcyBTaXplc1N0cmluZylcbiAgICAgICAgOiBzaXplc0luY29tbWluZ1xuXG4gICAgY29uc3Qgc2l6ZXMgPSBnZW5lcmF0ZVNpemVzU3RyaW5nKHNpemVzT3JpZykgPz8gJzUwdncnXG5cbiAgICAvLyBJZiBubyByZXNwb25zaXZlIHNpemVzIGFyZSBnaXZlbiwgd2UncmUgZGVmYXVsdGluZyB0byA1MHZ3IG9uIG1vYmlsZVxuICAgIC8vIGNvbnN0IFtzaXplcywgc2V0U2l6ZXNdID0gdXNlU3RhdGUodG9TaXplc1N0cmluZyhzaXplc09yaWcpID8/IGA1MHZ3YClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykgcmV0dXJuICgpID0+IHt9XG4gICAgICBpZiAoIXJlZi5jdXJyZW50KSByZXR1cm4gKCkgPT4ge31cblxuICAgICAgLy8gV2FybiB0aGUgdXNlciB3aGVuIGhlIGlzbid0IHByb3ZpZGluZyBzaXplcyBhbmQgaG93IHRvIHByb2NlZWRcbiAgICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKChbZW50cnldKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnR2dyA9IGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoXG5cbiAgICAgICAgbGV0IHJhdGlvOiBudW1iZXJcblxuICAgICAgICBsZXQgbXNnID0gJydcbiAgICAgICAgY29uc3QgW2JyZWFrcG9pbnQsIHNpemVdID0gc2l6ZXNFbnRyaWVzKHNpemVzT3JpZykuZmluZCgoW3NdKSA9PlxuICAgICAgICAgIHMgPT09IDAgPyB0cnVlIDogd2luZG93Lm1hdGNoTWVkaWEoYChtaW4td2lkdGg6ICR7c30pYCksXG4gICAgICAgICkgPz8gWzAsICcxMDB2dyddXG4gICAgICAgIGlmIChzaXplKSB7XG4gICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgd2lkdGg6ICR7c2l6ZX1gKVxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpXG4gICAgICAgICAgY29uc3QgbWVhc3VyZWRXaWR0aCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXG4gICAgICAgICAgLy8gZWwucmVtb3ZlKClcbiAgICAgICAgICByYXRpbyA9IG1lYXN1cmVkV2lkdGggKiogMiAvIGN1cnJlbnR2dyAqKiAyXG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgXCJzaXplc1wiIHByb3BlcnR5IHNldCwgYnV0IHNpemUgJ21pbi13aWR0aCgke2JyZWFrcG9pbnR9cHgpICR7c2l6ZX0nIGlzIGluY29ycmVjdC5gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgbm8gXCJzaXplc1wiIHByb3BlcnR5IHNldC5gXG4gICAgICAgICAgcmF0aW8gPSAod2luZG93LmlubmVyV2lkdGggKiAwLjUpICoqIDIgLyBjdXJyZW50dncgKiogMlxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm91bmQgPSAobnI6IG51bWJlcikgPT4gTWF0aC5yb3VuZChuciAqIDEwMCkgLyAxMDBcbiAgICAgICAgaWYgKHJhdGlvID4gMS4yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogJHttc2d9IEN1cnJlbnRseSBkb3dubG9hZGluZyBhbiBpbWFnZSB0aGF0IGhhcyAke3JvdW5kKFxuICAgICAgICAgICAgICByYXRpbyxcbiAgICAgICAgICAgICl9eCB0b28gbWFueSBwaXhlbHNgLFxuICAgICAgICAgICAgZW50cnkudGFyZ2V0LFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmIChyYXRpbyA8IDAuOCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06ICR7bXNnfSBDdXJyZW50bHkgZG93bmxvYWRpbmcgYW4gaW1hZ2UgdGhhdCBoYXMgJHtyb3VuZChcbiAgICAgICAgICAgICAgMSAvIHJhdGlvLFxuICAgICAgICAgICAgKX14IHRvbyBmZXcgcGl4ZWxzYCxcbiAgICAgICAgICAgIGVudHJ5LnRhcmdldCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByby5vYnNlcnZlKHJlZi5jdXJyZW50KVxuXG4gICAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gICAgfSwgW2xheW91dCwgcmVmLCBzaXplc09yaWcsIHNyYywgd2lkdGhdKVxuXG4gICAgbGV0IHN0YXRpY1NyYyA9ICcnXG4gICAgaWYgKGlzU3RhdGljSW1wb3J0KHNyYykpIHtcbiAgICAgIGNvbnN0IHN0YXRpY0ltYWdlRGF0YSA9IGlzU3RhdGljUmVxdWlyZShzcmMpID8gc3JjLmRlZmF1bHQgOiBzcmNcbiAgICAgIGlmICghc3RhdGljSW1hZ2VEYXRhLnNyYykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogQW4gb2JqZWN0IHNob3VsZCBvbmx5IGJlIHBhc3NlZCB0byB0aGUgaW1hZ2UgY29tcG9uZW50IHNyYyBwYXJhbWV0ZXIgaWYgaXQgY29tZXMgZnJvbSBhIHN0YXRpYyBpbWFnZSBpbXBvcnQuIEl0IG11c3QgaW5jbHVkZSBzcmMuIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBzdGF0aWNJbWFnZURhdGEsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBibHVyRGF0YVVSTCA9IGJsdXJEYXRhVVJMIHx8IHN0YXRpY0ltYWdlRGF0YS5ibHVyRGF0YVVSTFxuICAgICAgc3RhdGljU3JjID0gc3RhdGljSW1hZ2VEYXRhLnNyY1xuICAgICAgaWYgKCFsYXlvdXQgfHwgbGF5b3V0ICE9PSAnZmlsbCcpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IHx8IHN0YXRpY0ltYWdlRGF0YS5oZWlnaHRcbiAgICAgICAgd2lkdGggPSB3aWR0aCB8fCBzdGF0aWNJbWFnZURhdGEud2lkdGhcbiAgICAgICAgaWYgKCFzdGF0aWNJbWFnZURhdGEuaGVpZ2h0IHx8ICFzdGF0aWNJbWFnZURhdGEud2lkdGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBBbiBvYmplY3Qgc2hvdWxkIG9ubHkgYmUgcGFzc2VkIHRvIHRoZSBpbWFnZSBjb21wb25lbnQgc3JjIHBhcmFtZXRlciBpZiBpdCBjb21lcyBmcm9tIGEgc3RhdGljIGltYWdlIGltcG9ydC4gSXQgbXVzdCBpbmNsdWRlIGhlaWdodCBhbmQgd2lkdGguIFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIHN0YXRpY0ltYWdlRGF0YSxcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgc3JjID0gdHlwZW9mIHNyYyA9PT0gJ3N0cmluZycgPyBzcmMgOiBzdGF0aWNTcmNcblxuICAgIGNvbnN0IHdpZHRoSW50ID0gZ2V0SW50KHdpZHRoKVxuICAgIGNvbnN0IGhlaWdodEludCA9IGdldEludChoZWlnaHQpXG4gICAgY29uc3QgcXVhbGl0eUludCA9IGdldEludChxdWFsaXR5KVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghc3JjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSBpcyBtaXNzaW5nIHJlcXVpcmVkIFwic3JjXCIgcHJvcGVydHkuIE1ha2Ugc3VyZSB5b3UgcGFzcyBcInNyY1wiIGluIHByb3BzIHRvIHRoZSBcXGBAcmVhY2hkaWdpdGFsL2ltYWdlXFxgIGNvbXBvbmVudC4gUmVjZWl2ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB7IHdpZHRoLCBoZWlnaHQsIHF1YWxpdHkgfSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmICghVkFMSURfTEFZT1VUX1ZBTFVFUy5pbmNsdWRlcyhsYXlvdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBpbnZhbGlkIFwibGF5b3V0XCIgcHJvcGVydHkuIFByb3ZpZGVkIFwiJHtsYXlvdXR9XCIgc2hvdWxkIGJlIG9uZSBvZiAke1ZBTElEX0xBWU9VVF9WQUxVRVMubWFwKFxuICAgICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgICkuam9pbignLCcpfS5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICh0eXBlb2Ygd2lkdGhJbnQgIT09ICd1bmRlZmluZWQnICYmIE51bWJlci5pc05hTih3aWR0aEludCkpIHx8XG4gICAgICAgICh0eXBlb2YgaGVpZ2h0SW50ICE9PSAndW5kZWZpbmVkJyAmJiBOdW1iZXIuaXNOYU4oaGVpZ2h0SW50KSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgaW52YWxpZCBcIndpZHRoXCIgb3IgXCJoZWlnaHRcIiBwcm9wZXJ0eS4gVGhlc2Ugc2hvdWxkIGJlIG51bWVyaWMgdmFsdWVzLmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmICghVkFMSURfTE9BRElOR19WQUxVRVMuaW5jbHVkZXMobG9hZGluZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaGFzIGludmFsaWQgXCJsb2FkaW5nXCIgcHJvcGVydHkuIFByb3ZpZGVkIFwiJHtsb2FkaW5nfVwiIHNob3VsZCBiZSBvbmUgb2YgJHtWQUxJRF9MT0FESU5HX1ZBTFVFUy5tYXAoXG4gICAgICAgICAgICBTdHJpbmcsXG4gICAgICAgICAgKS5qb2luKCcsJyl9LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChwbGFjZWhvbGRlciA9PT0gJ2JsdXInKSB7XG4gICAgICAgIGlmIChsYXlvdXQgIT09ICdmaWxsJyAmJiAod2lkdGhJbnQgfHwgMCkgKiAoaGVpZ2h0SW50IHx8IDApIDwgMTYwMCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaXMgc21hbGxlciB0aGFuIDQweDQwLiBDb25zaWRlciByZW1vdmluZyB0aGUgXCJwbGFjZWhvbGRlcj0nYmx1cidcIiBwcm9wZXJ0eSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLmAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGlmICghYmx1ckRhdGFVUkwpIHtcbiAgICAgICAgICBjb25zdCBWQUxJRF9CTFVSX0VYVCA9IFsnanBlZycsICdwbmcnLCAnd2VicCddIC8vIHNob3VsZCBtYXRjaCBuZXh0LWltYWdlLWxvYWRlclxuXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgXCJwbGFjZWhvbGRlcj0nYmx1cidcIiBwcm9wZXJ0eSBidXQgaXMgbWlzc2luZyB0aGUgXCJibHVyRGF0YVVSTFwiIHByb3BlcnR5LlxuICAgICAgICAgIFBvc3NpYmxlIHNvbHV0aW9uczpcbiAgICAgICAgICAgIC0gQWRkIGEgXCJibHVyRGF0YVVSTFwiIHByb3BlcnR5LCB0aGUgY29udGVudHMgc2hvdWxkIGJlIGEgc21hbGwgRGF0YSBVUkwgdG8gcmVwcmVzZW50IHRoZSBpbWFnZVxuICAgICAgICAgICAgLSBDaGFuZ2UgdGhlIFwic3JjXCIgcHJvcGVydHkgdG8gYSBzdGF0aWMgaW1wb3J0IHdpdGggb25lIG9mIHRoZSBzdXBwb3J0ZWQgZmlsZSB0eXBlczogJHtWQUxJRF9CTFVSX0VYVC5qb2luKFxuICAgICAgICAgICAgICAnLCcsXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgLSBSZW1vdmUgdGhlIFwicGxhY2Vob2xkZXJcIiBwcm9wZXJ0eSwgZWZmZWN0aXZlbHkgbm8gYmx1ciBlZmZlY3RcbiAgICAgICAgICBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3BsYWNlaG9sZGVyLWJsdXItZGF0YS11cmxgLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygd2lkdGhJbnQgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBoZWlnaHRJbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAobGF5b3V0ID09PSAnZmlsbCcpIHtcbiAgICAgICAgLy8gaGFuZGxlIGZpbGxcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyA8SW1hZ2Ugc3JjPVwiaS5wbmdcIiAvPlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBtdXN0IHVzZSBcIndpZHRoXCIgYW5kIFwiaGVpZ2h0XCIgcHJvcGVydGllcyBvciBcImxheW91dD0nZmlsbCdcIiBwcm9wZXJ0eS5gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9hZGluZyA/Pz0gJ2xhenknXG4gICAgaWYgKHNyYyAmJiBzcmMuc3RhcnRzV2l0aCgnZGF0YTonKSkge1xuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9EYXRhX1VSSXNcbiAgICAgIHVub3B0aW1pemVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMzeCA9IGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICAgICAgc3JjLFxuICAgICAgbGF5b3V0OiBsYXlvdXQgYXMgTGF5b3V0VmFsdWUsXG4gICAgICBsb2FkZXIsXG4gICAgICBxdWFsaXR5OiBxdWFsaXR5SW50LFxuICAgICAgc2l6ZXMsXG4gICAgICB3aWR0aDogd2lkdGhJbnQsXG4gICAgICBzY2FsZTogMS41LFxuICAgIH0pXG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzMnggPSBnZW5lcmF0ZVNvdXJjZUF0dHJzKHtcbiAgICAgIHNyYyxcbiAgICAgIGxheW91dDogbGF5b3V0IGFzIExheW91dFZhbHVlLFxuICAgICAgbG9hZGVyLFxuICAgICAgcXVhbGl0eTogcXVhbGl0eUludCxcbiAgICAgIHNpemVzLFxuICAgICAgd2lkdGg6IHdpZHRoSW50LFxuICAgICAgc2NhbGU6IDEsXG4gICAgfSlcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMxeCA9IGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICAgICAgc3JjLFxuICAgICAgbGF5b3V0OiBsYXlvdXQgYXMgTGF5b3V0VmFsdWUsXG4gICAgICBsb2FkZXIsXG4gICAgICBxdWFsaXR5OiBxdWFsaXR5SW50LFxuICAgICAgc2l6ZXMsXG4gICAgICB3aWR0aDogd2lkdGhJbnQsXG4gICAgICBzY2FsZTogMC41LFxuICAgIH0pXG5cbiAgICBpZiAobGF5b3V0ICE9PSAnZml4ZWQnICYmICFzdHlsZSkgc3R5bGUgPSB7fVxuICAgIGlmIChsYXlvdXQgPT09ICdyZXNwb25zaXZlJykgc3R5bGUgPSB7IC4uLnN0eWxlLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyB9XG4gICAgaWYgKGxheW91dCA9PT0gJ2ludHJpbnNpYycpIHN0eWxlID0geyAuLi5zdHlsZSwgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycsIG1heFdpZHRoOiB3aWR0aCB9XG4gICAgaWYgKGxheW91dCA9PT0gJ2ZpbGwnKSBzdHlsZSA9IHsgLi4uc3R5bGUsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dW5vcHRpbWl6ZWQgPyAoXG4gICAgICAgICAgPGltZyByZWY9e3JlZn0gey4uLmltZ1Byb3BzfSBzcmM9e3NyY30gd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gc3R5bGU9e3N0eWxlfSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxwaWN0dXJlPlxuICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0nKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMi41KScgey4uLmF0dHJpYnV0ZXMzeH0gLz5cbiAgICAgICAgICAgIDxzb3VyY2UgbWVkaWE9Jygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSknIHsuLi5hdHRyaWJ1dGVzMnh9IC8+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgICB7Li4uaW1nUHJvcHN9XG4gICAgICAgICAgICAgIHsuLi5hdHRyaWJ1dGVzMXh9XG4gICAgICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICApfVxuICAgICAgICB7bG9hZGluZyA9PT0gJ2VhZ2VyJyAmJiAoXG4gICAgICAgICAgPEhlYWQ+XG4gICAgICAgICAgICA8bGlua1xuICAgICAgICAgICAgICBrZXk9e2BfX25pbWctMngtJHthdHRyaWJ1dGVzMXguc3JjU2V0fSR7YXR0cmlidXRlczF4LnNpemVzfWB9XG4gICAgICAgICAgICAgIHJlbD0ncHJlbG9hZCdcbiAgICAgICAgICAgICAgYXM9J2ltYWdlJ1xuICAgICAgICAgICAgICBtZWRpYT0nKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMi41KSdcbiAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBpbWFnZXNyY3NldCBpcyBub3QgeWV0IGluIHRoZSBsaW5rIGVsZW1lbnQgdHlwZVxuICAgICAgICAgICAgICBpbWFnZXNyY3NldD17YXR0cmlidXRlczF4LnNyY1NldH1cbiAgICAgICAgICAgICAgaW1hZ2VzaXplcz17c2l6ZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSGVhZD5cbiAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfSxcbilcbkltYWdlLmRpc3BsYXlOYW1lID0gJ05leHRQaWN0dXJlJ1xuXG5leHBvcnQgeyBJbWFnZSB9XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../components/Image.tsx\n");
19
+
20
+ /***/ })
21
+
22
+ });
@@ -0,0 +1,22 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ self["webpackHotUpdate_N_E"]("pages/index",{
10
+
11
+ /***/ "../components/Image.tsx":
12
+ /*!*******************************!*\
13
+ !*** ../components/Image.tsx ***!
14
+ \*******************************/
15
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
16
+
17
+ "use strict";
18
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isStaticRequire\": function() { return /* binding */ isStaticRequire; },\n/* harmony export */ \"isStaticImageData\": function() { return /* binding */ isStaticImageData; },\n/* harmony export */ \"isStaticImport\": function() { return /* binding */ isStaticImport; },\n/* harmony export */ \"getInt\": function() { return /* binding */ getInt; },\n/* harmony export */ \"Image\": function() { return /* binding */ Image; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../../../node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @bedrock-layout/use-forwarded-ref */ \"../../../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js\");\n/* harmony import */ var next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/next-server/server/image-config */ \"../../../node_modules/next/dist/next-server/server/image-config.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/head */ \"../../../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _config_config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config/config */ \"../config/config.ts\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n\n\nvar _jsxFileName = \"/Users/paulhachmang/Sites/reachdigital-next/packages/image/components/Image.tsx\",\n _s = $RefreshSig$();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable prefer-const */\n\n/* eslint-disable no-param-reassign */\n\n/* eslint-disable @next/next/no-img-element */\n\n/* eslint-disable jsx-a11y/alt-text */\n\n\n\n\n\n\nif (false) {}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined];\nconst loaders = new Map([['imgix', _config_config__WEBPACK_IMPORTED_MODULE_6__.imgixLoader], ['cloudinary', _config_config__WEBPACK_IMPORTED_MODULE_6__.cloudinaryLoader], ['akamai', _config_config__WEBPACK_IMPORTED_MODULE_6__.akamaiLoader], ['default', _config_config__WEBPACK_IMPORTED_MODULE_6__.defaultLoader]]);\nconst VALID_LAYOUT_VALUES = ['fill', 'responsive', 'intrinsic', 'fixed'];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));\n} // sort smallest to largest\n\nconst allSizes = [..._config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes, ..._config_config__WEBPACK_IMPORTED_MODULE_6__.configImageSizes];\n_config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes.sort((a, b) => a - b);\nallSizes.sort((a, b) => a - b);\n\nfunction getWidths(width, layout, sizes = '', scale) {\n if (sizes && layout === 'fill' || layout === 'responsive') {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = viewportWidthRe.exec(sizes); match) {\n var _match;\n\n percentSizes.push(parseInt((_match = match) === null || _match === void 0 ? void 0 : _match[2], 10));\n }\n\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter(s => s >= _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes[0] * smallestRatio),\n kind: 'w'\n };\n } // Find all the \"px\" sizes used in the sizes prop\n\n\n const pxWidthRe = /(^|\\s)(1?\\d+)px/g;\n const pxSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = pxWidthRe.exec(sizes); match) {\n var _match2;\n\n pxSizes.push(parseInt((_match2 = match) === null || _match2 === void 0 ? void 0 : _match2[2], 10));\n }\n\n if (pxSizes.length) {\n return {\n widths: pxSizes.map(pxSize => {\n var _allSizes$filter, _allSizes$filter2;\n\n const scaled = (_allSizes$filter = allSizes.filter(s => s * scale > pxSize)) === null || _allSizes$filter === void 0 ? void 0 : _allSizes$filter[0];\n const dpr2 = (_allSizes$filter2 = allSizes.filter(s => s > pxSize)) === null || _allSizes$filter2 === void 0 ? void 0 : _allSizes$filter2[0];\n return scale > 1 ? Math.max(scaled, dpr2) : Math.min(scaled, dpr2);\n }),\n kind: 'w'\n };\n }\n\n return {\n widths: allSizes,\n kind: 'w'\n };\n }\n\n if (typeof width !== 'number' || layout === 'fill') {\n return {\n widths: _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes,\n kind: 'w'\n };\n }\n\n const widths = [...new Set( // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2\n /* , width * 3*/\n ].map(w => allSizes.find(p => p >= w) || allSizes[allSizes.length - 1]))];\n return {\n widths,\n kind: 'x'\n };\n}\n\nfunction generateSourceAttrs({\n src,\n layout,\n width,\n quality = 44,\n sizes,\n loader,\n scale\n}) {\n const {\n widths,\n kind\n } = getWidths(width, layout, sizes, scale);\n return {\n sizes: !sizes && kind === 'w' ? `50vw` : sizes,\n srcSet: widths.map((w, i) => `${loader({\n src,\n quality,\n width: w\n })} ${kind === 'w' ? Math.round(w * scale) : i + 1}${kind}`).join(', ')\n };\n}\n\nfunction getInt(x) {\n if (typeof x === 'number') {\n return x;\n }\n\n if (typeof x === 'string') {\n return parseInt(x, 10);\n }\n\n return undefined;\n}\n\nfunction defaultImageLoader(loaderProps) {\n const load = loaders.get(_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader);\n\n if (load) {\n return load(_objectSpread({\n root: _config_config__WEBPACK_IMPORTED_MODULE_6__.configPath\n }, loaderProps));\n }\n\n throw new Error(`[@reachdigital/image]: Unknown \"loader\" found in \"next.config.js\". Expected: ${next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__.VALID_LOADERS.join(', ')}. Received: ${_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader}`);\n} // See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\n\n\nfunction removePlaceholder(img, placeholder) {\n if (placeholder === 'blur' && img) {\n const handleLoad = () => {\n if (!img.src.startsWith('data:')) {\n const p = 'decode' in img ? img.decode() : Promise.resolve(); // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n p.catch(() => {}).then(() => {\n img.style.filter = 'none';\n img.style.backgroundSize = 'none';\n img.style.backgroundImage = 'none';\n });\n }\n };\n\n if (img.complete) {\n // If the real image fails to load, this will still remove the placeholder.\n // This is the desired behavior for now, and will be revisited when error\n // handling is worked on for the image component itself.\n handleLoad();\n } else {\n img.onload = handleLoad;\n }\n }\n}\n/** Checks whether an image is currently in the viewport */\n\n\nfunction isInViewport(elem) {\n const {\n top,\n right,\n bottom,\n left\n } = elem.getBoundingClientRect();\n return bottom >= 0 && right >= 0 && top <= window.innerHeight && left <= window.innerWidth;\n}\n\nfunction isSizesRecord(sizes) {\n return typeof sizes === 'object';\n}\n\nfunction sizesEntries(sizes) {\n if (isSizesRecord(sizes)) {\n return Object.entries(sizes).map(([breakpoint, size]) => [Number(breakpoint), size]).sort(([sizeA], [sizeB]) => sizeB - sizeA);\n }\n\n return [[0, sizes]];\n}\n\nfunction generateSizesString(sizes) {\n return sizesEntries(sizes).map(([breakpoint, size]) => {\n if (breakpoint === 0) return size;\n return `(min-width: ${breakpoint}px) ${size}`;\n }).join(', ');\n}\n/** Since we're handling stuff ourselves we omit some stuff */\n\n\nconst Image = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().forwardRef(_c = _s((_ref, forwardedRef) => {\n var _generateSizesString, _loading;\n\n _s();\n\n let {\n src,\n sizes: sizesIncomming,\n unoptimized = false,\n loading,\n layout = 'responsive',\n quality,\n width,\n height,\n style,\n loader = defaultImageLoader,\n placeholder = 'empty',\n blurDataURL\n } = _ref,\n imgProps = (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__.default)(_ref, [\"src\", \"sizes\", \"unoptimized\", \"loading\", \"layout\", \"quality\", \"width\", \"height\", \"style\", \"loader\", \"placeholder\", \"blurDataURL\"]);\n\n const ref = (0,_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default)(forwardedRef);\n const sizesOrig = layout === 'fixed' && width && !sizesIncomming ? `${width}px` : sizesIncomming;\n const sizes = (_generateSizesString = generateSizesString(sizesOrig)) !== null && _generateSizesString !== void 0 ? _generateSizesString : '50vw'; // If no responsive sizes are given, we're defaulting to 50vw on mobile\n // const [sizes, setSizes] = useState(toSizesString(sizesOrig) ?? `50vw`)\n\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (false) {}\n if (!ref.current) return () => {}; // Warn the user when he isn't providing sizes and how to proceed\n\n const ro = new ResizeObserver(([entry]) => {\n var _sizesEntries$find;\n\n const currentWidth = entry.target.naturalWidth;\n let ratio;\n let msg = '';\n const [breakpoint, size] = (_sizesEntries$find = sizesEntries(sizesOrig).find(([s]) => s === 0 ? true : window.matchMedia(`(min-width: ${s})`))) !== null && _sizesEntries$find !== void 0 ? _sizesEntries$find : [0, '100vw'];\n\n if (size) {\n const el = document.createElement('div');\n el.setAttribute('style', `width: ${size}`);\n document.body.appendChild(el);\n const measuredWidth = el.getBoundingClientRect().width; // el.remove()\n\n ratio = measuredWidth ** 2 / currentWidth ** 2;\n msg += `Image has \"sizes\" property set, but size 'min-width(${breakpoint}px) ${size}' is incorrect.`;\n } else {\n msg += `Image has no \"sizes\" property set.`;\n ratio = (window.innerWidth * 0.5) ** 2 / currentWidth ** 2;\n }\n\n const round = nr => Math.round(nr * 100) / 100;\n\n if (ratio > 1.2) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(ratio)}x too many pixels`, entry.target);\n } else if (ratio < 0.8) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(1 / ratio)}x too few pixels`, entry.target);\n }\n });\n ro.observe(ref.current);\n return () => ro.disconnect();\n }, [layout, ref, sizesOrig, src, width]);\n let staticSrc = '';\n\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n\n if (!staticImageData.src) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(staticImageData)}`);\n }\n\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height;\n width = width || staticImageData.width;\n\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(staticImageData)}`);\n }\n }\n }\n\n src = typeof src === 'string' ? src : staticSrc;\n const widthInt = getInt(width);\n const heightInt = getInt(height);\n const qualityInt = getInt(quality);\n\n if (true) {\n if (!src) {\n throw new Error(`[@reachdigital/image]: Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`@reachdigital/image\\` component. Received: ${JSON.stringify({\n width,\n height,\n quality\n })}`);\n }\n\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(String).join(',')}.`);\n }\n\n if (typeof widthInt !== 'undefined' && Number.isNaN(widthInt) || typeof heightInt !== 'undefined' && Number.isNaN(heightInt)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`);\n }\n\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`);\n }\n\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n console.warn(`[@reachdigital/image]: Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`);\n }\n\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp']; // should match next-image-loader\n\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')}\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`);\n }\n }\n }\n\n if (typeof widthInt === 'undefined' && typeof heightInt === 'undefined') {\n if (layout === 'fill') {// handle fill\n } else if (true) {\n // <Image src=\"i.png\" />\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`);\n }\n }\n\n (_loading = loading) !== null && _loading !== void 0 ? _loading : loading = 'lazy';\n\n if (src && src.startsWith('data:')) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n }\n\n const attributes3x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1.5\n });\n const attributes2x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1\n });\n const attributes1x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 0.5\n });\n if (layout !== 'fixed' && !style) style = {};\n if (layout === 'responsive') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto'\n });\n if (layout === 'intrinsic') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto',\n maxWidth: width\n });\n if (layout === 'fill') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: '100%'\n });\n return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [unoptimized ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread({\n ref: ref\n }, imgProps), {}, {\n src: src,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 612,\n columnNumber: 11\n }, undefined) : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"picture\", {\n children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\"\n }, attributes3x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 615,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 1.5)\"\n }, attributes2x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 616,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread(_objectSpread({\n ref: ref\n }, imgProps), attributes1x), {}, {\n loading: loading,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 617,\n columnNumber: 13\n }, undefined)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 614,\n columnNumber: 11\n }, undefined), loading === 'eager' && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_4___default()), {\n children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"preload\",\n as: \"image\",\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\" // @ts-expect-error imagesrcset is not yet in the link element type\n ,\n imagesrcset: attributes1x.srcSet,\n imagesizes: sizes\n }, `__nimg-2x-${attributes1x.srcSet}${attributes1x.sizes}`, false, {\n fileName: _jsxFileName,\n lineNumber: 630,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 629,\n columnNumber: 11\n }, undefined)]\n }, void 0, true);\n}, \"uc1ywpQv+s/tGng4xj/L6VVOIq8=\", false, function () {\n return [_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default];\n}));\n_c2 = Image;\nImage.displayName = 'NextPicture';\n\n\nvar _c, _c2;\n\n$RefreshReg$(_c, \"Image$React.forwardRef\");\n$RefreshReg$(_c2, \"Image\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL2NvbXBvbmVudHMvSW1hZ2UudHN4PzJiNmQiXSwibmFtZXMiOlsiVkFMSURfTE9BRElOR19WQUxVRVMiLCJ1bmRlZmluZWQiLCJsb2FkZXJzIiwiTWFwIiwiaW1naXhMb2FkZXIiLCJjbG91ZGluYXJ5TG9hZGVyIiwiYWthbWFpTG9hZGVyIiwiZGVmYXVsdExvYWRlciIsIlZBTElEX0xBWU9VVF9WQUxVRVMiLCJpc1N0YXRpY1JlcXVpcmUiLCJzcmMiLCJkZWZhdWx0IiwiaXNTdGF0aWNJbWFnZURhdGEiLCJpc1N0YXRpY0ltcG9ydCIsImFsbFNpemVzIiwiY29uZmlnRGV2aWNlU2l6ZXMiLCJjb25maWdJbWFnZVNpemVzIiwiYSIsImIiLCJzb3J0IiwiZ2V0V2lkdGhzIiwid2lkdGgiLCJsYXlvdXQiLCJzaXplcyIsInNjYWxlIiwidmlld3BvcnRXaWR0aFJlIiwicGVyY2VudFNpemVzIiwibWF0Y2giLCJleGVjIiwicHVzaCIsInBhcnNlSW50IiwibGVuZ3RoIiwic21hbGxlc3RSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aWR0aHMiLCJmaWx0ZXIiLCJzIiwia2luZCIsInB4V2lkdGhSZSIsInB4U2l6ZXMiLCJtYXAiLCJweFNpemUiLCJzY2FsZWQiLCJkcHIyIiwibWF4IiwiU2V0IiwidyIsImZpbmQiLCJwIiwiZ2VuZXJhdGVTb3VyY2VBdHRycyIsInF1YWxpdHkiLCJsb2FkZXIiLCJzcmNTZXQiLCJpIiwicm91bmQiLCJqb2luIiwiZ2V0SW50IiwieCIsImRlZmF1bHRJbWFnZUxvYWRlciIsImxvYWRlclByb3BzIiwibG9hZCIsImdldCIsImNvbmZpZ0xvYWRlciIsInJvb3QiLCJjb25maWdQYXRoIiwiRXJyb3IiLCJWQUxJRF9MT0FERVJTIiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJpbWciLCJwbGFjZWhvbGRlciIsImhhbmRsZUxvYWQiLCJzdGFydHNXaXRoIiwiZGVjb2RlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjYXRjaCIsInRoZW4iLCJzdHlsZSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZEltYWdlIiwiY29tcGxldGUiLCJvbmxvYWQiLCJpc0luVmlld3BvcnQiLCJlbGVtIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiaXNTaXplc1JlY29yZCIsInNpemVzRW50cmllcyIsIk9iamVjdCIsImVudHJpZXMiLCJicmVha3BvaW50Iiwic2l6ZSIsIk51bWJlciIsInNpemVBIiwic2l6ZUIiLCJnZW5lcmF0ZVNpemVzU3RyaW5nIiwiSW1hZ2UiLCJSZWFjdCIsImZvcndhcmRlZFJlZiIsInNpemVzSW5jb21taW5nIiwidW5vcHRpbWl6ZWQiLCJsb2FkaW5nIiwiaGVpZ2h0IiwiYmx1ckRhdGFVUkwiLCJpbWdQcm9wcyIsInJlZiIsInVzZUZvcndhcmRlZFJlZiIsInNpemVzT3JpZyIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJybyIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cnkiLCJjdXJyZW50V2lkdGgiLCJ0YXJnZXQiLCJuYXR1cmFsV2lkdGgiLCJyYXRpbyIsIm1zZyIsIm1hdGNoTWVkaWEiLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm1lYXN1cmVkV2lkdGgiLCJuciIsImNvbnNvbGUiLCJ3YXJuIiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJzdGF0aWNTcmMiLCJzdGF0aWNJbWFnZURhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwid2lkdGhJbnQiLCJoZWlnaHRJbnQiLCJxdWFsaXR5SW50IiwiaW5jbHVkZXMiLCJTdHJpbmciLCJpc05hTiIsIlZBTElEX0JMVVJfRVhUIiwiYXR0cmlidXRlczN4IiwiYXR0cmlidXRlczJ4IiwiYXR0cmlidXRlczF4IiwibWF4V2lkdGgiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5n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LEVBQUMsU0FGTjtBQUdFLFVBQUUsRUFBQyxPQUhMO0FBSUUsYUFBSyxFQUFDLHVDQUpSLENBS0U7QUFMRjtBQU1FLG1CQUFXLEVBQUUyQyxZQUFZLENBQUNsRyxNQU41QjtBQU9FLGtCQUFVLEVBQUU5QjtBQVBkLFNBQ1EsYUFBWWdJLFlBQVksQ0FBQ2xHLE1BQU8sR0FBRWtHLFlBQVksQ0FBQ2hJLEtBQU0sRUFEN0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURGO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBbkJKO0FBQUEsa0JBREY7QUFrQ0QsQ0F6UFc7QUFBQSxVQW1CRTBGLHNFQW5CRjtBQUFBLEdBQWQ7TUFBTVYsSztBQTJQTkEsS0FBSyxDQUFDa0QsV0FBTixHQUFvQixhQUFwQjtBQUVBIiwiZmlsZSI6Ii4uL2NvbXBvbmVudHMvSW1hZ2UudHN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWNvbnN0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQG5leHQvbmV4dC9uby1pbWctZWxlbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYWx0LXRleHQgKi9cbmltcG9ydCB1c2VGb3J3YXJkZWRSZWYgZnJvbSAnQGJlZHJvY2stbGF5b3V0L3VzZS1mb3J3YXJkZWQtcmVmJ1xuaW1wb3J0IHsgTG9hZGVyVmFsdWUsIFZBTElEX0xPQURFUlMgfSBmcm9tICduZXh0L2Rpc3QvbmV4dC1zZXJ2ZXIvc2VydmVyL2ltYWdlLWNvbmZpZydcbmltcG9ydCBIZWFkIGZyb20gJ25leHQvaGVhZCdcbmltcG9ydCB0eXBlIHsgSW1hZ2VMb2FkZXJQcm9wcywgSW1hZ2VMb2FkZXIgfSBmcm9tICduZXh0L2ltYWdlJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB1c2VSZXNpemVPYnNlcnZlciBmcm9tICd1c2UtcmVzaXplLW9ic2VydmVyJ1xuaW1wb3J0IHtcbiAgYWthbWFpTG9hZGVyLFxuICBjbG91ZGluYXJ5TG9hZGVyLFxuICBjb25maWdEZXZpY2VTaXplcyxcbiAgY29uZmlnSW1hZ2VTaXplcyxcbiAgY29uZmlnTG9hZGVyLFxuICBjb25maWdQYXRoLFxuICBEZWZhdWx0SW1hZ2VMb2FkZXJQcm9wcyxcbiAgZGVmYXVsdExvYWRlcixcbiAgaW1naXhMb2FkZXIsXG59IGZyb20gJy4uL2NvbmZpZy9jb25maWcnXG5pbXBvcnQgdXNlQ29ubmVjdGlvblR5cGUgZnJvbSAnLi4vaG9va3MvdXNlQ29ubmVjdGlvblR5cGUnXG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGVcbiAgZ2xvYmFsLl9fTkVYVF9JTUFHRV9JTVBPUlRFRCA9IHRydWVcbn1cblxuZXhwb3J0IHR5cGUgeyBJbWFnZUxvYWRlclByb3BzLCBJbWFnZUxvYWRlciB9XG5cbmNvbnN0IFZBTElEX0xPQURJTkdfVkFMVUVTID0gWydsYXp5JywgJ2VhZ2VyJywgdW5kZWZpbmVkXSBhcyBjb25zdFxudHlwZSBMb2FkaW5nVmFsdWUgPSB0eXBlb2YgVkFMSURfTE9BRElOR19WQUxVRVNbbnVtYmVyXVxuXG5jb25zdCBsb2FkZXJzID0gbmV3IE1hcDxMb2FkZXJWYWx1ZSwgKHByb3BzOiBEZWZhdWx0SW1hZ2VMb2FkZXJQcm9wcykgPT4gc3RyaW5nPihbXG4gIFsnaW1naXgnLCBpbWdpeExvYWRlcl0sXG4gIFsnY2xvdWRpbmFyeScsIGNsb3VkaW5hcnlMb2FkZXJdLFxuICBbJ2FrYW1haScsIGFrYW1haUxvYWRlcl0sXG4gIFsnZGVmYXVsdCcsIGRlZmF1bHRMb2FkZXJdLFxuXSlcblxuY29uc3QgVkFMSURfTEFZT1VUX1ZBTFVFUyA9IFsnZmlsbCcsICdyZXNwb25zaXZlJywgJ2ludHJpbnNpYycsICdmaXhlZCddIGFzIGNvbnN0XG50eXBlIExheW91dFZhbHVlID0gJ2ZpbGwnIHwgJ2ZpeGVkJyB8ICdpbnRyaW5zaWMnIHwgJ3Jlc3BvbnNpdmUnIHwgdW5kZWZpbmVkXG5cbnR5cGUgUGxhY2Vob2xkZXJWYWx1ZSA9ICdibHVyJyB8ICdlbXB0eSdcblxudHlwZSBJbWdFbGVtZW50U3R5bGUgPSBOb25OdWxsYWJsZTxKU1guSW50cmluc2ljRWxlbWVudHNbJ2ltZyddWydzdHlsZSddPlxuXG5pbnRlcmZhY2UgU3RhdGljSW1hZ2VEYXRhIHtcbiAgc3JjOiBzdHJpbmdcbiAgaGVpZ2h0OiBudW1iZXJcbiAgd2lkdGg6IG51bWJlclxuICBibHVyRGF0YVVSTD86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgU3RhdGljUmVxdWlyZSB7XG4gIGRlZmF1bHQ6IFN0YXRpY0ltYWdlRGF0YVxufVxuXG50eXBlIFN0YXRpY0ltcG9ydCA9IFN0YXRpY1JlcXVpcmUgfCBTdGF0aWNJbWFnZURhdGFcblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljUmVxdWlyZShzcmM6IFN0YXRpY1JlcXVpcmUgfCBTdGF0aWNJbWFnZURhdGEpOiBzcmMgaXMgU3RhdGljUmVxdWlyZSB7XG4gIHJldHVybiAoc3JjIGFzIFN0YXRpY1JlcXVpcmUpLmRlZmF1bHQgIT09IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGF0aWNJbWFnZURhdGEoc3JjOiBTdGF0aWNSZXF1aXJlIHwgU3RhdGljSW1hZ2VEYXRhKTogc3JjIGlzIFN0YXRpY0ltYWdlRGF0YSB7XG4gIHJldHVybiAoc3JjIGFzIFN0YXRpY0ltYWdlRGF0YSkuc3JjICE9PSB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljSW1wb3J0KHNyYzogc3RyaW5nIHwgU3RhdGljSW1wb3J0KTogc3JjIGlzIFN0YXRpY0ltcG9ydCB7XG4gIHJldHVybiB0eXBlb2Ygc3JjID09PSAnb2JqZWN0JyAmJiAoaXNTdGF0aWNSZXF1aXJlKHNyYykgfHwgaXNTdGF0aWNJbWFnZURhdGEoc3JjKSlcbn1cblxuLy8gc29ydCBzbWFsbGVzdCB0byBsYXJnZXN0XG5jb25zdCBhbGxTaXplcyA9IFsuLi5jb25maWdEZXZpY2VTaXplcywgLi4uY29uZmlnSW1hZ2VTaXplc11cbmNvbmZpZ0RldmljZVNpemVzLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuYWxsU2l6ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpXG5cbmZ1bmN0aW9uIGdldFdpZHRocyhcbiAgd2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgbGF5b3V0OiBMYXlvdXRWYWx1ZSxcbiAgc2l6ZXMgPSAnJyxcbiAgc2NhbGU6IG51bWJlcixcbik6IHsgd2lkdGhzOiBudW1iZXJbXTsga2luZDogJ3cnIHwgJ3gnIH0ge1xuICBpZiAoKHNpemVzICYmIGxheW91dCA9PT0gJ2ZpbGwnKSB8fCBsYXlvdXQgPT09ICdyZXNwb25zaXZlJykge1xuICAgIC8vIEZpbmQgYWxsIHRoZSBcInZ3XCIgcGVyY2VudCBzaXplcyB1c2VkIGluIHRoZSBzaXplcyBwcm9wXG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aFJlID0gLyhefFxccykoMT9cXGQ/XFxkKXZ3L2dcbiAgICBjb25zdCBwZXJjZW50U2l6ZXM6IG51bWJlcltdID0gW11cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgICBmb3IgKGxldCBtYXRjaDogc3RyaW5nW10gfCBudWxsOyAobWF0Y2ggPSB2aWV3cG9ydFdpZHRoUmUuZXhlYyhzaXplcykpOyBtYXRjaCkge1xuICAgICAgcGVyY2VudFNpemVzLnB1c2gocGFyc2VJbnQobWF0Y2g/LlsyXSwgMTApKVxuICAgIH1cbiAgICBpZiAocGVyY2VudFNpemVzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc21hbGxlc3RSYXRpbyA9IE1hdGgubWluKC4uLnBlcmNlbnRTaXplcykgKiAwLjAxXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoczogYWxsU2l6ZXMuZmlsdGVyKChzKSA9PiBzID49IGNvbmZpZ0RldmljZVNpemVzWzBdICogc21hbGxlc3RSYXRpbyksXG4gICAgICAgIGtpbmQ6ICd3JyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5kIGFsbCB0aGUgXCJweFwiIHNpemVzIHVzZWQgaW4gdGhlIHNpemVzIHByb3BcbiAgICBjb25zdCBweFdpZHRoUmUgPSAvKF58XFxzKSgxP1xcZCspcHgvZ1xuICAgIGNvbnN0IHB4U2l6ZXM6IG51bWJlcltdID0gW11cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgICBmb3IgKGxldCBtYXRjaDogc3RyaW5nW10gfCBudWxsOyAobWF0Y2ggPSBweFdpZHRoUmUuZXhlYyhzaXplcykpOyBtYXRjaCkge1xuICAgICAgcHhTaXplcy5wdXNoKHBhcnNlSW50KG1hdGNoPy5bMl0sIDEwKSlcbiAgICB9XG5cbiAgICBpZiAocHhTaXplcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoczogcHhTaXplcy5tYXAoKHB4U2l6ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNjYWxlZCA9IGFsbFNpemVzLmZpbHRlcigocykgPT4gcyAqIHNjYWxlID4gcHhTaXplKT8uWzBdXG4gICAgICAgICAgY29uc3QgZHByMiA9IGFsbFNpemVzLmZpbHRlcigocykgPT4gcyA+IHB4U2l6ZSk/LlswXVxuICAgICAgICAgIHJldHVybiBzY2FsZSA+IDEgPyBNYXRoLm1heChzY2FsZWQsIGRwcjIpIDogTWF0aC5taW4oc2NhbGVkLCBkcHIyKVxuICAgICAgICB9KSxcbiAgICAgICAga2luZDogJ3cnLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHdpZHRoczogYWxsU2l6ZXMsIGtpbmQ6ICd3JyB9XG4gIH1cbiAgaWYgKHR5cGVvZiB3aWR0aCAhPT0gJ251bWJlcicgfHwgbGF5b3V0ID09PSAnZmlsbCcpIHtcbiAgICByZXR1cm4geyB3aWR0aHM6IGNvbmZpZ0RldmljZVNpemVzLCBraW5kOiAndycgfVxuICB9XG5cbiAgY29uc3Qgd2lkdGhzID0gW1xuICAgIC4uLm5ldyBTZXQoXG4gICAgICAvLyA+IFRoaXMgbWVhbnMgdGhhdCBtb3N0IE9MRUQgc2NyZWVucyB0aGF0IHNheSB0aGV5IGFyZSAzeCByZXNvbHV0aW9uLFxuICAgICAgLy8gPiBhcmUgYWN0dWFsbHkgM3ggaW4gdGhlIGdyZWVuIGNvbG9yLCBidXQgb25seSAxLjV4IGluIHRoZSByZWQgYW5kXG4gICAgICAvLyA+IGJsdWUgY29sb3JzLiBTaG93aW5nIGEgM3ggcmVzb2x1dGlvbiBpbWFnZSBpbiB0aGUgYXBwIHZzIGEgMnhcbiAgICAgIC8vID4gcmVzb2x1dGlvbiBpbWFnZSB3aWxsIGJlIHZpc3VhbGx5IHRoZSBzYW1lLCB0aG91Z2ggdGhlIDN4IGltYWdlXG4gICAgICAvLyA+IHRha2VzIHNpZ25pZmljYW50bHkgbW9yZSBkYXRhLiBFdmVuIHRydWUgM3ggcmVzb2x1dGlvbiBzY3JlZW5zIGFyZVxuICAgICAgLy8gPiB3YXN0ZWZ1bCBhcyB0aGUgaHVtYW4gZXllIGNhbm5vdCBzZWUgdGhhdCBsZXZlbCBvZiBkZXRhaWwgd2l0aG91dFxuICAgICAgLy8gPiBzb21ldGhpbmcgbGlrZSBhIG1hZ25pZnlpbmcgZ2xhc3MuXG4gICAgICAvLyBodHRwczovL2Jsb2cudHdpdHRlci5jb20vZW5naW5lZXJpbmcvZW5fdXMvdG9waWNzL2luZnJhc3RydWN0dXJlLzIwMTkvY2FwcGluZy1pbWFnZS1maWRlbGl0eS1vbi11bHRyYS1oaWdoLXJlc29sdXRpb24tZGV2aWNlcy5odG1sXG4gICAgICBbd2lkdGgsIHdpZHRoICogMiAvKiAsIHdpZHRoICogMyovXS5tYXAoXG4gICAgICAgICh3KSA9PiBhbGxTaXplcy5maW5kKChwKSA9PiBwID49IHcpIHx8IGFsbFNpemVzW2FsbFNpemVzLmxlbmd0aCAtIDFdLFxuICAgICAgKSxcbiAgICApLFxuICBdXG4gIHJldHVybiB7IHdpZHRocywga2luZDogJ3gnIH1cbn1cblxudHlwZSBHZW5JbWdBdHRyc0RhdGEgPSB7XG4gIHNyYzogc3RyaW5nXG4gIGxheW91dDogTGF5b3V0VmFsdWVcbiAgbG9hZGVyOiBJbWFnZUxvYWRlclxuICB3aWR0aD86IG51bWJlclxuICBxdWFsaXR5PzogbnVtYmVyXG4gIHNpemVzPzogc3RyaW5nXG4gIHNjYWxlOiBudW1iZXJcbn1cblxudHlwZSBHZW5JbWdBdHRyc1Jlc3VsdCA9IHtcbiAgc3JjU2V0OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgc2l6ZXM6IHN0cmluZyB8IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVNvdXJjZUF0dHJzKHtcbiAgc3JjLFxuICBsYXlvdXQsXG4gIHdpZHRoLFxuICBxdWFsaXR5ID0gNDQsXG4gIHNpemVzLFxuICBsb2FkZXIsXG4gIHNjYWxlLFxufTogR2VuSW1nQXR0cnNEYXRhKTogR2VuSW1nQXR0cnNSZXN1bHQge1xuICBjb25zdCB7IHdpZHRocywga2luZCB9ID0gZ2V0V2lkdGhzKHdpZHRoLCBsYXlvdXQsIHNpemVzLCBzY2FsZSlcblxuICByZXR1cm4ge1xuICAgIHNpemVzOiAhc2l6ZXMgJiYga2luZCA9PT0gJ3cnID8gYDUwdndgIDogc2l6ZXMsXG4gICAgc3JjU2V0OiB3aWR0aHNcbiAgICAgIC5tYXAoXG4gICAgICAgICh3LCBpKSA9PlxuICAgICAgICAgIGAke2xvYWRlcih7IHNyYywgcXVhbGl0eSwgd2lkdGg6IHcgfSl9ICR7XG4gICAgICAgICAgICBraW5kID09PSAndycgPyBNYXRoLnJvdW5kKHcgKiBzY2FsZSkgOiBpICsgMVxuICAgICAgICAgIH0ke2tpbmR9YCxcbiAgICAgIClcbiAgICAgIC5qb2luKCcsICcpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnQoeDogdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgeCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4geFxuICB9XG4gIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoeCwgMTApXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBkZWZhdWx0SW1hZ2VMb2FkZXIobG9hZGVyUHJvcHM6IEltYWdlTG9hZGVyUHJvcHMpIHtcbiAgY29uc3QgbG9hZCA9IGxvYWRlcnMuZ2V0KGNvbmZpZ0xvYWRlcilcbiAgaWYgKGxvYWQpIHtcbiAgICByZXR1cm4gbG9hZCh7IHJvb3Q6IGNvbmZpZ1BhdGgsIC4uLmxvYWRlclByb3BzIH0pXG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IFVua25vd24gXCJsb2FkZXJcIiBmb3VuZCBpbiBcIm5leHQuY29uZmlnLmpzXCIuIEV4cGVjdGVkOiAke1ZBTElEX0xPQURFUlMuam9pbihcbiAgICAgICcsICcsXG4gICAgKX0uIFJlY2VpdmVkOiAke2NvbmZpZ0xvYWRlcn1gLFxuICApXG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMzk3Nzc4MzMvMjY2NTM1IGZvciB3aHkgd2UgdXNlIHRoaXMgcmVmXG4vLyBoYW5kbGVyIGluc3RlYWQgb2YgdGhlIGltZydzIG9uTG9hZCBhdHRyaWJ1dGUuXG5mdW5jdGlvbiByZW1vdmVQbGFjZWhvbGRlcihpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsLCBwbGFjZWhvbGRlcjogUGxhY2Vob2xkZXJWYWx1ZSkge1xuICBpZiAocGxhY2Vob2xkZXIgPT09ICdibHVyJyAmJiBpbWcpIHtcbiAgICBjb25zdCBoYW5kbGVMb2FkID0gKCkgPT4ge1xuICAgICAgaWYgKCFpbWcuc3JjLnN0YXJ0c1dpdGgoJ2RhdGE6JykpIHtcbiAgICAgICAgY29uc3QgcCA9ICdkZWNvZGUnIGluIGltZyA/IGltZy5kZWNvZGUoKSA6IFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgcC5jYXRjaCgoKSA9PiB7fSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaW1nLnN0eWxlLmZpbHRlciA9ICdub25lJ1xuICAgICAgICAgIGltZy5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9ICdub25lJ1xuICAgICAgICAgIGltZy5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAnbm9uZSdcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGltZy5jb21wbGV0ZSkge1xuICAgICAgLy8gSWYgdGhlIHJlYWwgaW1hZ2UgZmFpbHMgdG8gbG9hZCwgdGhpcyB3aWxsIHN0aWxsIHJlbW92ZSB0aGUgcGxhY2Vob2xkZXIuXG4gICAgICAvLyBUaGlzIGlzIHRoZSBkZXNpcmVkIGJlaGF2aW9yIGZvciBub3csIGFuZCB3aWxsIGJlIHJldmlzaXRlZCB3aGVuIGVycm9yXG4gICAgICAvLyBoYW5kbGluZyBpcyB3b3JrZWQgb24gZm9yIHRoZSBpbWFnZSBjb21wb25lbnQgaXRzZWxmLlxuICAgICAgaGFuZGxlTG9hZCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGltZy5vbmxvYWQgPSBoYW5kbGVMb2FkXG4gICAgfVxuICB9XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciBhbiBpbWFnZSBpcyBjdXJyZW50bHkgaW4gdGhlIHZpZXdwb3J0ICovXG5mdW5jdGlvbiBpc0luVmlld3BvcnQoZWxlbTogSFRNTEltYWdlRWxlbWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCB9ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICByZXR1cm4gYm90dG9tID49IDAgJiYgcmlnaHQgPj0gMCAmJiB0b3AgPD0gd2luZG93LmlubmVySGVpZ2h0ICYmIGxlZnQgPD0gd2luZG93LmlubmVyV2lkdGhcbn1cblxudHlwZSBTaXplc1N0cmluZyA9IGAke251bWJlcn12d2AgfCBgJHtudW1iZXJ9cHhgXG50eXBlIFNpemVzUmVjb3JkID0gUmVjb3JkPG51bWJlciwgU2l6ZXNTdHJpbmc+XG50eXBlIFNpemVzID0gU2l6ZXNTdHJpbmcgfCBTaXplc1JlY29yZCB8IHVuZGVmaW5lZFxuXG5mdW5jdGlvbiBpc1NpemVzUmVjb3JkKHNpemVzPzogU2l6ZXMpOiBzaXplcyBpcyBTaXplc1JlY29yZCB7XG4gIHJldHVybiB0eXBlb2Ygc2l6ZXMgPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIHNpemVzRW50cmllcyhzaXplczogU2l6ZXMpOiAocmVhZG9ubHkgW251bWJlciwgU2l6ZXNTdHJpbmcgfCB1bmRlZmluZWRdKVtdIHtcbiAgaWYgKGlzU2l6ZXNSZWNvcmQoc2l6ZXMpKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNpemVzKVxuICAgICAgLm1hcCgoW2JyZWFrcG9pbnQsIHNpemVdKSA9PiBbTnVtYmVyKGJyZWFrcG9pbnQpLCBzaXplXSBhcyBjb25zdClcbiAgICAgIC5zb3J0KChbc2l6ZUFdLCBbc2l6ZUJdKSA9PiBzaXplQiAtIHNpemVBKVxuICB9XG4gIHJldHVybiBbWzAsIHNpemVzXSBhcyBjb25zdF1cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVTaXplc1N0cmluZyhzaXplcz86IFNpemVzKSB7XG4gIHJldHVybiBzaXplc0VudHJpZXMoc2l6ZXMpXG4gICAgLm1hcCgoW2JyZWFrcG9pbnQsIHNpemVdKSA9PiB7XG4gICAgICBpZiAoYnJlYWtwb2ludCA9PT0gMCkgcmV0dXJuIHNpemVcbiAgICAgIHJldHVybiBgKG1pbi13aWR0aDogJHticmVha3BvaW50fXB4KSAke3NpemV9YFxuICAgIH0pXG4gICAgLmpvaW4oJywgJylcbn1cblxuLyoqIFNpbmNlIHdlJ3JlIGhhbmRsaW5nIHN0dWZmIG91cnNlbHZlcyB3ZSBvbWl0IHNvbWUgc3R1ZmYgKi9cbnR5cGUgSW50cmlzaW5jSW1hZ2UgPSBPbWl0PFxuICBKU1guSW50cmluc2ljRWxlbWVudHNbJ2ltZyddLFxuICAnc3JjJyB8ICdzcmNTZXQnIHwgJ3JlZicgfCAnd2lkdGgnIHwgJ2hlaWdodCcgfCAnbG9hZGluZycgfCAnc2l6ZXMnIHwgJ3dpZHRoJyB8ICdoZWlnaHQnXG4+ICYgeyBsb2FkaW5nPzogTG9hZGluZ1ZhbHVlIH1cblxuZXhwb3J0IHR5cGUgQmFzZUltYWdlUHJvcHMgPSBJbnRyaXNpbmNJbWFnZSAmIHtcbiAgbG9hZGVyPzogSW1hZ2VMb2FkZXJcbiAgcXVhbGl0eT86IG51bWJlciB8IHN0cmluZ1xuICB1bm9wdGltaXplZD86IGJvb2xlYW5cblxuICAvKipcbiAgICogUG9zc2libGUgdmFsdWVzOlxuICAgKlxuICAgKiAtIGBmaXhlZGA6IHRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgbm90IGNoYW5nZSBhcyB0aGUgdmlld3BvcnQgY2hhbmdlcyAobm8gcmVzcG9uc2l2ZW5lc3MpXG4gICAqICAgc2ltaWxhciB0byB0aGUgbmF0aXZlIGltZyBlbGVtZW50LlxuICAgKiAtIGBpbnRyaW5zaWNgOiB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBidXQgbWFpbnRhaW4gdGhlXG4gICAqICAgb3JpZ2luYWwgZGltZW5zaW9ucyAodGhlIHdpZHRoIGFuZCBoZWlnaHQgZ2l2ZW4pIGZvciBsYXJnZXIgdmlld3BvcnRzLlxuICAgKiAtIGByZXNwb25zaXZlYDogdGhlIGltYWdlIHdpbGwgc2NhbGUgdGhlIGRpbWVuc2lvbnMgZG93biBmb3Igc21hbGxlciB2aWV3cG9ydHMgYW5kIHNjYWxlIHVwIGZvclxuICAgKiAgIGxhcmdlciB2aWV3cG9ydHMuXG4gICAqL1xuICBsYXlvdXQ/OiBMYXlvdXRWYWx1ZVxuXG4gIC8qKiBTaXplIHRoZSBpbWFnZSBpcyByZW5kZXJlZCBvbiBtb2JpbGUgKi9cbiAgc2l6ZXM/OiBTaXplc1N0cmluZyB8IFNpemVzUmVjb3JkXG59XG5cbi8qKlxuICogV2hlbiBgZml4ZWRgLCB0aGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIG5vdCBjaGFuZ2UgYXMgdGhlIHZpZXdwb3J0IGNoYW5nZXMgKG5vIHJlc3BvbnNpdmVuZXNzKVxuICogc2ltaWxhciB0byB0aGUgbmF0aXZlIGltZyBlbGVtZW50LlxuICpcbiAqIGBgYHRzeFxuICogPGltZyB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSAvPlxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IHdhbnQgdG8gcmVuZGVyIHRoZSBpbWFnZSBhdCB0aGUgZ2l2ZW4gd2lkdGgvaGVpZ2h0IGFuZCBub3QgY2hhbmdlIGJhc2VkIG9uIGJyb3dzZXIgc2l6ZS5cbiAqL1xudHlwZSBMYXlvdXRUeXBlTmF0aXZlID0ge1xuICBsYXlvdXQ/OiAnZml4ZWQnXG4gIC8qKlxuICAgKiBUaGUgd2lkdGggYW5kIHRoZSBoZWlnaHQgdmFsdWVzIGFyZSB0aGUgdmFsdWVzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBhc3BlY3QgcmF0aW8gb20gdGhlIGltYWdlXG4gICAqIGFuZCByZXNlcnZlIHNwYWNlIGluIHRoZSBicm93c2VyLlxuICAgKlxuICAgKiBXaXRoIGxheW91dD1maXhlZCBhbmQgbm8gc3R5bGluZyB0aGUgaW1hZ2UgaXMgcmVuZGVyZWQgYXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgZ2l2ZW4uXG4gICAqL1xuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG59XG5cbi8qKlxuICogV2hlbiBgaW50cmluc2ljYCwgdGhlIGltYWdlIHdpbGwgc2NhbGUgdGhlIGRpbWVuc2lvbnMgZG93biBmb3Igc21hbGxlciB2aWV3cG9ydHMgYnV0IG1haW50YWluIHRoZVxuICogb3JpZ2luYWwgZGltZW5zaW9ucyAodGhlIHdpZHRoIGFuZCBoZWlnaHQgZ2l2ZW4pIGZvciBsYXJnZXIgdmlld3BvcnRzLlxuICpcbiAqIGBgYHRzeFxuICogPGltZyBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyBtYXhXaWR0aDogYCR7d2lkdGh9cHhgIH19XG4gKiBgYGBcbiAqXG4gKiBVc2UgY2FzZTogV2hlbiB5b3Ugd2FudCB0byByZW5kZXIgYW4gaW1hZ2UgYnV0IGRvbid0IHNjYWxlIGl0IHVwLlxuICovXG50eXBlIExheW91dFR5cGVJbnRyaW5zaWMgPSB7XG4gIGxheW91dD86ICdpbnRyaW5zaWMnXG5cbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxuXG4gIHN0eWxlPzogT21pdDxJbWdFbGVtZW50U3R5bGUsICd3aWR0aCcgfCAnaGVpZ2h0JyB8ICdtYXhXaWR0aCc+XG59XG5cbi8qKlxuICogV2hlbiBgcmVzcG9uc2l2ZWAsIHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGFuZCBzY2FsZSB1cFxuICogZm9yIGxhcmdlciB2aWV3cG9ydHMuXG4gKlxuICogYGBgdHN4XG4gKiA8aW1nIHN0eWxlPXt7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2F1dG8nIG1heFdpZHRoOiAke3dpZHRofSB9fVxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IHdhbnQgdGhlIGltYWdlIHRvIGZpbGwgaXQncyBwYXJlbnQgY29udGFpbmVyIGluIHdpZHRoXG4gKi9cbnR5cGUgTGF5b3V0VHlwZVJlc3BvbnNpdmUgPSB7XG4gIGxheW91dD86ICdyZXNwb25zaXZlJ1xuXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcblxuICBzdHlsZT86IE9taXQ8SW1nRWxlbWVudFN0eWxlLCAnd2lkdGgnIHwgJ2hlaWdodCc+XG59XG5cbi8qKlxuICogV2hlbiBgZmlsbGAsIHRoZSBpbWFnZSB3aWxsIHN0cmV0Y2ggYm90aCB3aWR0aCBhbmQgaGVpZ2h0IHRvIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBwYXJlbnRcbiAqIGVsZW1lbnQsIHBhaXJlZCB3aXRoIHRoZSBvYmplY3RGaXQgcHJvcGVydHkuXG4gKlxuICogU2luY2UgdGhlIHdpZHRoL2hlaWdodCBpc24ndCByZXF1aXJlZCB0byByZW5kZXIgdGhlIHBhZ2Ugd2UgY2FuIG9taXQgaXQuXG4gKlxuICogYGBgdHN4XG4gKiA8aW1nIHdpZHRoPXt3aWR0aH0gaGVpZ2h0PXtoZWlnaHR9IHN0eWxlPXt7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH19XG4gKiBgYGBcbiAqXG4gKiBVc2UgY2FzZTogV2hlbiB5b3UgaGF2ZSBhIHByZWRlZmluZWQgYXJlYSBzZXQgdG8gcmVuZGVyIGFuIGltYWdlXG4gKi9cbnR5cGUgTGF5b3V0VHlwZUZpbGwgPSB7XG4gIGxheW91dD86ICdmaWxsJ1xuXG4gIHdpZHRoPzogbmV2ZXJcbiAgaGVpZ2h0PzogbmV2ZXJcblxuICAvLyBvYmplY3RGaXQ6IEltZ0VsZW1lbnRTdHlsZVsnb2JqZWN0Rml0J11cbiAgc3R5bGU/OiBPbWl0PEltZ0VsZW1lbnRTdHlsZSwgJ3dpZHRoJyB8ICdoZWlnaHQnPlxufVxuXG5leHBvcnQgdHlwZSBTdHJpbmdJbWFnZVByb3BzID0ge1xuICBzcmM6IHN0cmluZ1xufSAmIChMYXlvdXRUeXBlRmlsbCB8IExheW91dFR5cGVSZXNwb25zaXZlIHwgTGF5b3V0VHlwZU5hdGl2ZSB8IExheW91dFR5cGVJbnRyaW5zaWMpICZcbiAgKFxuICAgIHwgeyBwbGFjZWhvbGRlcj86IEV4Y2x1ZGU8UGxhY2Vob2xkZXJWYWx1ZSwgJ2JsdXInPjsgYmx1ckRhdGFVUkw/OiBuZXZlciB9XG4gICAgfCB7IHBsYWNlaG9sZGVyOiAnYmx1cic7IGJsdXJEYXRhVVJMOiBzdHJpbmcgfVxuICApXG5cbmV4cG9ydCB0eXBlIE9iamVjdEltYWdlUHJvcHMgPSB7XG4gIHNyYzogU3RhdGljSW1wb3J0XG4gIHdpZHRoPzogbnVtYmVyXG4gIGhlaWdodD86IG51bWJlciB8IHN0cmluZ1xuICBsYXlvdXQ/OiBMYXlvdXRWYWx1ZVxuICBwbGFjZWhvbGRlcj86IFBsYWNlaG9sZGVyVmFsdWVcbiAgYmx1ckRhdGFVUkw/OiBuZXZlclxufVxuXG5leHBvcnQgdHlwZSBJbWFnZVByb3BzID0gQmFzZUltYWdlUHJvcHMgJiAoU3RyaW5nSW1hZ2VQcm9wcyB8IE9iamVjdEltYWdlUHJvcHMpXG5cbmV4cG9ydCB0eXBlIFN0cmluZ0ltYWdlID0gQmFzZUltYWdlUHJvcHMgJiBTdHJpbmdJbWFnZVByb3BzXG5leHBvcnQgdHlwZSBPYmplY3RJbWFnZSA9IEJhc2VJbWFnZVByb3BzICYgT2JqZWN0SW1hZ2VQcm9wc1xuXG5jb25zdCBJbWFnZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEltYWdlRWxlbWVudCwgSW1hZ2VQcm9wcz4oXG4gIChcbiAgICB7XG4gICAgICBzcmMsXG4gICAgICBzaXplczogc2l6ZXNJbmNvbW1pbmcsXG4gICAgICB1bm9wdGltaXplZCA9IGZhbHNlLFxuICAgICAgbG9hZGluZyxcbiAgICAgIGxheW91dCA9ICdyZXNwb25zaXZlJyxcbiAgICAgIHF1YWxpdHksXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIHN0eWxlLFxuICAgICAgbG9hZGVyID0gZGVmYXVsdEltYWdlTG9hZGVyLFxuICAgICAgcGxhY2Vob2xkZXIgPSAnZW1wdHknLFxuICAgICAgYmx1ckRhdGFVUkwsXG4gICAgICAuLi5pbWdQcm9wc1xuICAgIH0sXG4gICAgZm9yd2FyZGVkUmVmLFxuICApID0+IHtcbiAgICBjb25zdCByZWYgPSB1c2VGb3J3YXJkZWRSZWYoZm9yd2FyZGVkUmVmKVxuXG4gICAgY29uc3Qgc2l6ZXNPcmlnID1cbiAgICAgIGxheW91dCA9PT0gJ2ZpeGVkJyAmJiB3aWR0aCAmJiAhc2l6ZXNJbmNvbW1pbmdcbiAgICAgICAgPyAoYCR7d2lkdGh9cHhgIGFzIFNpemVzU3RyaW5nKVxuICAgICAgICA6IHNpemVzSW5jb21taW5nXG5cbiAgICBjb25zdCBzaXplcyA9IGdlbmVyYXRlU2l6ZXNTdHJpbmcoc2l6ZXNPcmlnKSA/PyAnNTB2dydcblxuICAgIC8vIElmIG5vIHJlc3BvbnNpdmUgc2l6ZXMgYXJlIGdpdmVuLCB3ZSdyZSBkZWZhdWx0aW5nIHRvIDUwdncgb24gbW9iaWxlXG4gICAgLy8gY29uc3QgW3NpemVzLCBzZXRTaXplc10gPSB1c2VTdGF0ZSh0b1NpemVzU3RyaW5nKHNpemVzT3JpZykgPz8gYDUwdndgKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSByZXR1cm4gKCkgPT4ge31cbiAgICAgIGlmICghcmVmLmN1cnJlbnQpIHJldHVybiAoKSA9PiB7fVxuXG4gICAgICAvLyBXYXJuIHRoZSB1c2VyIHdoZW4gaGUgaXNuJ3QgcHJvdmlkaW5nIHNpemVzIGFuZCBob3cgdG8gcHJvY2VlZFxuICAgICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudFdpZHRoID0gKGVudHJ5LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50KS5uYXR1cmFsV2lkdGhcblxuICAgICAgICBsZXQgcmF0aW86IG51bWJlclxuXG4gICAgICAgIGxldCBtc2cgPSAnJ1xuICAgICAgICBjb25zdCBbYnJlYWtwb2ludCwgc2l6ZV0gPSBzaXplc0VudHJpZXMoc2l6ZXNPcmlnKS5maW5kKChbc10pID0+XG4gICAgICAgICAgcyA9PT0gMCA/IHRydWUgOiB3aW5kb3cubWF0Y2hNZWRpYShgKG1pbi13aWR0aDogJHtzfSlgKSxcbiAgICAgICAgKSA/PyBbMCwgJzEwMHZ3J11cbiAgICAgICAgaWYgKHNpemUpIHtcbiAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdzdHlsZScsIGB3aWR0aDogJHtzaXplfWApXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbClcbiAgICAgICAgICBjb25zdCBtZWFzdXJlZFdpZHRoID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGhcbiAgICAgICAgICAvLyBlbC5yZW1vdmUoKVxuICAgICAgICAgIHJhdGlvID0gbWVhc3VyZWRXaWR0aCAqKiAyIC8gY3VycmVudFdpZHRoICoqIDJcbiAgICAgICAgICBtc2cgKz0gYEltYWdlIGhhcyBcInNpemVzXCIgcHJvcGVydHkgc2V0LCBidXQgc2l6ZSAnbWluLXdpZHRoKCR7YnJlYWtwb2ludH1weCkgJHtzaXplfScgaXMgaW5jb3JyZWN0LmBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtc2cgKz0gYEltYWdlIGhhcyBubyBcInNpemVzXCIgcHJvcGVydHkgc2V0LmBcbiAgICAgICAgICByYXRpbyA9ICh3aW5kb3cuaW5uZXJXaWR0aCAqIDAuNSkgKiogMiAvIGN1cnJlbnRXaWR0aCAqKiAyXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3VuZCA9IChucjogbnVtYmVyKSA9PiBNYXRoLnJvdW5kKG5yICogMTAwKSAvIDEwMFxuICAgICAgICBpZiAocmF0aW8gPiAxLjIpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiAke21zZ30gQ3VycmVudGx5IGRvd25sb2FkaW5nIGFuIGltYWdlIHRoYXQgaGFzICR7cm91bmQoXG4gICAgICAgICAgICAgIHJhdGlvLFxuICAgICAgICAgICAgKX14IHRvbyBtYW55IHBpeGVsc2AsXG4gICAgICAgICAgICBlbnRyeS50YXJnZXQsXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKHJhdGlvIDwgMC44KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogJHttc2d9IEN1cnJlbnRseSBkb3dubG9hZGluZyBhbiBpbWFnZSB0aGF0IGhhcyAke3JvdW5kKFxuICAgICAgICAgICAgICAxIC8gcmF0aW8sXG4gICAgICAgICAgICApfXggdG9vIGZldyBwaXhlbHNgLFxuICAgICAgICAgICAgZW50cnkudGFyZ2V0LFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJvLm9ic2VydmUocmVmLmN1cnJlbnQpXG5cbiAgICAgIHJldHVybiAoKSA9PiByby5kaXNjb25uZWN0KClcbiAgICB9LCBbbGF5b3V0LCByZWYsIHNpemVzT3JpZywgc3JjLCB3aWR0aF0pXG5cbiAgICBsZXQgc3RhdGljU3JjID0gJydcbiAgICBpZiAoaXNTdGF0aWNJbXBvcnQoc3JjKSkge1xuICAgICAgY29uc3Qgc3RhdGljSW1hZ2VEYXRhID0gaXNTdGF0aWNSZXF1aXJlKHNyYykgPyBzcmMuZGVmYXVsdCA6IHNyY1xuICAgICAgaWYgKCFzdGF0aWNJbWFnZURhdGEuc3JjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBBbiBvYmplY3Qgc2hvdWxkIG9ubHkgYmUgcGFzc2VkIHRvIHRoZSBpbWFnZSBjb21wb25lbnQgc3JjIHBhcmFtZXRlciBpZiBpdCBjb21lcyBmcm9tIGEgc3RhdGljIGltYWdlIGltcG9ydC4gSXQgbXVzdCBpbmNsdWRlIHNyYy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHN0YXRpY0ltYWdlRGF0YSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGJsdXJEYXRhVVJMID0gYmx1ckRhdGFVUkwgfHwgc3RhdGljSW1hZ2VEYXRhLmJsdXJEYXRhVVJMXG4gICAgICBzdGF0aWNTcmMgPSBzdGF0aWNJbWFnZURhdGEuc3JjXG4gICAgICBpZiAoIWxheW91dCB8fCBsYXlvdXQgIT09ICdmaWxsJykge1xuICAgICAgICBoZWlnaHQgPSBoZWlnaHQgfHwgc3RhdGljSW1hZ2VEYXRhLmhlaWdodFxuICAgICAgICB3aWR0aCA9IHdpZHRoIHx8IHN0YXRpY0ltYWdlRGF0YS53aWR0aFxuICAgICAgICBpZiAoIXN0YXRpY0ltYWdlRGF0YS5oZWlnaHQgfHwgIXN0YXRpY0ltYWdlRGF0YS53aWR0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEFuIG9iamVjdCBzaG91bGQgb25seSBiZSBwYXNzZWQgdG8gdGhlIGltYWdlIGNvbXBvbmVudCBzcmMgcGFyYW1ldGVyIGlmIGl0IGNvbWVzIGZyb20gYSBzdGF0aWMgaW1hZ2UgaW1wb3J0LiBJdCBtdXN0IGluY2x1ZGUgaGVpZ2h0IGFuZCB3aWR0aC4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgc3RhdGljSW1hZ2VEYXRhLFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBzcmMgPSB0eXBlb2Ygc3JjID09PSAnc3RyaW5nJyA/IHNyYyA6IHN0YXRpY1NyY1xuXG4gICAgY29uc3Qgd2lkdGhJbnQgPSBnZXRJbnQod2lkdGgpXG4gICAgY29uc3QgaGVpZ2h0SW50ID0gZ2V0SW50KGhlaWdodClcbiAgICBjb25zdCBxdWFsaXR5SW50ID0gZ2V0SW50KHF1YWxpdHkpXG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIGlzIG1pc3NpbmcgcmVxdWlyZWQgXCJzcmNcIiBwcm9wZXJ0eS4gTWFrZSBzdXJlIHlvdSBwYXNzIFwic3JjXCIgaW4gcHJvcHMgdG8gdGhlIFxcYEByZWFjaGRpZ2l0YWwvaW1hZ2VcXGAgY29tcG9uZW50LiBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHsgd2lkdGgsIGhlaWdodCwgcXVhbGl0eSB9LFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKCFWQUxJRF9MQVlPVVRfVkFMVUVTLmluY2x1ZGVzKGxheW91dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaGFzIGludmFsaWQgXCJsYXlvdXRcIiBwcm9wZXJ0eS4gUHJvdmlkZWQgXCIke2xheW91dH1cIiBzaG91bGQgYmUgb25lIG9mICR7VkFMSURfTEFZT1VUX1ZBTFVFUy5tYXAoXG4gICAgICAgICAgICBTdHJpbmcsXG4gICAgICAgICAgKS5qb2luKCcsJyl9LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKHR5cGVvZiB3aWR0aEludCAhPT0gJ3VuZGVmaW5lZCcgJiYgTnVtYmVyLmlzTmFOKHdpZHRoSW50KSkgfHxcbiAgICAgICAgKHR5cGVvZiBoZWlnaHRJbnQgIT09ICd1bmRlZmluZWQnICYmIE51bWJlci5pc05hTihoZWlnaHRJbnQpKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBpbnZhbGlkIFwid2lkdGhcIiBvciBcImhlaWdodFwiIHByb3BlcnR5LiBUaGVzZSBzaG91bGQgYmUgbnVtZXJpYyB2YWx1ZXMuYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKCFWQUxJRF9MT0FESU5HX1ZBTFVFUy5pbmNsdWRlcyhsb2FkaW5nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgaW52YWxpZCBcImxvYWRpbmdcIiBwcm9wZXJ0eS4gUHJvdmlkZWQgXCIke2xvYWRpbmd9XCIgc2hvdWxkIGJlIG9uZSBvZiAke1ZBTElEX0xPQURJTkdfVkFMVUVTLm1hcChcbiAgICAgICAgICAgIFN0cmluZyxcbiAgICAgICAgICApLmpvaW4oJywnKX0uYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKHBsYWNlaG9sZGVyID09PSAnYmx1cicpIHtcbiAgICAgICAgaWYgKGxheW91dCAhPT0gJ2ZpbGwnICYmICh3aWR0aEludCB8fCAwKSAqIChoZWlnaHRJbnQgfHwgMCkgPCAxNjAwKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBpcyBzbWFsbGVyIHRoYW4gNDB4NDAuIENvbnNpZGVyIHJlbW92aW5nIHRoZSBcInBsYWNlaG9sZGVyPSdibHVyJ1wiIHByb3BlcnR5IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFibHVyRGF0YVVSTCkge1xuICAgICAgICAgIGNvbnN0IFZBTElEX0JMVVJfRVhUID0gWydqcGVnJywgJ3BuZycsICd3ZWJwJ10gLy8gc2hvdWxkIG1hdGNoIG5leHQtaW1hZ2UtbG9hZGVyXG5cbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBcInBsYWNlaG9sZGVyPSdibHVyJ1wiIHByb3BlcnR5IGJ1dCBpcyBtaXNzaW5nIHRoZSBcImJsdXJEYXRhVVJMXCIgcHJvcGVydHkuXG4gICAgICAgICAgUG9zc2libGUgc29sdXRpb25zOlxuICAgICAgICAgICAgLSBBZGQgYSBcImJsdXJEYXRhVVJMXCIgcHJvcGVydHksIHRoZSBjb250ZW50cyBzaG91bGQgYmUgYSBzbWFsbCBEYXRhIFVSTCB0byByZXByZXNlbnQgdGhlIGltYWdlXG4gICAgICAgICAgICAtIENoYW5nZSB0aGUgXCJzcmNcIiBwcm9wZXJ0eSB0byBhIHN0YXRpYyBpbXBvcnQgd2l0aCBvbmUgb2YgdGhlIHN1cHBvcnRlZCBmaWxlIHR5cGVzOiAke1ZBTElEX0JMVVJfRVhULmpvaW4oXG4gICAgICAgICAgICAgICcsJyxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICAtIFJlbW92ZSB0aGUgXCJwbGFjZWhvbGRlclwiIHByb3BlcnR5LCBlZmZlY3RpdmVseSBubyBibHVyIGVmZmVjdFxuICAgICAgICAgIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcGxhY2Vob2xkZXItYmx1ci1kYXRhLXVybGAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aWR0aEludCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGhlaWdodEludCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChsYXlvdXQgPT09ICdmaWxsJykge1xuICAgICAgICAvLyBoYW5kbGUgZmlsbFxuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIDxJbWFnZSBzcmM9XCJpLnBuZ1wiIC8+XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIG11c3QgdXNlIFwid2lkdGhcIiBhbmQgXCJoZWlnaHRcIiBwcm9wZXJ0aWVzIG9yIFwibGF5b3V0PSdmaWxsJ1wiIHByb3BlcnR5LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkaW5nID8/PSAnbGF6eSdcbiAgICBpZiAoc3JjICYmIHNyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJc1xuICAgICAgdW5vcHRpbWl6ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlczN4ID0gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gICAgICBzcmMsXG4gICAgICBsYXlvdXQ6IGxheW91dCBhcyBMYXlvdXRWYWx1ZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHF1YWxpdHk6IHF1YWxpdHlJbnQsXG4gICAgICBzaXplcyxcbiAgICAgIHdpZHRoOiB3aWR0aEludCxcbiAgICAgIHNjYWxlOiAxLjUsXG4gICAgfSlcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMyeCA9IGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICAgICAgc3JjLFxuICAgICAgbGF5b3V0OiBsYXlvdXQgYXMgTGF5b3V0VmFsdWUsXG4gICAgICBsb2FkZXIsXG4gICAgICBxdWFsaXR5OiBxdWFsaXR5SW50LFxuICAgICAgc2l6ZXMsXG4gICAgICB3aWR0aDogd2lkdGhJbnQsXG4gICAgICBzY2FsZTogMSxcbiAgICB9KVxuXG4gICAgY29uc3QgYXR0cmlidXRlczF4ID0gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gICAgICBzcmMsXG4gICAgICBsYXlvdXQ6IGxheW91dCBhcyBMYXlvdXRWYWx1ZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHF1YWxpdHk6IHF1YWxpdHlJbnQsXG4gICAgICBzaXplcyxcbiAgICAgIHdpZHRoOiB3aWR0aEludCxcbiAgICAgIHNjYWxlOiAwLjUsXG4gICAgfSlcblxuICAgIGlmIChsYXlvdXQgIT09ICdmaXhlZCcgJiYgIXN0eWxlKSBzdHlsZSA9IHt9XG4gICAgaWYgKGxheW91dCA9PT0gJ3Jlc3BvbnNpdmUnKSBzdHlsZSA9IHsgLi4uc3R5bGUsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2F1dG8nIH1cbiAgICBpZiAobGF5b3V0ID09PSAnaW50cmluc2ljJykgc3R5bGUgPSB7IC4uLnN0eWxlLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJywgbWF4V2lkdGg6IHdpZHRoIH1cbiAgICBpZiAobGF5b3V0ID09PSAnZmlsbCcpIHN0eWxlID0geyAuLi5zdHlsZSwgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt1bm9wdGltaXplZCA/IChcbiAgICAgICAgICA8aW1nIHJlZj17cmVmfSB7Li4uaW1nUHJvcHN9IHNyYz17c3JjfSB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSBzdHlsZT17c3R5bGV9IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPHBpY3R1cmU+XG4gICAgICAgICAgICA8c291cmNlIG1lZGlhPScoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLjUpJyB7Li4uYXR0cmlidXRlczN4fSAvPlxuICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0nKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KScgey4uLmF0dHJpYnV0ZXMyeH0gLz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgIHsuLi5pbWdQcm9wc31cbiAgICAgICAgICAgICAgey4uLmF0dHJpYnV0ZXMxeH1cbiAgICAgICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkaW5nID09PSAnZWFnZXInICYmIChcbiAgICAgICAgICA8SGVhZD5cbiAgICAgICAgICAgIDxsaW5rXG4gICAgICAgICAgICAgIGtleT17YF9fbmltZy0yeC0ke2F0dHJpYnV0ZXMxeC5zcmNTZXR9JHthdHRyaWJ1dGVzMXguc2l6ZXN9YH1cbiAgICAgICAgICAgICAgcmVsPSdwcmVsb2FkJ1xuICAgICAgICAgICAgICBhcz0naW1hZ2UnXG4gICAgICAgICAgICAgIG1lZGlhPScoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLjUpJ1xuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGltYWdlc3Jjc2V0IGlzIG5vdCB5ZXQgaW4gdGhlIGxpbmsgZWxlbWVudCB0eXBlXG4gICAgICAgICAgICAgIGltYWdlc3Jjc2V0PXthdHRyaWJ1dGVzMXguc3JjU2V0fVxuICAgICAgICAgICAgICBpbWFnZXNpemVzPXtzaXplc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9IZWFkPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9LFxuKVxuSW1hZ2UuZGlzcGxheU5hbWUgPSAnTmV4dFBpY3R1cmUnXG5cbmV4cG9ydCB7IEltYWdlIH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../components/Image.tsx\n");
19
+
20
+ /***/ })
21
+
22
+ });
@@ -0,0 +1,22 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ self["webpackHotUpdate_N_E"]("pages/index",{
10
+
11
+ /***/ "../components/Image.tsx":
12
+ /*!*******************************!*\
13
+ !*** ../components/Image.tsx ***!
14
+ \*******************************/
15
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
16
+
17
+ "use strict";
18
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isStaticRequire\": function() { return /* binding */ isStaticRequire; },\n/* harmony export */ \"isStaticImageData\": function() { return /* binding */ isStaticImageData; },\n/* harmony export */ \"isStaticImport\": function() { return /* binding */ isStaticImport; },\n/* harmony export */ \"getInt\": function() { return /* binding */ getInt; },\n/* harmony export */ \"Image\": function() { return /* binding */ Image; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"../../../node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"../../../node_modules/next/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @bedrock-layout/use-forwarded-ref */ \"../../../node_modules/@bedrock-layout/use-forwarded-ref/lib/index.m.js\");\n/* harmony import */ var next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/next-server/server/image-config */ \"../../../node_modules/next/dist/next-server/server/image-config.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/head */ \"../../../node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"../../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _config_config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config/config */ \"../config/config.ts\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n\n\nvar _jsxFileName = \"/Users/paulhachmang/Sites/reachdigital-next/packages/image/components/Image.tsx\",\n _s = $RefreshSig$();\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable prefer-const */\n\n/* eslint-disable no-param-reassign */\n\n/* eslint-disable @next/next/no-img-element */\n\n/* eslint-disable jsx-a11y/alt-text */\n\n\n\n\n\n\nif (false) {}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined];\nconst loaders = new Map([['imgix', _config_config__WEBPACK_IMPORTED_MODULE_6__.imgixLoader], ['cloudinary', _config_config__WEBPACK_IMPORTED_MODULE_6__.cloudinaryLoader], ['akamai', _config_config__WEBPACK_IMPORTED_MODULE_6__.akamaiLoader], ['default', _config_config__WEBPACK_IMPORTED_MODULE_6__.defaultLoader]]);\nconst VALID_LAYOUT_VALUES = ['fill', 'responsive', 'intrinsic', 'fixed'];\nfunction isStaticRequire(src) {\n return src.default !== undefined;\n}\nfunction isStaticImageData(src) {\n return src.src !== undefined;\n}\nfunction isStaticImport(src) {\n return typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));\n} // sort smallest to largest\n\nconst allSizes = [..._config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes, ..._config_config__WEBPACK_IMPORTED_MODULE_6__.configImageSizes];\n_config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes.sort((a, b) => a - b);\nallSizes.sort((a, b) => a - b);\n\nfunction getWidths(width, layout, sizes = '', scale) {\n if (sizes && layout === 'fill' || layout === 'responsive') {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g;\n const percentSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = viewportWidthRe.exec(sizes); match) {\n var _match;\n\n percentSizes.push(parseInt((_match = match) === null || _match === void 0 ? void 0 : _match[2], 10));\n }\n\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01;\n return {\n widths: allSizes.filter(s => s >= _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes[0] * smallestRatio),\n kind: 'w'\n };\n } // Find all the \"px\" sizes used in the sizes prop\n\n\n const pxWidthRe = /(^|\\s)(1?\\d+)px/g;\n const pxSizes = []; // eslint-disable-next-line no-cond-assign\n\n for (let match; match = pxWidthRe.exec(sizes); match) {\n var _match2;\n\n pxSizes.push(parseInt((_match2 = match) === null || _match2 === void 0 ? void 0 : _match2[2], 10));\n }\n\n if (pxSizes.length) {\n return {\n widths: pxSizes.map(pxSize => {\n var _allSizes$filter, _allSizes$filter2;\n\n const scaled = (_allSizes$filter = allSizes.filter(s => s * scale > pxSize)) === null || _allSizes$filter === void 0 ? void 0 : _allSizes$filter[0];\n const dpr2 = (_allSizes$filter2 = allSizes.filter(s => s > pxSize)) === null || _allSizes$filter2 === void 0 ? void 0 : _allSizes$filter2[0];\n return scale > 1 ? Math.max(scaled, dpr2) : Math.min(scaled, dpr2);\n }),\n kind: 'w'\n };\n }\n\n return {\n widths: allSizes,\n kind: 'w'\n };\n }\n\n if (typeof width !== 'number' || layout === 'fill') {\n return {\n widths: _config_config__WEBPACK_IMPORTED_MODULE_6__.configDeviceSizes,\n kind: 'w'\n };\n }\n\n const widths = [...new Set( // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2\n /* , width * 3*/\n ].map(w => allSizes.find(p => p >= w) || allSizes[allSizes.length - 1]))];\n return {\n widths,\n kind: 'x'\n };\n}\n\nfunction generateSourceAttrs({\n src,\n layout,\n width,\n quality = 44,\n sizes,\n loader,\n scale\n}) {\n const {\n widths,\n kind\n } = getWidths(width, layout, sizes, scale);\n return {\n sizes: !sizes && kind === 'w' ? `50vw` : sizes,\n srcSet: widths.map((w, i) => `${loader({\n src,\n quality,\n width: w\n })} ${kind === 'w' ? Math.round(w * scale) : i + 1}${kind}`).join(', ')\n };\n}\n\nfunction getInt(x) {\n if (typeof x === 'number') {\n return x;\n }\n\n if (typeof x === 'string') {\n return parseInt(x, 10);\n }\n\n return undefined;\n}\n\nfunction defaultImageLoader(loaderProps) {\n const load = loaders.get(_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader);\n\n if (load) {\n return load(_objectSpread({\n root: _config_config__WEBPACK_IMPORTED_MODULE_6__.configPath\n }, loaderProps));\n }\n\n throw new Error(`[@reachdigital/image]: Unknown \"loader\" found in \"next.config.js\". Expected: ${next_dist_next_server_server_image_config__WEBPACK_IMPORTED_MODULE_3__.VALID_LOADERS.join(', ')}. Received: ${_config_config__WEBPACK_IMPORTED_MODULE_6__.configLoader}`);\n} // See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\n\n\nfunction removePlaceholder(img, placeholder) {\n if (placeholder === 'blur' && img) {\n const handleLoad = () => {\n if (!img.src.startsWith('data:')) {\n const p = 'decode' in img ? img.decode() : Promise.resolve(); // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n p.catch(() => {}).then(() => {\n img.style.filter = 'none';\n img.style.backgroundSize = 'none';\n img.style.backgroundImage = 'none';\n });\n }\n };\n\n if (img.complete) {\n // If the real image fails to load, this will still remove the placeholder.\n // This is the desired behavior for now, and will be revisited when error\n // handling is worked on for the image component itself.\n handleLoad();\n } else {\n img.onload = handleLoad;\n }\n }\n}\n/** Checks whether an image is currently in the viewport */\n\n\nfunction isInViewport(elem) {\n const {\n top,\n right,\n bottom,\n left\n } = elem.getBoundingClientRect();\n return bottom >= 0 && right >= 0 && top <= window.innerHeight && left <= window.innerWidth;\n}\n\nfunction isSizesRecord(sizes) {\n return typeof sizes === 'object';\n}\n\nfunction sizesEntries(sizes) {\n if (isSizesRecord(sizes)) {\n return Object.entries(sizes).map(([breakpoint, size]) => [Number(breakpoint), size]).sort(([sizeA], [sizeB]) => sizeB - sizeA);\n }\n\n return [[0, sizes]];\n}\n\nfunction generateSizesString(sizes) {\n return sizesEntries(sizes).map(([breakpoint, size]) => {\n if (breakpoint === 0) return size;\n return `(min-width: ${breakpoint}px) ${size}`;\n }).join(', ');\n}\n/** Since we're handling stuff ourselves we omit some stuff */\n\n\nconst Image = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().forwardRef(_c = _s((_ref, forwardedRef) => {\n var _generateSizesString, _loading;\n\n _s();\n\n let {\n src,\n sizes: sizesOrig,\n unoptimized = false,\n loading,\n layout = 'responsive',\n quality,\n width,\n height,\n style,\n loader = defaultImageLoader,\n placeholder = 'empty',\n blurDataURL\n } = _ref,\n imgProps = (0,_Users_paulhachmang_Sites_reachdigital_next_node_modules_next_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__.default)(_ref, [\"src\", \"sizes\", \"unoptimized\", \"loading\", \"layout\", \"quality\", \"width\", \"height\", \"style\", \"loader\", \"placeholder\", \"blurDataURL\"]);\n\n const ref = (0,_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default)(forwardedRef);\n const sizes = (_generateSizesString = generateSizesString(layout === 'fixed' && width && !sizesOrig ? `${width}px` : sizesOrig)) !== null && _generateSizesString !== void 0 ? _generateSizesString : '50vw'; // If no responsive sizes are given, we're defaulting to 50vw on mobile\n // const [sizes, setSizes] = useState(toSizesString(sizesOrig) ?? `50vw`)\n\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (!ref.current || false || layout !== 'fixed') return () => {}; // Warn the user when he isn't providing sizes and how to proceed\n\n const ro = new ResizeObserver(([entry]) => {\n var _sizesEntries$find;\n\n const currentvw = entry.contentRect.width;\n let ratio;\n let msg = '';\n const [breakpoint, size] = (_sizesEntries$find = sizesEntries(sizesOrig).find(([s]) => s === 0 ? true : window.matchMedia(`(min-width: ${s})`))) !== null && _sizesEntries$find !== void 0 ? _sizesEntries$find : [0, '100vw'];\n\n if (size) {\n const el = document.createElement('div');\n el.setAttribute('style', `width: ${size}`);\n document.body.appendChild(el);\n const measuredWidth = el.getBoundingClientRect().width; // el.remove()\n\n ratio = measuredWidth ** 2 / currentvw ** 2;\n msg += `Image has \"sizes\" property set, but size 'min-width(${breakpoint}px) ${size}' is incorrect.`;\n } else {\n msg += `Image has no \"sizes\" property set.`;\n ratio = (window.innerWidth * 0.5) ** 2 / currentvw ** 2;\n }\n\n const round = nr => Math.round(nr * 100) / 100;\n\n if (ratio > 1.2) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(ratio)}x too many pixels`, entry.target);\n } else if (ratio < 0.8) {\n console.warn(`[@reachdigital/image]: ${msg} Currently downloading an image that has ${round(1 / ratio)}x too few pixels`, entry.target);\n }\n });\n ro.observe(ref.current);\n return () => ro.disconnect();\n }, [layout, ref, sizesOrig, src]);\n let staticSrc = '';\n\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src;\n\n if (!staticImageData.src) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(staticImageData)}`);\n }\n\n blurDataURL = blurDataURL || staticImageData.blurDataURL;\n staticSrc = staticImageData.src;\n\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height;\n width = width || staticImageData.width;\n\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(`[@reachdigital/image]: An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(staticImageData)}`);\n }\n }\n }\n\n src = typeof src === 'string' ? src : staticSrc;\n const widthInt = getInt(width);\n const heightInt = getInt(height);\n const qualityInt = getInt(quality);\n\n if (true) {\n if (!src) {\n throw new Error(`[@reachdigital/image]: Image is missing required \"src\" property. Make sure you pass \"src\" in props to the \\`@reachdigital/image\\` component. Received: ${JSON.stringify({\n width,\n height,\n quality\n })}`);\n }\n\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(String).join(',')}.`);\n }\n\n if (typeof widthInt !== 'undefined' && Number.isNaN(widthInt) || typeof heightInt !== 'undefined' && Number.isNaN(heightInt)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`);\n }\n\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`);\n }\n\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n console.warn(`[@reachdigital/image]: Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`);\n }\n\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp']; // should match next-image-loader\n\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')}\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`);\n }\n }\n }\n\n if (typeof widthInt === 'undefined' && typeof heightInt === 'undefined') {\n if (layout === 'fill') {// handle fill\n } else if (true) {\n // <Image src=\"i.png\" />\n throw new Error(`[@reachdigital/image]: Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`);\n }\n }\n\n (_loading = loading) !== null && _loading !== void 0 ? _loading : loading = 'lazy';\n\n if (src && src.startsWith('data:')) {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true;\n }\n\n const attributes3x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1.5\n });\n const attributes2x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 1\n });\n const attributes1x = generateSourceAttrs({\n src,\n layout: layout,\n loader,\n quality: qualityInt,\n sizes,\n width: widthInt,\n scale: 0.5\n });\n if (layout !== 'fixed' && !style) style = {};\n if (layout === 'responsive') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto'\n });\n if (layout === 'intrinsic') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: 'auto',\n maxWidth: width\n });\n if (layout === 'fill') style = _objectSpread(_objectSpread({}, style), {}, {\n width: '100%',\n height: '100%'\n });\n return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [unoptimized ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread({\n ref: ref\n }, imgProps), {}, {\n src: src,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 609,\n columnNumber: 11\n }, undefined) : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"picture\", {\n children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\"\n }, attributes3x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 612,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", _objectSpread({\n media: \"(-webkit-min-device-pixel-ratio: 1.5)\"\n }, attributes2x), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 613,\n columnNumber: 13\n }, undefined), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", _objectSpread(_objectSpread(_objectSpread({\n ref: ref\n }, imgProps), attributes1x), {}, {\n loading: loading,\n width: width,\n height: height,\n style: style\n }), void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 614,\n columnNumber: 13\n }, undefined)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 611,\n columnNumber: 11\n }, undefined), loading === 'eager' && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_4___default()), {\n children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"preload\",\n as: \"image\",\n media: \"(-webkit-min-device-pixel-ratio: 2.5)\" // @ts-expect-error imagesrcset is not yet in the link element type\n ,\n imagesrcset: attributes1x.srcSet,\n imagesizes: sizes\n }, `__nimg-2x-${attributes1x.srcSet}${attributes1x.sizes}`, false, {\n fileName: _jsxFileName,\n lineNumber: 627,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 626,\n columnNumber: 11\n }, undefined)]\n }, void 0, true);\n}, \"uc1ywpQv+s/tGng4xj/L6VVOIq8=\", false, function () {\n return [_bedrock_layout_use_forwarded_ref__WEBPACK_IMPORTED_MODULE_7__.default];\n}));\n_c2 = Image;\nImage.displayName = 'NextPicture';\n\n\nvar _c, _c2;\n\n$RefreshReg$(_c, \"Image$React.forwardRef\");\n$RefreshReg$(_c2, \"Image\");\n\n;\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n var currentExports = module.__proto__.exports;\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4uL2NvbXBvbmVudHMvSW1hZ2UudHN4PzJiNmQiXSwibmFtZXMiOlsiVkFMSURfTE9BRElOR19WQUxVRVMiLCJ1bmRlZmluZWQiLCJsb2FkZXJzIiwiTWFwIiwiaW1naXhMb2FkZXIiLCJjbG91ZGluYXJ5TG9hZGVyIiwiYWthbWFpTG9hZGVyIiwiZGVmYXVsdExvYWRlciIsIlZBTElEX0xBWU9VVF9WQUxVRVMiLCJpc1N0YXRpY1JlcXVpcmUiLCJzcmMiLCJkZWZhdWx0IiwiaXNTdGF0aWNJbWFnZURhdGEiLCJpc1N0YXRpY0ltcG9ydCIsImFsbFNpemVzIiwiY29uZmlnRGV2aWNlU2l6ZXMiLCJjb25maWdJbWFnZVNpemVzIiwiYSIsImIiLCJzb3J0IiwiZ2V0V2lkdGhzIiwid2lkdGgiLCJsYXlvdXQiLCJzaXplcyIsInNjYWxlIiwidmlld3BvcnRXaWR0aFJlIiwicGVyY2VudFNpemVzIiwibWF0Y2giLCJleGVjIiwicHVzaCIsInBhcnNlSW50IiwibGVuZ3RoIiwic21hbGxlc3RSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aWR0aHMiLCJmaWx0ZXIiLCJzIiwia2luZCIsInB4V2lkdGhSZSIsInB4U2l6ZXMiLCJtYXAiLCJweFNpemUiLCJzY2FsZWQiLCJkcHIyIiwibWF4IiwiU2V0IiwidyIsImZpbmQiLCJwIiwiZ2VuZXJhdGVTb3VyY2VBdHRycyIsInF1YWxpdHkiLCJsb2FkZXIiLCJzcmNTZXQiLCJpIiwicm91bmQiLCJqb2luIiwiZ2V0SW50IiwieCIsImRlZmF1bHRJbWFnZUxvYWRlciIsImxvYWRlclByb3BzIiwibG9hZCIsImdldCIsImNvbmZpZ0xvYWRlciIsInJvb3QiLCJjb25maWdQYXRoIiwiRXJyb3IiLCJWQUxJRF9MT0FERVJTIiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJpbWciLCJwbGFjZWhvbGRlciIsImhhbmRsZUxvYWQiLCJzdGFydHNXaXRoIiwiZGVjb2RlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjYXRjaCIsInRoZW4iLCJzdHlsZSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZEltYWdlIiwiY29tcGxldGUiLCJvbmxvYWQiLCJpc0luVmlld3BvcnQiLCJlbGVtIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiaXNTaXplc1JlY29yZCIsInNpemVzRW50cmllcyIsIk9iamVjdCIsImVudHJpZXMiLCJicmVha3BvaW50Iiwic2l6ZSIsIk51bWJlciIsInNpemVBIiwic2l6ZUIiLCJnZW5lcmF0ZVNpemVzU3RyaW5nIiwiSW1hZ2UiLCJSZWFjdCIsImZvcndhcmRlZFJlZiIsInNpemVzT3JpZyIsInVub3B0aW1pemVkIiwibG9hZGluZyIsImhlaWdodCIsImJsdXJEYXRhVVJMIiwiaW1nUHJvcHMiLCJyZWYiLCJ1c2VGb3J3YXJkZWRSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50Iiwicm8iLCJSZXNpemVPYnNlcnZlciIsImVudHJ5IiwiY3VycmVudHZ3IiwiY29udGVudFJlY3QiLCJyYXRpbyIsIm1zZyIsIm1hdGNoTWVkaWEiLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm1lYXN1cmVkV2lkdGgiLCJuciIsImNvbnNvbGUiLCJ3YXJuIiwidGFyZ2V0Iiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJzdGF0aWNTcmMiLCJzdGF0aWNJbWFnZURhdGEiLCJKU09OIiwic3RyaW5naWZ5Iiwid2lkdGhJbnQiLCJoZWlnaHRJbnQiLCJxdWFsaXR5SW50IiwiaW5jbHVkZXMiLCJTdHJpbmciLCJpc05hTiIsIlZBTElEX0JMVVJfRVhUIiwiYXR0cmlidXRlczN4IiwiYXR0cmlidXRlczJ4IiwiYXR0cmlidXRlczF4IiwibWF4V2lkdGgiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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Qyx1Q0FKUixDQUtFO0FBTEY7QUFNRSxtQkFBVyxFQUFFMEMsWUFBWSxDQUFDakcsTUFONUI7QUFPRSxrQkFBVSxFQUFFOUI7QUFQZCxTQUNRLGFBQVkrSCxZQUFZLENBQUNqRyxNQUFPLEdBQUVpRyxZQUFZLENBQUMvSCxLQUFNLEVBRDdEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFERjtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQW5CSjtBQUFBLGtCQURGO0FBa0NELENBdFBXO0FBQUEsVUFtQkUwRixzRUFuQkY7QUFBQSxHQUFkO01BQU1WLEs7QUF3UE5BLEtBQUssQ0FBQ2lELFdBQU4sR0FBb0IsYUFBcEI7QUFFQSIsImZpbGUiOiIuLi9jb21wb25lbnRzL0ltYWdlLnRzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1jb25zdCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEBuZXh0L25leHQvbm8taW1nLWVsZW1lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2FsdC10ZXh0ICovXG5pbXBvcnQgdXNlRm9yd2FyZGVkUmVmIGZyb20gJ0BiZWRyb2NrLWxheW91dC91c2UtZm9yd2FyZGVkLXJlZidcbmltcG9ydCB7IExvYWRlclZhbHVlLCBWQUxJRF9MT0FERVJTIH0gZnJvbSAnbmV4dC9kaXN0L25leHQtc2VydmVyL3NlcnZlci9pbWFnZS1jb25maWcnXG5pbXBvcnQgSGVhZCBmcm9tICduZXh0L2hlYWQnXG5pbXBvcnQgdHlwZSB7IEltYWdlTG9hZGVyUHJvcHMsIEltYWdlTG9hZGVyIH0gZnJvbSAnbmV4dC9pbWFnZSdcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlUmVzaXplT2JzZXJ2ZXIgZnJvbSAndXNlLXJlc2l6ZS1vYnNlcnZlcidcbmltcG9ydCB7XG4gIGFrYW1haUxvYWRlcixcbiAgY2xvdWRpbmFyeUxvYWRlcixcbiAgY29uZmlnRGV2aWNlU2l6ZXMsXG4gIGNvbmZpZ0ltYWdlU2l6ZXMsXG4gIGNvbmZpZ0xvYWRlcixcbiAgY29uZmlnUGF0aCxcbiAgRGVmYXVsdEltYWdlTG9hZGVyUHJvcHMsXG4gIGRlZmF1bHRMb2FkZXIsXG4gIGltZ2l4TG9hZGVyLFxufSBmcm9tICcuLi9jb25maWcvY29uZmlnJ1xuaW1wb3J0IHVzZUNvbm5lY3Rpb25UeXBlIGZyb20gJy4uL2hvb2tzL3VzZUNvbm5lY3Rpb25UeXBlJ1xuXG5pZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gIGdsb2JhbC5fX05FWFRfSU1BR0VfSU1QT1JURUQgPSB0cnVlXG59XG5cbmV4cG9ydCB0eXBlIHsgSW1hZ2VMb2FkZXJQcm9wcywgSW1hZ2VMb2FkZXIgfVxuXG5jb25zdCBWQUxJRF9MT0FESU5HX1ZBTFVFUyA9IFsnbGF6eScsICdlYWdlcicsIHVuZGVmaW5lZF0gYXMgY29uc3RcbnR5cGUgTG9hZGluZ1ZhbHVlID0gdHlwZW9mIFZBTElEX0xPQURJTkdfVkFMVUVTW251bWJlcl1cblxuY29uc3QgbG9hZGVycyA9IG5ldyBNYXA8TG9hZGVyVmFsdWUsIChwcm9wczogRGVmYXVsdEltYWdlTG9hZGVyUHJvcHMpID0+IHN0cmluZz4oW1xuICBbJ2ltZ2l4JywgaW1naXhMb2FkZXJdLFxuICBbJ2Nsb3VkaW5hcnknLCBjbG91ZGluYXJ5TG9hZGVyXSxcbiAgWydha2FtYWknLCBha2FtYWlMb2FkZXJdLFxuICBbJ2RlZmF1bHQnLCBkZWZhdWx0TG9hZGVyXSxcbl0pXG5cbmNvbnN0IFZBTElEX0xBWU9VVF9WQUxVRVMgPSBbJ2ZpbGwnLCAncmVzcG9uc2l2ZScsICdpbnRyaW5zaWMnLCAnZml4ZWQnXSBhcyBjb25zdFxudHlwZSBMYXlvdXRWYWx1ZSA9ICdmaWxsJyB8ICdmaXhlZCcgfCAnaW50cmluc2ljJyB8ICdyZXNwb25zaXZlJyB8IHVuZGVmaW5lZFxuXG50eXBlIFBsYWNlaG9sZGVyVmFsdWUgPSAnYmx1cicgfCAnZW1wdHknXG5cbnR5cGUgSW1nRWxlbWVudFN0eWxlID0gTm9uTnVsbGFibGU8SlNYLkludHJpbnNpY0VsZW1lbnRzWydpbWcnXVsnc3R5bGUnXT5cblxuaW50ZXJmYWNlIFN0YXRpY0ltYWdlRGF0YSB7XG4gIHNyYzogc3RyaW5nXG4gIGhlaWdodDogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgYmx1ckRhdGFVUkw/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFN0YXRpY1JlcXVpcmUge1xuICBkZWZhdWx0OiBTdGF0aWNJbWFnZURhdGFcbn1cblxudHlwZSBTdGF0aWNJbXBvcnQgPSBTdGF0aWNSZXF1aXJlIHwgU3RhdGljSW1hZ2VEYXRhXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY1JlcXVpcmUoc3JjOiBTdGF0aWNSZXF1aXJlIHwgU3RhdGljSW1hZ2VEYXRhKTogc3JjIGlzIFN0YXRpY1JlcXVpcmUge1xuICByZXR1cm4gKHNyYyBhcyBTdGF0aWNSZXF1aXJlKS5kZWZhdWx0ICE9PSB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljSW1hZ2VEYXRhKHNyYzogU3RhdGljUmVxdWlyZSB8IFN0YXRpY0ltYWdlRGF0YSk6IHNyYyBpcyBTdGF0aWNJbWFnZURhdGEge1xuICByZXR1cm4gKHNyYyBhcyBTdGF0aWNJbWFnZURhdGEpLnNyYyAhPT0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY0ltcG9ydChzcmM6IHN0cmluZyB8IFN0YXRpY0ltcG9ydCk6IHNyYyBpcyBTdGF0aWNJbXBvcnQge1xuICByZXR1cm4gdHlwZW9mIHNyYyA9PT0gJ29iamVjdCcgJiYgKGlzU3RhdGljUmVxdWlyZShzcmMpIHx8IGlzU3RhdGljSW1hZ2VEYXRhKHNyYykpXG59XG5cbi8vIHNvcnQgc21hbGxlc3QgdG8gbGFyZ2VzdFxuY29uc3QgYWxsU2l6ZXMgPSBbLi4uY29uZmlnRGV2aWNlU2l6ZXMsIC4uLmNvbmZpZ0ltYWdlU2l6ZXNdXG5jb25maWdEZXZpY2VTaXplcy5zb3J0KChhLCBiKSA9PiBhIC0gYilcbmFsbFNpemVzLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuXG5mdW5jdGlvbiBnZXRXaWR0aHMoXG4gIHdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGxheW91dDogTGF5b3V0VmFsdWUsXG4gIHNpemVzID0gJycsXG4gIHNjYWxlOiBudW1iZXIsXG4pOiB7IHdpZHRoczogbnVtYmVyW107IGtpbmQ6ICd3JyB8ICd4JyB9IHtcbiAgaWYgKChzaXplcyAmJiBsYXlvdXQgPT09ICdmaWxsJykgfHwgbGF5b3V0ID09PSAncmVzcG9uc2l2ZScpIHtcbiAgICAvLyBGaW5kIGFsbCB0aGUgXCJ2d1wiIHBlcmNlbnQgc2l6ZXMgdXNlZCBpbiB0aGUgc2l6ZXMgcHJvcFxuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGhSZSA9IC8oXnxcXHMpKDE/XFxkP1xcZCl2dy9nXG4gICAgY29uc3QgcGVyY2VudFNpemVzOiBudW1iZXJbXSA9IFtdXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgZm9yIChsZXQgbWF0Y2g6IHN0cmluZ1tdIHwgbnVsbDsgKG1hdGNoID0gdmlld3BvcnRXaWR0aFJlLmV4ZWMoc2l6ZXMpKTsgbWF0Y2gpIHtcbiAgICAgIHBlcmNlbnRTaXplcy5wdXNoKHBhcnNlSW50KG1hdGNoPy5bMl0sIDEwKSlcbiAgICB9XG4gICAgaWYgKHBlcmNlbnRTaXplcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNtYWxsZXN0UmF0aW8gPSBNYXRoLm1pbiguLi5wZXJjZW50U2l6ZXMpICogMC4wMVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aHM6IGFsbFNpemVzLmZpbHRlcigocykgPT4gcyA+PSBjb25maWdEZXZpY2VTaXplc1swXSAqIHNtYWxsZXN0UmF0aW8pLFxuICAgICAgICBraW5kOiAndycsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBhbGwgdGhlIFwicHhcIiBzaXplcyB1c2VkIGluIHRoZSBzaXplcyBwcm9wXG4gICAgY29uc3QgcHhXaWR0aFJlID0gLyhefFxccykoMT9cXGQrKXB4L2dcbiAgICBjb25zdCBweFNpemVzOiBudW1iZXJbXSA9IFtdXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgZm9yIChsZXQgbWF0Y2g6IHN0cmluZ1tdIHwgbnVsbDsgKG1hdGNoID0gcHhXaWR0aFJlLmV4ZWMoc2l6ZXMpKTsgbWF0Y2gpIHtcbiAgICAgIHB4U2l6ZXMucHVzaChwYXJzZUludChtYXRjaD8uWzJdLCAxMCkpXG4gICAgfVxuXG4gICAgaWYgKHB4U2l6ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aHM6IHB4U2l6ZXMubWFwKChweFNpemUpID0+IHtcbiAgICAgICAgICBjb25zdCBzY2FsZWQgPSBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgKiBzY2FsZSA+IHB4U2l6ZSk/LlswXVxuICAgICAgICAgIGNvbnN0IGRwcjIgPSBhbGxTaXplcy5maWx0ZXIoKHMpID0+IHMgPiBweFNpemUpPy5bMF1cbiAgICAgICAgICByZXR1cm4gc2NhbGUgPiAxID8gTWF0aC5tYXgoc2NhbGVkLCBkcHIyKSA6IE1hdGgubWluKHNjYWxlZCwgZHByMilcbiAgICAgICAgfSksXG4gICAgICAgIGtpbmQ6ICd3JyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB3aWR0aHM6IGFsbFNpemVzLCBraW5kOiAndycgfVxuICB9XG4gIGlmICh0eXBlb2Ygd2lkdGggIT09ICdudW1iZXInIHx8IGxheW91dCA9PT0gJ2ZpbGwnKSB7XG4gICAgcmV0dXJuIHsgd2lkdGhzOiBjb25maWdEZXZpY2VTaXplcywga2luZDogJ3cnIH1cbiAgfVxuXG4gIGNvbnN0IHdpZHRocyA9IFtcbiAgICAuLi5uZXcgU2V0KFxuICAgICAgLy8gPiBUaGlzIG1lYW5zIHRoYXQgbW9zdCBPTEVEIHNjcmVlbnMgdGhhdCBzYXkgdGhleSBhcmUgM3ggcmVzb2x1dGlvbixcbiAgICAgIC8vID4gYXJlIGFjdHVhbGx5IDN4IGluIHRoZSBncmVlbiBjb2xvciwgYnV0IG9ubHkgMS41eCBpbiB0aGUgcmVkIGFuZFxuICAgICAgLy8gPiBibHVlIGNvbG9ycy4gU2hvd2luZyBhIDN4IHJlc29sdXRpb24gaW1hZ2UgaW4gdGhlIGFwcCB2cyBhIDJ4XG4gICAgICAvLyA+IHJlc29sdXRpb24gaW1hZ2Ugd2lsbCBiZSB2aXN1YWxseSB0aGUgc2FtZSwgdGhvdWdoIHRoZSAzeCBpbWFnZVxuICAgICAgLy8gPiB0YWtlcyBzaWduaWZpY2FudGx5IG1vcmUgZGF0YS4gRXZlbiB0cnVlIDN4IHJlc29sdXRpb24gc2NyZWVucyBhcmVcbiAgICAgIC8vID4gd2FzdGVmdWwgYXMgdGhlIGh1bWFuIGV5ZSBjYW5ub3Qgc2VlIHRoYXQgbGV2ZWwgb2YgZGV0YWlsIHdpdGhvdXRcbiAgICAgIC8vID4gc29tZXRoaW5nIGxpa2UgYSBtYWduaWZ5aW5nIGdsYXNzLlxuICAgICAgLy8gaHR0cHM6Ly9ibG9nLnR3aXR0ZXIuY29tL2VuZ2luZWVyaW5nL2VuX3VzL3RvcGljcy9pbmZyYXN0cnVjdHVyZS8yMDE5L2NhcHBpbmctaW1hZ2UtZmlkZWxpdHktb24tdWx0cmEtaGlnaC1yZXNvbHV0aW9uLWRldmljZXMuaHRtbFxuICAgICAgW3dpZHRoLCB3aWR0aCAqIDIgLyogLCB3aWR0aCAqIDMqL10ubWFwKFxuICAgICAgICAodykgPT4gYWxsU2l6ZXMuZmluZCgocCkgPT4gcCA+PSB3KSB8fCBhbGxTaXplc1thbGxTaXplcy5sZW5ndGggLSAxXSxcbiAgICAgICksXG4gICAgKSxcbiAgXVxuICByZXR1cm4geyB3aWR0aHMsIGtpbmQ6ICd4JyB9XG59XG5cbnR5cGUgR2VuSW1nQXR0cnNEYXRhID0ge1xuICBzcmM6IHN0cmluZ1xuICBsYXlvdXQ6IExheW91dFZhbHVlXG4gIGxvYWRlcjogSW1hZ2VMb2FkZXJcbiAgd2lkdGg/OiBudW1iZXJcbiAgcXVhbGl0eT86IG51bWJlclxuICBzaXplcz86IHN0cmluZ1xuICBzY2FsZTogbnVtYmVyXG59XG5cbnR5cGUgR2VuSW1nQXR0cnNSZXN1bHQgPSB7XG4gIHNyY1NldDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIHNpemVzOiBzdHJpbmcgfCB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gIHNyYyxcbiAgbGF5b3V0LFxuICB3aWR0aCxcbiAgcXVhbGl0eSA9IDQ0LFxuICBzaXplcyxcbiAgbG9hZGVyLFxuICBzY2FsZSxcbn06IEdlbkltZ0F0dHJzRGF0YSk6IEdlbkltZ0F0dHJzUmVzdWx0IHtcbiAgY29uc3QgeyB3aWR0aHMsIGtpbmQgfSA9IGdldFdpZHRocyh3aWR0aCwgbGF5b3V0LCBzaXplcywgc2NhbGUpXG5cbiAgcmV0dXJuIHtcbiAgICBzaXplczogIXNpemVzICYmIGtpbmQgPT09ICd3JyA/IGA1MHZ3YCA6IHNpemVzLFxuICAgIHNyY1NldDogd2lkdGhzXG4gICAgICAubWFwKFxuICAgICAgICAodywgaSkgPT5cbiAgICAgICAgICBgJHtsb2FkZXIoeyBzcmMsIHF1YWxpdHksIHdpZHRoOiB3IH0pfSAke1xuICAgICAgICAgICAga2luZCA9PT0gJ3cnID8gTWF0aC5yb3VuZCh3ICogc2NhbGUpIDogaSArIDFcbiAgICAgICAgICB9JHtraW5kfWAsXG4gICAgICApXG4gICAgICAuam9pbignLCAnKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50KHg6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodHlwZW9mIHggPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHhcbiAgfVxuICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KHgsIDEwKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEltYWdlTG9hZGVyKGxvYWRlclByb3BzOiBJbWFnZUxvYWRlclByb3BzKSB7XG4gIGNvbnN0IGxvYWQgPSBsb2FkZXJzLmdldChjb25maWdMb2FkZXIpXG4gIGlmIChsb2FkKSB7XG4gICAgcmV0dXJuIGxvYWQoeyByb290OiBjb25maWdQYXRoLCAuLi5sb2FkZXJQcm9wcyB9KVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBVbmtub3duIFwibG9hZGVyXCIgZm91bmQgaW4gXCJuZXh0LmNvbmZpZy5qc1wiLiBFeHBlY3RlZDogJHtWQUxJRF9MT0FERVJTLmpvaW4oXG4gICAgICAnLCAnLFxuICAgICl9LiBSZWNlaXZlZDogJHtjb25maWdMb2FkZXJ9YCxcbiAgKVxufVxuXG4vLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzM5Nzc3ODMzLzI2NjUzNSBmb3Igd2h5IHdlIHVzZSB0aGlzIHJlZlxuLy8gaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBpbWcncyBvbkxvYWQgYXR0cmlidXRlLlxuZnVuY3Rpb24gcmVtb3ZlUGxhY2Vob2xkZXIoaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCwgcGxhY2Vob2xkZXI6IFBsYWNlaG9sZGVyVmFsdWUpIHtcbiAgaWYgKHBsYWNlaG9sZGVyID09PSAnYmx1cicgJiYgaW1nKSB7XG4gICAgY29uc3QgaGFuZGxlTG9hZCA9ICgpID0+IHtcbiAgICAgIGlmICghaW1nLnNyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICAgIGNvbnN0IHAgPSAnZGVjb2RlJyBpbiBpbWcgPyBpbWcuZGVjb2RlKCkgOiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHAuY2F0Y2goKCkgPT4ge30pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGltZy5zdHlsZS5maWx0ZXIgPSAnbm9uZSdcbiAgICAgICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZFNpemUgPSAnbm9uZSdcbiAgICAgICAgICBpbWcuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ25vbmUnXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbWcuY29tcGxldGUpIHtcbiAgICAgIC8vIElmIHRoZSByZWFsIGltYWdlIGZhaWxzIHRvIGxvYWQsIHRoaXMgd2lsbCBzdGlsbCByZW1vdmUgdGhlIHBsYWNlaG9sZGVyLlxuICAgICAgLy8gVGhpcyBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvciBmb3Igbm93LCBhbmQgd2lsbCBiZSByZXZpc2l0ZWQgd2hlbiBlcnJvclxuICAgICAgLy8gaGFuZGxpbmcgaXMgd29ya2VkIG9uIGZvciB0aGUgaW1hZ2UgY29tcG9uZW50IGl0c2VsZi5cbiAgICAgIGhhbmRsZUxvYWQoKVxuICAgIH0gZWxzZSB7XG4gICAgICBpbWcub25sb2FkID0gaGFuZGxlTG9hZFxuICAgIH1cbiAgfVxufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgYW4gaW1hZ2UgaXMgY3VycmVudGx5IGluIHRoZSB2aWV3cG9ydCAqL1xuZnVuY3Rpb24gaXNJblZpZXdwb3J0KGVsZW06IEhUTUxJbWFnZUVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQgfSA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIGJvdHRvbSA+PSAwICYmIHJpZ2h0ID49IDAgJiYgdG9wIDw9IHdpbmRvdy5pbm5lckhlaWdodCAmJiBsZWZ0IDw9IHdpbmRvdy5pbm5lcldpZHRoXG59XG5cbnR5cGUgU2l6ZXNTdHJpbmcgPSBgJHtudW1iZXJ9dndgIHwgYCR7bnVtYmVyfXB4YFxudHlwZSBTaXplc1JlY29yZCA9IFJlY29yZDxudW1iZXIsIFNpemVzU3RyaW5nPlxudHlwZSBTaXplcyA9IFNpemVzU3RyaW5nIHwgU2l6ZXNSZWNvcmQgfCB1bmRlZmluZWRcblxuZnVuY3Rpb24gaXNTaXplc1JlY29yZChzaXplcz86IFNpemVzKTogc2l6ZXMgaXMgU2l6ZXNSZWNvcmQge1xuICByZXR1cm4gdHlwZW9mIHNpemVzID09PSAnb2JqZWN0J1xufVxuXG5mdW5jdGlvbiBzaXplc0VudHJpZXMoc2l6ZXM6IFNpemVzKTogKHJlYWRvbmx5IFtudW1iZXIsIFNpemVzU3RyaW5nIHwgdW5kZWZpbmVkXSlbXSB7XG4gIGlmIChpc1NpemVzUmVjb3JkKHNpemVzKSkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhzaXplcylcbiAgICAgIC5tYXAoKFticmVha3BvaW50LCBzaXplXSkgPT4gW051bWJlcihicmVha3BvaW50KSwgc2l6ZV0gYXMgY29uc3QpXG4gICAgICAuc29ydCgoW3NpemVBXSwgW3NpemVCXSkgPT4gc2l6ZUIgLSBzaXplQSlcbiAgfVxuICByZXR1cm4gW1swLCBzaXplc10gYXMgY29uc3RdXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU2l6ZXNTdHJpbmcoc2l6ZXM/OiBTaXplcykge1xuICByZXR1cm4gc2l6ZXNFbnRyaWVzKHNpemVzKVxuICAgIC5tYXAoKFticmVha3BvaW50LCBzaXplXSkgPT4ge1xuICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IDApIHJldHVybiBzaXplXG4gICAgICByZXR1cm4gYChtaW4td2lkdGg6ICR7YnJlYWtwb2ludH1weCkgJHtzaXplfWBcbiAgICB9KVxuICAgIC5qb2luKCcsICcpXG59XG5cbi8qKiBTaW5jZSB3ZSdyZSBoYW5kbGluZyBzdHVmZiBvdXJzZWx2ZXMgd2Ugb21pdCBzb21lIHN0dWZmICovXG50eXBlIEludHJpc2luY0ltYWdlID0gT21pdDxcbiAgSlNYLkludHJpbnNpY0VsZW1lbnRzWydpbWcnXSxcbiAgJ3NyYycgfCAnc3JjU2V0JyB8ICdyZWYnIHwgJ3dpZHRoJyB8ICdoZWlnaHQnIHwgJ2xvYWRpbmcnIHwgJ3NpemVzJyB8ICd3aWR0aCcgfCAnaGVpZ2h0J1xuPiAmIHsgbG9hZGluZz86IExvYWRpbmdWYWx1ZSB9XG5cbmV4cG9ydCB0eXBlIEJhc2VJbWFnZVByb3BzID0gSW50cmlzaW5jSW1hZ2UgJiB7XG4gIGxvYWRlcj86IEltYWdlTG9hZGVyXG4gIHF1YWxpdHk/OiBudW1iZXIgfCBzdHJpbmdcbiAgdW5vcHRpbWl6ZWQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFBvc3NpYmxlIHZhbHVlczpcbiAgICpcbiAgICogLSBgZml4ZWRgOiB0aGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIG5vdCBjaGFuZ2UgYXMgdGhlIHZpZXdwb3J0IGNoYW5nZXMgKG5vIHJlc3BvbnNpdmVuZXNzKVxuICAgKiAgIHNpbWlsYXIgdG8gdGhlIG5hdGl2ZSBpbWcgZWxlbWVudC5cbiAgICogLSBgaW50cmluc2ljYDogdGhlIGltYWdlIHdpbGwgc2NhbGUgdGhlIGRpbWVuc2lvbnMgZG93biBmb3Igc21hbGxlciB2aWV3cG9ydHMgYnV0IG1haW50YWluIHRoZVxuICAgKiAgIG9yaWdpbmFsIGRpbWVuc2lvbnMgKHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuKSBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAgICogLSBgcmVzcG9uc2l2ZWA6IHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGFuZCBzY2FsZSB1cCBmb3JcbiAgICogICBsYXJnZXIgdmlld3BvcnRzLlxuICAgKi9cbiAgbGF5b3V0PzogTGF5b3V0VmFsdWVcblxuICAvKiogU2l6ZSB0aGUgaW1hZ2UgaXMgcmVuZGVyZWQgb24gbW9iaWxlICovXG4gIHNpemVzPzogU2l6ZXNTdHJpbmcgfCBTaXplc1JlY29yZFxufVxuXG4vKipcbiAqIFdoZW4gYGZpeGVkYCwgdGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBub3QgY2hhbmdlIGFzIHRoZSB2aWV3cG9ydCBjaGFuZ2VzIChubyByZXNwb25zaXZlbmVzcylcbiAqIHNpbWlsYXIgdG8gdGhlIG5hdGl2ZSBpbWcgZWxlbWVudC5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gLz5cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRvIHJlbmRlciB0aGUgaW1hZ2UgYXQgdGhlIGdpdmVuIHdpZHRoL2hlaWdodCBhbmQgbm90IGNoYW5nZSBiYXNlZCBvbiBicm93c2VyIHNpemUuXG4gKi9cbnR5cGUgTGF5b3V0VHlwZU5hdGl2ZSA9IHtcbiAgbGF5b3V0PzogJ2ZpeGVkJ1xuICAvKipcbiAgICogVGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IHZhbHVlcyBhcmUgdGhlIHZhbHVlcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYXNwZWN0IHJhdGlvIG9tIHRoZSBpbWFnZVxuICAgKiBhbmQgcmVzZXJ2ZSBzcGFjZSBpbiB0aGUgYnJvd3Nlci5cbiAgICpcbiAgICogV2l0aCBsYXlvdXQ9Zml4ZWQgYW5kIG5vIHN0eWxpbmcgdGhlIGltYWdlIGlzIHJlbmRlcmVkIGF0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuLlxuICAgKi9cbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxufVxuXG4vKipcbiAqIFdoZW4gYGludHJpbnNpY2AsIHRoZSBpbWFnZSB3aWxsIHNjYWxlIHRoZSBkaW1lbnNpb25zIGRvd24gZm9yIHNtYWxsZXIgdmlld3BvcnRzIGJ1dCBtYWludGFpbiB0aGVcbiAqIG9yaWdpbmFsIGRpbWVuc2lvbnMgKHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuKSBmb3IgbGFyZ2VyIHZpZXdwb3J0cy5cbiAqXG4gKiBgYGB0c3hcbiAqIDxpbWcgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnYXV0bycgbWF4V2lkdGg6IGAke3dpZHRofXB4YCB9fVxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IHdhbnQgdG8gcmVuZGVyIGFuIGltYWdlIGJ1dCBkb24ndCBzY2FsZSBpdCB1cC5cbiAqL1xudHlwZSBMYXlvdXRUeXBlSW50cmluc2ljID0ge1xuICBsYXlvdXQ/OiAnaW50cmluc2ljJ1xuXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcblxuICBzdHlsZT86IE9taXQ8SW1nRWxlbWVudFN0eWxlLCAnd2lkdGgnIHwgJ2hlaWdodCcgfCAnbWF4V2lkdGgnPlxufVxuXG4vKipcbiAqIFdoZW4gYHJlc3BvbnNpdmVgLCB0aGUgaW1hZ2Ugd2lsbCBzY2FsZSB0aGUgZGltZW5zaW9ucyBkb3duIGZvciBzbWFsbGVyIHZpZXdwb3J0cyBhbmQgc2NhbGUgdXBcbiAqIGZvciBsYXJnZXIgdmlld3BvcnRzLlxuICpcbiAqIGBgYHRzeFxuICogPGltZyBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyBtYXhXaWR0aDogJHt3aWR0aH0gfX1cbiAqIGBgYFxuICpcbiAqIFVzZSBjYXNlOiBXaGVuIHlvdSB3YW50IHRoZSBpbWFnZSB0byBmaWxsIGl0J3MgcGFyZW50IGNvbnRhaW5lciBpbiB3aWR0aFxuICovXG50eXBlIExheW91dFR5cGVSZXNwb25zaXZlID0ge1xuICBsYXlvdXQ/OiAncmVzcG9uc2l2ZSdcblxuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG5cbiAgc3R5bGU/OiBPbWl0PEltZ0VsZW1lbnRTdHlsZSwgJ3dpZHRoJyB8ICdoZWlnaHQnPlxufVxuXG4vKipcbiAqIFdoZW4gYGZpbGxgLCB0aGUgaW1hZ2Ugd2lsbCBzdHJldGNoIGJvdGggd2lkdGggYW5kIGhlaWdodCB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcGFyZW50XG4gKiBlbGVtZW50LCBwYWlyZWQgd2l0aCB0aGUgb2JqZWN0Rml0IHByb3BlcnR5LlxuICpcbiAqIFNpbmNlIHRoZSB3aWR0aC9oZWlnaHQgaXNuJ3QgcmVxdWlyZWQgdG8gcmVuZGVyIHRoZSBwYWdlIHdlIGNhbiBvbWl0IGl0LlxuICpcbiAqIGBgYHRzeFxuICogPGltZyB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJyB9fVxuICogYGBgXG4gKlxuICogVXNlIGNhc2U6IFdoZW4geW91IGhhdmUgYSBwcmVkZWZpbmVkIGFyZWEgc2V0IHRvIHJlbmRlciBhbiBpbWFnZVxuICovXG50eXBlIExheW91dFR5cGVGaWxsID0ge1xuICBsYXlvdXQ/OiAnZmlsbCdcblxuICB3aWR0aD86IG5ldmVyXG4gIGhlaWdodD86IG5ldmVyXG5cbiAgLy8gb2JqZWN0Rml0OiBJbWdFbGVtZW50U3R5bGVbJ29iamVjdEZpdCddXG4gIHN0eWxlPzogT21pdDxJbWdFbGVtZW50U3R5bGUsICd3aWR0aCcgfCAnaGVpZ2h0Jz5cbn1cblxuZXhwb3J0IHR5cGUgU3RyaW5nSW1hZ2VQcm9wcyA9IHtcbiAgc3JjOiBzdHJpbmdcbn0gJiAoTGF5b3V0VHlwZUZpbGwgfCBMYXlvdXRUeXBlUmVzcG9uc2l2ZSB8IExheW91dFR5cGVOYXRpdmUgfCBMYXlvdXRUeXBlSW50cmluc2ljKSAmXG4gIChcbiAgICB8IHsgcGxhY2Vob2xkZXI/OiBFeGNsdWRlPFBsYWNlaG9sZGVyVmFsdWUsICdibHVyJz47IGJsdXJEYXRhVVJMPzogbmV2ZXIgfVxuICAgIHwgeyBwbGFjZWhvbGRlcjogJ2JsdXInOyBibHVyRGF0YVVSTDogc3RyaW5nIH1cbiAgKVxuXG5leHBvcnQgdHlwZSBPYmplY3RJbWFnZVByb3BzID0ge1xuICBzcmM6IFN0YXRpY0ltcG9ydFxuICB3aWR0aD86IG51bWJlclxuICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbGF5b3V0PzogTGF5b3V0VmFsdWVcbiAgcGxhY2Vob2xkZXI/OiBQbGFjZWhvbGRlclZhbHVlXG4gIGJsdXJEYXRhVVJMPzogbmV2ZXJcbn1cblxuZXhwb3J0IHR5cGUgSW1hZ2VQcm9wcyA9IEJhc2VJbWFnZVByb3BzICYgKFN0cmluZ0ltYWdlUHJvcHMgfCBPYmplY3RJbWFnZVByb3BzKVxuXG5leHBvcnQgdHlwZSBTdHJpbmdJbWFnZSA9IEJhc2VJbWFnZVByb3BzICYgU3RyaW5nSW1hZ2VQcm9wc1xuZXhwb3J0IHR5cGUgT2JqZWN0SW1hZ2UgPSBCYXNlSW1hZ2VQcm9wcyAmIE9iamVjdEltYWdlUHJvcHNcblxuY29uc3QgSW1hZ2UgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbWFnZUVsZW1lbnQsIEltYWdlUHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgc3JjLFxuICAgICAgc2l6ZXM6IHNpemVzT3JpZyxcbiAgICAgIHVub3B0aW1pemVkID0gZmFsc2UsXG4gICAgICBsb2FkaW5nLFxuICAgICAgbGF5b3V0ID0gJ3Jlc3BvbnNpdmUnLFxuICAgICAgcXVhbGl0eSxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgc3R5bGUsXG4gICAgICBsb2FkZXIgPSBkZWZhdWx0SW1hZ2VMb2FkZXIsXG4gICAgICBwbGFjZWhvbGRlciA9ICdlbXB0eScsXG4gICAgICBibHVyRGF0YVVSTCxcbiAgICAgIC4uLmltZ1Byb3BzXG4gICAgfSxcbiAgICBmb3J3YXJkZWRSZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IHJlZiA9IHVzZUZvcndhcmRlZFJlZihmb3J3YXJkZWRSZWYpXG5cbiAgICBjb25zdCBzaXplcyA9XG4gICAgICBnZW5lcmF0ZVNpemVzU3RyaW5nKGxheW91dCA9PT0gJ2ZpeGVkJyAmJiB3aWR0aCAmJiAhc2l6ZXNPcmlnID8gYCR7d2lkdGh9cHhgIDogc2l6ZXNPcmlnKSA/P1xuICAgICAgJzUwdncnXG5cbiAgICAvLyBJZiBubyByZXNwb25zaXZlIHNpemVzIGFyZSBnaXZlbiwgd2UncmUgZGVmYXVsdGluZyB0byA1MHZ3IG9uIG1vYmlsZVxuICAgIC8vIGNvbnN0IFtzaXplcywgc2V0U2l6ZXNdID0gdXNlU3RhdGUodG9TaXplc1N0cmluZyhzaXplc09yaWcpID8/IGA1MHZ3YClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXJlZi5jdXJyZW50IHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgfHwgbGF5b3V0ICE9PSAnZml4ZWQnKVxuICAgICAgICByZXR1cm4gKCkgPT4ge31cblxuICAgICAgLy8gV2FybiB0aGUgdXNlciB3aGVuIGhlIGlzbid0IHByb3ZpZGluZyBzaXplcyBhbmQgaG93IHRvIHByb2NlZWRcbiAgICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKChbZW50cnldKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnR2dyA9IGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoXG5cbiAgICAgICAgbGV0IHJhdGlvOiBudW1iZXJcblxuICAgICAgICBsZXQgbXNnID0gJydcbiAgICAgICAgY29uc3QgW2JyZWFrcG9pbnQsIHNpemVdID0gc2l6ZXNFbnRyaWVzKHNpemVzT3JpZykuZmluZCgoW3NdKSA9PlxuICAgICAgICAgIHMgPT09IDAgPyB0cnVlIDogd2luZG93Lm1hdGNoTWVkaWEoYChtaW4td2lkdGg6ICR7c30pYCksXG4gICAgICAgICkgPz8gWzAsICcxMDB2dyddXG4gICAgICAgIGlmIChzaXplKSB7XG4gICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgd2lkdGg6ICR7c2l6ZX1gKVxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpXG4gICAgICAgICAgY29uc3QgbWVhc3VyZWRXaWR0aCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoXG4gICAgICAgICAgLy8gZWwucmVtb3ZlKClcbiAgICAgICAgICByYXRpbyA9IG1lYXN1cmVkV2lkdGggKiogMiAvIGN1cnJlbnR2dyAqKiAyXG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgXCJzaXplc1wiIHByb3BlcnR5IHNldCwgYnV0IHNpemUgJ21pbi13aWR0aCgke2JyZWFrcG9pbnR9cHgpICR7c2l6ZX0nIGlzIGluY29ycmVjdC5gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbXNnICs9IGBJbWFnZSBoYXMgbm8gXCJzaXplc1wiIHByb3BlcnR5IHNldC5gXG4gICAgICAgICAgcmF0aW8gPSAod2luZG93LmlubmVyV2lkdGggKiAwLjUpICoqIDIgLyBjdXJyZW50dncgKiogMlxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm91bmQgPSAobnI6IG51bWJlcikgPT4gTWF0aC5yb3VuZChuciAqIDEwMCkgLyAxMDBcbiAgICAgICAgaWYgKHJhdGlvID4gMS4yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogJHttc2d9IEN1cnJlbnRseSBkb3dubG9hZGluZyBhbiBpbWFnZSB0aGF0IGhhcyAke3JvdW5kKFxuICAgICAgICAgICAgICByYXRpbyxcbiAgICAgICAgICAgICl9eCB0b28gbWFueSBwaXhlbHNgLFxuICAgICAgICAgICAgZW50cnkudGFyZ2V0LFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmIChyYXRpbyA8IDAuOCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06ICR7bXNnfSBDdXJyZW50bHkgZG93bmxvYWRpbmcgYW4gaW1hZ2UgdGhhdCBoYXMgJHtyb3VuZChcbiAgICAgICAgICAgICAgMSAvIHJhdGlvLFxuICAgICAgICAgICAgKX14IHRvbyBmZXcgcGl4ZWxzYCxcbiAgICAgICAgICAgIGVudHJ5LnRhcmdldCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByby5vYnNlcnZlKHJlZi5jdXJyZW50KVxuXG4gICAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gICAgfSwgW2xheW91dCwgcmVmLCBzaXplc09yaWcsIHNyY10pXG5cbiAgICBsZXQgc3RhdGljU3JjID0gJydcbiAgICBpZiAoaXNTdGF0aWNJbXBvcnQoc3JjKSkge1xuICAgICAgY29uc3Qgc3RhdGljSW1hZ2VEYXRhID0gaXNTdGF0aWNSZXF1aXJlKHNyYykgPyBzcmMuZGVmYXVsdCA6IHNyY1xuICAgICAgaWYgKCFzdGF0aWNJbWFnZURhdGEuc3JjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBBbiBvYmplY3Qgc2hvdWxkIG9ubHkgYmUgcGFzc2VkIHRvIHRoZSBpbWFnZSBjb21wb25lbnQgc3JjIHBhcmFtZXRlciBpZiBpdCBjb21lcyBmcm9tIGEgc3RhdGljIGltYWdlIGltcG9ydC4gSXQgbXVzdCBpbmNsdWRlIHNyYy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHN0YXRpY0ltYWdlRGF0YSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGJsdXJEYXRhVVJMID0gYmx1ckRhdGFVUkwgfHwgc3RhdGljSW1hZ2VEYXRhLmJsdXJEYXRhVVJMXG4gICAgICBzdGF0aWNTcmMgPSBzdGF0aWNJbWFnZURhdGEuc3JjXG4gICAgICBpZiAoIWxheW91dCB8fCBsYXlvdXQgIT09ICdmaWxsJykge1xuICAgICAgICBoZWlnaHQgPSBoZWlnaHQgfHwgc3RhdGljSW1hZ2VEYXRhLmhlaWdodFxuICAgICAgICB3aWR0aCA9IHdpZHRoIHx8IHN0YXRpY0ltYWdlRGF0YS53aWR0aFxuICAgICAgICBpZiAoIXN0YXRpY0ltYWdlRGF0YS5oZWlnaHQgfHwgIXN0YXRpY0ltYWdlRGF0YS53aWR0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEFuIG9iamVjdCBzaG91bGQgb25seSBiZSBwYXNzZWQgdG8gdGhlIGltYWdlIGNvbXBvbmVudCBzcmMgcGFyYW1ldGVyIGlmIGl0IGNvbWVzIGZyb20gYSBzdGF0aWMgaW1hZ2UgaW1wb3J0LiBJdCBtdXN0IGluY2x1ZGUgaGVpZ2h0IGFuZCB3aWR0aC4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgc3RhdGljSW1hZ2VEYXRhLFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBzcmMgPSB0eXBlb2Ygc3JjID09PSAnc3RyaW5nJyA/IHNyYyA6IHN0YXRpY1NyY1xuXG4gICAgY29uc3Qgd2lkdGhJbnQgPSBnZXRJbnQod2lkdGgpXG4gICAgY29uc3QgaGVpZ2h0SW50ID0gZ2V0SW50KGhlaWdodClcbiAgICBjb25zdCBxdWFsaXR5SW50ID0gZ2V0SW50KHF1YWxpdHkpXG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIGlzIG1pc3NpbmcgcmVxdWlyZWQgXCJzcmNcIiBwcm9wZXJ0eS4gTWFrZSBzdXJlIHlvdSBwYXNzIFwic3JjXCIgaW4gcHJvcHMgdG8gdGhlIFxcYEByZWFjaGRpZ2l0YWwvaW1hZ2VcXGAgY29tcG9uZW50LiBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHsgd2lkdGgsIGhlaWdodCwgcXVhbGl0eSB9LFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKCFWQUxJRF9MQVlPVVRfVkFMVUVTLmluY2x1ZGVzKGxheW91dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQHJlYWNoZGlnaXRhbC9pbWFnZV06IEltYWdlIHdpdGggc3JjIFwiJHtzcmN9XCIgaGFzIGludmFsaWQgXCJsYXlvdXRcIiBwcm9wZXJ0eS4gUHJvdmlkZWQgXCIke2xheW91dH1cIiBzaG91bGQgYmUgb25lIG9mICR7VkFMSURfTEFZT1VUX1ZBTFVFUy5tYXAoXG4gICAgICAgICAgICBTdHJpbmcsXG4gICAgICAgICAgKS5qb2luKCcsJyl9LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKHR5cGVvZiB3aWR0aEludCAhPT0gJ3VuZGVmaW5lZCcgJiYgTnVtYmVyLmlzTmFOKHdpZHRoSW50KSkgfHxcbiAgICAgICAgKHR5cGVvZiBoZWlnaHRJbnQgIT09ICd1bmRlZmluZWQnICYmIE51bWJlci5pc05hTihoZWlnaHRJbnQpKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBpbnZhbGlkIFwid2lkdGhcIiBvciBcImhlaWdodFwiIHByb3BlcnR5LiBUaGVzZSBzaG91bGQgYmUgbnVtZXJpYyB2YWx1ZXMuYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKCFWQUxJRF9MT0FESU5HX1ZBTFVFUy5pbmNsdWRlcyhsb2FkaW5nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBoYXMgaW52YWxpZCBcImxvYWRpbmdcIiBwcm9wZXJ0eS4gUHJvdmlkZWQgXCIke2xvYWRpbmd9XCIgc2hvdWxkIGJlIG9uZSBvZiAke1ZBTElEX0xPQURJTkdfVkFMVUVTLm1hcChcbiAgICAgICAgICAgIFN0cmluZyxcbiAgICAgICAgICApLmpvaW4oJywnKX0uYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKHBsYWNlaG9sZGVyID09PSAnYmx1cicpIHtcbiAgICAgICAgaWYgKGxheW91dCAhPT0gJ2ZpbGwnICYmICh3aWR0aEludCB8fCAwKSAqIChoZWlnaHRJbnQgfHwgMCkgPCAxNjAwKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtAcmVhY2hkaWdpdGFsL2ltYWdlXTogSW1hZ2Ugd2l0aCBzcmMgXCIke3NyY31cIiBpcyBzbWFsbGVyIHRoYW4gNDB4NDAuIENvbnNpZGVyIHJlbW92aW5nIHRoZSBcInBsYWNlaG9sZGVyPSdibHVyJ1wiIHByb3BlcnR5IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuYCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFibHVyRGF0YVVSTCkge1xuICAgICAgICAgIGNvbnN0IFZBTElEX0JMVVJfRVhUID0gWydqcGVnJywgJ3BuZycsICd3ZWJwJ10gLy8gc2hvdWxkIG1hdGNoIG5leHQtaW1hZ2UtbG9hZGVyXG5cbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIGhhcyBcInBsYWNlaG9sZGVyPSdibHVyJ1wiIHByb3BlcnR5IGJ1dCBpcyBtaXNzaW5nIHRoZSBcImJsdXJEYXRhVVJMXCIgcHJvcGVydHkuXG4gICAgICAgICAgUG9zc2libGUgc29sdXRpb25zOlxuICAgICAgICAgICAgLSBBZGQgYSBcImJsdXJEYXRhVVJMXCIgcHJvcGVydHksIHRoZSBjb250ZW50cyBzaG91bGQgYmUgYSBzbWFsbCBEYXRhIFVSTCB0byByZXByZXNlbnQgdGhlIGltYWdlXG4gICAgICAgICAgICAtIENoYW5nZSB0aGUgXCJzcmNcIiBwcm9wZXJ0eSB0byBhIHN0YXRpYyBpbXBvcnQgd2l0aCBvbmUgb2YgdGhlIHN1cHBvcnRlZCBmaWxlIHR5cGVzOiAke1ZBTElEX0JMVVJfRVhULmpvaW4oXG4gICAgICAgICAgICAgICcsJyxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICAtIFJlbW92ZSB0aGUgXCJwbGFjZWhvbGRlclwiIHByb3BlcnR5LCBlZmZlY3RpdmVseSBubyBibHVyIGVmZmVjdFxuICAgICAgICAgIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcGxhY2Vob2xkZXItYmx1ci1kYXRhLXVybGAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aWR0aEludCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGhlaWdodEludCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChsYXlvdXQgPT09ICdmaWxsJykge1xuICAgICAgICAvLyBoYW5kbGUgZmlsbFxuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIC8vIDxJbWFnZSBzcmM9XCJpLnBuZ1wiIC8+XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0ByZWFjaGRpZ2l0YWwvaW1hZ2VdOiBJbWFnZSB3aXRoIHNyYyBcIiR7c3JjfVwiIG11c3QgdXNlIFwid2lkdGhcIiBhbmQgXCJoZWlnaHRcIiBwcm9wZXJ0aWVzIG9yIFwibGF5b3V0PSdmaWxsJ1wiIHByb3BlcnR5LmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkaW5nID8/PSAnbGF6eSdcbiAgICBpZiAoc3JjICYmIHNyYy5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJc1xuICAgICAgdW5vcHRpbWl6ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlczN4ID0gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gICAgICBzcmMsXG4gICAgICBsYXlvdXQ6IGxheW91dCBhcyBMYXlvdXRWYWx1ZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHF1YWxpdHk6IHF1YWxpdHlJbnQsXG4gICAgICBzaXplcyxcbiAgICAgIHdpZHRoOiB3aWR0aEludCxcbiAgICAgIHNjYWxlOiAxLjUsXG4gICAgfSlcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMyeCA9IGdlbmVyYXRlU291cmNlQXR0cnMoe1xuICAgICAgc3JjLFxuICAgICAgbGF5b3V0OiBsYXlvdXQgYXMgTGF5b3V0VmFsdWUsXG4gICAgICBsb2FkZXIsXG4gICAgICBxdWFsaXR5OiBxdWFsaXR5SW50LFxuICAgICAgc2l6ZXMsXG4gICAgICB3aWR0aDogd2lkdGhJbnQsXG4gICAgICBzY2FsZTogMSxcbiAgICB9KVxuXG4gICAgY29uc3QgYXR0cmlidXRlczF4ID0gZ2VuZXJhdGVTb3VyY2VBdHRycyh7XG4gICAgICBzcmMsXG4gICAgICBsYXlvdXQ6IGxheW91dCBhcyBMYXlvdXRWYWx1ZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHF1YWxpdHk6IHF1YWxpdHlJbnQsXG4gICAgICBzaXplcyxcbiAgICAgIHdpZHRoOiB3aWR0aEludCxcbiAgICAgIHNjYWxlOiAwLjUsXG4gICAgfSlcblxuICAgIGlmIChsYXlvdXQgIT09ICdmaXhlZCcgJiYgIXN0eWxlKSBzdHlsZSA9IHt9XG4gICAgaWYgKGxheW91dCA9PT0gJ3Jlc3BvbnNpdmUnKSBzdHlsZSA9IHsgLi4uc3R5bGUsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2F1dG8nIH1cbiAgICBpZiAobGF5b3V0ID09PSAnaW50cmluc2ljJykgc3R5bGUgPSB7IC4uLnN0eWxlLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJywgbWF4V2lkdGg6IHdpZHRoIH1cbiAgICBpZiAobGF5b3V0ID09PSAnZmlsbCcpIHN0eWxlID0geyAuLi5zdHlsZSwgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt1bm9wdGltaXplZCA/IChcbiAgICAgICAgICA8aW1nIHJlZj17cmVmfSB7Li4uaW1nUHJvcHN9IHNyYz17c3JjfSB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSBzdHlsZT17c3R5bGV9IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPHBpY3R1cmU+XG4gICAgICAgICAgICA8c291cmNlIG1lZGlhPScoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLjUpJyB7Li4uYXR0cmlidXRlczN4fSAvPlxuICAgICAgICAgICAgPHNvdXJjZSBtZWRpYT0nKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KScgey4uLmF0dHJpYnV0ZXMyeH0gLz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgIHsuLi5pbWdQcm9wc31cbiAgICAgICAgICAgICAgey4uLmF0dHJpYnV0ZXMxeH1cbiAgICAgICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkaW5nID09PSAnZWFnZXInICYmIChcbiAgICAgICAgICA8SGVhZD5cbiAgICAgICAgICAgIDxsaW5rXG4gICAgICAgICAgICAgIGtleT17YF9fbmltZy0yeC0ke2F0dHJpYnV0ZXMxeC5zcmNTZXR9JHthdHRyaWJ1dGVzMXguc2l6ZXN9YH1cbiAgICAgICAgICAgICAgcmVsPSdwcmVsb2FkJ1xuICAgICAgICAgICAgICBhcz0naW1hZ2UnXG4gICAgICAgICAgICAgIG1lZGlhPScoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyLjUpJ1xuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGltYWdlc3Jjc2V0IGlzIG5vdCB5ZXQgaW4gdGhlIGxpbmsgZWxlbWVudCB0eXBlXG4gICAgICAgICAgICAgIGltYWdlc3Jjc2V0PXthdHRyaWJ1dGVzMXguc3JjU2V0fVxuICAgICAgICAgICAgICBpbWFnZXNpemVzPXtzaXplc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9IZWFkPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9LFxuKVxuSW1hZ2UuZGlzcGxheU5hbWUgPSAnTmV4dFBpY3R1cmUnXG5cbmV4cG9ydCB7IEltYWdlIH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../components/Image.tsx\n");
19
+
20
+ /***/ })
21
+
22
+ });