[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-c7534e2b95708d4f-building-interactive-uis-with-the-html-in-canvas-a-summary":3,"summaries-facets-categories":184,"summary-related-c7534e2b95708d4f-building-interactive-uis-with-the-html-in-canvas-a-summary":4659},{"id":4,"title":5,"ai":6,"body":13,"categories":143,"created_at":145,"date_modified":145,"description":137,"extension":146,"faq":145,"featured":147,"kicker_label":145,"meta":148,"navigation":163,"path":164,"published_at":165,"question":145,"scraped_at":166,"seo":167,"sitemap":168,"source_id":169,"source_name":170,"source_type":171,"source_url":172,"stem":173,"tags":174,"thumbnail_url":179,"tldr":180,"tweet":181,"unknown_tags":182,"__hash__":183},"summaries\u002Fsummaries\u002Fc7534e2b95708d4f-building-interactive-uis-with-the-html-in-canvas-a-summary.md","Building Interactive UIs with the HTML-in-Canvas API",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","google\u002Fgemini-3.1-flash-lite",8068,711,3818,0.0030835,{"type":14,"value":15,"toc":136},"minimark",[16,21,25,29,37,103,107,110],[17,18,20],"h2",{"id":19},"bridging-the-gap-between-dom-and-canvas","Bridging the Gap Between DOM and Canvas",[22,23,24],"p",{},"Traditionally, developers faced a trade-off: use the DOM for rich, accessible, and interactive UI, or use Canvas\u002FWebGL\u002FWebGPU for high-performance, low-level graphics. When UI is rendered into a canvas, it typically loses essential browser features like text selection, accessibility trees, find-in-page, autofill, and dark mode. The HTML-in-Canvas API resolves this by allowing developers to paint DOM content into a canvas texture while keeping the underlying elements live and connected to the browser's rendering engine.",[17,26,28],{"id":27},"implementation-workflow","Implementation Workflow",[22,30,31,32,36],{},"The API works by treating the HTML inside a ",[33,34,35],"code",{},"\u003Ccanvas>"," tag as a live, interactive subtree. The process involves three primary steps:",[38,39,40,52,93],"ol",{},[41,42,43,47,48,51],"li",{},[44,45,46],"strong",{},"Setup",": Apply the ",[33,49,50],{},"layout-subtree"," property to the canvas element. This signals the browser to treat the canvas content as part of the accessible DOM tree.",[41,53,54,57,58],{},[44,55,56],{},"Rendering",": Use specific API calls based on the context:\n",[59,60,61,75,84],"ul",{},[41,62,63,66,67,70,71,74],{},[44,64,65],{},"2D Context",": Use ",[33,68,69],{},"drawElementImage(element, x, y)"," within the ",[33,72,73],{},"onpaint"," event.",[41,76,77,66,80,83],{},[44,78,79],{},"WebGL",[33,81,82],{},"textElementImage2D(element)"," to map the DOM element to a texture.",[41,85,86,66,89,92],{},[44,87,88],{},"WebGPU",[33,90,91],{},"copyElementImageToTexture(element)"," to handle the transfer.",[41,94,95,98,99,102],{},[44,96,97],{},"Transform Synchronization",": Because the canvas is a pixel grid, you must manually update the CSS ",[33,100,101],{},"transform"," property of the DOM element to match its position within the 3D or 2D space. This ensures that hit-testing, accessibility, and browser interactions (like right-clicking to save an image) remain functional.",[17,104,106],{"id":105},"practical-advantages-and-use-cases","Practical Advantages and Use Cases",[22,108,109],{},"By keeping the UI as standard HTML\u002FCSS, developers gain several immediate benefits:",[59,111,112,118,124,130],{},[41,113,114,117],{},[44,115,116],{},"Accessibility & SEO",": Screen readers and search crawlers can parse the content inside the canvas as standard text.",[41,119,120,123],{},[44,121,122],{},"Browser Integration",": Features like browser-native translation, dark mode, and 'find-in-page' work automatically without custom logic.",[41,125,126,129],{},[44,127,128],{},"Framework Support",": Libraries like Three.js and PlayCanvas have already introduced experimental support, simplifying the integration of HTML textures into 3D meshes.",[41,131,132,135],{},[44,133,134],{},"AI Compatibility",": Because the content remains in the DOM tree, AI agents and crawlers can easily extract and index the text, which is often impossible with traditional pixel-based canvas rendering.",{"title":137,"searchDepth":138,"depth":138,"links":139},"",2,[140,141,142],{"id":19,"depth":138,"text":20},{"id":27,"depth":138,"text":28},{"id":105,"depth":138,"text":106},[144],"Design & Frontend",null,"md",false,{"content_references":149,"triage":158},[150,155],{"type":151,"title":152,"url":153,"context":154},"tool","Three.js","https:\u002F\u002Fgoo.gle\u002FHIC-threejs","recommended",{"type":151,"title":156,"url":157,"context":154},"PlayCanvas","https:\u002F\u002Fgoo.gle\u002FHIC-playcanvas",{"relevance":159,"novelty":160,"quality":159,"actionability":159,"composite":161,"reasoning":162},4,3,3.8,"Category: Design & Frontend. The article discusses the HTML-in-Canvas API, which directly addresses the pain point of bridging the gap between DOM and Canvas for interactive UIs, making it relevant for developers focused on frontend architecture. It provides a clear implementation workflow and practical advantages, making it actionable for the audience.",true,"\u002Fsummaries\u002Fc7534e2b95708d4f-building-interactive-uis-with-the-html-in-canvas-a-summary","2026-05-21 16:35:02","2026-06-06 15:51:28",{"title":5,"description":137},{"loc":164},"c7534e2b95708d4f","Chrome for Developers","video","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=TUtKGTeFWjQ","summaries\u002Fc7534e2b95708d4f-building-interactive-uis-with-the-html-in-canvas-a-summary",[175,176,177,178],"frontend","web","canvas","webgl","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002FTUtKGTeFWjQ\u002Fhqdefault.jpg","The HTML-in-Canvas API allows developers to render DOM elements directly into Canvas, WebGL, or WebGPU textures while maintaining full browser accessibility, interactivity, and integration features.","This talk introduces the [HTML-in-Canvas API](https:\u002F\u002Fgoo.gle\u002FHIC-explainer), which allows developers to render DOM elements into Canvas, WebGL, or WebGPU textures while preserving accessibility, text selection, and browser features like autofill. It covers the basic implementation steps and highlights early integration support in [Three.js](https:\u002F\u002Fgoo.gle\u002FHIC-threejs) and [PlayCanvas](https:\u002F\u002Fgoo.gle\u002FHIC-playcanvas).",[176,177,178],"ktQ0efprrjQmc6SKw7WGRxdaezFbbaDij4msa84iqGQ",[185,188,191,194,197,200,202,204,206,208,210,212,215,217,219,221,223,225,227,229,231,233,235,237,239,241,243,246,248,250,252,254,257,259,261,263,266,268,270,272,274,276,278,280,282,284,286,288,291,293,295,297,299,301,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,377,379,381,383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,433,435,437,439,441,443,445,447,449,451,453,455,457,459,461,463,465,467,469,471,473,475,477,479,481,483,485,487,489,491,493,495,497,499,501,503,505,507,509,511,513,515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,545,547,549,551,553,555,557,559,561,563,565,567,569,571,573,575,577,579,581,583,585,587,589,591,593,595,597,599,601,603,605,607,609,611,613,615,617,619,621,623,625,627,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741,743,745,747,749,751,753,755,757,759,761,763,765,767,769,771,773,775,777,779,781,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,849,851,853,855,857,859,861,863,865,867,869,871,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,903,905,907,909,911,913,915,917,919,921,923,925,927,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341,2343,2345,2347,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2633,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035,3037,3039,3041,3043,3045,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489,3491,3493,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589,3591,3593,3595,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669,3671,3673,3675,3677,3679,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771,3773,3775,3777,3779,3781,3783,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921,3923,3925,3927,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947,3949,3951,3953,3955,3957,3959,3961,3963,3965,3967,3969,3971,3973,3975,3977,3979,3981,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009,4011,4013,4015,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037,4039,4041,4043,4045,4047,4049,4051,4053,4055,4057,4059,4061,4063,4065,4067,4069,4071,4073,4075,4077,4079,4081,4083,4085,4087,4089,4091,4093,4095,4097,4099,4101,4103,4105,4107,4109,4111,4113,4115,4117,4119,4121,4123,4125,4127,4129,4131,4133,4135,4137,4139,4141,4143,4145,4147,4149,4151,4153,4155,4157,4159,4161,4163,4165,4167,4169,4171,4173,4175,4177,4179,4181,4183,4185,4187,4189,4191,4193,4195,4197,4199,4201,4203,4205,4207,4209,4211,4213,4215,4217,4219,4221,4223,4225,4227,4229,4231,4233,4235,4237,4239,4241,4243,4245,4247,4249,4251,4253,4255,4257,4259,4261,4263,4265,4267,4269,4271,4273,4275,4277,4279,4281,4283,4285,4287,4289,4291,4293,4295,4297,4299,4301,4303,4305,4307,4309,4311,4313,4315,4317,4319,4321,4323,4325,4327,4329,4331,4333,4335,4337,4339,4341,4343,4345,4347,4349,4351,4353,4355,4357,4359,4361,4363,4365,4367,4369,4371,4373,4375,4377,4379,4381,4383,4385,4387,4389,4391,4393,4395,4397,4399,4401,4403,4405,4407,4409,4411,4413,4415,4417,4419,4421,4423,4425,4427,4429,4431,4433,4435,4437,4439,4441,4443,4445,4447,4449,4451,4453,4455,4457,4459,4461,4463,4465,4467,4469,4471,4473,4475,4477,4479,4481,4483,4485,4487,4489,4491,4493,4495,4497,4499,4501,4503,4505,4507,4509,4511,4513,4515,4517,4519,4521,4523,4525,4527,4529,4531,4533,4535,4537,4539,4541,4543,4545,4547,4549,4551,4553,4555,4557,4559,4561,4563,4565,4567,4569,4571,4573,4575,4577,4579,4581,4583,4585,4587,4589,4591,4593,4595,4597,4599,4601,4603,4605,4607,4609,4611,4613,4615,4617,4619,4621,4623,4625,4627,4629,4631,4633,4635,4637,4639,4641,4643,4645,4647,4649,4651,4653,4655,4657],{"categories":186},[187],"Developer Productivity",{"categories":189},[190],"Business & SaaS",{"categories":192},[193],"AI & LLMs",{"categories":195},[196],"AI Automation",{"categories":198},[199],"Product Strategy",{"categories":201},[193],{"categories":203},[187],{"categories":205},[190],{"categories":207},[],{"categories":209},[193],{"categories":211},[],{"categories":213},[214],"AI News & Trends",{"categories":216},[196],{"categories":218},[196],{"categories":220},[214],{"categories":222},[196],{"categories":224},[196],{"categories":226},[196],{"categories":228},[193],{"categories":230},[193],{"categories":232},[193],{"categories":234},[214],{"categories":236},[193],{"categories":238},[193],{"categories":240},[],{"categories":242},[144],{"categories":244},[245],"Data Science & Visualization",{"categories":247},[214],{"categories":249},[193],{"categories":251},[],{"categories":253},[193],{"categories":255},[256],"Software Engineering",{"categories":258},[193],{"categories":260},[196],{"categories":262},[193],{"categories":264},[265],"Marketing & Growth",{"categories":267},[144],{"categories":269},[193],{"categories":271},[196],{"categories":273},[],{"categories":275},[],{"categories":277},[144],{"categories":279},[196],{"categories":281},[187],{"categories":283},[256],{"categories":285},[144],{"categories":287},[193],{"categories":289},[290],"DevOps & Cloud",{"categories":292},[196],{"categories":294},[214],{"categories":296},[193],{"categories":298},[],{"categories":300},[],{"categories":302},[196],{"categories":304},[256],{"categories":306},[],{"categories":308},[190],{"categories":310},[],{"categories":312},[],{"categories":314},[193],{"categories":316},[196],{"categories":318},[193],{"categories":320},[193],{"categories":322},[196],{"categories":324},[193],{"categories":326},[193],{"categories":328},[193],{"categories":330},[],{"categories":332},[256],{"categories":334},[],{"categories":336},[],{"categories":338},[256],{"categories":340},[],{"categories":342},[256],{"categories":344},[193],{"categories":346},[193],{"categories":348},[265],{"categories":350},[144],{"categories":352},[144],{"categories":354},[193],{"categories":356},[256],{"categories":358},[196],{"categories":360},[256],{"categories":362},[193],{"categories":364},[193],{"categories":366},[196],{"categories":368},[196],{"categories":370},[245],{"categories":372},[214],{"categories":374},[196],{"categories":376},[196],{"categories":378},[265],{"categories":380},[196],{"categories":382},[199],{"categories":384},[256],{"categories":386},[],{"categories":388},[196],{"categories":390},[],{"categories":392},[196],{"categories":394},[256],{"categories":396},[290],{"categories":398},[144],{"categories":400},[193],{"categories":402},[],{"categories":404},[256],{"categories":406},[193],{"categories":408},[],{"categories":410},[196],{"categories":412},[],{"categories":414},[193],{"categories":416},[],{"categories":418},[187],{"categories":420},[256],{"categories":422},[190],{"categories":424},[193],{"categories":426},[193],{"categories":428},[214],{"categories":430},[193],{"categories":432},[],{"categories":434},[193],{"categories":436},[],{"categories":438},[256],{"categories":440},[245],{"categories":442},[],{"categories":444},[193],{"categories":446},[144],{"categories":448},[],{"categories":450},[144],{"categories":452},[196],{"categories":454},[],{"categories":456},[193],{"categories":458},[193],{"categories":460},[196],{"categories":462},[214],{"categories":464},[190],{"categories":466},[193],{"categories":468},[],{"categories":470},[256],{"categories":472},[196],{"categories":474},[193],{"categories":476},[199],{"categories":478},[],{"categories":480},[193],{"categories":482},[199],{"categories":484},[196],{"categories":486},[193],{"categories":488},[196],{"categories":490},[],{"categories":492},[245],{"categories":494},[193],{"categories":496},[],{"categories":498},[187],{"categories":500},[193],{"categories":502},[190],{"categories":504},[193],{"categories":506},[196],{"categories":508},[193],{"categories":510},[256],{"categories":512},[193],{"categories":514},[],{"categories":516},[],{"categories":518},[193],{"categories":520},[193],{"categories":522},[],{"categories":524},[144],{"categories":526},[],{"categories":528},[193],{"categories":530},[],{"categories":532},[196],{"categories":534},[193],{"categories":536},[144],{"categories":538},[],{"categories":540},[193],{"categories":542},[193],{"categories":544},[190],{"categories":546},[196],{"categories":548},[193],{"categories":550},[193],{"categories":552},[144],{"categories":554},[196],{"categories":556},[],{"categories":558},[196],{"categories":560},[],{"categories":562},[214],{"categories":564},[],{"categories":566},[193],{"categories":568},[190,265],{"categories":570},[],{"categories":572},[193],{"categories":574},[196],{"categories":576},[],{"categories":578},[],{"categories":580},[144],{"categories":582},[193],{"categories":584},[],{"categories":586},[193],{"categories":588},[290],{"categories":590},[],{"categories":592},[214],{"categories":594},[144],{"categories":596},[],{"categories":598},[214],{"categories":600},[193],{"categories":602},[196],{"categories":604},[214],{"categories":606},[193],{"categories":608},[265],{"categories":610},[],{"categories":612},[190],{"categories":614},[256],{"categories":616},[193],{"categories":618},[196],{"categories":620},[],{"categories":622},[193,290],{"categories":624},[193],{"categories":626},[193],{"categories":628},[193],{"categories":630},[196],{"categories":632},[193,256],{"categories":634},[245],{"categories":636},[193],{"categories":638},[256],{"categories":640},[265],{"categories":642},[196],{"categories":644},[193],{"categories":646},[196],{"categories":648},[],{"categories":650},[196],{"categories":652},[193],{"categories":654},[193,190],{"categories":656},[190],{"categories":658},[],{"categories":660},[144],{"categories":662},[144],{"categories":664},[],{"categories":666},[],{"categories":668},[214],{"categories":670},[],{"categories":672},[187],{"categories":674},[193],{"categories":676},[256],{"categories":678},[193],{"categories":680},[144],{"categories":682},[196],{"categories":684},[256],{"categories":686},[214],{"categories":688},[144],{"categories":690},[],{"categories":692},[193],{"categories":694},[193],{"categories":696},[193],{"categories":698},[193],{"categories":700},[193],{"categories":702},[193],{"categories":704},[214],{"categories":706},[187],{"categories":708},[193],{"categories":710},[196],{"categories":712},[290],{"categories":714},[144],{"categories":716},[193],{"categories":718},[196],{"categories":720},[],{"categories":722},[],{"categories":724},[144],{"categories":726},[214],{"categories":728},[245],{"categories":730},[],{"categories":732},[193],{"categories":734},[193],{"categories":736},[190],{"categories":738},[193],{"categories":740},[193],{"categories":742},[193],{"categories":744},[214],{"categories":746},[144],{"categories":748},[],{"categories":750},[196],{"categories":752},[256],{"categories":754},[],{"categories":756},[193],{"categories":758},[193],{"categories":760},[196],{"categories":762},[256],{"categories":764},[193],{"categories":766},[],{"categories":768},[],{"categories":770},[193],{"categories":772},[],{"categories":774},[199],{"categories":776},[190],{"categories":778},[196],{"categories":780},[196],{"categories":782},[],{"categories":784},[187],{"categories":786},[193],{"categories":788},[190],{"categories":790},[214],{"categories":792},[187],{"categories":794},[],{"categories":796},[193],{"categories":798},[],{"categories":800},[],{"categories":802},[214],{"categories":804},[214],{"categories":806},[],{"categories":808},[144],{"categories":810},[256],{"categories":812},[],{"categories":814},[190],{"categories":816},[],{"categories":818},[],{"categories":820},[187],{"categories":822},[],{"categories":824},[265],{"categories":826},[196],{"categories":828},[190],{"categories":830},[196],{"categories":832},[256],{"categories":834},[],{"categories":836},[199],{"categories":838},[144],{"categories":840},[256],{"categories":842},[193],{"categories":844},[196],{"categories":846},[190],{"categories":848},[193],{"categories":850},[],{"categories":852},[],{"categories":854},[256],{"categories":856},[245],{"categories":858},[199],{"categories":860},[196],{"categories":862},[193],{"categories":864},[],{"categories":866},[290],{"categories":868},[],{"categories":870},[196],{"categories":872},[],{"categories":874},[187],{"categories":876},[],{"categories":878},[193],{"categories":880},[193],{"categories":882},[144],{"categories":884},[265],{"categories":886},[256],{"categories":888},[196],{"categories":890},[],{"categories":892},[256],{"categories":894},[187],{"categories":896},[],{"categories":898},[214],{"categories":900},[193,290],{"categories":902},[193],{"categories":904},[214],{"categories":906},[193],{"categories":908},[193],{"categories":910},[190],{"categories":912},[193],{"categories":914},[],{"categories":916},[193],{"categories":918},[190],{"categories":920},[193],{"categories":922},[],{"categories":924},[196],{"categories":926},[256],{"categories":928},[144],{"categories":930},[214],{"categories":932},[245],{"categories":934},[193],{"categories":936},[187],{"categories":938},[193],{"categories":940},[196],{"categories":942},[256],{"categories":944},[],{"categories":946},[],{"categories":948},[196],{"categories":950},[199],{"categories":952},[],{"categories":954},[193],{"categories":956},[],{"categories":958},[144],{"categories":960},[196],{"categories":962},[256],{"categories":964},[144],{"categories":966},[193],{"categories":968},[144],{"categories":970},[],{"categories":972},[],{"categories":974},[214],{"categories":976},[196],{"categories":978},[196],{"categories":980},[193],{"categories":982},[193],{"categories":984},[193],{"categories":986},[190],{"categories":988},[193],{"categories":990},[],{"categories":992},[256],{"categories":994},[256],{"categories":996},[190],{"categories":998},[],{"categories":1000},[193],{"categories":1002},[193],{"categories":1004},[196],{"categories":1006},[187],{"categories":1008},[190],{"categories":1010},[214],{"categories":1012},[196],{"categories":1014},[265],{"categories":1016},[193],{"categories":1018},[196],{"categories":1020},[],{"categories":1022},[144],{"categories":1024},[],{"categories":1026},[193],{"categories":1028},[193],{"categories":1030},[],{"categories":1032},[190],{"categories":1034},[196],{"categories":1036},[],{"categories":1038},[193],{"categories":1040},[290],{"categories":1042},[245],{"categories":1044},[256],{"categories":1046},[265],{"categories":1048},[193],{"categories":1050},[144],{"categories":1052},[193],{"categories":1054},[256],{"categories":1056},[196],{"categories":1058},[],{"categories":1060},[],{"categories":1062},[196],{"categories":1064},[187],{"categories":1066},[196],{"categories":1068},[199],{"categories":1070},[190],{"categories":1072},[],{"categories":1074},[193],{"categories":1076},[199],{"categories":1078},[193],{"categories":1080},[193],{"categories":1082},[193],{"categories":1084},[193],{"categories":1086},[265],{"categories":1088},[193],{"categories":1090},[193],{"categories":1092},[193],{"categories":1094},[144],{"categories":1096},[196],{"categories":1098},[],{"categories":1100},[],{"categories":1102},[290],{"categories":1104},[256],{"categories":1106},[],{"categories":1108},[196],{"categories":1110},[193],{"categories":1112},[144,193],{"categories":1114},[187],{"categories":1116},[],{"categories":1118},[193],{"categories":1120},[187],{"categories":1122},[144],{"categories":1124},[196],{"categories":1126},[256],{"categories":1128},[],{"categories":1130},[193],{"categories":1132},[],{"categories":1134},[],{"categories":1136},[193],{"categories":1138},[187],{"categories":1140},[193],{"categories":1142},[],{"categories":1144},[196],{"categories":1146},[199],{"categories":1148},[193],{"categories":1150},[193],{"categories":1152},[193],{"categories":1154},[144],{"categories":1156},[196],{"categories":1158},[290],{"categories":1160},[144],{"categories":1162},[190],{"categories":1164},[196],{"categories":1166},[193],{"categories":1168},[193],{"categories":1170},[193],{"categories":1172},[196],{"categories":1174},[256],{"categories":1176},[193],{"categories":1178},[199],{"categories":1180},[],{"categories":1182},[214],{"categories":1184},[],{"categories":1186},[199],{"categories":1188},[196],{"categories":1190},[144],{"categories":1192},[193],{"categories":1194},[193],{"categories":1196},[196],{"categories":1198},[256],{"categories":1200},[144],{"categories":1202},[196],{"categories":1204},[214],{"categories":1206},[],{"categories":1208},[193],{"categories":1210},[],{"categories":1212},[193],{"categories":1214},[144],{"categories":1216},[193],{"categories":1218},[187],{"categories":1220},[214],{"categories":1222},[193],{"categories":1224},[265],{"categories":1226},[193],{"categories":1228},[193],{"categories":1230},[196],{"categories":1232},[196],{"categories":1234},[193],{"categories":1236},[196],{"categories":1238},[196],{"categories":1240},[193],{"categories":1242},[193],{"categories":1244},[196],{"categories":1246},[144],{"categories":1248},[193],{"categories":1250},[193],{"categories":1252},[],{"categories":1254},[],{"categories":1256},[256],{"categories":1258},[],{"categories":1260},[187],{"categories":1262},[290],{"categories":1264},[193],{"categories":1266},[],{"categories":1268},[187],{"categories":1270},[190],{"categories":1272},[193],{"categories":1274},[265],{"categories":1276},[],{"categories":1278},[190],{"categories":1280},[],{"categories":1282},[193],{"categories":1284},[256],{"categories":1286},[],{"categories":1288},[],{"categories":1290},[],{"categories":1292},[],{"categories":1294},[193],{"categories":1296},[196],{"categories":1298},[290],{"categories":1300},[187],{"categories":1302},[256],{"categories":1304},[193],{"categories":1306},[193],{"categories":1308},[256],{"categories":1310},[199],{"categories":1312},[193],{"categories":1314},[265],{"categories":1316},[190],{"categories":1318},[193],{"categories":1320},[193],{"categories":1322},[193],{"categories":1324},[193,187],{"categories":1326},[256],{"categories":1328},[256],{"categories":1330},[144],{"categories":1332},[196],{"categories":1334},[193],{"categories":1336},[193],{"categories":1338},[],{"categories":1340},[],{"categories":1342},[193],{"categories":1344},[],{"categories":1346},[256],{"categories":1348},[245],{"categories":1350},[214],{"categories":1352},[144],{"categories":1354},[193],{"categories":1356},[256],{"categories":1358},[],{"categories":1360},[193],{"categories":1362},[193],{"categories":1364},[],{"categories":1366},[196],{"categories":1368},[193],{"categories":1370},[193],{"categories":1372},[],{"categories":1374},[196],{"categories":1376},[193],{"categories":1378},[190],{"categories":1380},[],{"categories":1382},[187],{"categories":1384},[193],{"categories":1386},[187],{"categories":1388},[193],{"categories":1390},[256],{"categories":1392},[265],{"categories":1394},[196],{"categories":1396},[196],{"categories":1398},[193,144],{"categories":1400},[214],{"categories":1402},[193],{"categories":1404},[144],{"categories":1406},[],{"categories":1408},[256],{"categories":1410},[290],{"categories":1412},[144],{"categories":1414},[256],{"categories":1416},[193],{"categories":1418},[193],{"categories":1420},[196],{"categories":1422},[],{"categories":1424},[],{"categories":1426},[],{"categories":1428},[],{"categories":1430},[256],{"categories":1432},[196],{"categories":1434},[196],{"categories":1436},[290],{"categories":1438},[193],{"categories":1440},[193],{"categories":1442},[196],{"categories":1444},[193],{"categories":1446},[193],{"categories":1448},[],{"categories":1450},[144],{"categories":1452},[256],{"categories":1454},[],{"categories":1456},[],{"categories":1458},[196],{"categories":1460},[],{"categories":1462},[],{"categories":1464},[265],{"categories":1466},[265],{"categories":1468},[196],{"categories":1470},[256],{"categories":1472},[],{"categories":1474},[193],{"categories":1476},[193],{"categories":1478},[256],{"categories":1480},[144],{"categories":1482},[144],{"categories":1484},[196],{"categories":1486},[187],{"categories":1488},[193],{"categories":1490},[193],{"categories":1492},[144],{"categories":1494},[144],{"categories":1496},[196],{"categories":1498},[196],{"categories":1500},[193],{"categories":1502},[],{"categories":1504},[193],{"categories":1506},[],{"categories":1508},[193],{"categories":1510},[196],{"categories":1512},[214],{"categories":1514},[256],{"categories":1516},[193],{"categories":1518},[187],{"categories":1520},[193],{"categories":1522},[],{"categories":1524},[196],{"categories":1526},[196],{"categories":1528},[],{"categories":1530},[193],{"categories":1532},[187],{"categories":1534},[193],{"categories":1536},[187],{"categories":1538},[187],{"categories":1540},[],{"categories":1542},[256],{"categories":1544},[],{"categories":1546},[196],{"categories":1548},[214],{"categories":1550},[193],{"categories":1552},[196],{"categories":1554},[193],{"categories":1556},[196],{"categories":1558},[193],{"categories":1560},[214],{"categories":1562},[245],{"categories":1564},[193],{"categories":1566},[199],{"categories":1568},[214],{"categories":1570},[144],{"categories":1572},[],{"categories":1574},[],{"categories":1576},[214],{"categories":1578},[],{"categories":1580},[],{"categories":1582},[],{"categories":1584},[],{"categories":1586},[256],{"categories":1588},[256],{"categories":1590},[245],{"categories":1592},[],{"categories":1594},[193],{"categories":1596},[193],{"categories":1598},[245],{"categories":1600},[256],{"categories":1602},[],{"categories":1604},[],{"categories":1606},[196],{"categories":1608},[196],{"categories":1610},[256],{"categories":1612},[196],{"categories":1614},[214],{"categories":1616},[214],{"categories":1618},[196],{"categories":1620},[196],{"categories":1622},[187],{"categories":1624},[193,290],{"categories":1626},[],{"categories":1628},[144],{"categories":1630},[256],{"categories":1632},[187],{"categories":1634},[196],{"categories":1636},[144],{"categories":1638},[],{"categories":1640},[196],{"categories":1642},[196],{"categories":1644},[193],{"categories":1646},[265],{"categories":1648},[256],{"categories":1650},[144],{"categories":1652},[193],{"categories":1654},[],{"categories":1656},[196],{"categories":1658},[144],{"categories":1660},[193],{"categories":1662},[196],{"categories":1664},[196],{"categories":1666},[196],{"categories":1668},[265],{"categories":1670},[245],{"categories":1672},[193],{"categories":1674},[196],{"categories":1676},[193],{"categories":1678},[],{"categories":1680},[265],{"categories":1682},[214],{"categories":1684},[256],{"categories":1686},[193],{"categories":1688},[196],{"categories":1690},[],{"categories":1692},[],{"categories":1694},[193],{"categories":1696},[196],{"categories":1698},[193],{"categories":1700},[214],{"categories":1702},[193],{"categories":1704},[196],{"categories":1706},[196],{"categories":1708},[],{"categories":1710},[193],{"categories":1712},[],{"categories":1714},[],{"categories":1716},[193],{"categories":1718},[196],{"categories":1720},[],{"categories":1722},[],{"categories":1724},[245],{"categories":1726},[193],{"categories":1728},[245],{"categories":1730},[214],{"categories":1732},[193],{"categories":1734},[193],{"categories":1736},[196],{"categories":1738},[193],{"categories":1740},[196],{"categories":1742},[],{"categories":1744},[],{"categories":1746},[290],{"categories":1748},[193],{"categories":1750},[],{"categories":1752},[],{"categories":1754},[187],{"categories":1756},[],{"categories":1758},[],{"categories":1760},[193],{"categories":1762},[],{"categories":1764},[],{"categories":1766},[256],{"categories":1768},[214],{"categories":1770},[265],{"categories":1772},[190],{"categories":1774},[193],{"categories":1776},[193],{"categories":1778},[190],{"categories":1780},[],{"categories":1782},[144],{"categories":1784},[196],{"categories":1786},[190],{"categories":1788},[193],{"categories":1790},[193],{"categories":1792},[187],{"categories":1794},[193],{"categories":1796},[],{"categories":1798},[187],{"categories":1800},[193],{"categories":1802},[265],{"categories":1804},[196],{"categories":1806},[214],{"categories":1808},[193],{"categories":1810},[190],{"categories":1812},[193],{"categories":1814},[193],{"categories":1816},[196],{"categories":1818},[],{"categories":1820},[193],{"categories":1822},[187],{"categories":1824},[193],{"categories":1826},[193],{"categories":1828},[],{"categories":1830},[214],{"categories":1832},[193],{"categories":1834},[193],{"categories":1836},[],{"categories":1838},[190],{"categories":1840},[190],{"categories":1842},[199],{"categories":1844},[193],{"categories":1846},[193],{"categories":1848},[],{"categories":1850},[256],{"categories":1852},[],{"categories":1854},[],{"categories":1856},[193],{"categories":1858},[214],{"categories":1860},[],{"categories":1862},[290],{"categories":1864},[193],{"categories":1866},[193],{"categories":1868},[],{"categories":1870},[193],{"categories":1872},[256],{"categories":1874},[193],{"categories":1876},[193],{"categories":1878},[193,290],{"categories":1880},[193],{"categories":1882},[193],{"categories":1884},[144],{"categories":1886},[196],{"categories":1888},[],{"categories":1890},[196],{"categories":1892},[196],{"categories":1894},[193],{"categories":1896},[193],{"categories":1898},[193],{"categories":1900},[193],{"categories":1902},[187],{"categories":1904},[245],{"categories":1906},[187],{"categories":1908},[256],{"categories":1910},[144],{"categories":1912},[196],{"categories":1914},[],{"categories":1916},[193],{"categories":1918},[214],{"categories":1920},[193],{"categories":1922},[196],{"categories":1924},[193],{"categories":1926},[193],{"categories":1928},[190],{"categories":1930},[],{"categories":1932},[290],{"categories":1934},[144],{"categories":1936},[144],{"categories":1938},[256],{"categories":1940},[196],{"categories":1942},[193],{"categories":1944},[190],{"categories":1946},[214],{"categories":1948},[144],{"categories":1950},[196],{"categories":1952},[193],{"categories":1954},[],{"categories":1956},[193],{"categories":1958},[193],{"categories":1960},[],{"categories":1962},[],{"categories":1964},[193],{"categories":1966},[193],{"categories":1968},[193],{"categories":1970},[193],{"categories":1972},[196],{"categories":1974},[193],{"categories":1976},[193],{"categories":1978},[],{"categories":1980},[245],{"categories":1982},[193],{"categories":1984},[196],{"categories":1986},[],{"categories":1988},[],{"categories":1990},[193],{"categories":1992},[193],{"categories":1994},[193],{"categories":1996},[214],{"categories":1998},[],{"categories":2000},[144],{"categories":2002},[193],{"categories":2004},[290],{"categories":2006},[214],{"categories":2008},[256],{"categories":2010},[256],{"categories":2012},[214],{"categories":2014},[214],{"categories":2016},[290],{"categories":2018},[],{"categories":2020},[214],{"categories":2022},[193],{"categories":2024},[187],{"categories":2026},[193],{"categories":2028},[214],{"categories":2030},[],{"categories":2032},[193],{"categories":2034},[256],{"categories":2036},[245],{"categories":2038},[193],{"categories":2040},[214],{"categories":2042},[256],{"categories":2044},[196],{"categories":2046},[214],{"categories":2048},[290],{"categories":2050},[196],{"categories":2052},[193],{"categories":2054},[193],{"categories":2056},[193],{"categories":2058},[],{"categories":2060},[190],{"categories":2062},[],{"categories":2064},[],{"categories":2066},[193],{"categories":2068},[193],{"categories":2070},[193],{"categories":2072},[193],{"categories":2074},[],{"categories":2076},[245],{"categories":2078},[187],{"categories":2080},[196],{"categories":2082},[144],{"categories":2084},[],{"categories":2086},[193],{"categories":2088},[256],{"categories":2090},[193],{"categories":2092},[290],{"categories":2094},[290],{"categories":2096},[],{"categories":2098},[196],{"categories":2100},[214],{"categories":2102},[214],{"categories":2104},[193],{"categories":2106},[196],{"categories":2108},[],{"categories":2110},[144],{"categories":2112},[193],{"categories":2114},[193],{"categories":2116},[],{"categories":2118},[193],{"categories":2120},[],{"categories":2122},[193],{"categories":2124},[256],{"categories":2126},[290],{"categories":2128},[193],{"categories":2130},[256],{"categories":2132},[190],{"categories":2134},[193],{"categories":2136},[],{"categories":2138},[196],{"categories":2140},[187],{"categories":2142},[187],{"categories":2144},[],{"categories":2146},[193],{"categories":2148},[193],{"categories":2150},[256],{"categories":2152},[144],{"categories":2154},[193],{"categories":2156},[196],{"categories":2158},[],{"categories":2160},[193],{"categories":2162},[193],{"categories":2164},[196],{"categories":2166},[],{"categories":2168},[196],{"categories":2170},[256],{"categories":2172},[],{"categories":2174},[193],{"categories":2176},[196],{"categories":2178},[190],{"categories":2180},[],{"categories":2182},[193],{"categories":2184},[],{"categories":2186},[193],{"categories":2188},[193],{"categories":2190},[],{"categories":2192},[193],{"categories":2194},[193],{"categories":2196},[214],{"categories":2198},[193],{"categories":2200},[193],{"categories":2202},[187],{"categories":2204},[193],{"categories":2206},[245],{"categories":2208},[214],{"categories":2210},[196],{"categories":2212},[],{"categories":2214},[193],{"categories":2216},[144],{"categories":2218},[265],{"categories":2220},[193],{"categories":2222},[196],{"categories":2224},[],{"categories":2226},[],{"categories":2228},[],{"categories":2230},[187],{"categories":2232},[214],{"categories":2234},[196],{"categories":2236},[193],{"categories":2238},[193],{"categories":2240},[144],{"categories":2242},[196],{"categories":2244},[],{"categories":2246},[196],{"categories":2248},[196],{"categories":2250},[],{"categories":2252},[193],{"categories":2254},[196],{"categories":2256},[193],{"categories":2258},[],{"categories":2260},[193],{"categories":2262},[193],{"categories":2264},[214],{"categories":2266},[144],{"categories":2268},[196],{"categories":2270},[144],{"categories":2272},[190],{"categories":2274},[],{"categories":2276},[],{"categories":2278},[193],{"categories":2280},[187],{"categories":2282},[214],{"categories":2284},[],{"categories":2286},[144],{"categories":2288},[],{"categories":2290},[256],{"categories":2292},[256],{"categories":2294},[144],{"categories":2296},[256],{"categories":2298},[],{"categories":2300},[193],{"categories":2302},[193],{"categories":2304},[],{"categories":2306},[265],{"categories":2308},[193],{"categories":2310},[290],{"categories":2312},[256],{"categories":2314},[],{"categories":2316},[196],{"categories":2318},[193],{"categories":2320},[187],{"categories":2322},[196],{"categories":2324},[196],{"categories":2326},[193],{"categories":2328},[193],{"categories":2330},[],{"categories":2332},[187],{"categories":2334},[193],{"categories":2336},[190],{"categories":2338},[256],{"categories":2340},[144],{"categories":2342},[],{"categories":2344},[],{"categories":2346},[],{"categories":2348},[196],{"categories":2350},[256],{"categories":2352},[144],{"categories":2354},[214],{"categories":2356},[193],{"categories":2358},[214],{"categories":2360},[196],{"categories":2362},[144],{"categories":2364},[193],{"categories":2366},[],{"categories":2368},[193],{"categories":2370},[144],{"categories":2372},[214],{"categories":2374},[190],{"categories":2376},[256],{"categories":2378},[193],{"categories":2380},[214],{"categories":2382},[265],{"categories":2384},[],{"categories":2386},[],{"categories":2388},[245],{"categories":2390},[193,256],{"categories":2392},[214],{"categories":2394},[193],{"categories":2396},[193],{"categories":2398},[196],{"categories":2400},[193],{"categories":2402},[196],{"categories":2404},[193],{"categories":2406},[193],{"categories":2408},[],{"categories":2410},[256],{"categories":2412},[193],{"categories":2414},[245],{"categories":2416},[196],{"categories":2418},[265],{"categories":2420},[290],{"categories":2422},[],{"categories":2424},[187],{"categories":2426},[196],{"categories":2428},[196],{"categories":2430},[199],{"categories":2432},[256],{"categories":2434},[193],{"categories":2436},[193],{"categories":2438},[],{"categories":2440},[],{"categories":2442},[],{"categories":2444},[290],{"categories":2446},[193],{"categories":2448},[214],{"categories":2450},[193],{"categories":2452},[193],{"categories":2454},[193],{"categories":2456},[],{"categories":2458},[245],{"categories":2460},[190],{"categories":2462},[196],{"categories":2464},[],{"categories":2466},[193],{"categories":2468},[196],{"categories":2470},[193],{"categories":2472},[290],{"categories":2474},[],{"categories":2476},[144],{"categories":2478},[144],{"categories":2480},[],{"categories":2482},[256],{"categories":2484},[193],{"categories":2486},[144],{"categories":2488},[193],{"categories":2490},[190],{"categories":2492},[],{"categories":2494},[214],{"categories":2496},[193],{"categories":2498},[193],{"categories":2500},[144],{"categories":2502},[196],{"categories":2504},[214],{"categories":2506},[],{"categories":2508},[196],{"categories":2510},[196],{"categories":2512},[144],{"categories":2514},[193],{"categories":2516},[],{"categories":2518},[193],{"categories":2520},[193],{"categories":2522},[290],{"categories":2524},[214],{"categories":2526},[245],{"categories":2528},[245],{"categories":2530},[],{"categories":2532},[],{"categories":2534},[],{"categories":2536},[196],{"categories":2538},[196],{"categories":2540},[256],{"categories":2542},[256],{"categories":2544},[193],{"categories":2546},[193],{"categories":2548},[],{"categories":2550},[],{"categories":2552},[193],{"categories":2554},[],{"categories":2556},[193],{"categories":2558},[196],{"categories":2560},[193],{"categories":2562},[],{"categories":2564},[199],{"categories":2566},[193],{"categories":2568},[144],{"categories":2570},[193],{"categories":2572},[190],{"categories":2574},[193],{"categories":2576},[265],{"categories":2578},[196],{"categories":2580},[193],{"categories":2582},[193],{"categories":2584},[193],{"categories":2586},[256],{"categories":2588},[],{"categories":2590},[214],{"categories":2592},[196],{"categories":2594},[],{"categories":2596},[214],{"categories":2598},[196],{"categories":2600},[196],{"categories":2602},[193],{"categories":2604},[196],{"categories":2606},[],{"categories":2608},[190],{"categories":2610},[196],{"categories":2612},[],{"categories":2614},[256],{"categories":2616},[193],{"categories":2618},[187],{"categories":2620},[214],{"categories":2622},[290],{"categories":2624},[196],{"categories":2626},[193],{"categories":2628},[196],{"categories":2630},[187],{"categories":2632},[],{"categories":2634},[193],{"categories":2636},[],{"categories":2638},[],{"categories":2640},[144],{"categories":2642},[193,190],{"categories":2644},[196],{"categories":2646},[193],{"categories":2648},[],{"categories":2650},[187],{"categories":2652},[245],{"categories":2654},[193],{"categories":2656},[256],{"categories":2658},[193],{"categories":2660},[196],{"categories":2662},[193],{"categories":2664},[193],{"categories":2666},[193],{"categories":2668},[214],{"categories":2670},[196],{"categories":2672},[193],{"categories":2674},[],{"categories":2676},[],{"categories":2678},[196],{"categories":2680},[193],{"categories":2682},[290],{"categories":2684},[],{"categories":2686},[193],{"categories":2688},[196],{"categories":2690},[196],{"categories":2692},[],{"categories":2694},[196],{"categories":2696},[193],{"categories":2698},[265],{"categories":2700},[245],{"categories":2702},[196],{"categories":2704},[193],{"categories":2706},[290],{"categories":2708},[],{"categories":2710},[193],{"categories":2712},[265],{"categories":2714},[144],{"categories":2716},[193],{"categories":2718},[193],{"categories":2720},[],{"categories":2722},[265],{"categories":2724},[214],{"categories":2726},[193],{"categories":2728},[193],{"categories":2730},[187],{"categories":2732},[193],{"categories":2734},[],{"categories":2736},[],{"categories":2738},[144],{"categories":2740},[193],{"categories":2742},[245],{"categories":2744},[265],{"categories":2746},[196],{"categories":2748},[265],{"categories":2750},[214],{"categories":2752},[],{"categories":2754},[193],{"categories":2756},[],{"categories":2758},[193],{"categories":2760},[196],{"categories":2762},[193],{"categories":2764},[193],{"categories":2766},[],{"categories":2768},[193,256],{"categories":2770},[214],{"categories":2772},[196],{"categories":2774},[256],{"categories":2776},[193],{"categories":2778},[187],{"categories":2780},[],{"categories":2782},[],{"categories":2784},[196],{"categories":2786},[256],{"categories":2788},[187],{"categories":2790},[256],{"categories":2792},[256],{"categories":2794},[193],{"categories":2796},[265],{"categories":2798},[193],{"categories":2800},[256],{"categories":2802},[],{"categories":2804},[144,193],{"categories":2806},[290],{"categories":2808},[187],{"categories":2810},[],{"categories":2812},[193],{"categories":2814},[190],{"categories":2816},[190],{"categories":2818},[193],{"categories":2820},[193],{"categories":2822},[193],{"categories":2824},[256],{"categories":2826},[196],{"categories":2828},[214],{"categories":2830},[265],{"categories":2832},[144],{"categories":2834},[193],{"categories":2836},[193],{"categories":2838},[193],{"categories":2840},[193],{"categories":2842},[187],{"categories":2844},[193],{"categories":2846},[196],{"categories":2848},[196],{"categories":2850},[214],{"categories":2852},[256],{"categories":2854},[],{"categories":2856},[],{"categories":2858},[245],{"categories":2860},[256],{"categories":2862},[193],{"categories":2864},[144],{"categories":2866},[193],{"categories":2868},[245],{"categories":2870},[193],{"categories":2872},[193],{"categories":2874},[193],{"categories":2876},[196],{"categories":2878},[196],{"categories":2880},[193,190],{"categories":2882},[],{"categories":2884},[144],{"categories":2886},[],{"categories":2888},[193],{"categories":2890},[214],{"categories":2892},[187],{"categories":2894},[187],{"categories":2896},[196],{"categories":2898},[196],{"categories":2900},[196],{"categories":2902},[193],{"categories":2904},[193],{"categories":2906},[190],{"categories":2908},[256],{"categories":2910},[265],{"categories":2912},[193],{"categories":2914},[],{"categories":2916},[214],{"categories":2918},[193],{"categories":2920},[193],{"categories":2922},[193],{"categories":2924},[193],{"categories":2926},[193],{"categories":2928},[256],{"categories":2930},[214],{"categories":2932},[256],{"categories":2934},[256],{"categories":2936},[193],{"categories":2938},[193],{"categories":2940},[193],{"categories":2942},[196],{"categories":2944},[214],{"categories":2946},[196],{"categories":2948},[193],{"categories":2950},[144],{"categories":2952},[193],{"categories":2954},[193],{"categories":2956},[290],{"categories":2958},[193],{"categories":2960},[199],{"categories":2962},[196],{"categories":2964},[193],{"categories":2966},[214],{"categories":2968},[196],{"categories":2970},[265],{"categories":2972},[193],{"categories":2974},[190],{"categories":2976},[193],{"categories":2978},[],{"categories":2980},[193],{"categories":2982},[193],{"categories":2984},[],{"categories":2986},[],{"categories":2988},[],{"categories":2990},[190],{"categories":2992},[193],{"categories":2994},[196],{"categories":2996},[214],{"categories":2998},[214],{"categories":3000},[214],{"categories":3002},[214],{"categories":3004},[],{"categories":3006},[187],{"categories":3008},[196],{"categories":3010},[214],{"categories":3012},[193],{"categories":3014},[187],{"categories":3016},[196],{"categories":3018},[193],{"categories":3020},[193,196],{"categories":3022},[196],{"categories":3024},[290],{"categories":3026},[214],{"categories":3028},[196],{"categories":3030},[214],{"categories":3032},[196],{"categories":3034},[193],{"categories":3036},[],{"categories":3038},[214],{"categories":3040},[265],{"categories":3042},[187],{"categories":3044},[193],{"categories":3046},[193],{"categories":3048},[],{"categories":3050},[256],{"categories":3052},[],{"categories":3054},[187],{"categories":3056},[196],{"categories":3058},[214],{"categories":3060},[193],{"categories":3062},[214],{"categories":3064},[187],{"categories":3066},[214],{"categories":3068},[214],{"categories":3070},[],{"categories":3072},[190],{"categories":3074},[196],{"categories":3076},[214],{"categories":3078},[214],{"categories":3080},[214],{"categories":3082},[214],{"categories":3084},[214],{"categories":3086},[214],{"categories":3088},[214],{"categories":3090},[214],{"categories":3092},[214],{"categories":3094},[214],{"categories":3096},[245],{"categories":3098},[187],{"categories":3100},[193],{"categories":3102},[193],{"categories":3104},[196],{"categories":3106},[196],{"categories":3108},[],{"categories":3110},[193,187],{"categories":3112},[],{"categories":3114},[196],{"categories":3116},[214],{"categories":3118},[196],{"categories":3120},[193],{"categories":3122},[193],{"categories":3124},[193],{"categories":3126},[193],{"categories":3128},[193],{"categories":3130},[196],{"categories":3132},[190],{"categories":3134},[196],{"categories":3136},[],{"categories":3138},[144],{"categories":3140},[214],{"categories":3142},[193],{"categories":3144},[],{"categories":3146},[],{"categories":3148},[196],{"categories":3150},[144],{"categories":3152},[193],{"categories":3154},[],{"categories":3156},[193],{"categories":3158},[],{"categories":3160},[265],{"categories":3162},[193],{"categories":3164},[],{"categories":3166},[],{"categories":3168},[214],{"categories":3170},[187],{"categories":3172},[193],{"categories":3174},[190],{"categories":3176},[193],{"categories":3178},[193],{"categories":3180},[190],{"categories":3182},[144],{"categories":3184},[],{"categories":3186},[193],{"categories":3188},[214],{"categories":3190},[],{"categories":3192},[144],{"categories":3194},[193],{"categories":3196},[265],{"categories":3198},[193],{"categories":3200},[290],{"categories":3202},[],{"categories":3204},[265],{"categories":3206},[],{"categories":3208},[193],{"categories":3210},[],{"categories":3212},[196],{"categories":3214},[256],{"categories":3216},[],{"categories":3218},[190],{"categories":3220},[187],{"categories":3222},[196],{"categories":3224},[144],{"categories":3226},[256],{"categories":3228},[],{"categories":3230},[],{"categories":3232},[193],{"categories":3234},[187],{"categories":3236},[193],{"categories":3238},[265],{"categories":3240},[],{"categories":3242},[196],{"categories":3244},[196],{"categories":3246},[214],{"categories":3248},[256],{"categories":3250},[193],{"categories":3252},[196],{"categories":3254},[193],{"categories":3256},[196],{"categories":3258},[193],{"categories":3260},[199],{"categories":3262},[265],{"categories":3264},[214],{"categories":3266},[],{"categories":3268},[265],{"categories":3270},[],{"categories":3272},[256],{"categories":3274},[196],{"categories":3276},[],{"categories":3278},[193],{"categories":3280},[193],{"categories":3282},[196],{"categories":3284},[190],{"categories":3286},[187],{"categories":3288},[193],{"categories":3290},[144],{"categories":3292},[256],{"categories":3294},[256],{"categories":3296},[193],{"categories":3298},[245],{"categories":3300},[196],{"categories":3302},[193],{"categories":3304},[196],{"categories":3306},[190],{"categories":3308},[144],{"categories":3310},[256],{"categories":3312},[196],{"categories":3314},[193],{"categories":3316},[193],{"categories":3318},[196],{"categories":3320},[193],{"categories":3322},[214],{"categories":3324},[],{"categories":3326},[187],{"categories":3328},[193],{"categories":3330},[193],{"categories":3332},[193],{"categories":3334},[196],{"categories":3336},[193],{"categories":3338},[193],{"categories":3340},[],{"categories":3342},[193],{"categories":3344},[144],{"categories":3346},[190],{"categories":3348},[214],{"categories":3350},[196],{"categories":3352},[193],{"categories":3354},[193],{"categories":3356},[144],{"categories":3358},[196],{"categories":3360},[193],{"categories":3362},[265],{"categories":3364},[245],{"categories":3366},[193],{"categories":3368},[214],{"categories":3370},[193],{"categories":3372},[196],{"categories":3374},[290],{"categories":3376},[193],{"categories":3378},[196],{"categories":3380},[245],{"categories":3382},[],{"categories":3384},[196],{"categories":3386},[256],{"categories":3388},[144],{"categories":3390},[193],{"categories":3392},[187],{"categories":3394},[256],{"categories":3396},[190],{"categories":3398},[256],{"categories":3400},[193],{"categories":3402},[],{"categories":3404},[196],{"categories":3406},[196],{"categories":3408},[193],{"categories":3410},[245],{"categories":3412},[],{"categories":3414},[214],{"categories":3416},[],{"categories":3418},[214],{"categories":3420},[193],{"categories":3422},[193],{"categories":3424},[196],{"categories":3426},[196],{"categories":3428},[196],{"categories":3430},[],{"categories":3432},[214],{"categories":3434},[],{"categories":3436},[193],{"categories":3438},[193],{"categories":3440},[],{"categories":3442},[144],{"categories":3444},[256],{"categories":3446},[196],{"categories":3448},[193],{"categories":3450},[265],{"categories":3452},[193],{"categories":3454},[193],{"categories":3456},[187],{"categories":3458},[],{"categories":3460},[193],{"categories":3462},[],{"categories":3464},[187],{"categories":3466},[214],{"categories":3468},[256],{"categories":3470},[193],{"categories":3472},[193],{"categories":3474},[193],{"categories":3476},[256],{"categories":3478},[214],{"categories":3480},[144],{"categories":3482},[193],{"categories":3484},[193],{"categories":3486},[193],{"categories":3488},[214],{"categories":3490},[144],{"categories":3492},[193],{"categories":3494},[214],{"categories":3496},[144],{"categories":3498},[214],{"categories":3500},[196],{"categories":3502},[196],{"categories":3504},[256],{"categories":3506},[214],{"categories":3508},[196],{"categories":3510},[196],{"categories":3512},[193],{"categories":3514},[256],{"categories":3516},[144],{"categories":3518},[193],{"categories":3520},[],{"categories":3522},[196],{"categories":3524},[],{"categories":3526},[],{"categories":3528},[],{"categories":3530},[190],{"categories":3532},[196],{"categories":3534},[193],{"categories":3536},[196],{"categories":3538},[187],{"categories":3540},[196],{"categories":3542},[265],{"categories":3544},[196],{"categories":3546},[],{"categories":3548},[196],{"categories":3550},[],{"categories":3552},[187],{"categories":3554},[196],{"categories":3556},[],{"categories":3558},[196],{"categories":3560},[193],{"categories":3562},[193],{"categories":3564},[214],{"categories":3566},[193],{"categories":3568},[196],{"categories":3570},[193],{"categories":3572},[193],{"categories":3574},[214],{"categories":3576},[196],{"categories":3578},[256],{"categories":3580},[144],{"categories":3582},[187],{"categories":3584},[],{"categories":3586},[196],{"categories":3588},[144],{"categories":3590},[290],{"categories":3592},[214],{"categories":3594},[193],{"categories":3596},[144],{"categories":3598},[193],{"categories":3600},[187],{"categories":3602},[],{"categories":3604},[196],{"categories":3606},[193],{"categories":3608},[193],{"categories":3610},[196],{"categories":3612},[193],{"categories":3614},[144],{"categories":3616},[],{"categories":3618},[196],{"categories":3620},[199],{"categories":3622},[214],{"categories":3624},[196],{"categories":3626},[190],{"categories":3628},[],{"categories":3630},[193],{"categories":3632},[199],{"categories":3634},[193],{"categories":3636},[196],{"categories":3638},[214],{"categories":3640},[187],{"categories":3642},[290],{"categories":3644},[193],{"categories":3646},[193],{"categories":3648},[193],{"categories":3650},[214],{"categories":3652},[190],{"categories":3654},[193],{"categories":3656},[144],{"categories":3658},[214],{"categories":3660},[290],{"categories":3662},[193],{"categories":3664},[],{"categories":3666},[],{"categories":3668},[193],{"categories":3670},[290],{"categories":3672},[245],{"categories":3674},[196],{"categories":3676},[196],{"categories":3678},[214],{"categories":3680},[193],{"categories":3682},[187],{"categories":3684},[193],{"categories":3686},[144],{"categories":3688},[196],{"categories":3690},[196],{"categories":3692},[193],{"categories":3694},[265],{"categories":3696},[193],{"categories":3698},[196],{"categories":3700},[],{"categories":3702},[193],{"categories":3704},[193],{"categories":3706},[193],{"categories":3708},[214],{"categories":3710},[187],{"categories":3712},[],{"categories":3714},[193],{"categories":3716},[193],{"categories":3718},[256],{"categories":3720},[144],{"categories":3722},[193,196],{"categories":3724},[265,190],{"categories":3726},[193],{"categories":3728},[193],{"categories":3730},[],{"categories":3732},[196],{"categories":3734},[],{"categories":3736},[256],{"categories":3738},[193],{"categories":3740},[],{"categories":3742},[193],{"categories":3744},[214],{"categories":3746},[],{"categories":3748},[196],{"categories":3750},[193],{"categories":3752},[],{"categories":3754},[144],{"categories":3756},[193],{"categories":3758},[196],{"categories":3760},[193],{"categories":3762},[187],{"categories":3764},[196],{"categories":3766},[193],{"categories":3768},[],{"categories":3770},[290],{"categories":3772},[265],{"categories":3774},[190],{"categories":3776},[190],{"categories":3778},[193],{"categories":3780},[187],{"categories":3782},[187],{"categories":3784},[193],{"categories":3786},[196],{"categories":3788},[193],{"categories":3790},[193],{"categories":3792},[256],{"categories":3794},[187],{"categories":3796},[193],{"categories":3798},[265],{"categories":3800},[214],{"categories":3802},[193],{"categories":3804},[193],{"categories":3806},[196],{"categories":3808},[193],{"categories":3810},[],{"categories":3812},[256],{"categories":3814},[],{"categories":3816},[256],{"categories":3818},[196],{"categories":3820},[187],{"categories":3822},[],{"categories":3824},[290],{"categories":3826},[193],{"categories":3828},[],{"categories":3830},[214],{"categories":3832},[196],{"categories":3834},[256],{"categories":3836},[193],{"categories":3838},[196],{"categories":3840},[256],{"categories":3842},[196],{"categories":3844},[214],{"categories":3846},[187],{"categories":3848},[214],{"categories":3850},[256],{"categories":3852},[193],{"categories":3854},[144],{"categories":3856},[193],{"categories":3858},[193],{"categories":3860},[193],{"categories":3862},[193],{"categories":3864},[193],{"categories":3866},[196],{"categories":3868},[193],{"categories":3870},[196],{"categories":3872},[193],{"categories":3874},[187],{"categories":3876},[193],{"categories":3878},[196],{"categories":3880},[144],{"categories":3882},[196],{"categories":3884},[187],{"categories":3886},[196],{"categories":3888},[144],{"categories":3890},[],{"categories":3892},[193],{"categories":3894},[245],{"categories":3896},[193],{"categories":3898},[193],{"categories":3900},[256],{"categories":3902},[],{"categories":3904},[196],{"categories":3906},[265],{"categories":3908},[193],{"categories":3910},[214],{"categories":3912},[265],{"categories":3914},[196],{"categories":3916},[190],{"categories":3918},[190],{"categories":3920},[193],{"categories":3922},[193],{"categories":3924},[187],{"categories":3926},[],{"categories":3928},[196],{"categories":3930},[193],{"categories":3932},[256],{"categories":3934},[],{"categories":3936},[187],{"categories":3938},[193],{"categories":3940},[196],{"categories":3942},[196],{"categories":3944},[],{"categories":3946},[256],{"categories":3948},[256],{"categories":3950},[265],{"categories":3952},[144],{"categories":3954},[],{"categories":3956},[193],{"categories":3958},[196],{"categories":3960},[187],{"categories":3962},[193],{"categories":3964},[256],{"categories":3966},[187],{"categories":3968},[214],{"categories":3970},[214],{"categories":3972},[],{"categories":3974},[214],{"categories":3976},[196],{"categories":3978},[144],{"categories":3980},[245],{"categories":3982},[193],{"categories":3984},[],{"categories":3986},[214],{"categories":3988},[256],{"categories":3990},[193],{"categories":3992},[190],{"categories":3994},[193],{"categories":3996},[187],{"categories":3998},[290],{"categories":4000},[187],{"categories":4002},[],{"categories":4004},[],{"categories":4006},[196],{"categories":4008},[214],{"categories":4010},[],{"categories":4012},[196],{"categories":4014},[196],{"categories":4016},[196],{"categories":4018},[],{"categories":4020},[193],{"categories":4022},[],{"categories":4024},[214],{"categories":4026},[187],{"categories":4028},[144],{"categories":4030},[193],{"categories":4032},[214],{"categories":4034},[193],{"categories":4036},[214],{"categories":4038},[],{"categories":4040},[214],{"categories":4042},[187],{"categories":4044},[196],{"categories":4046},[193],{"categories":4048},[],{"categories":4050},[256],{"categories":4052},[196],{"categories":4054},[199],{"categories":4056},[196],{"categories":4058},[187],{"categories":4060},[],{"categories":4062},[],{"categories":4064},[],{"categories":4066},[144],{"categories":4068},[196],{"categories":4070},[193],{"categories":4072},[193],{"categories":4074},[],{"categories":4076},[],{"categories":4078},[],{"categories":4080},[144],{"categories":4082},[],{"categories":4084},[196],{"categories":4086},[193],{"categories":4088},[187],{"categories":4090},[],{"categories":4092},[],{"categories":4094},[144],{"categories":4096},[193],{"categories":4098},[214],{"categories":4100},[],{"categories":4102},[265],{"categories":4104},[214],{"categories":4106},[265],{"categories":4108},[245],{"categories":4110},[193],{"categories":4112},[193],{"categories":4114},[],{"categories":4116},[],{"categories":4118},[196],{"categories":4120},[],{"categories":4122},[193],{"categories":4124},[],{"categories":4126},[196],{"categories":4128},[193],{"categories":4130},[],{"categories":4132},[196],{"categories":4134},[193],{"categories":4136},[214],{"categories":4138},[193],{"categories":4140},[265],{"categories":4142},[193],{"categories":4144},[193],{"categories":4146},[245],{"categories":4148},[196],{"categories":4150},[196],{"categories":4152},[],{"categories":4154},[],{"categories":4156},[193],{"categories":4158},[],{"categories":4160},[214],{"categories":4162},[],{"categories":4164},[],{"categories":4166},[144],{"categories":4168},[187],{"categories":4170},[],{"categories":4172},[190],{"categories":4174},[265],{"categories":4176},[193],{"categories":4178},[256],{"categories":4180},[187],{"categories":4182},[245],{"categories":4184},[190],{"categories":4186},[256],{"categories":4188},[256],{"categories":4190},[],{"categories":4192},[193],{"categories":4194},[],{"categories":4196},[196],{"categories":4198},[187],{"categories":4200},[144],{"categories":4202},[187],{"categories":4204},[196],{"categories":4206},[290],{"categories":4208},[193],{"categories":4210},[193],{"categories":4212},[187],{"categories":4214},[196],{"categories":4216},[],{"categories":4218},[193],{"categories":4220},[256],{"categories":4222},[214],{"categories":4224},[256],{"categories":4226},[193],{"categories":4228},[],{"categories":4230},[144],{"categories":4232},[214],{"categories":4234},[187],{"categories":4236},[193],{"categories":4238},[196],{"categories":4240},[193],{"categories":4242},[190],{"categories":4244},[196],{"categories":4246},[196,290],{"categories":4248},[196],{"categories":4250},[256],{"categories":4252},[193],{"categories":4254},[193],{"categories":4256},[245],{"categories":4258},[196],{"categories":4260},[265],{"categories":4262},[196],{"categories":4264},[],{"categories":4266},[196],{"categories":4268},[193],{"categories":4270},[190],{"categories":4272},[],{"categories":4274},[],{"categories":4276},[193],{"categories":4278},[245],{"categories":4280},[265],{"categories":4282},[193],{"categories":4284},[196],{"categories":4286},[],{"categories":4288},[214],{"categories":4290},[],{"categories":4292},[214],{"categories":4294},[256],{"categories":4296},[187],{"categories":4298},[256],{"categories":4300},[193],{"categories":4302},[196],{"categories":4304},[193],{"categories":4306},[193],{"categories":4308},[265],{"categories":4310},[256],{"categories":4312},[],{"categories":4314},[214],{"categories":4316},[193],{"categories":4318},[],{"categories":4320},[193],{"categories":4322},[193],{"categories":4324},[193],{"categories":4326},[196],{"categories":4328},[193],{"categories":4330},[199],{"categories":4332},[196],{"categories":4334},[193],{"categories":4336},[193],{"categories":4338},[193],{"categories":4340},[193],{"categories":4342},[190],{"categories":4344},[],{"categories":4346},[199],{"categories":4348},[214],{"categories":4350},[196],{"categories":4352},[193],{"categories":4354},[256],{"categories":4356},[],{"categories":4358},[256],{"categories":4360},[256],{"categories":4362},[256],{"categories":4364},[193],{"categories":4366},[193],{"categories":4368},[193],{"categories":4370},[196],{"categories":4372},[214],{"categories":4374},[193],{"categories":4376},[193],{"categories":4378},[193],{"categories":4380},[190],{"categories":4382},[193],{"categories":4384},[196],{"categories":4386},[144],{"categories":4388},[],{"categories":4390},[245],{"categories":4392},[196],{"categories":4394},[193],{"categories":4396},[],{"categories":4398},[193],{"categories":4400},[193],{"categories":4402},[214],{"categories":4404},[193],{"categories":4406},[196],{"categories":4408},[265],{"categories":4410},[],{"categories":4412},[],{"categories":4414},[214],{"categories":4416},[214],{"categories":4418},[193],{"categories":4420},[265],{"categories":4422},[193],{"categories":4424},[187],{"categories":4426},[196],{"categories":4428},[193],{"categories":4430},[196],{"categories":4432},[196],{"categories":4434},[193],{"categories":4436},[190],{"categories":4438},[],{"categories":4440},[245],{"categories":4442},[],{"categories":4444},[214],{"categories":4446},[193],{"categories":4448},[245],{"categories":4450},[193],{"categories":4452},[256],{"categories":4454},[256],{"categories":4456},[256],{"categories":4458},[196],{"categories":4460},[196],{"categories":4462},[144],{"categories":4464},[245],{"categories":4466},[245],{"categories":4468},[],{"categories":4470},[214],{"categories":4472},[193],{"categories":4474},[193],{"categories":4476},[256],{"categories":4478},[],{"categories":4480},[214],{"categories":4482},[214],{"categories":4484},[214],{"categories":4486},[],{"categories":4488},[196],{"categories":4490},[193],{"categories":4492},[],{"categories":4494},[187],{"categories":4496},[190],{"categories":4498},[],{"categories":4500},[193],{"categories":4502},[193],{"categories":4504},[],{"categories":4506},[256],{"categories":4508},[],{"categories":4510},[],{"categories":4512},[],{"categories":4514},[],{"categories":4516},[193],{"categories":4518},[214],{"categories":4520},[],{"categories":4522},[],{"categories":4524},[193],{"categories":4526},[193],{"categories":4528},[193],{"categories":4530},[245],{"categories":4532},[193],{"categories":4534},[245],{"categories":4536},[],{"categories":4538},[245],{"categories":4540},[245],{"categories":4542},[290],{"categories":4544},[196],{"categories":4546},[256],{"categories":4548},[],{"categories":4550},[],{"categories":4552},[245],{"categories":4554},[256],{"categories":4556},[256],{"categories":4558},[256],{"categories":4560},[],{"categories":4562},[187],{"categories":4564},[256],{"categories":4566},[256],{"categories":4568},[187],{"categories":4570},[256],{"categories":4572},[190],{"categories":4574},[256],{"categories":4576},[256],{"categories":4578},[256],{"categories":4580},[245],{"categories":4582},[214],{"categories":4584},[214],{"categories":4586},[193],{"categories":4588},[256],{"categories":4590},[245],{"categories":4592},[290],{"categories":4594},[245],{"categories":4596},[245],{"categories":4598},[245],{"categories":4600},[],{"categories":4602},[190],{"categories":4604},[],{"categories":4606},[290],{"categories":4608},[256],{"categories":4610},[256],{"categories":4612},[256],{"categories":4614},[196],{"categories":4616},[214,190],{"categories":4618},[245],{"categories":4620},[],{"categories":4622},[],{"categories":4624},[245],{"categories":4626},[],{"categories":4628},[245],{"categories":4630},[214],{"categories":4632},[196],{"categories":4634},[],{"categories":4636},[256],{"categories":4638},[193],{"categories":4640},[144],{"categories":4642},[],{"categories":4644},[193],{"categories":4646},[],{"categories":4648},[214],{"categories":4650},[187],{"categories":4652},[245],{"categories":4654},[],{"categories":4656},[256],{"categories":4658},[214],[4660,4945,5071,5250],{"id":4661,"title":4662,"ai":4663,"body":4669,"categories":4906,"created_at":145,"date_modified":145,"description":137,"extension":146,"faq":145,"featured":147,"kicker_label":145,"meta":4907,"navigation":163,"path":4930,"published_at":4931,"question":145,"scraped_at":4931,"seo":4932,"sitemap":4933,"source_id":4934,"source_name":4935,"source_type":4936,"source_url":4937,"stem":4938,"tags":4939,"thumbnail_url":145,"tldr":4942,"tweet":145,"unknown_tags":4943,"__hash__":4944},"summaries\u002Fsummaries\u002Fe9b92a768bd70314-gsap-drives-webgl-shaders-via-single-progress-unif-summary.md","GSAP Drives WebGL Shaders via Single Progress Uniform",{"provider":7,"model":4664,"input_tokens":4665,"output_tokens":4666,"processing_time_ms":4667,"cost_usd":4668},"x-ai\u002Fgrok-4.1-fast",9358,2374,29390,0.00255175,{"type":14,"value":4670,"toc":4901},[4671,4675,4718,4733,4737,4779,4802,4821,4825,4856,4894],[17,4672,4674],{"id":4673},"single-progress-uniform-gsaps-bridge-to-webgl-shaders","Single Progress Uniform: GSAP's Bridge to WebGL Shaders",[22,4676,4677,4678,4681,4682,4685,4686,4689,4690,4693,4694,4697,4698,4701,4702,4705,4706,4709,4710,4713,4714,4717],{},"Control complex shader effects with one JS-tweened ",[33,4679,4680],{},"progress"," value (0 to 1) copied to uniforms each frame. Shaders stay stateless—use ",[33,4683,4684],{},"step(noiseVal, progress)"," for block reveals, ",[33,4687,4688],{},"parabola(progress, 2.)"," for warp timing (",[33,4691,4692],{},"dt","), and ",[33,4695,4696],{},"dt * uRGBShift"," for chromatic aberration peaks. In video carousel transitions, mix source\u002Fdest textures: ",[33,4699,4700],{},"gl_FragColor = mix(t1, t2, intpl)"," where ",[33,4703,4704],{},"intpl = step(noiseVal, progress)",". Swap eases or chain timelines in GSAP without GLSL edits. Reuse across effects: flowmap text distortion samples velocity RG texture, applies directional offsets (",[33,4707,4708],{},"normalize(toMouse) * influence","), and velocity-triggered rainbows via ",[33,4711,4712],{},"sin(hueShift + 2π\u002F3 rad)"," phases for R\u002FG\u002FB only when ",[33,4715,4716],{},"uVelo > 0.01",". Outcome: tight motion curves, no per-effect JS logic.",[22,4719,4720,4721,4724,4725,4728,4729,4732],{},"Mount one ",[33,4722,4723],{},"FlowmapEffect"," at page level, swap ",[33,4726,4727],{},"imageSrc"," textures—avoids GPU context respawns, prevents memory leaks\u002Fstutters after multiple hovers. Idle guard pauses rAF after 90 frames sans ",[33,4730,4731],{},"mousemove",", resumes instantly.",[17,4734,4736],{"id":4735},"scroll-driven-morphs-and-direct-dom-writes","Scroll-Driven Morphs and Direct DOM Writes",[22,4738,4739,4740,4743,4744,4747,4748,4751,4752,4755,4756,4759,4760,4763,4764,4755,4767,4770,4771,4774,4775,4778],{},"Pin next-project previews with ",[33,4741,4742],{},"ScrollTrigger(scrub: 1)","; ",[33,4745,4746],{},"onUpdate"," writes progress-derived values directly to DOM: ",[33,4749,4750],{},"textContent"," for counters (",[33,4753,4754],{},"Math.round(progress * 100)","), ",[33,4757,4758],{},"style.transform\u002FclipPath"," for background morphs (",[33,4761,4762],{},"scale(1.3 - 0.3 * progress)",", ",[33,4765,4766],{},"inset(${insetV}% ${insetH}% ...)",[33,4768,4769],{},"strokeDashoffset"," for SVG circles (",[33,4772,4773],{},"CIRCUMFERENCE - progress * CIRCUMFERENCE","). Bypasses React ",[33,4776,4777],{},"setState()","—saves render trees per frame on 120Hz displays, ensures 60fps butter over slideshows.",[22,4780,4781,4782,4785,4786,4789,4790,4793,4794,4797,4798,4801],{},"Three-state machine (",[33,4783,4784],{},"idle → triggered → navigating",") prevents phantom navs: require ",[33,4787,4788],{},"hasSeenLowProgress"," flag (scrolled from top), velocity ",[33,4791,4792],{},"\u003C 2000"," (",[33,4795,4796],{},"scrollTrigger.getVelocity()","), 250ms commit timeout. Scroll back triggers ",[33,4799,4800],{},"onLeaveBack"," rollback. Clicks spawn GSAP tween from current progress to 1, syncing scroll—same DOM mutations, dual drivers.",[22,4803,4804,4805,4808,4809,4812,4813,4816,4817,4820],{},"Page exits stage GSAP fades (bg\u002Fgrid\u002Ftexts at 0.3s ",[33,4806,4807],{},"power2.inOut",", content at 0.35s offset 0.25s) parallel to ",[33,4810,4811],{},"import()"," chunks and image preloads. ",[33,4814,4815],{},"flushSync(navigate(path))"," inside ",[33,4818,4819],{},"document.startViewTransition"," forces sync React commits—avoids double old-DOM captures.",[17,4822,4824],{"id":4823},"unified-text-reveals-and-perf-habits","Unified Text Reveals and Perf Habits",[22,4826,4827,4828,4831,4832,4835,4836,4839,4840,4843,4844,4847,4848,4851,4852,4855],{},"Central ",[33,4829,4830],{},"scrambleText"," utility pairs ",[33,4833,4834],{},"SplitText"," (chars\u002Flines) with parallel clip-path wipe (",[33,4837,4838],{},"inset(0 0% 0 0)"," over 0.6s ",[33,4841,4842],{},"power2.out","): left-resolving scramble + left-to-right wipe hides noise, reveals only legible text. Pre-scramble to exact length, lock ",[33,4845,4846],{},"height"," via ",[33,4849,4850],{},"getBoundingClientRect().height",". ",[33,4853,4854],{},"SCRAMBLE_CHARS = 'A!B@C#D$E%F&G*H?J[K]L{M}N=O+P-QRSTUVWXYZ'"," mixes punctuation for 'decoding' feel.",[22,4857,4858,4859,4862,4863,4865,4866,4743,4869,4872,4873,4743,4876,4879,4880,4883,4884,4862,4887,4851,4890,4893],{},"Perf across frames: ",[33,4860,4861],{},"element.style.*","\u002F",[33,4864,4750],{}," over state; ",[33,4867,4868],{},"boundRender = this.render.bind(this)",[33,4870,4871],{},"Vec2.set()"," over ",[33,4874,4875],{},"new Vec2()",[33,4877,4878],{},"needsUpdate = true"," only on active video textures, fallback to ",[33,4881,4882],{},"\u003Cvideo>","; precompute ",[33,4885,4886],{},"image-dimensions.json",[33,4888,4889],{},"lqip-data.json",[33,4891,4892],{},"prefers-reduced-motion: reduce"," as parallel design (per Cassie Evans), not disable.",[22,4895,4896,4897,4900],{},"Stack: Vite\u002FReact18\u002FTS (fast loop), OGL (lighter than Three.js), Lenis (smooth scroll sync), SCSS\u002FBEM. Hooks for lifecycle, services (e.g., Lenis singleton) for globals. Figma grid exported to CSS, toggle ",[33,4898,4899],{},"Cmd\u002FCtrl + G",". Tradeoff: OGL's lean API owned line-by-line vs Three.js detour.",{"title":137,"searchDepth":138,"depth":138,"links":4902},[4903,4904,4905],{"id":4673,"depth":138,"text":4674},{"id":4735,"depth":138,"text":4736},{"id":4823,"depth":138,"text":4824},[144],{"content_references":4908,"triage":4927},[4909,4912,4915,4917,4919,4921,4925],{"type":151,"title":4834,"url":4910,"context":4911},"https:\u002F\u002Fgsap.com\u002Fdocs\u002Fv3\u002FPlugins\u002FSplitText\u002F","mentioned",{"type":151,"title":4913,"url":4914,"context":4911},"ScrollTrigger","https:\u002F\u002Fgsap.com\u002Fdocs\u002Fv3\u002FPlugins\u002FScrollTrigger\u002F",{"type":151,"title":4916,"context":4911},"OGL",{"type":151,"title":4918,"context":4911},"Lenis",{"type":151,"title":4920,"context":154},"Sanity",{"type":4922,"title":4923,"url":4924,"context":154},"other","Master GSAP Web Animation","https:\u002F\u002Fwww.creativecodingclub.com\u002Fbundles\u002Fcreative-coding-club?ref=0d0431",{"type":4922,"title":4926,"context":4911},"Three.js Journey",{"relevance":160,"novelty":160,"quality":159,"actionability":160,"composite":4928,"reasoning":4929},3.25,"Category: Design & Frontend. The article discusses using GSAP to control WebGL shaders, which is relevant for frontend developers interested in UI\u002FUX and animation techniques. It provides some practical examples, but lacks a comprehensive framework or step-by-step guidance that would enhance its actionability.","\u002Fsummaries\u002Fe9b92a768bd70314-gsap-drives-webgl-shaders-via-single-progress-unif-summary","2026-05-06 16:14:23",{"title":4662,"description":137},{"loc":4930},"e9b92a768bd70314","Codrops","article","https:\u002F\u002Ftympanus.net\u002Fcodrops\u002F2026\u002F05\u002F06\u002Ffrom-shader-uniforms-to-clip-path-wipes-how-gsap-drives-my-portfolio\u002F","summaries\u002Fe9b92a768bd70314-gsap-drives-webgl-shaders-via-single-progress-unif-summary",[175,4940,178,4941],"ui-ux","gsap","Bridge GSAP timelines to WebGL shaders using one progress uniform (0-1) for stateless, reusable animations: control block reveals, warps, and aberrations in video carousels, flowmaps, and text scrambles without GLSL changes.",[178,4941],"WdV9Gl2AeIzG4NZ_dr8S1vZPWknqx3509Bsaxfmx2pY",{"id":4946,"title":4947,"ai":4948,"body":4953,"categories":5041,"created_at":145,"date_modified":145,"description":137,"extension":146,"faq":145,"featured":147,"kicker_label":145,"meta":5042,"navigation":163,"path":5059,"published_at":5060,"question":145,"scraped_at":5060,"seo":5061,"sitemap":5062,"source_id":5063,"source_name":5064,"source_type":4936,"source_url":5065,"stem":5066,"tags":5067,"thumbnail_url":145,"tldr":5068,"tweet":145,"unknown_tags":5069,"__hash__":5070},"summaries\u002Fsummaries\u002F8cd34b92f1be4ae8-use-range-syntax-to-fix-media-query-overlap-bugs-summary.md","Use Range Syntax to Fix Media Query Overlap Bugs",{"provider":7,"model":4664,"input_tokens":4949,"output_tokens":4950,"processing_time_ms":4951,"cost_usd":4952},4908,1507,15321,0.0017126,{"type":14,"value":4954,"toc":5036},[4955,4959,4970,4981,4992,4996,5007,5026,5030,5033],[17,4956,4958],{"id":4957},"prevent-layout-bugs-from-minmax-width-overlaps","Prevent Layout Bugs from min\u002Fmax-width Overlaps",[22,4960,4961,4962,4965,4966,4969],{},"Traditional media queries using ",[33,4963,4964],{},"min-width"," (>=) and ",[33,4967,4968],{},"max-width"," (\u003C=) create gaps when both target the same breakpoint, like 300px. At exactly 300px, both rules apply, hiding elements simultaneously—e.g., navigation and toggle both disappear, breaking the layout.",[22,4971,4972,4973,4976,4977,4980],{},"To fix without ranges, offset breakpoints manually: ",[33,4974,4975],{},"max-width: 299px"," (\u003C=299px) for hiding nav on small screens, and ",[33,4978,4979],{},"min-width: 300px"," (>=300px) for hiding toggle on large screens. This works for one breakpoint but scales poorly with multiples, leading to error-prone maintenance and 45-minute debug sessions.",[22,4982,4983,4984,4987,4988,4991],{},"Range syntax eliminates this: ",[33,4985,4986],{},"@media (width \u003C= 300px)"," hides nav, ",[33,4989,4990],{},"@media (width > 300px)"," hides toggle. At 300px, nav shows (not \u003C=) and toggle hides (>), ensuring seamless transitions.",[17,4993,4995],{"id":4994},"write-readable-ranges-for-complex-breakpoints","Write Readable Ranges for Complex Breakpoints",[22,4997,4998,4999,5002,5003,5006],{},"Ranges shine for styles between breakpoints. Instead of ",[33,5000,5001],{},"@media (min-width: 300px) and (max-width: 500px)",", use ",[33,5004,5005],{},"@media (300px \u003C= width \u003C= 500px)",". This directly expresses \"between 300px and 500px inclusive,\" reducing cognitive load during review or debugging.",[22,5008,5009,5010,5013,5014,5017,5018,5021,5022,5025],{},"Apply to container queries too: swap ",[33,5011,5012],{},"@media"," for ",[33,5015,5016],{},"@container",", e.g., ",[33,5019,5020],{},"@container (width >= 300px)"," changes h1 styles, ",[33,5023,5024],{},"@container (width >= 500px)"," adds more. This powers responsive components without viewport reliance.",[17,5027,5029],{"id":5028},"leverage-strong-browser-support","Leverage Strong Browser Support",[22,5031,5032],{},"Range syntax landed in March 2023 with wide adoption: Chrome, Edge, Firefox, Safari all support it, per Baseline and Web Platform Status. If you're using container queries, ranges are already viable—no polyfills needed.",[22,5034,5035],{},"Adopt today for clearer CSS that's easier to reason about, especially in teams. Test in projects to catch intent faster than deciphering min\u002Fmax logic.",{"title":137,"searchDepth":138,"depth":138,"links":5037},[5038,5039,5040],{"id":4957,"depth":138,"text":4958},{"id":4994,"depth":138,"text":4995},{"id":5028,"depth":138,"text":5029},[144],{"content_references":5043,"triage":5057},[5044,5050,5054],{"type":5045,"title":5046,"publisher":5047,"url":5048,"context":5049},"report","Media Queries Level 4","W3C","https:\u002F\u002Fwww.w3.org\u002FTR\u002Fmediaqueries-4\u002F#mq-range-context","cited",{"type":4922,"title":5051,"author":5052,"url":5053,"context":154},"Unintentional CSS media query gaps","Steve Fenton","https:\u002F\u002Fstevefenton.co.uk\u002Fblog\u002F2023\u002F05\u002Funintentional-media-query-gaps\u002F",{"type":4922,"title":5055,"url":5056,"context":5049},"Media query range syntax","https:\u002F\u002Fwebstatus.dev\u002Ffeatures\u002Fmedia-query-range-syntax",{"relevance":159,"novelty":160,"quality":159,"actionability":159,"composite":161,"reasoning":5058},"Category: Design & Frontend. The article addresses a specific pain point related to frontend development by providing a solution to media query overlap bugs, which is relevant for developers building responsive designs. It introduces the range syntax as a practical alternative to traditional media queries, offering a clearer and more maintainable approach.","\u002Fsummaries\u002F8cd34b92f1be4ae8-use-range-syntax-to-fix-media-query-overlap-bugs-summary","2026-05-04 16:13:43",{"title":4947,"description":137},{"loc":5059},"8cd34b92f1be4ae8","Ahmad Shadeed","https:\u002F\u002Fishadeed.com\u002Farticle\u002Frange-syntax\u002F","summaries\u002F8cd34b92f1be4ae8-use-range-syntax-to-fix-media-query-overlap-bugs-summary",[175,4940],"Replace min\u002Fmax-width media queries with range syntax like (width \u003C= 300px) to prevent elements from both hiding at shared breakpoints, improving readability and avoiding offset hacks.",[],"dkmakv9D6fHBNHPIDMsnsVBTTVD_YCmdVKgsh9NFJJg",{"id":5072,"title":5073,"ai":5074,"body":5079,"categories":5229,"created_at":145,"date_modified":145,"description":137,"extension":146,"faq":145,"featured":147,"kicker_label":145,"meta":5230,"navigation":163,"path":5237,"published_at":5238,"question":145,"scraped_at":5239,"seo":5240,"sitemap":5241,"source_id":5242,"source_name":5243,"source_type":4936,"source_url":5244,"stem":5245,"tags":5246,"thumbnail_url":145,"tldr":5247,"tweet":145,"unknown_tags":5248,"__hash__":5249},"summaries\u002Fsummaries\u002F7e1597ca8706f7e5-embed-interactive-html-textures-in-canvas-scenes-summary.md","Embed Interactive HTML Textures in Canvas Scenes",{"provider":7,"model":4664,"input_tokens":5075,"output_tokens":5076,"processing_time_ms":5077,"cost_usd":5078},6092,1532,9720,0.00147755,{"type":14,"value":5080,"toc":5224},[5081,5085,5088,5091,5095,5101,5106,5170,5173,5220],[17,5082,5084],{"id":5083},"combine-canvas-power-with-html-layout-fidelity","Combine Canvas Power with HTML Layout Fidelity",[22,5086,5087],{},"Canvas excels at custom UIs like 3D scenes or whimsical interactions (e.g., pinball unsubscribes or virtual desktops), but struggles with complex text, internationalization, accessibility, and render quality—problems HTML solves natively. HTML in Canvas bridges this by treating canvas child elements as layout participants: they join the accessibility tree, receive focus, and stay interactive, but render invisibly off-screen as updatable textures. Changes trigger automatic repaints via paint events, or use requestRepaint() manually, like requestAnimationFrame(). This delivers canvas's visual freedom with HTML's reliability, enabling production-ready hybrids without rebuilding layouts from scratch.",[22,5089,5090],{},"Result: Live-updating elements like clocks or timetables appear as seamless textures in Three.js scenes, maintaining DOM interactivity without visual desync in most cases.",[17,5092,5094],{"id":5093},"implement-with-threejs-or-vanilla-canvas","Implement with Three.js or Vanilla Canvas",[22,5096,5097,5098],{},"Nest target HTML inside ",[177,5099,5100],{"layout-subtree":137},"—it acts as fallback if canvas fails, then becomes a texture source.",[22,5102,5103],{},[44,5104,5105],{},"Three.js example:",[5107,5108,5112],"pre",{"className":5109,"code":5110,"language":5111,"meta":137,"style":137},"language-javascript shiki shiki-themes github-light github-dark","const texture = htmlElementImage2D(existingGLTexture, { \u002F\u002F color space, GPU options\n  htmlElement: document.getElementById('board'),\n});\n\u002F\u002F Apply texture to mesh, replacing static images like Thomas the Tank Engine.\n","javascript",[33,5113,5114,5142,5160,5165],{"__ignoreMap":137},[5115,5116,5119,5123,5127,5130,5134,5138],"span",{"class":5117,"line":5118},"line",1,[5115,5120,5122],{"class":5121},"szBVR","const",[5115,5124,5126],{"class":5125},"sj4cs"," texture",[5115,5128,5129],{"class":5121}," =",[5115,5131,5133],{"class":5132},"sScJk"," htmlElementImage2D",[5115,5135,5137],{"class":5136},"sVt8B","(existingGLTexture, { ",[5115,5139,5141],{"class":5140},"sJ8bj","\u002F\u002F color space, GPU options\n",[5115,5143,5144,5147,5150,5153,5157],{"class":5117,"line":138},[5115,5145,5146],{"class":5136},"  htmlElement: document.",[5115,5148,5149],{"class":5132},"getElementById",[5115,5151,5152],{"class":5136},"(",[5115,5154,5156],{"class":5155},"sZZnC","'board'",[5115,5158,5159],{"class":5136},"),\n",[5115,5161,5162],{"class":5117,"line":160},[5115,5163,5164],{"class":5136},"});\n",[5115,5166,5167],{"class":5117,"line":159},[5115,5168,5169],{"class":5140},"\u002F\u002F Apply texture to mesh, replacing static images like Thomas the Tank Engine.\n",[22,5171,5172],{},"The texture auto-updates on DOM repaints. For a London Underground timetable, extract the ",[5174,5175,5177,5178,5183,5204,5207,5210,5214,5217],"div",{"id":5176},"board",", inject it as canvas child, and texture-swap it into a 3D plane—live clock ticks and times refresh without manual polling.",[22,5179,5180],{},[44,5181,5182],{},"Vanilla 2D Canvas:",[5107,5184,5186],{"className":5109,"code":5185,"language":5111,"meta":137,"style":137},"ctx.drawElementImage(formElement, x, y, width, height);\n\u002F\u002F Renders interactive \u003Cform> directly.\n",[33,5187,5188,5199],{"__ignoreMap":137},[5115,5189,5190,5193,5196],{"class":5117,"line":5118},[5115,5191,5192],{"class":5136},"ctx.",[5115,5194,5195],{"class":5132},"drawElementImage",[5115,5197,5198],{"class":5136},"(formElement, x, y, width, height);\n",[5115,5200,5201],{"class":5117,"line":138},[5115,5202,5203],{"class":5140},"\u002F\u002F Renders interactive \u003Cform> directly.\n",[22,5205,5206],{},"WebGPU variant: copyElementImage() for advanced shaders, like jelly sliders over hidden inputs.",[22,5208,5209],{},"Enable in Chrome Canary via flag (proposal stage). Full code in GitHub proposal demos.",[17,5211,5213],{"id":5212},"experimental-edges-and-privacy-safeguards","Experimental Edges and Privacy Safeguards",[22,5215,5216],{},"Performance lags (frame-late draws, desyncs), scrollbars crash, and bugs persist—ideal for experiment feedback. Privacy mitigations block fingerprinting: no system colors, themes, spellcheck, visited links, or preferences in textures. Avoids expanding JS-accessible data leaks.",[22,5218,5219],{},"Trade-off: Canvas whimsy + HTML robustness now viable for fun UIs (e.g., finger-gun tweets, YouTube eyes, beer-browsing desktops), but stabilize before production. Demos from Matt Rothenberg, Wes Bos, AA, and others prove viability—fork and iterate.",[5221,5222,5223],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":137,"searchDepth":138,"depth":138,"links":5225},[5226,5227,5228],{"id":5083,"depth":138,"text":5084},{"id":5093,"depth":138,"text":5094},{"id":5212,"depth":138,"text":5213},[144],{"content_references":5231,"triage":5235},[5232],{"type":4922,"title":5233,"url":5234,"context":154},"HTML in Canvas Proposal","https:\u002F\u002Fgithub.com\u002FWICG\u002Fhtml-in-canvas",{"relevance":159,"novelty":160,"quality":159,"actionability":159,"composite":161,"reasoning":5236},"Category: Design & Frontend. The article discusses a novel approach to integrating HTML elements within canvas scenes, addressing specific pain points like accessibility and layout fidelity. It provides practical implementation examples using Three.js and Vanilla Canvas, making it actionable for developers looking to enhance their UI\u002FUX.","\u002Fsummaries\u002F7e1597ca8706f7e5-embed-interactive-html-textures-in-canvas-scenes-summary","2026-04-19 17:30:00","2026-04-21 15:16:51",{"title":5073,"description":137},{"loc":5237},"7519c73348243dba","Better Stack","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=1zfRSiZBLyQ","summaries\u002F7e1597ca8706f7e5-embed-interactive-html-textures-in-canvas-scenes-summary",[175,4940],"HTML in Canvas renders live, interactive DOM elements as GPU textures in WebGL or 2D canvases, solving canvas's text\u002Flayout issues while preserving HTML's accessibility and performance.",[],"5GKMxhOiqb7PWWJsUYHWxpecxEEBTghuHBVhILYpPag",{"id":5251,"title":5252,"ai":5253,"body":5258,"categories":5648,"created_at":145,"date_modified":145,"description":137,"extension":146,"faq":145,"featured":147,"kicker_label":145,"meta":5649,"navigation":163,"path":5650,"published_at":5651,"question":145,"scraped_at":5652,"seo":5653,"sitemap":5654,"source_id":5655,"source_name":5656,"source_type":171,"source_url":5657,"stem":5658,"tags":5659,"thumbnail_url":145,"tldr":5660,"tweet":145,"unknown_tags":5661,"__hash__":5662},"summaries\u002Fsummaries\u002F8cd352b24d031198-modern-css-fixes-wcag-accessibility-gaps-summary.md","Modern CSS Fixes WCAG Accessibility Gaps",{"provider":7,"model":4664,"input_tokens":5254,"output_tokens":5255,"processing_time_ms":5256,"cost_usd":5257},8566,2237,19519,0.0028092,{"type":14,"value":5259,"toc":5641},[5260,5264,5267,5274,5416,5433,5439,5450,5453,5457,5467,5481,5484,5488,5491,5494,5497,5504,5507,5511,5518,5525,5540,5554,5561,5572,5575,5579,5638],[17,5261,5263],{"id":5262},"scalable-focus-indicators-meet-aaaaa-criteria","Scalable Focus Indicators Meet AA\u002FAAA Criteria",[22,5265,5266],{},"Focus visibility is WCAG 2.2 AA (focus-visible) and AAA (focus-appearance, new in 2.2). AA requires keyboard interfaces to show focus indicators like browser outlines. AAA demands distinguishable indicators: at minimum, 2px thick outlines contrasting non-focused states.",[22,5268,5269,5270,5273],{},"Default browser outlines often fail AAA (too thin or low-contrast). Eckles fixes this with custom properties and ",[33,5271,5272],{},"max()"," for responsive sizing:",[5107,5275,5279],{"className":5276,"code":5277,"language":5278,"meta":137,"style":137},"language-css shiki shiki-themes github-light github-dark",":root {\n  --outline-w: max(2px, 0.15em);\n  --outline-o: max(2px, 0.15em);\n}\n\n*:focus-visible {\n  outline: var(--outline-w) solid currentColor;\n  outline-offset: var(--outline-o);\n}\n","css",[33,5280,5281,5289,5320,5343,5348,5354,5366,5394,5411],{"__ignoreMap":137},[5115,5282,5283,5286],{"class":5117,"line":5118},[5115,5284,5285],{"class":5132},":root",[5115,5287,5288],{"class":5136}," {\n",[5115,5290,5291,5295,5298,5301,5303,5306,5309,5311,5314,5317],{"class":5117,"line":138},[5115,5292,5294],{"class":5293},"s4XuR","  --outline-w",[5115,5296,5297],{"class":5136},": ",[5115,5299,5300],{"class":5125},"max",[5115,5302,5152],{"class":5136},[5115,5304,5305],{"class":5125},"2",[5115,5307,5308],{"class":5121},"px",[5115,5310,4763],{"class":5136},[5115,5312,5313],{"class":5125},"0.15",[5115,5315,5316],{"class":5121},"em",[5115,5318,5319],{"class":5136},");\n",[5115,5321,5322,5325,5327,5329,5331,5333,5335,5337,5339,5341],{"class":5117,"line":160},[5115,5323,5324],{"class":5293},"  --outline-o",[5115,5326,5297],{"class":5136},[5115,5328,5300],{"class":5125},[5115,5330,5152],{"class":5136},[5115,5332,5305],{"class":5125},[5115,5334,5308],{"class":5121},[5115,5336,4763],{"class":5136},[5115,5338,5313],{"class":5125},[5115,5340,5316],{"class":5121},[5115,5342,5319],{"class":5136},[5115,5344,5345],{"class":5117,"line":159},[5115,5346,5347],{"class":5136},"}\n",[5115,5349,5351],{"class":5117,"line":5350},5,[5115,5352,5353],{"emptyLinePlaceholder":163},"\n",[5115,5355,5357,5361,5364],{"class":5117,"line":5356},6,[5115,5358,5360],{"class":5359},"s9eBZ","*",[5115,5362,5363],{"class":5132},":focus-visible",[5115,5365,5288],{"class":5136},[5115,5367,5369,5372,5374,5377,5379,5382,5385,5388,5391],{"class":5117,"line":5368},7,[5115,5370,5371],{"class":5125},"  outline",[5115,5373,5297],{"class":5136},[5115,5375,5376],{"class":5125},"var",[5115,5378,5152],{"class":5136},[5115,5380,5381],{"class":5293},"--outline-w",[5115,5383,5384],{"class":5136},") ",[5115,5386,5387],{"class":5125},"solid",[5115,5389,5390],{"class":5125}," currentColor",[5115,5392,5393],{"class":5136},";\n",[5115,5395,5397,5400,5402,5404,5406,5409],{"class":5117,"line":5396},8,[5115,5398,5399],{"class":5125},"  outline-offset",[5115,5401,5297],{"class":5136},[5115,5403,5376],{"class":5125},[5115,5405,5152],{"class":5136},[5115,5407,5408],{"class":5293},"--outline-o",[5115,5410,5319],{"class":5136},[5115,5412,5414],{"class":5117,"line":5413},9,[5115,5415,5347],{"class":5136},[22,5417,5418,5421,5422,5425,5426,5428,5429,5432],{},[33,5419,5420],{},"max(2px, 0.15em)"," ensures ≥2px width (scales with font-size but never below 2px). ",[33,5423,5424],{},"currentColor"," inherits text color, passing contrast if text meets AA (4.5:1). For buttons where ",[33,5427,5424],{}," (white) fails against backgrounds, override to button's background color—",[33,5430,5431],{},"outline-offset"," creates a gap for distinction.",[22,5434,5435,5436,5438],{},"This scales across components without per-element styles. Tradeoff: Test per-component contrast; ",[33,5437,5424],{}," assumes text contrast is solid.",[22,5440,5441,5442,5445,5446,5449],{},"Related AA\u002FAAA criteria prevent author styles from hiding focus (AA: not entirely hidden; AAA: no part hidden). Browsers may obscure focus (e.g., Chrome clips outlines). Fix with ",[33,5443,5444],{},"scroll-margin-block: 10dvb"," on ",[33,5447,5448],{},":focus","—adds proportional viewport space (dynamic viewport units) without layout shifts. Only affects scroll position.",[22,5451,5452],{},"\"The key take-away from the guidance for focus appearance is that any outline that is at least 2 pixels thick and contrasts with the non-focused appearance would pass this criterion.\" – Eckles on AAA minimums, enabling simple passes over complex tweaks (see Sara Soueidan for nuances).",[17,5454,5456],{"id":5455},"logical-focus-order-without-dom-rewrites","Logical Focus Order Without DOM Rewrites",[22,5458,5459,5460,4763,5463,5466],{},"WCAG A (focus-order) requires tabbing to match logical\u002Fvisual flow for screen readers\u002Fkeyboard users. CSS like Grid\u002FFlexbox ",[33,5461,5462],{},"order",[33,5464,5465],{},"position: sticky\u002Fabsolute\u002Ffixed",", anchor positioning, or masonry disrupts this—focus jumps randomly.",[22,5468,5469,5470,4862,5473,5476,5477,5480],{},"Best fix: Author DOM in visual order. If impossible, upcoming ",[33,5471,5472],{},"reading-flow",[33,5474,5475],{},"reading-order"," (Chrome-only; no Mozilla\u002FWebKit support yet) linearizes focus. E.g., Grid rows: ",[33,5478,5479],{},"reading-flow: grid-rows"," tabs row-by-row without DOM\u002FCSS changes.",[22,5482,5483],{},"Tradeoff: Unreliable cross-browser; prioritize source order. Eckles stresses: \"When you are placing interactive elements in a layout, it's important to consider the actual order in the DOM as compared to what the final layout position.\"",[17,5485,5487],{"id":5486},"reflow-at-400-zoom-without-dual-scrolling","Reflow at 400% Zoom Without Dual Scrolling",[22,5489,5490],{},"WCAG AA (reflow) demands single-column reflow at 400% desktop zoom (1280x1024px → 320x256px viewport) without content loss, functionality breaks, or horizontal scroll. This ~landscape iPhone 14 aspect ratio (narrower\u002Fwider than portrait mobile) trips mobile-first designs.",[22,5492,5493],{},"Common breaks: Sticky navs cover viewport; contained scrolls cutoff; fluid typography overflows; fixed px margins dominate (128px sections → 50%+ viewport at 400%).",[22,5495,5496],{},"Key insight: Viewport size ≠ device\u002Fuser. Small viewports mean zoom, not mobile\u002Ftouch—rearrange, don't remove features.",[22,5498,5499,5500,5503],{},"Fix spacing with ",[33,5501,5502],{},"min(128px, 25vh)","—uses px normally, switches to proportional vh at zoom where px exceeds (as early as 200%). Viewport units scale computed values with zoom; px don't.",[22,5505,5506],{},"\"Viewport size is not a proxy for device or user capabilities... a small viewport doesn't necessarily mean mobile. Doesn't necessarily mean touch. It may just mean a high zoom level is in use.\" – Eckles reframes responsive assumptions, preventing mobile-biased failures.",[17,5508,5510],{"id":5509},"theme-preferences-via-css-without-duplication","Theme Preferences via CSS Without Duplication",[22,5512,5513,5514,5517],{},"WCAG lacks dark mode mandates but stresses contrast (AA: 4.5:1 text) and non-color cues (A: use-of-color). Inclusive design honors ",[33,5515,5516],{},"prefers-color-scheme",".",[22,5519,5520,5521,5524],{},"Set ",[33,5522,5523],{},"color-scheme: dark light;"," (prefers dark, supports light)—browser auto-applies system colors (Canvas background, CanvasText, etc.) to doc, links, forms, scrollbars for contrast. Overridable.",[22,5526,5527,5528,5531,5532,5535,5536,5539],{},"Use ",[33,5529,5530],{},"light-dark()"," (requires ",[33,5533,5534],{},"color-scheme","): ",[33,5537,5538],{},"color: light-dark(#000, #fff);","—single rule for themes, no media query duplication. Cards\u002Fbuttons adapt smoothly.",[22,5541,5542,5543,5546,5547,4763,5550,5553],{},"Handle ",[33,5544,5545],{},"forced-colors: active"," (Windows High Contrast Mode, system-wide): Overrides colors (",[33,5548,5549],{},"color",[33,5551,5552],{},"background-color",", etc.) with system palette (Canvas, ButtonFace); removes shadows; adds backplates. Users customize palettes; can't opt-out\u002Fbrand it.",[22,5555,5556,5557,5560],{},"Impacts: Lost shadows (replace with transparent borders → CanvasText); icon fills (use ",[33,5558,5559],{},"forced-colors-adjust: none"," for critical color); buttons lose emphasis (invert Canvas\u002FCanvasText, but watch backplates).",[22,5562,5563,5564,5567,5568,5571],{},"Layer fixes in ",[33,5565,5566],{},"@layer forced-colors { ... }"," (last layer wins specificity). Transparent borders (",[33,5569,5570],{},"border: 1px solid transparent",") gain visibility sans query. Tripadvisor example: Semantic elements convert well; fixes for callouts, notifications, buttons.",[22,5573,5574],{},"\"Users can customize forced-colored palettes... you cannot opt your site out... they might not even see your initial styles ever.\" – Eckles on forced-colors inescapability, prioritizing critical overrides (SVGs, workflows) over branding.",[17,5576,5578],{"id":5577},"key-takeaways","Key Takeaways",[59,5580,5581,5593,5599,5605,5610,5619,5629,5632,5635],{},[41,5582,5583,5584,5586,5587,5589,5590,5592],{},"Define global ",[33,5585,5363],{}," with ",[33,5588,5420],{}," outlines using ",[33,5591,5424],{}," for 2px+ AAA-compliant indicators.",[41,5594,5595,5596,5598],{},"Add ",[33,5597,5444],{}," to nudge focused elements into view without obscuring.",[41,5600,5601,5602,5604],{},"Author DOM in visual order; await ",[33,5603,5479],{}," for CSS fixes.",[41,5606,5527,5607,5609],{},[33,5608,5502],{}," for spacing to scale at 400% zoom reflow.",[41,5611,5612,5613,5615,5616,5618],{},"Declare ",[33,5614,5523],{}," + ",[33,5617,5530],{}," for theme adaptation.",[41,5620,5621,5622,5625,5626,5628],{},"In ",[33,5623,5624],{},"@layer forced-colors",", add transparent borders and ",[33,5627,5559],{}," for critical elements.",[41,5630,5631],{},"Test 320x256px viewport, forced-colors emulator (Chromium rendering panel), and Windows themes.",[41,5633,5634],{},"Prioritize semantics; they auto-improve forced-colors handling (e.g., Tripadvisor).",[41,5636,5637],{},"Contrast text first—focus\u002Fforced-colors inherit wins.",[5221,5639,5640],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":137,"searchDepth":138,"depth":138,"links":5642},[5643,5644,5645,5646,5647],{"id":5262,"depth":138,"text":5263},{"id":5455,"depth":138,"text":5456},{"id":5486,"depth":138,"text":5487},{"id":5509,"depth":138,"text":5510},{"id":5577,"depth":138,"text":5578},[144],{},"\u002Fsummaries\u002F8cd352b24d031198-modern-css-fixes-wcag-accessibility-gaps-summary","2026-04-01 22:00:55","2026-04-03 21:16:12",{"title":5252,"description":137},{"loc":5650},"8cd352b24d031198","Smashing Magazine","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=s3x4zIHFBzM","summaries\u002F8cd352b24d031198-modern-css-fixes-wcag-accessibility-gaps-summary",[175,4940],"Stephanie Eckles shows how max(), scroll-margin, light-dark(), and forced-colors meet WCAG 2.2 focus, reflow, and theme criteria with scalable, low-effort CSS upgrades.",[],"570lojeUBVP1399PXOkwV64JX9ITorcI0WfseW6A9rA"]