{"product_id":"happrun-native-1080p-bluetooth-projector-standard","title":"HAPPRUN Native 1080P Bluetooth Projector - Standard","description":"\u003cdiv\u003e\u003cdiv lang=\"en_US\"\u003e\n \u003cdiv class=\"aplus-v2 desktop celwidget\" cel_widget_id=\"aplus\"\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n    .aplus-v2 .premium-aplus-module-13 .aplus-carousel-container {\n        position: relative;\n    }\n\n    .aplus-v2 .premium-aplus-module-13 .aplus-carousel-element {\n        position: relative;\n        width: 100%;\n    }\n\n    .aplus-v2 .premium-aplus-module-13 .aplus-card-link-button {\n        text-align: center;\n        padding-top: 20px;\n    }\n\n    .aplus-v2 .premium-aplus-module-13 .aplus-text-background,\n    .aplus-v2 .premium-aplus-module-13 .aplus-text-background h1,\n    .aplus-v2 .premium-aplus-module-13 .aplus-text-background h5,\n    .aplus-v2 .premium-aplus-module-13 .aplus-text-background ol,\n    .aplus-v2 .premium-aplus-module-13 .aplus-text-background ul,\n    .aplus-v2 .premium-aplus-module-13 .aplus-text-background ol .a-list-item,\n    .aplus-v2 .premium-aplus-module-13 .aplus-text-background ul .a-list-item {\n        color: #fff;\n    }\n\n\u003c\/style\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n.aplus-v2 .premium-aplus-module-2 .premium-background-wrapper {\n    position: relative;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper {\n    position: absolute;\n    width: 50%;\n    height: 100%;\n    top: 0;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper.right {\n    left: 50%;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper.right {\n    left: auto;\n    right: 50%;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper.secondary-color {\n    color: #fff;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background {\n    padding: 20px;\n}\n\n.aplus-v2 .premium-aplus-module-2 .aplus-module-2-topic {\n    padding-bottom: 10px;\n}\n\n.aplus-v2 .premium-aplus-module-2 .aplus-module-2-heading {\n    padding-bottom: 20px;\n}\n\n.aplus-v2 .premium-aplus-module-2 .aplus-module-2-description {\n    line-height: 1.5em;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.white-background {\n    background: rgba(255,255,255,0.5);\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background {\n    background: rgba(0,0,0,0.5);\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background,\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background h1,\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background h5,\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background ol,\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background ul,\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background ol .a-list-item,\n.aplus-v2 .premium-aplus-module-2 .premium-intro-background.black-background ul .a-list-item {\n  color: #fff;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-content-container {\n    display: table;\n    height: 100%;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper.left .premium-intro-content-container {\n    padding-left: 40px;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper.left .premium-intro-content-container {\n\tpadding-left: 0px;\n\tpadding-right: 40px;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper.right .premium-intro-content-container {\n    padding-right: 40px;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-2 .premium-intro-wrapper.right .premium-intro-content-container {\n    padding-right: 0px;\n    padding-left: 40px;\n}\n\n.aplus-v2 .premium-aplus-module-2 .premium-intro-content-column {\n    display: table-cell;\n    vertical-align: middle;\n}\n\n\n\u003c\/style\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n\/**\n * Premium modules global styles\n *\/\n.aplus-v2.desktop {\n  max-width: 1464px;\n  min-width: 800px;\n  margin-left: auto;\n  margin-right: auto;\n  word-wrap: break-word;\n  overflow-wrap: break-word;\n  word-break: break-word;\n}\n\/* Undo this for tech-specs because it breaks table layout *\/\n.aplus-v2.desktop .premium-aplus .aplus-tech-spec-table { word-break: initial; }\n\n.aplus-v2 .premium-aplus,\n.aplus-v2 .premium-aplus .aplus-h1,\n.aplus-v2 .premium-aplus .aplus-h2,\n.aplus-v2 .premium-aplus .aplus-p1,\n.aplus-v2 .premium-aplus .aplus-p2,\n.aplus-v2 .premium-aplus .aplus-p3,\n.aplus-v2 .premium-aplus .aplus-accent1,\n.aplus-v2 .premium-aplus .aplus-accent2\n{ font-family: Arial, sans-serif; }\n\n.aplus-v2 .premium-aplus,\n.aplus-v2 .premium-aplus .aplus-h1,\n.aplus-v2 .premium-aplus .aplus-h2,\n.aplus-v2 .premium-aplus .aplus-p1,\n.aplus-v2 .premium-aplus .aplus-p2,\n.aplus-v2 .premium-aplus .aplus-p3,\n.aplus-v2 .premium-aplus .aplus-accent1,\n.aplus-v2 .premium-aplus .aplus-accent2\n{ font-family: inherit; }\n\n\/* type *\/\n.aplus-v2 .premium-aplus .aplus-h1 { font-size: 32px; line-height: 1.2em; font-weight: 500; }\n.aplus-v2 .premium-aplus .aplus-h2 { font-size: 26px; line-height: 1.25em; font-weight: 500; }\n.aplus-v2 .premium-aplus .aplus-h3 { font-size: 18px; line-height: 1.25em; font-weight: 500; }\n.aplus-v2 .premium-aplus .aplus-p1 { font-size: 20px; line-height: 1.3em; font-weight: 300; }\n.aplus-v2 .premium-aplus .aplus-p2 { font-size: 16px; line-height: 1.4em; font-weight: 300; }\n.aplus-v2 .premium-aplus .aplus-p3 { font-size: 14px; line-height: 1.4em; font-weight: 300; }\n.aplus-v2 .premium-aplus .aplus-accent1 { font-size: 16px; line-height: 1.4em; font-weight: 600; }\n.aplus-v2 .premium-aplus .aplus-accent2 { font-size: 14px; line-height: 1.4em; font-weight: 600; }\n\n\/* spacing *\/\n.aplus-v2 .aplus-container-1 { padding: 40px; }\n.aplus-v2 .aplus-container-1-2 { padding: 40px 80px; }\n.aplus-v2 .aplus-container-2 { padding: 80px; }\n.aplus-v2 .aplus-container-3 { padding: 40px 0; }\n\n\/* Display *\/\n.aplus-v2 .premium-aplus .aplus-display-table { display: table; }\n.aplus-v2 .premium-aplus .aplus-display-table-cell { display: table-cell; }\n.aplus-v2 .premium-aplus .aplus-display-inline-block { display: inline-block; }\n\n\/* Aplus display table with min-width 1000px and fill remaining space inside parent *\/\n.aplus-v2.desktop .premium-aplus .aplus-display-table-width { min-width: 1000px; width: 100% }\n\n\/**\n* Padding and margin for element should be 10, 20, 40, or 80 px. Considering mini 10, small 20, medium 40, large 80.\n*\/\n\n\u003c\/style\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n\/**\n * Premium-module 13: Carousel\n *\/\n\n.aplus-v2 .premium-aplus-module-13 .aplus-card-description-wrapper {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n}\n\n.aplus-v2 .premium-aplus-module-13 .aplus-card-description {\n    display: table;\n    width: 50%;\n    height: 100%;\n    color: #fff;\n}\n\n.aplus-v2 .premium-aplus-module-13 .aplus-card-table-cell {\n    display: table-cell;\n    vertical-align: middle;\n    text-align: left;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-13 .aplus-card-table-cell {\n    text-align: right;\n}\n\n.aplus-v2 .premium-aplus-module-13 .aplus-text-background {\n    background: rgba(0, 0, 0, 0.6);\n}\n\n.aplus-v2 .premium-aplus-module-13 .aplus-card-body {\n    padding: 20px 40px 0 0;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-13 .aplus-card-body {\n    padding: 20px 0 0 40px;\n}\n\n.aplus-v2 .premium-aplus-module-13 .aplus-pagination-wrapper {\n    position: absolute;\n    top: 92%;\n    width: 100%;\n}\n\n\u003c\/style\u003e\n  \u003cdiv class=\"aplus-content-wrapper\"\u003e\n   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-content-id=\"amzn1.aplus.0dba9411-3793-45e3-b83f-0b58b90c71e6:1789885880229.4373c3c4-477a-4f8b-9316-8cc884457ed4.en_US\"\u003e\n    \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n       \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\n        \u003cimg alt=\"H1\" class=\"a-lazy-loaded\" data-src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e9630095-6304-4d36-aa0f-c5bd429f8b79.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e9630095-6304-4d36-aa0f-c5bd429f8b79.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003cnoscript\u003e\n         \u003cimg alt=\"H1\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e9630095-6304-4d36-aa0f-c5bd429f8b79.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003c\/noscript\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n     \u003c\/div\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-content-id=\"amzn1.aplus.0dba9411-3793-45e3-b83f-0b58b90c71e6:1789885880229.22abb13a-a565-4f3e-a93b-da948e4e5e93.en_US\"\u003e\n    \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n       \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\n        \u003cimg alt=\"happrun projector\" class=\"a-lazy-loaded\" data-src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/b52373a4-1741-4196-8284-208bb2ae2c5c.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/b52373a4-1741-4196-8284-208bb2ae2c5c.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003cnoscript\u003e\n         \u003cimg alt=\"happrun projector\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/b52373a4-1741-4196-8284-208bb2ae2c5c.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003c\/noscript\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n     \u003c\/div\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-content-id=\"amzn1.aplus.0dba9411-3793-45e3-b83f-0b58b90c71e6:1789885880229.c46b047f-5390-48bd-9e12-57a15d997b56.en_US\"\u003e\n    \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n       \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\n        \u003cimg alt=\"happrun\" class=\"a-lazy-loaded\" data-src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/8ed55fd2-e8bd-4703-83d4-4ce3ba1b1820.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/8ed55fd2-e8bd-4703-83d4-4ce3ba1b1820.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003cnoscript\u003e\n         \u003cimg alt=\"happrun\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/8ed55fd2-e8bd-4703-83d4-4ce3ba1b1820.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003c\/noscript\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n     \u003c\/div\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-content-id=\"amzn1.aplus.0dba9411-3793-45e3-b83f-0b58b90c71e6:1789885880229.592fede5-a5fa-4d65-9282-cd4d493f5d60.en_US\"\u003e\n    \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n       \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\n        \u003cimg alt=\"HAPPRUN\" class=\"a-lazy-loaded\" data-src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e5c8638d-74e7-4aff-aad0-64afdb74f48e.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e5c8638d-74e7-4aff-aad0-64afdb74f48e.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003cnoscript\u003e\n         \u003cimg alt=\"HAPPRUN\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e5c8638d-74e7-4aff-aad0-64afdb74f48e.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n        \u003c\/noscript\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n     \u003c\/div\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-content-id=\"amzn1.aplus.0dba9411-3793-45e3-b83f-0b58b90c71e6:1789885880229.6c4e9353-c86c-4b6a-9eee-f93b07c58bcd.en_US\"\u003e\n    \u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-13-carousel\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n       \u003cdiv id=\"premium-aplus-13-carousel-4-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-carousel-4\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular\"\u003e\n        \u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n        \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n         \u003cdiv class=\"a-carousel-row-inner\"\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\n           \u003ca class=\"a-carousel-goto-prevpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-previous-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003ePrevious page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n           \u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n            \u003col class=\"a-carousel\" role=\"list\"\u003e\n             \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e\n              \u003cdiv id=\"premium-aplus-13-carousel-4-slide-0\"\u003e\n               \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n                \u003cimg alt=\"1\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/6644662e-b1cf-408b-8c7c-365b13e5df1a.__CR0,0,1464,600_PT0_SX1464_V1___.png\"\u003e\n               \u003c\/div\u003e\n              \u003c\/div\u003e\n             \u003c\/li\u003e\n             \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e\n              \u003cdiv id=\"premium-aplus-13-carousel-4-slide-1\"\u003e\n               \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n                \u003cimg alt=\"H1测试\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/37569f53-3c8d-4b0c-9537-80e501740282.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n               \u003c\/div\u003e\n              \u003c\/div\u003e\n             \u003c\/li\u003e\n            \u003c\/ol\u003e\n           \u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\n           \u003ca class=\"a-carousel-goto-nextpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-next-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003eNext page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n          \u003c\/div\u003e\n         \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n       \u003c\/div\u003e\n       \u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e\n        \u003cstyle type=\"text\/css\"\u003e\n\n.aplus-mantle.aplus-module .aplus-pagination-dots {\n    margin: 0;\n}\n\n.aplus-mantle.aplus-module .aplus-pagination-dot {\n    display: inline-block;\n    list-style: none;\n}\n\n.aplus-mantle.aplus-module .aplus-carousel-nav {\n    text-align:center;\n}\n\n.aplus-mantle.aplus-module .carousel-slider-circle {\n    display: inline-block;\n    cursor: pointer;\n    height: 15px;\n    width: 15px;\n    border: 1px solid #000;\n    border-radius: 20px;\n    background-color: #fff;\n    margin-left: 5px;\n}\n\n.aplus-mantle.aplus-module .carousel-slider-circle.aplus-carousel-active {\n    background-color: #DE7921;\n}\n\n.aplus-mantle.aplus-module .aplus-pagination-dot--display-none {\n    display: none;\n}\n\n\u003c\/style\u003e\n        \u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-4\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-4\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"4\";\n                var carouselName = \"premium-aplus-13-carousel-4\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026\u0026 parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u003c children.length; i++) {\n                            if (i \u003e= numPages) {\n                                \/\/ If number of dots \u003e num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026\u0026 event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026\u0026 event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026\u0026 event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026\u0026 event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026\u0026 event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026\u0026 event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u003e 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u003c dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n        \u003cdiv class=\"aplus-mantle aplus-module\"\u003e\n         \u003cdiv class=\"aplus-carousel-nav\"\u003e\n          \u003cul id=\"aplus-pagination-group-4-premium-aplus-13-carousel-4\" class=\"aplus-pagination-dots\" aria-label=\"tablist-section\" role=\"tablist\"\u003e\n           \u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block aplus-carousel-active\" aria-selected=\"true\" data-action=\"aplus-pagination-dot-action-4-premium-aplus-13-carousel-4\" data-aplus-pagination-dot-action-4-premium-aplus-13-carousel-4='{\"page\": 1}' aria-label=\"slide-1\" aria-controls=\"premium-aplus-13-carousel-4-slide-0\" tabindex=\"0\" role=\"tab\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n           \u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-4-premium-aplus-13-carousel-4\" data-aplus-pagination-dot-action-4-premium-aplus-13-carousel-4='{\"page\": 2}' aria-label=\"slide-2\" aria-controls=\"premium-aplus-13-carousel-4-slide-1\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n          \u003c\/ul\u003e\n         \u003c\/div\u003e\n        \u003c\/div\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n     \u003c\/div\u003e\n     \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when(\"premium-aplus-13-carousel-4\").execute('invoke-premium-13-carousel-desktop', function(init){init();});\n}));\u003c\/script\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-content-id=\"amzn1.aplus.0dba9411-3793-45e3-b83f-0b58b90c71e6:1789885880229.3bc88f1b-3b88-433c-af3d-16c0664f792c.en_US\"\u003e\n    \u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-13-carousel\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n       \u003cdiv id=\"premium-aplus-13-carousel-5-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-carousel-5\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular\"\u003e\n        \u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n        \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n         \u003cdiv class=\"a-carousel-row-inner\"\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\n           \u003ca class=\"a-carousel-goto-prevpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-previous-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003ePrevious page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n           \u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n            \u003col class=\"a-carousel\" role=\"list\"\u003e\n             \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"1\"\u003e\n              \u003cdiv id=\"premium-aplus-13-carousel-5-slide-0\"\u003e\n               \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n                \u003cimg alt=\"H1测试\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/cc446aa8-a110-4143-a33e-ee81fccae65a.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n               \u003c\/div\u003e\n              \u003c\/div\u003e\n             \u003c\/li\u003e\n            \u003c\/ol\u003e\n           \u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\n           \u003ca class=\"a-carousel-goto-nextpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-next-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003eNext page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n          \u003c\/div\u003e\n         \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n       \u003c\/div\u003e\n       \u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e\n        \u003cstyle type=\"text\/css\"\u003e\n\n.aplus-mantle.aplus-module .aplus-pagination-dots {\n    margin: 0;\n}\n\n.aplus-mantle.aplus-module .aplus-pagination-dot {\n    display: inline-block;\n    list-style: none;\n}\n\n.aplus-mantle.aplus-module .aplus-carousel-nav {\n    text-align:center;\n}\n\n.aplus-mantle.aplus-module .carousel-slider-circle {\n    display: inline-block;\n    cursor: pointer;\n    height: 15px;\n    width: 15px;\n    border: 1px solid #000;\n    border-radius: 20px;\n    background-color: #fff;\n    margin-left: 5px;\n}\n\n.aplus-mantle.aplus-module .carousel-slider-circle.aplus-carousel-active {\n    background-color: #DE7921;\n}\n\n.aplus-mantle.aplus-module .aplus-pagination-dot--display-none {\n    display: none;\n}\n\n\u003c\/style\u003e\n        \u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-5\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-5\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"5\";\n                var carouselName = \"premium-aplus-13-carousel-5\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026\u0026 parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u003c children.length; i++) {\n                            if (i \u003e= numPages) {\n                                \/\/ If number of dots \u003e num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026\u0026 event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026\u0026 event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026\u0026 event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026\u0026 event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026\u0026 event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026\u0026 event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u003e 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u003c dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n     \u003c\/div\u003e\n     \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when(\"premium-aplus-13-carousel-5\").execute('invoke-premium-13-carousel-desktop', function(init){init();});\n}));\u003c\/script\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-content-id=\"amzn1.aplus.0dba9411-3793-45e3-b83f-0b58b90c71e6:1789885880229.722ca5c8-bb28-4baa-87de-5d0d075ff5c5.en_US\"\u003e\n    \u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-13-carousel\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n       \u003cdiv id=\"premium-aplus-13-carousel-6-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-carousel-6\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular\"\u003e\n        \u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n        \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n         \u003cdiv class=\"a-carousel-row-inner\"\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\n           \u003ca class=\"a-carousel-goto-prevpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-previous-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003ePrevious page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n           \u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n            \u003col class=\"a-carousel\" role=\"list\"\u003e\n             \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n              \u003cdiv id=\"premium-aplus-13-carousel-6-slide-0\"\u003e\n               \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n                \u003cimg alt=\"H1测试\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/89d33fa2-4487-45b4-b55b-25fa1c46473d.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n               \u003c\/div\u003e\n              \u003c\/div\u003e\n             \u003c\/li\u003e\n             \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n              \u003cdiv id=\"premium-aplus-13-carousel-6-slide-1\"\u003e\n               \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n                \u003cimg alt=\"H1测试\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/d9724a56-06e6-4694-9899-6cfa474fe7b4.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n               \u003c\/div\u003e\n              \u003c\/div\u003e\n             \u003c\/li\u003e\n             \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n              \u003cdiv id=\"premium-aplus-13-carousel-6-slide-2\"\u003e\n               \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n                \u003cimg alt=\"H1测试\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/eb7bc40e-efd3-4bc7-bcd8-46f1f8750833.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n               \u003c\/div\u003e\n              \u003c\/div\u003e\n             \u003c\/li\u003e\n             \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n              \u003cdiv id=\"premium-aplus-13-carousel-6-slide-3\"\u003e\n               \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n                \u003cimg alt=\"H1测试\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/49f1cc9f-5613-4f0c-a6ab-fb2d4a0a53f0.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n               \u003c\/div\u003e\n              \u003c\/div\u003e\n             \u003c\/li\u003e\n            \u003c\/ol\u003e\n           \u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\n           \u003ca class=\"a-carousel-goto-nextpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-next-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003eNext page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n          \u003c\/div\u003e\n         \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n       \u003c\/div\u003e\n       \u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e\n        \u003cstyle type=\"text\/css\"\u003e\n\n.aplus-mantle.aplus-module .aplus-pagination-dots {\n    margin: 0;\n}\n\n.aplus-mantle.aplus-module .aplus-pagination-dot {\n    display: inline-block;\n    list-style: none;\n}\n\n.aplus-mantle.aplus-module .aplus-carousel-nav {\n    text-align:center;\n}\n\n.aplus-mantle.aplus-module .carousel-slider-circle {\n    display: inline-block;\n    cursor: pointer;\n    height: 15px;\n    width: 15px;\n    border: 1px solid #000;\n    border-radius: 20px;\n    background-color: #fff;\n    margin-left: 5px;\n}\n\n.aplus-mantle.aplus-module .carousel-slider-circle.aplus-carousel-active {\n    background-color: #DE7921;\n}\n\n.aplus-mantle.aplus-module .aplus-pagination-dot--display-none {\n    display: none;\n}\n\n\u003c\/style\u003e\n        \u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-6\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-6\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"6\";\n                var carouselName = \"premium-aplus-13-carousel-6\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026\u0026 parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u003c children.length; i++) {\n                            if (i \u003e= numPages) {\n                                \/\/ If number of dots \u003e num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026\u0026 event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026\u0026 event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026\u0026 event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026\u0026 event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026\u0026 event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026\u0026 event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u003e 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u003c dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n        \u003cdiv class=\"aplus-mantle aplus-module\"\u003e\n         \u003cdiv class=\"aplus-carousel-nav\"\u003e\n          \u003cul id=\"aplus-pagination-group-6-premium-aplus-13-carousel-6\" class=\"aplus-pagination-dots\" aria-label=\"tablist-section\" role=\"tablist\"\u003e\n           \u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block aplus-carousel-active\" aria-selected=\"true\" data-action=\"aplus-pagination-dot-action-6-premium-aplus-13-carousel-6\" data-aplus-pagination-dot-action-6-premium-aplus-13-carousel-6='{\"page\": 1}' aria-label=\"slide-1\" aria-controls=\"premium-aplus-13-carousel-6-slide-0\" tabindex=\"0\" role=\"tab\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n           \u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-6-premium-aplus-13-carousel-6\" data-aplus-pagination-dot-action-6-premium-aplus-13-carousel-6='{\"page\": 2}' aria-label=\"slide-2\" aria-controls=\"premium-aplus-13-carousel-6-slide-1\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n           \u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-6-premium-aplus-13-carousel-6\" data-aplus-pagination-dot-action-6-premium-aplus-13-carousel-6='{\"page\": 3}' aria-label=\"slide-3\" aria-controls=\"premium-aplus-13-carousel-6-slide-2\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n           \u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-6-premium-aplus-13-carousel-6\" data-aplus-pagination-dot-action-6-premium-aplus-13-carousel-6='{\"page\": 4}' aria-label=\"slide-4\" aria-controls=\"premium-aplus-13-carousel-6-slide-3\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n          \u003c\/ul\u003e\n         \u003c\/div\u003e\n        \u003c\/div\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n     \u003c\/div\u003e\n     \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when(\"premium-aplus-13-carousel-6\").execute('invoke-premium-13-carousel-desktop', function(init){init();});\n}));\u003c\/script\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003cdiv\u003e\u003cdiv id=\"feature-bullets\" class=\"a-section a-spacing-medium a-spacing-top-small\"\u003e\n \u003cul class=\"a-unordered-list a-vertical a-spacing-mini\"\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ Native 1080P Full HD Projector ] - HAPPRUN H1 delivers sharp, detailed images with native 1920×1080 resolution. Enjoy movies, TV shows, gaming, and everyday entertainment on the big screen. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ Mini \u0026amp; Portable Projector ] - Compact and easy to carry in a backpack, the H1 is ideal for bedrooms, apartments, backyards, camping, and travel. Take your big-screen entertainment wherever you go. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ TV Stick Ready for Streaming ] - Connect a compatible TV stick such as Fire TV Stick or Chromecast via HDMI for easy access to streaming content. A TV stick is recommended for convenient streaming and is sold separately, not included. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ Easy HDMI Device Connection ] - Connect laptops and other HDMI-enabled devices directly with the included HDMI cable. Phones and tablets require a compatible phone-to-HDMI adapter, sold separately. For easier streaming, use a TV stick. Phone video playback may vary by device, app, or HDCP requirements. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ Bluetooth 5.3 Audio ] - Connect Bluetooth speakers or headphones for wireless audio. Bluetooth supports audio only, not video casting, making it easy to add external sound or enjoy private viewing. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ Built-in Stereo Speakers ] - Enjoy clear sound from the H1's built-in stereo speakers for movies, shows, gaming, and everyday entertainment. For more sound, connect a Bluetooth speaker or headphones \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ Up to 200\" Big Screen ] - Enjoy a large image up to 200 inches and adjust the image size to fit your space and viewing distance. Great for movie nights, gaming, and outdoor entertainments \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e [ 3-Way Installation ] - Set up the H1 on a desktop, tripod, or ceiling mount to fit your room and viewing needs \u003c\/span\u003e\u003c\/li\u003e\n \u003c\/ul\u003e\n \u003cdiv id=\"product-details-jumplink\" class=\"a-section\"\u003e\n  \u003cspan class=\"caretnext\"\u003e›\u003c\/span\u003e \u003ca id=\"seeMoreDetailsLink\" class=\"a-link-normal\" href=\"#productDetails\"\u003e See more product details \u003c\/a\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003cdiv\u003e\u003cdiv class=\"a-section a-spacing-small a-spacing-top-small\"\u003e\n \u003ctable class=\"a-normal a-spacing-micro\" role=\"list\"\u003e\n  \u003ctbody\u003e\n   \u003ctr class=\"a-spacing-small po-brand\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eBrand\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eHAPPRUN\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-recommended_uses_for_product\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eRecommended Uses For Product\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eHome Cinema\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-special_feature\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eSpecial Feature\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eLightweight\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-connectivity_technology\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eConnectivity Technology\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003e3.5mm Jack, Bluetooth, HDMI, IR, USB\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-native_resolution\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eDisplay resolution\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003e1920 x 1080\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n \u003c\/table\u003e\n\u003c\/div\u003e\u003c\/div\u003e","brand":"Dandelion Roots","offers":[{"title":"Standard","offer_id":49348989616379,"sku":"B0B28G5Y4R","price":123.13,"currency_code":"USD","in_stock":true},{"title":"Official Licensed Google TV","offer_id":49348989649147,"sku":"B0DJXRGJ66","price":391.4,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0814\/4538\/8539\/files\/816CUoLVaCL._AC_SL1500.jpg?v=1790063672","url":"https:\/\/dandelionrootsshop.com\/products\/happrun-native-1080p-bluetooth-projector-standard","provider":"Dandelion Roots","version":"1.0","type":"link"}