{"id":4575,"date":"2025-12-19T07:11:30","date_gmt":"2025-12-19T07:11:30","guid":{"rendered":"https:\/\/flj-pcb.com\/?p=4575"},"modified":"2025-12-19T08:07:37","modified_gmt":"2025-12-19T08:07:37","slug":"about-pcb-drill-compensation-simple-english","status":"publish","type":"post","link":"https:\/\/flj-pcb.com\/da\/about-pcb-drill-compensation-simple-english\/","title":{"rendered":"Om PCB-borekompensation"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"4575\" class=\"elementor elementor-4575\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-733c0b06 e-flex e-con-boxed e-con e-parent\" data-id=\"733c0b06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6269846d elementor-widget elementor-widget-text-editor\" data-id=\"6269846d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"49\" data-end=\"461\">Der findes ingen gode individer, kun gode teams. Med et team, der arbejder sammen, kan f\u00f8rste fase af PCB CAM-automatiseringsprojektet for <strong data-start=\"178\" data-end=\"194\">Nettoh\u00e5ndtering<\/strong> og <strong data-start=\"199\" data-end=\"217\">h\u00e5ndtering af bor<\/strong> er f\u00e6rdig. Dern\u00e6st kan vi g\u00e5 videre til PCB-regels\u00e6ttet. Her taler jeg om borekompensation i PCB-teknik. Som PCB-teknisk udvikler b\u00f8r du vide, hvad det er, og hvorfor det virker. Jeg deler de vigtigste punkter om borekompensation nedenfor.<\/p>\n<hr data-start=\"463\" data-end=\"466\" \/>\n<h2 data-start=\"468\" data-end=\"507\">1. Hvorfor kompenserer vi for borest\u00f8rrelser?<\/h2>\n<p data-start=\"509\" data-end=\"870\">Hulst\u00f8rrelserne i PCB-filerne, som kunden giver, betyder normalt <em data-start=\"577\" data-end=\"584\">endelig<\/em> Hullernes st\u00f8rrelse. Under printkortproduktionen bliver kobberet belagt inde i hullerne (eller hullerne f\u00e5r en overfladefinish som HASL, ENIG, OSP osv.). Dette g\u00f8r hullet mindre. For at sikre, at den endelige hulst\u00f8rrelse opfylder kravene, korrigerer CAM-trinnet borest\u00f8rrelsen. Dette er borekompensation.<\/p>\n<p data-start=\"872\" data-end=\"1171\"><strong data-start=\"872\" data-end=\"889\">Et rigtigt eksempel:<\/strong><br data-start=\"889\" data-end=\"892\" \/>Endelig hulst\u00f8rrelse: <strong data-start=\"909\" data-end=\"920\">1,00 mm<\/strong>. Overfladefinish: <strong data-start=\"938\" data-end=\"946\">ENIG<\/strong> (nikkeltykkelse 2,54 \u00b5m, guldtykkelse 0,0254 \u00b5m). F\u00f8lg IPC klasse II, og den gennemsnitlige tykkelse af belagt kobber er <strong data-start=\"1064\" data-end=\"1073\">20 \u00b5m<\/strong>. Hvis vi bruger <strong data-start=\"1085\" data-end=\"1096\">0,10 mm<\/strong> som kompensationsv\u00e6rdi, vil CAM-teamet v\u00e6lge en <strong data-start=\"1149\" data-end=\"1160\">1,10 mm<\/strong> borekrone.<\/p>\n<p data-start=\"872\" data-end=\"1171\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-4578\" src=\"https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example.webp\" alt=\"Real example\" width=\"336\" height=\"297\" srcset=\"https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example.webp 336w, https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example-300x265.webp 300w, https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example-14x12.webp 14w\" sizes=\"(max-width: 336px) 100vw, 336px\" \/><\/p>\n<hr data-start=\"1173\" data-end=\"1176\" \/>\n<h2 data-start=\"1178\" data-end=\"1216\">2. Hvordan laver vi borekompensation?<\/h2>\n<p data-start=\"1218\" data-end=\"1445\">F\u00f8rst skal du g\u00f8re dig klart, hvad de tre vigtigste parametre for borekompensation er:<br data-start=\"1288\" data-end=\"1291\" \/><strong data-start=\"1291\" data-end=\"1298\">(1)<\/strong> For\u00f8gelse af borekrone,<br data-start=\"1319\" data-end=\"1322\" \/><strong data-start=\"1322\" data-end=\"1329\">(2)<\/strong> Kompensationsv\u00e6rdi,<br data-start=\"1349\" data-end=\"1352\" \/><strong data-start=\"1352\" data-end=\"1359\">(3)<\/strong> Step-up-t\u00e6rskel (forh\u00e5ndsv\u00e6rdi).<br data-start=\"1394\" data-end=\"1397\" \/>Disse tre bestemmer, hvordan kompensationen skal anvendes.<\/p>\n<h3 data-start=\"1447\" data-end=\"1475\">1) For\u00f8gelse af borekronen<\/h3>\n<p data-start=\"1476\" data-end=\"1773\">Det afh\u00e6nger af de bor, virksomheden k\u00f8ber. Den almindelige stigning i branchen er <strong data-start=\"1558\" data-end=\"1567\">50 \u00b5m<\/strong>. Typiske borest\u00f8rrelser sp\u00e6nder fra <strong data-start=\"1600\" data-end=\"1611\">0,10 mm<\/strong> til <strong data-start=\"1615\" data-end=\"1626\">6,35 mm<\/strong>. Det s\u00e6dvanlige mindste trin mellem bor er <strong data-start=\"1674\" data-end=\"1685\">0,05 mm<\/strong>. S\u00e5 borebiblioteket har st\u00f8rrelser som <strong data-start=\"1723\" data-end=\"1761\">0,10 mm, 0,15 mm, 0,20 mm, 0,25 mm<\/strong>, og s\u00e5 videre.<\/p>\n<h3 data-start=\"1775\" data-end=\"1802\">2) Kompensationsv\u00e6rdi<\/h3>\n<p data-start=\"1803\" data-end=\"1952\">Procesteamet fasts\u00e6tter kompensationsreglerne baseret p\u00e5 fabrikkens testresultater. Kompensationsv\u00e6rdierne varierer ikke meget p\u00e5 tv\u00e6rs af branchen. F\u00e6lles regler:<\/p>\n<ul data-start=\"1953\" data-end=\"2098\">\n<li data-start=\"1953\" data-end=\"2014\">\n<p data-start=\"1955\" data-end=\"2014\"><strong data-start=\"1955\" data-end=\"1975\">Plader med HASL<\/strong> (sprayd\u00e5se): <strong data-start=\"1989\" data-end=\"2011\">kompensere 0,15 mm<\/strong>.<\/p>\n<\/li>\n<li data-start=\"2015\" data-end=\"2098\">\n<p data-start=\"2017\" data-end=\"2098\"><strong data-start=\"2017\" data-end=\"2040\">Plader uden HASL<\/strong> (ENIG, neds\u00e6nket tin, OSP osv.): <strong data-start=\"2075\" data-end=\"2097\">kompensere 0,10 mm<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"2100\" data-end=\"2142\">3) Step-up-t\u00e6rskel (forh\u00e5ndsv\u00e6rdi)<\/h3>\n<p data-start=\"2143\" data-end=\"2403\">Procesteamet fastl\u00e6gger ogs\u00e5 strategien for valg af borekrone, svarende til en afrundingsregel. For eksempel, n\u00e5r inkrementet er <strong data-start=\"2273\" data-end=\"2282\">20 \u00b5m<\/strong>, hvis resten efter at have divideret med stigningen er <strong data-start=\"2336\" data-end=\"2347\">\u2265 20 \u00b5m<\/strong>, runder man 50 \u00b5m op; ellers beholder man den lavere st\u00f8rrelse.<\/p>\n<p data-start=\"2405\" data-end=\"2737\"><strong data-start=\"2405\" data-end=\"2417\">Et eksempel:<\/strong><br data-start=\"2417\" data-end=\"2420\" \/>Endelig st\u00f8rrelse p\u00e5 hullet = <strong data-start=\"2438\" data-end=\"2450\">1,025 mm<\/strong>, kompensation = <strong data-start=\"2467\" data-end=\"2478\">0,10 mm<\/strong>, s\u00e5 kompenseret st\u00f8rrelse = <strong data-start=\"2502\" data-end=\"2514\">1,125 mm<\/strong>. Men der er ingen <strong data-start=\"2532\" data-end=\"2544\">1,125 mm<\/strong> bor i biblioteket. Brug step-up-reglen. Resten af 1,125 mm sammenlignet med trinnet p\u00e5 0,05 mm er <strong data-start=\"2652\" data-end=\"2661\">25 \u00b5m<\/strong>. Siden <strong data-start=\"2669\" data-end=\"2686\">25 \u00b5m &gt; 20 \u00b5m<\/strong>, rund op med 50 \u00b5m og v\u00e6lg en <strong data-start=\"2719\" data-end=\"2730\">1,15 mm<\/strong> \u00f8velse.<\/p>\n<hr data-start=\"2739\" data-end=\"2742\" \/>\n<h3 data-start=\"2744\" data-end=\"2782\">Eksempler p\u00e5 faktisk borekompensation<\/h3>\n<p data-start=\"2784\" data-end=\"2850\">Antag: boretrin = <strong data-start=\"2810\" data-end=\"2819\">50 \u00b5m<\/strong>, optrapningst\u00e6rskel = <strong data-start=\"2841\" data-end=\"2850\">20 \u00b5m<\/strong><\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"2852\" data-end=\"3097\">\n<thead data-start=\"2852\" data-end=\"2947\">\n<tr data-start=\"2852\" data-end=\"2947\">\n<th data-start=\"2852\" data-end=\"2868\" data-col-size=\"sm\">Oprindeligt hul<\/th>\n<th data-start=\"2868\" data-end=\"2883\" data-col-size=\"sm\">Kompensation<\/th>\n<th data-start=\"2883\" data-end=\"2904\" data-col-size=\"sm\">Efter kompensation<\/th>\n<th data-start=\"2904\" data-end=\"2919\" data-col-size=\"sm\">Heltalsdel<\/th>\n<th data-start=\"2919\" data-end=\"2931\" data-col-size=\"sm\">Resterende<\/th>\n<th data-start=\"2931\" data-end=\"2947\" data-col-size=\"sm\">Boret er valgt<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2980\" data-end=\"3097\">\n<tr data-start=\"2980\" data-end=\"3038\">\n<td data-start=\"2980\" data-end=\"2991\" data-col-size=\"sm\">1,025 mm<\/td>\n<td data-start=\"2991\" data-end=\"2998\" data-col-size=\"sm\">0.10<\/td>\n<td data-start=\"2998\" data-end=\"3009\" data-col-size=\"sm\">1,125 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3009\" data-end=\"3016\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"3016\" data-end=\"3027\">0,025 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3027\" data-end=\"3038\">1,15 mm<\/td>\n<\/tr>\n<tr data-start=\"3039\" data-end=\"3097\">\n<td data-start=\"3039\" data-end=\"3050\" data-col-size=\"sm\">1,016 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3050\" data-end=\"3057\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"3057\" data-end=\"3068\">1,116 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3068\" data-end=\"3075\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"3075\" data-end=\"3086\">0,016 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3086\" data-end=\"3097\">1,10 mm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4 data-start=\"3099\" data-end=\"3140\">S\u00e5dan beregner du den valgte borest\u00f8rrelse<\/h4>\n<p data-start=\"3141\" data-end=\"3241\">Opdel den kompenserede hulst\u00f8rrelse i en heltalsdel og en restdel ved hj\u00e6lp af borefor\u00f8gelsen:<\/p>\n<p data-start=\"3243\" data-end=\"3396\">Tag <strong data-start=\"3248\" data-end=\"3260\">1,125 mm<\/strong> som et eksempel:<br data-start=\"3275\" data-end=\"3278\" \/>1,125 \/ 0,05 = 22,5 \u2192 gulv til 22 \u2192 heltalsdel = 22 \u00d7 0,05 = <strong data-start=\"3341\" data-end=\"3352\">1,10 mm<\/strong>.<br data-start=\"3353\" data-end=\"3356\" \/>Resterende = 1,125 % 0,05 =. <strong data-start=\"3383\" data-end=\"3395\">0,025 mm<\/strong>.<\/p>\n<p data-start=\"3398\" data-end=\"3475\">Sammenlign derefter resten med optrapningst\u00e6rsklen (f.eks. 20 \u00b5m):<\/p>\n<ul data-start=\"3476\" data-end=\"3607\">\n<li data-start=\"3476\" data-end=\"3542\">\n<p data-start=\"3478\" data-end=\"3542\">Hvis rest &gt; t\u00e6rskelv\u00e6rdi, borest\u00f8rrelse = heltalsdel + 0,05 mm.<\/p>\n<\/li>\n<li data-start=\"3543\" data-end=\"3607\">\n<p data-start=\"3545\" data-end=\"3607\">Hvis rest \u2264 t\u00e6rskelv\u00e6rdi, borest\u00f8rrelse = heltalsdel + 0,00 mm.<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"3609\" data-end=\"3612\" \/>\n<h3 data-start=\"3614\" data-end=\"3653\">Resum\u00e9 om step-up-t\u00e6rsklen<\/h3>\n<p data-start=\"3654\" data-end=\"3897\">N\u00e5r boretrinnet er <strong data-start=\"3682\" data-end=\"3691\">50 \u00b5m<\/strong>, er step-up-t\u00e6rsklen kritisk. Den udf\u00f8rer endnu en korrektion af den kompenserede borest\u00f8rrelse. Den afg\u00f8r, om der skal \u201csteppes op\u201d eller \u201cforblive\u201d. \u00c6ndring af denne t\u00e6rskel \u00e6ndrer direkte den valgte borest\u00f8rrelse.<\/p>\n<p data-start=\"3899\" data-end=\"3943\"><strong data-start=\"3899\" data-end=\"3943\">Flere eksempler (boretrin = 50 \u00b5m):<\/strong><\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"3945\" data-end=\"4209\">\n<thead data-start=\"3945\" data-end=\"4041\">\n<tr data-start=\"3945\" data-end=\"4041\">\n<th data-start=\"3945\" data-end=\"3961\" data-col-size=\"sm\">Oprindeligt hul<\/th>\n<th data-start=\"3961\" data-end=\"3976\" data-col-size=\"sm\">Kompensation<\/th>\n<th data-start=\"3976\" data-end=\"3990\" data-col-size=\"sm\">Efter komp.<\/th>\n<th data-start=\"3990\" data-end=\"4000\" data-col-size=\"sm\">Heltal<\/th>\n<th data-start=\"4000\" data-end=\"4012\" data-col-size=\"sm\">Resterende<\/th>\n<th data-start=\"4012\" data-end=\"4032\" data-col-size=\"sm\">Step-up-t\u00e6rskel<\/th>\n<th data-start=\"4032\" data-end=\"4041\" data-col-size=\"sm\">Bor<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"4079\" data-end=\"4209\">\n<tr data-start=\"4079\" data-end=\"4143\">\n<td data-start=\"4079\" data-end=\"4090\" data-col-size=\"sm\">1,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4090\" data-end=\"4096\">0.1<\/td>\n<td data-col-size=\"sm\" data-start=\"4096\" data-end=\"4107\">1,122 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4107\" data-end=\"4114\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"4114\" data-end=\"4125\">0,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4125\" data-end=\"4132\">0.02<\/td>\n<td data-col-size=\"sm\" data-start=\"4132\" data-end=\"4143\">1,15 mm<\/td>\n<\/tr>\n<tr data-start=\"4144\" data-end=\"4209\">\n<td data-start=\"4144\" data-end=\"4155\" data-col-size=\"sm\">1,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4155\" data-end=\"4161\">0.1<\/td>\n<td data-col-size=\"sm\" data-start=\"4161\" data-end=\"4172\">1,122 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4172\" data-end=\"4179\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"4179\" data-end=\"4190\">0,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4190\" data-end=\"4198\">0.025<\/td>\n<td data-col-size=\"sm\" data-start=\"4198\" data-end=\"4209\">1,10 mm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"4211\" data-end=\"4214\" \/>\n<h3 data-start=\"4216\" data-end=\"4266\">Personligt syn p\u00e5 fasts\u00e6ttelse af optrapningst\u00e6rsklen<\/h3>\n<p data-start=\"4267\" data-end=\"4575\"><strong data-start=\"4267\" data-end=\"4285\">Fordele og ulemper:<\/strong> Hvis det endelige hul er lidt st\u00f8rre efter kompensationen, kan delen i det mindste s\u00e6ttes i. Hvis hullet er for lille, kan delen ikke inds\u00e6ttes. S\u00e5 vi s\u00e6tter normalt step-up-t\u00e6rsklen til <strong data-start=\"4477\" data-end=\"4486\">20 \u00b5m<\/strong> i stedet for <strong data-start=\"4498\" data-end=\"4507\">25 \u00b5m<\/strong>. Det n\u00f8jagtige valg skal matche hver proces og kompensationsv\u00e6rdi.<\/p>\n<p data-start=\"4577\" data-end=\"4862\"><strong data-start=\"4577\" data-end=\"4614\">Kombineret med kompensationsv\u00e6rdi:<\/strong> For tavler med HASL, hvor kompensationen er <strong data-start=\"4658\" data-end=\"4669\">0,15 mm<\/strong>, s\u00e5 \u201coverkompenserer\u201d man allerede en smule, og de endelige huller har en tendens til at v\u00e6re lidt store. I det tilf\u00e6lde kan en step-up-t\u00e6rskel p\u00e5 <strong data-start=\"4791\" data-end=\"4800\">25 \u00b5m<\/strong> kan ogs\u00e5 fungere. Brug \u201cn\u00e6rmeste\u201d-reglen, n\u00e5r du v\u00e6lger boret.<\/p>\n<hr data-start=\"4864\" data-end=\"4867\" \/>\n<h2 data-start=\"4869\" data-end=\"4943\">3. Hvordan sikrer man, at den endelige hulst\u00f8rrelse opfylder kravene efter kompensation?<\/h2>\n<h3 data-start=\"4945\" data-end=\"4983\">Metode 1: K\u00f8b specielle bor<\/h3>\n<p data-start=\"4984\" data-end=\"5207\">Standard boretrin er <strong data-start=\"5012\" data-end=\"5021\">50 \u00b5m<\/strong> (0,05 mm trin som 1,00, 1,05, 1,10, 1,15 mm). Med en PTH-tolerance p\u00e5 \u00b13 mil kan et 50 \u00b5m bores\u00e6t d\u00e6kke tolerancen. Hvis tolerancen er mindre end det, skal du bruge specialbor.<\/p>\n<p data-start=\"5209\" data-end=\"5352\"><strong data-start=\"5209\" data-end=\"5222\">Eksempel 1<\/strong> - Sammenlign 50 \u00b5m og 25 \u00b5m trin:<br data-start=\"5259\" data-end=\"5262\" \/>Oprindeligt hul = <strong data-start=\"5278\" data-end=\"5290\">0,922 mm<\/strong>, kompensation = <strong data-start=\"5307\" data-end=\"5318\">0,10 mm<\/strong>, kompenseret st\u00f8rrelse = <strong data-start=\"5339\" data-end=\"5351\">1,022 mm<\/strong>.<\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"5354\" data-end=\"5545\">\n<thead data-start=\"5354\" data-end=\"5422\">\n<tr data-start=\"5354\" data-end=\"5422\">\n<th data-start=\"5354\" data-end=\"5365\" data-col-size=\"sm\">Original<\/th>\n<th data-start=\"5365\" data-end=\"5380\" data-col-size=\"sm\">Kompensation<\/th>\n<th data-start=\"5380\" data-end=\"5394\" data-col-size=\"sm\">Kompenseret<\/th>\n<th data-start=\"5394\" data-end=\"5406\" data-col-size=\"sm\">Tilv\u00e6kst<\/th>\n<th data-start=\"5406\" data-end=\"5422\" data-col-size=\"sm\">Boret er valgt<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"5450\" data-end=\"5545\">\n<tr data-start=\"5450\" data-end=\"5496\">\n<td data-start=\"5450\" data-end=\"5458\" data-col-size=\"sm\">0.922<\/td>\n<td data-col-size=\"sm\" data-start=\"5458\" data-end=\"5465\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5465\" data-end=\"5473\">1.022<\/td>\n<td data-col-size=\"sm\" data-start=\"5473\" data-end=\"5488\">0,05 (50 \u00b5m)<\/td>\n<td data-col-size=\"sm\" data-start=\"5488\" data-end=\"5496\">1.05<\/td>\n<\/tr>\n<tr data-start=\"5497\" data-end=\"5545\">\n<td data-start=\"5497\" data-end=\"5505\" data-col-size=\"sm\">0.922<\/td>\n<td data-start=\"5505\" data-end=\"5512\" data-col-size=\"sm\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5512\" data-end=\"5520\">1.022<\/td>\n<td data-col-size=\"sm\" data-start=\"5520\" data-end=\"5536\">0,025 (25 \u00b5m)<\/td>\n<td data-col-size=\"sm\" data-start=\"5536\" data-end=\"5545\">1.025<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"5547\" data-end=\"5689\">Forskel: 1,050 - 1,022 = 0,028 mm; 1,025 - 1,022 = 0,003 mm. Den mindste forskel er bedre, s\u00e5 <strong data-start=\"5648\" data-end=\"5660\">1,025 mm<\/strong> (25 \u00b5m trin) er bedre.<\/p>\n<p data-start=\"5691\" data-end=\"5818\"><strong data-start=\"5691\" data-end=\"5704\">Eksempel 2<\/strong> - 50 \u00b5m i forhold til specialbor:<br data-start=\"5730\" data-end=\"5733\" \/>Oprindeligt hul = <strong data-start=\"5749\" data-end=\"5761\">0,611 mm<\/strong>, kompensation = <strong data-start=\"5778\" data-end=\"5789\">0,10 mm<\/strong>, kompenseret = <strong data-start=\"5805\" data-end=\"5817\">0,711 mm<\/strong>.<\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"5820\" data-end=\"6018\">\n<thead data-start=\"5820\" data-end=\"5895\">\n<tr data-start=\"5820\" data-end=\"5895\">\n<th data-start=\"5820\" data-end=\"5831\" data-col-size=\"sm\">Original<\/th>\n<th data-start=\"5831\" data-end=\"5846\" data-col-size=\"sm\">Kompensation<\/th>\n<th data-start=\"5846\" data-end=\"5860\" data-col-size=\"sm\">Kompenseret<\/th>\n<th data-start=\"5860\" data-end=\"5879\" data-col-size=\"sm\">Inkrement \/ Type<\/th>\n<th data-start=\"5879\" data-end=\"5895\" data-col-size=\"sm\">Boret er valgt<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"5923\" data-end=\"6018\">\n<tr data-start=\"5923\" data-end=\"5969\">\n<td data-start=\"5923\" data-end=\"5931\" data-col-size=\"sm\">0.611<\/td>\n<td data-col-size=\"sm\" data-start=\"5931\" data-end=\"5938\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5938\" data-end=\"5946\">0.711<\/td>\n<td data-col-size=\"sm\" data-start=\"5946\" data-end=\"5961\">0,05 (50 \u00b5m)<\/td>\n<td data-col-size=\"sm\" data-start=\"5961\" data-end=\"5969\">0.70<\/td>\n<\/tr>\n<tr data-start=\"5970\" data-end=\"6018\">\n<td data-start=\"5970\" data-end=\"5978\" data-col-size=\"sm\">0.611<\/td>\n<td data-col-size=\"sm\" data-start=\"5978\" data-end=\"5985\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5985\" data-end=\"5993\">0.711<\/td>\n<td data-col-size=\"sm\" data-start=\"5993\" data-end=\"6009\">S\u00e6rlig \u00f8velse<\/td>\n<td data-col-size=\"sm\" data-start=\"6009\" data-end=\"6018\">0.711<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"6020\" data-end=\"6161\">Forskel: 0,700 - 0,711 = -0,011 mm; 0,711 - 0,711 = 0,000 mm. Jo mindre forskel, jo bedre. S\u00e5 den <strong data-start=\"6126\" data-end=\"6152\">0,711 mm specialbor<\/strong> er bedst.<\/p>\n<h3 data-start=\"6163\" data-end=\"6206\">Metode 2: Forbedre proces og udstyr<\/h3>\n<ul data-start=\"6207\" data-end=\"6752\">\n<li data-start=\"6207\" data-end=\"6296\">\n<p data-start=\"6209\" data-end=\"6296\">Tilf\u00f8j et ekstra pladebel\u00e6gningstrin for at reducere uj\u00e6vn tykkelse fra m\u00f8nsterfordeling.<\/p>\n<\/li>\n<li data-start=\"6297\" data-end=\"6395\">\n<p data-start=\"6299\" data-end=\"6395\">Brug direkte \u00e6tsning med negativt foto og plade hele kortet for at reducere uj\u00e6vn kobbertykkelse.<\/p>\n<\/li>\n<li data-start=\"6396\" data-end=\"6538\">\n<p data-start=\"6398\" data-end=\"6538\">S\u00e6nk str\u00f8mt\u00e6theden (typisk 19 ASF); en lidt lavere str\u00f8mt\u00e6thed kan forbedre pletteringens ensartethed, men vil forl\u00e6nge pletteringstiden.<\/p>\n<\/li>\n<li data-start=\"6539\" data-end=\"6752\">\n<p data-start=\"6541\" data-end=\"6752\">Opgrader til en vandret pletteringslinje. Lodrette pletteringslinjer giver ofte tykkere kobber ved hulkanten og tyndere kobber i midten af hullet ved huller med h\u00f8jt aspektforhold. En vandret linje kan reducere det problem.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"6754\" data-end=\"6790\">Metode 3: Forbedre CAM-strategier<\/h3>\n<ul data-start=\"6791\" data-end=\"7885\">\n<li data-start=\"6791\" data-end=\"7019\">\n<p data-start=\"6793\" data-end=\"7019\">For huller i isolerede kobberomr\u00e5der skal du anvende en ekstra trinvis kompensation. Isolerede omr\u00e5der har mindre kobber, s\u00e5 under plettering f\u00e5r de h\u00f8jere lokal str\u00f8mt\u00e6thed og mere kobbertykkelse; ekstra kompensation udligner det.<\/p>\n<\/li>\n<li data-start=\"7020\" data-end=\"7361\">\n<p data-start=\"7022\" data-end=\"7361\">Ved design med t\u00e6tte spor p\u00e5 den ene side og tynde p\u00e5 den anden (f.eks. et str\u00f8mkort) skal du placere den tynde side indad og den t\u00e6tte side udad og bruge omvendt panelisering. Under panelplettering f\u00e5r omr\u00e5der n\u00e6r printkanten h\u00f8jere str\u00f8mt\u00e6thed og tykkere plettering. Reversed panelization hj\u00e6lper med at afbalancere pletteringsfordelingen.<\/p>\n<\/li>\n<li data-start=\"7362\" data-end=\"7617\">\n<p data-start=\"7364\" data-end=\"7617\">N\u00e5r TOP- og BOTTOM-kobberarealet er meget forskelligt, skal du bruge positive\/negative (yin-yang) paneler. Uj\u00e6vnt kobberareal for\u00e5rsager \u201cbell-mouth\u201d-vias; jo tykkere print og jo mere kobber, jo v\u00e6rre er effekten; yin-yang-paneler hj\u00e6lper med at afbalancere kobberfordelingen.<\/p>\n<\/li>\n<li data-start=\"7618\" data-end=\"7885\">\n<p data-start=\"7620\" data-end=\"7885\">Ved huller med isolerede omr\u00e5der n\u00e6r printkanten eller \u00e5bninger skal der tilf\u00f8jes \u201copsamlingsomr\u00e5der\u201d af kobber eller kobberpuder n\u00e6r kanten eller \u00e5bningen. Isolerede huller kan f\u00e5 for stor pletteringstykkelse og blive for sm\u00e5; ekstra kobber i n\u00e6rheden af dem reducerer den lokale str\u00f8mt\u00e6thed og afbalancerer pletteringen.<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"7887\" data-end=\"7890\" \/>\n<h2 data-start=\"7892\" data-end=\"7952\">4. Hvor meget kompensation er der brug for, og hvordan opn\u00e5s den?<\/h2>\n<p data-start=\"7954\" data-end=\"8087\">Kompensationsv\u00e6rdier kommer fra procestests. Nedenfor ses et s\u00e6t m\u00e5lte \u00e6ndringer i hulst\u00f8rrelse efter forskellige trin (data fra en rapport):<\/p>\n<p data-start=\"8089\" data-end=\"8212\"><strong data-start=\"8089\" data-end=\"8106\">Procesforl\u00f8b:<\/strong> mekanisk boring \u2192 neds\u00e6nkning af kobber \u2192 galvanisering \u2192 m\u00f8nsteroverf\u00f8rsel \u2192 \u00e6tsning \u2192 AOI \u2192 v\u00e5dfilm \u2192 HASL<\/p>\n<p data-start=\"8214\" data-end=\"8239\"><strong data-start=\"8214\" data-end=\"8237\">Procesparametre:<\/strong><\/p>\n<ul data-start=\"8240\" data-end=\"8515\">\n<li data-start=\"8240\" data-end=\"8330\">\n<p data-start=\"8242\" data-end=\"8330\">Bor: borest\u00f8rrelse 0,95 mm, sk\u00e6rpes\/slibes 3 gange, borekompensation 0,15 mm;<\/p>\n<\/li>\n<li data-start=\"8331\" data-end=\"8386\">\n<p data-start=\"8333\" data-end=\"8386\">Plettering: kobbertykkelse \u2265 18 \u00b5m, gennemsnit \u2265 20 \u00b5m;<\/p>\n<\/li>\n<li data-start=\"8387\" data-end=\"8456\">\n<p data-start=\"8389\" data-end=\"8456\">HASL: krav til det endelige hul 0,80 mm, tolerance \u00b10,08 mm (3 mil);<\/p>\n<\/li>\n<li data-start=\"8457\" data-end=\"8515\">\n<p data-start=\"8459\" data-end=\"8515\">Test: 10 paneler, hj\u00f8rnebesk\u00e5ret, pladetykkelse 2,0 mm.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"8517\" data-end=\"8546\">Hulst\u00f8rrelsen \u00e6ndres trinvis<\/h3>\n<p data-start=\"8548\" data-end=\"8593\"><strong data-start=\"8548\" data-end=\"8569\">1) Efter boring<\/strong> - M\u00e5lte hulst\u00f8rrelser<\/p>\n<ul data-start=\"8594\" data-end=\"8795\">\n<li data-start=\"8594\" data-end=\"8795\">\n<p data-start=\"8596\" data-end=\"8795\">I alt 1920 testede huller (10 paneler, 384 huller hver). Pr\u00f8ve: 200 huller (20 pr. panel). Hullernes r\u00e6kkevidde: <strong data-start=\"8695\" data-end=\"8711\">0,93-0,94 mm<\/strong>, gennemsnit <strong data-start=\"8721\" data-end=\"8733\">0,931 mm<\/strong>.<br data-start=\"8734\" data-end=\"8737\" \/>(Derefter en lang liste med udvalgte v\u00e6rdier, for det meste 0,93 eller 0,94).<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"8797\" data-end=\"8848\"><strong data-start=\"8797\" data-end=\"8846\">2) Efter m\u00f8nstret plettering - kobbertykkelse<\/strong><\/p>\n<ul data-start=\"8849\" data-end=\"8999\">\n<li data-start=\"8849\" data-end=\"8999\">\n<p data-start=\"8851\" data-end=\"8999\">Test 10 huller for hvert panel. Omr\u00e5de for kobbertykkelse <strong data-start=\"8905\" data-end=\"8917\">18-31 \u00b5m<\/strong>, m\u00f8de \u226518 \u00b5m og gennemsnit \u226520 \u00b5m.<br data-start=\"8953\" data-end=\"8956\" \/>(Derefter mange pr\u00f8vev\u00e6rdier for kobbertykkelse).<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"9001\" data-end=\"9045\"><strong data-start=\"9001\" data-end=\"9043\">3) Efter m\u00f8nstret plettering - hulst\u00f8rrelse<\/strong><\/p>\n<ul data-start=\"9046\" data-end=\"9176\">\n<li data-start=\"9046\" data-end=\"9176\">\n<p data-start=\"9048\" data-end=\"9176\">I alt 1920 huller, pr\u00f8ve 200. Hullernes r\u00e6kkevidde: <strong data-start=\"9090\" data-end=\"9106\">0,84-0,88 mm<\/strong>, gennemsnit <strong data-start=\"9116\" data-end=\"9128\">0,858 mm<\/strong>.<br data-start=\"9129\" data-end=\"9132\" \/>(Derefter mange pr\u00f8vev\u00e6rdier, for det meste 0,85-0,88).<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"9178\" data-end=\"9209\"><strong data-start=\"9178\" data-end=\"9195\">4) Efter HASL<\/strong> - hulst\u00f8rrelse<\/p>\n<ul data-start=\"9210\" data-end=\"9322\">\n<li data-start=\"9210\" data-end=\"9322\">\n<p data-start=\"9212\" data-end=\"9322\">I alt 1920 huller, pr\u00f8ve 200. Hullernes r\u00e6kkevidde: <strong data-start=\"9254\" data-end=\"9270\">0,82-0,86 mm<\/strong>, gennemsnit <strong data-start=\"9280\" data-end=\"9292\">0,836 mm<\/strong>.<br data-start=\"9293\" data-end=\"9296\" \/>(Derefter mange pr\u00f8vev\u00e6rdier.)<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"9324\" data-end=\"9340\"><strong data-start=\"9324\" data-end=\"9340\">Resum\u00e9 af test<\/strong><\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"9342\" data-end=\"9531\">\n<thead data-start=\"9342\" data-end=\"9378\">\n<tr data-start=\"9342\" data-end=\"9378\">\n<th data-start=\"9342\" data-end=\"9349\" data-col-size=\"sm\">Trin<\/th>\n<th data-start=\"9349\" data-end=\"9362\" data-col-size=\"sm\">Hullets r\u00e6kkevidde<\/th>\n<th data-start=\"9362\" data-end=\"9378\" data-col-size=\"sm\">Gennemsnitligt hul<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"9395\" data-end=\"9531\">\n<tr data-start=\"9395\" data-end=\"9439\">\n<td data-start=\"9395\" data-end=\"9412\" data-col-size=\"sm\">Efter boring<\/td>\n<td data-start=\"9412\" data-end=\"9427\" data-col-size=\"sm\">0,93-0,94 mm<\/td>\n<td data-start=\"9427\" data-end=\"9439\" data-col-size=\"sm\">0,931 mm<\/td>\n<\/tr>\n<tr data-start=\"9440\" data-end=\"9490\">\n<td data-start=\"9440\" data-end=\"9463\" data-col-size=\"sm\">Efter kobberbel\u00e6gning<\/td>\n<td data-col-size=\"sm\" data-start=\"9463\" data-end=\"9478\">0,84-0,88 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"9478\" data-end=\"9490\">0,858 mm<\/td>\n<\/tr>\n<tr data-start=\"9491\" data-end=\"9531\">\n<td data-start=\"9491\" data-end=\"9504\" data-col-size=\"sm\">Efter HASL<\/td>\n<td data-col-size=\"sm\" data-start=\"9504\" data-end=\"9519\">0,82-0,86 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"9519\" data-end=\"9531\">0,836 mm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"9533\" data-end=\"9723\"><strong data-start=\"9533\" data-end=\"9548\">Konklusion:<\/strong> For HASL-plader er borekompensationen p\u00e5 <strong data-start=\"9591\" data-end=\"9602\">0,15 mm<\/strong> er en \u201coverkompensation\u201d og f\u00e5r de endelige huller til at blive st\u00f8rre. Den bedste kompensationsv\u00e6rdi i denne test er <strong data-start=\"9710\" data-end=\"9722\">0,125 mm<\/strong>.<\/p>\n<hr data-start=\"9725\" data-end=\"9728\" \/>\n<h2>5. Implementering af kode for borekompensation (regler)<\/h2>\n<ol data-start=\"9784\" data-end=\"9817\">\n<li data-start=\"9784\" data-end=\"9817\">\n<p data-start=\"9787\" data-end=\"9817\">Regler for kompensation og step-up<\/p>\n<\/li>\n<\/ol>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"9819\" data-end=\"10843\">\n<thead data-start=\"9819\" data-end=\"9968\">\n<tr data-start=\"9819\" data-end=\"9968\">\n<th data-start=\"9819\" data-end=\"9828\" data-col-size=\"sm\">Aspekt<\/th>\n<th data-start=\"9828\" data-end=\"9844\" data-col-size=\"sm\">F\u00e6rdigt hul<\/th>\n<th data-start=\"9844\" data-end=\"9861\" data-col-size=\"sm\">Overfladefinish<\/th>\n<th data-start=\"9861\" data-end=\"9879\" data-col-size=\"sm\">Pladens tykkelse<\/th>\n<th data-start=\"9879\" data-end=\"9899\" data-col-size=\"sm\">Step-up-t\u00e6rskel<\/th>\n<th data-start=\"9899\" data-end=\"9923\" data-col-size=\"sm\">Hvis via kobber &lt; 26 \u00b5m<\/th>\n<th data-start=\"9923\" data-end=\"9934\" data-col-size=\"sm\">26-37 \u00b5m<\/th>\n<th data-start=\"9934\" data-end=\"9945\" data-col-size=\"sm\">37-47 \u00b5m<\/th>\n<th data-start=\"9945\" data-end=\"9956\" data-col-size=\"sm\">47-67 \u00b5m<\/th>\n<th data-start=\"9956\" data-end=\"9968\" data-col-size=\"sm\">67-86 \u00b5m<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"10018\" data-end=\"10843\">\n<tr data-start=\"10018\" data-end=\"10146\">\n<td data-start=\"10018\" data-end=\"10043\" data-col-size=\"sm\">Tykkelsesforhold &lt; 12:1<\/td>\n<td data-start=\"10043\" data-end=\"10055\" data-col-size=\"sm\">\u2264 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10055\" data-end=\"10084\">HASL (blyholdig eller blyfri)<\/td>\n<td data-col-size=\"sm\" data-start=\"10084\" data-end=\"10095\">\u2265 3,5 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10095\" data-end=\"10105\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10105\" data-end=\"10113\">5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10113\" data-end=\"10121\">6 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10121\" data-end=\"10129\">7 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10129\" data-end=\"10137\">8 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10137\" data-end=\"10146\">9 mil<\/td>\n<\/tr>\n<tr data-start=\"10147\" data-end=\"10285\">\n<td data-start=\"10147\" data-end=\"10172\" data-col-size=\"sm\">Tykkelsesforhold &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10172\" data-end=\"10184\">\u2264 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10184\" data-end=\"10213\">HASL (blyholdig eller blyfri)<\/td>\n<td data-col-size=\"sm\" data-start=\"10213\" data-end=\"10224\">&lt; 3,5 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10224\" data-end=\"10234\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10234\" data-end=\"10244\">4,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10244\" data-end=\"10254\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10254\" data-end=\"10264\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10264\" data-end=\"10274\">7,5 millioner<\/td>\n<td data-col-size=\"sm\" data-start=\"10274\" data-end=\"10285\">8,5 mil<\/td>\n<\/tr>\n<tr data-start=\"10286\" data-end=\"10395\">\n<td data-start=\"10286\" data-end=\"10311\" data-col-size=\"sm\">Tykkelsesforhold &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10311\" data-end=\"10323\">\u2264 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10323\" data-end=\"10340\">Andre finishes<\/td>\n<td data-col-size=\"sm\" data-start=\"10340\" data-end=\"10344\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10344\" data-end=\"10354\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10354\" data-end=\"10362\">4 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10362\" data-end=\"10370\">5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10370\" data-end=\"10378\">6 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10378\" data-end=\"10386\">7 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10386\" data-end=\"10395\">8 mil<\/td>\n<\/tr>\n<tr data-start=\"10396\" data-end=\"10504\">\n<td data-start=\"10396\" data-end=\"10421\" data-col-size=\"sm\">Tykkelsesforhold &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10421\" data-end=\"10433\">&gt; 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10433\" data-end=\"10440\">HASL<\/td>\n<td data-col-size=\"sm\" data-start=\"10440\" data-end=\"10444\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10444\" data-end=\"10453\">0.0246<\/td>\n<td data-col-size=\"sm\" data-start=\"10453\" data-end=\"10463\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10463\" data-end=\"10473\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10473\" data-end=\"10483\">7,5 millioner<\/td>\n<td data-col-size=\"sm\" data-start=\"10483\" data-end=\"10493\">8,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10493\" data-end=\"10504\">9,5 millioner<\/td>\n<\/tr>\n<tr data-start=\"10505\" data-end=\"10624\">\n<td data-start=\"10505\" data-end=\"10530\" data-col-size=\"sm\">Tykkelsesforhold &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10530\" data-end=\"10542\">&gt; 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10542\" data-end=\"10559\">Andre finishes<\/td>\n<td data-col-size=\"sm\" data-start=\"10559\" data-end=\"10563\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10563\" data-end=\"10573\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10573\" data-end=\"10583\">4,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10583\" data-end=\"10593\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10593\" data-end=\"10603\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10603\" data-end=\"10613\">7,5 millioner<\/td>\n<td data-col-size=\"sm\" data-start=\"10613\" data-end=\"10624\">8,5 mil<\/td>\n<\/tr>\n<tr data-start=\"10625\" data-end=\"10733\">\n<td data-start=\"10625\" data-end=\"10650\" data-col-size=\"sm\">Tykkelsesforhold \u2265 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10650\" data-end=\"10662\">alle huller<\/td>\n<td data-col-size=\"sm\" data-start=\"10662\" data-end=\"10669\">HASL<\/td>\n<td data-col-size=\"sm\" data-start=\"10669\" data-end=\"10673\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10673\" data-end=\"10682\">0.0246<\/td>\n<td data-col-size=\"sm\" data-start=\"10682\" data-end=\"10692\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10692\" data-end=\"10702\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10702\" data-end=\"10712\">7,5 millioner<\/td>\n<td data-col-size=\"sm\" data-start=\"10712\" data-end=\"10722\">8,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10722\" data-end=\"10733\">9,5 millioner<\/td>\n<\/tr>\n<tr data-start=\"10734\" data-end=\"10843\">\n<td data-start=\"10734\" data-end=\"10759\" data-col-size=\"sm\">Tykkelsesforhold \u2265 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10759\" data-end=\"10771\">alle huller<\/td>\n<td data-col-size=\"sm\" data-start=\"10771\" data-end=\"10788\">Andre finishes<\/td>\n<td data-col-size=\"sm\" data-start=\"10788\" data-end=\"10792\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10792\" data-end=\"10802\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10802\" data-end=\"10810\">5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10810\" data-end=\"10818\">6 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10818\" data-end=\"10826\">7 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10826\" data-end=\"10834\">8 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10834\" data-end=\"10843\">9 mil<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ol start=\"2\" data-start=\"10845\" data-end=\"10953\">\n<li data-start=\"10845\" data-end=\"10953\">\n<p data-start=\"10848\" data-end=\"10953\">S\u00e6rlige borest\u00f8rrelser (hvis tolerance &lt; 3 mil, brug s\u00e6rlige bor eller 25 \u00b5m trin, brug n\u00e6rmeste boreregel)<\/p>\n<\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f7e142f elementor-widget elementor-widget-code-highlight\" data-id=\"f7e142f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-aspnet line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-aspnet\">\n\t\t\t\t\tList ContainDrillToolList = new List();\r\nContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ec5424b elementor-widget elementor-widget-text-editor\" data-id=\"ec5424b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>3. Kode for borekompensation<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dfeb51 elementor-widget elementor-widget-code-highlight\" data-id=\"3dfeb51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-csharp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-csharp\">\n\t\t\t\t\t\/\/\/<summary>\r\n\/\/\/ Beregn borekronediameteren baseret p\u00e5 borekompensationsparametre\r\n\/\/\/<\/summary>\r\n\/\/\/Borev\u00e6rkt\u00f8jets grundl\u00e6ggende oplysninger\r\n\/\/\/Parametre for borekompensation\r\n\/\/\/Speciel liste over borediametre\r\n\/\/\/Returnerer 1, hvis beregningen er vellykket.\r\npublic static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List ContainDrillToolList)\r\n{\r\n    if (ContainDrillToolList == null) ContainDrillToolList = new List();\r\n    gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();\r\n    switch (ToolInfo.type)\r\n    {\r\n        tilf\u00e6lde \"via\":\r\n            UpParamHole = UpParam.Via;\r\n            break;\r\n        tilf\u00e6lde \"plate\":\r\n            UpParamHole = UpParam.Pth;\r\n            break;\r\n        case \"nplate\":\r\n            UpParamHole = UpParam.Npth;\r\n            break;\r\n    }\r\n    ToolInfo.max_tol = Math.Round(UpParamHole.Max_Tol, 0);\r\n    ToolInfo.min_tol = Math.Round(UpParamHole.Min_Tol, 0);\r\n    if (ToolInfo.finish_size  49) \/\/N\u00e5r trinintervallet er 50 \u03bcm, m\u00e5 du ikke bruge specialbor\r\n    {\r\n        ContainDrillToolList = new List();\r\n        UpLevel = UpParamHole.UpLevel;\r\n    }\r\n    ellers\r\n    {\r\n        UpLevel = UpParam.DrillLevel * 0,5; \/\/V\u00e6lg bor med halvdelen af trinintervallet\r\n    }\r\n\r\n    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0,5; \/\/Gennemsnit af den \u00f8vre og nedre tolerance\r\n    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) \/ DrillSlotLevel)); \/\/antal boretrin\r\n    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; \/\/Round down to the nearest drill step\r\n    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;\/\/Remainder af borest\u00f8rrelse efter trininddeling\r\n    double DrillsizeLevel = (DrillsizeFloat &gt; UpLevel) ? DrillSlotLevel : 0;\/Bestem, om resten skal rundes op\r\n\r\n    \/\/Kontroller, om s\u00e6rlige bor er inkluderet\r\n    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt =&gt; (int)(Math.Floor(tt \/ DrillSlotLevel)) == DrillLevelCount);\r\n    if (ContainDrillIndex &gt; -1)\r\n    {\r\n        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;\/\/Rest af specialborest\u00f8rrelse efter trinopdeling\r\n        if (DrillsizeFloat &gt; UpLevel) \/\/ f.eks. 38 &gt; 20\r\n        {\r\n            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel); \/\/f.eks. 40-50\r\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); \/\/f.eks. 40-38\r\n            DrillsizeLevel = (diff1 &lt; diff2) ? DrillSlotLevel : ContainDrillFloat;\r\n        }\r\n        else \/\/if (ContainDrillFloat &lt; UpLevel)\r\n        {\r\n            double diff1 = Math.Abs(DrillsizeFloat - 0); \/\/f.eks. 12-0\r\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); \/\/f.eks. 12-16\r\n            DrillsizeLevel = (diff1  UpParamHole.UpLevel) ? DrillSlotLevel : 0;\/Bestem, om resten skal rundes op\r\n            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;\r\n        }\r\n        ellers\r\n        {\r\n            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) \/ 10) * 10; \/\/ Rund ned til n\u00e6rmeste 10 \u03bcm\r\n            ToolInfo.slot_len = DrillsizeInt;\r\n        }\r\n        ToolInfo.drill_size += UpParam.SlotEndNumber; \/\/ Tilf\u00f8j suffixnummer for segmentering af slotboring\r\n    }\r\n    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();\r\n    return 1;\r\n}\r\n\r\noffentlig klasse gToolUpParam\r\n{\r\n    \/\/\/ <summary>\r\n    \/\/\/ Kompensationsparametre for VIA-huller (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();\r\n    \/\/\/ <summary>\r\n    \/\/\/ Kompensationsparametre for PTH (Plated Through Hole) (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();\r\n    \/\/\/ <summary>\r\n    \/\/\/ Kompensationsparametre for NPTH (Non-Plated Through Hole) (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();\r\n    \/\/\/ <summary>\r\n    \/\/\/ Trininterval for runde borehuller (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double DrillLevel { get; set; } = 50;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Trininterval for spalteboringer (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double SlotLevel { get; set; } = 50;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Suffixnummer til segmentering af spalteborebit\r\n    \/\/\/ <\/summary>\r\n    public int SlotEndNumber { get; set; } = 0;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Ekstra kompensationsv\u00e6rdi for slidsenes l\u00e6ngde (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double SlotLengthUp { get; set; } = 0;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Om slotl\u00e6ngden skal afrundes til trininterval\r\n    \/\/\/ <\/summary>\r\n    public bool isSlotUpLevel { get; set; } = false;\r\n}\r\n\r\noffentlig klasse gToolUpParamHole\r\n{\r\n    \/\/\/ <summary>\r\n    \/\/\/ Kompensationsv\u00e6rdi (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double UpVal { get; set; } = 100;\r\n    \/\/\/ <summary>\r\n    \/\/\/ T\u00e6rskel for trininterval for afrunding opad (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double UpLevel { get; set; } = 25;\r\n    \/\/\/ <summary>\r\n    \/\/\/ \u00d8vre tolerance (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double Max_Tol { get; set; } = 76;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Nedre tolerance (i \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double Min_Tol { get; set; } = 76;\r\n}\r\n\r\n\/\/\/<summary>\r\n\/\/\/ Mod_tool: Attributmodel for borev\u00e6rkt\u00f8j\r\n\/\/\/<\/summary>\r\noffentlig klasse Mod_tool\r\n{\r\n    public int num { get; set; }\r\n    public string type { get; set; } \/\/ Hultype: via\/plade(nplade)\r\n    public string shape { get; set; } \/\/ Hulform: rund\/slot\r\n    public double finish_size { get; set; } \/\/ St\u00f8rrelse p\u00e5 f\u00e6rdigt hul (i \u03bcm)\r\n    public double drill_size { get; set; } \/\/ Borets st\u00f8rrelse (i \u03bcm)\r\n    public double max_tol { get; set; } \/\/ \u00d8vre tolerance (i \u03bcm)\r\n    public double min_tol { get; set; } \/\/ Nedre tolerance (i \u03bcm)\r\n    public double slot_len { get; set; } \/\/ Slotl\u00e6ngde (i \u03bcm)\r\n    public string bit { get; set; } \/\/ Borest\u00f8rrelse (i mm, formateret streng)\r\n}\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-578eb26 elementor-widget elementor-widget-text-editor\" data-id=\"578eb26\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2 data-start=\"10960\" data-end=\"11017\">6. Hvorfor p\u00e5virker pladetykkelsen borekompensationen?<\/h2>\n<p data-start=\"11019\" data-end=\"11464\">Jeg forstod det heller ikke i starten. Hoved\u00e5rsagen er den h\u00f8je <strong data-start=\"11090\" data-end=\"11121\">forhold mellem tykkelse og diameter<\/strong> (pladetykkelse divideret med huldiameter). Et h\u00f8jt forhold g\u00f8r kobberet i midten af hullet tyndere og kobberet i kanten af hullet tykkere. For at beregne forholdet mellem tykkelse og diameter skal du bruge v\u00e6rdien for pladetykkelsen. S\u00e5 pladetykkelsen indg\u00e5r i reglerne for borekompensation. For huller med stor tykkelse i forhold til diameteren er kompensationen st\u00f8rre.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>There are no great individuals, only great teams. With the team working together, the first-stage PCB CAM automation project for [&hellip;]<\/p>","protected":false},"author":1,"featured_media":4584,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4575","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"spectra_custom_meta":{"_edit_lock":["1766131812:1"],"rank_math_internal_links_processed":["1"],"rank_math_seo_score":["15"],"_uag_custom_page_level_css":[""],"site-sidebar-layout":["default"],"site-content-layout":[""],"ast-site-content-layout":["default"],"site-content-style":["default"],"site-sidebar-style":["default"],"ast-global-header-display":[""],"ast-banner-title-visibility":[""],"ast-main-header-display":[""],"ast-hfb-above-header-display":[""],"ast-hfb-below-header-display":[""],"ast-hfb-mobile-header-display":[""],"ast-breadcrumbs-content":[""],"ast-featured-img":[""],"footer-sml-layout":[""],"theme-transparent-header-meta":[""],"adv-header-id-meta":[""],"stick-header-meta":[""],"header-above-stick-meta":[""],"header-main-stick-meta":[""],"header-below-stick-meta":[""],"astra-migrate-meta-layouts":["default"],"ast-page-background-enabled":["default"],"ast-page-background-meta":["a:3:{s:7:\"desktop\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-5)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"tablet\";a:12:{s:16:\"background-color\";s:0:\"\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"mobile\";a:12:{s:16:\"background-color\";s:0:\"\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}}"],"ast-content-background-meta":["a:3:{s:7:\"desktop\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-4)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"tablet\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-4)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"mobile\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-4)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}}"],"footnotes":[""],"_elementor_edit_mode":["builder"],"_elementor_template_type":["wp-post"],"_elementor_data":["[{\"id\":\"733c0b06\",\"elType\":\"container\",\"settings\":{\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"7b990e0\"}]},\"elements\":[{\"id\":\"6269846d\",\"elType\":\"widget\",\"settings\":{\"editor\":\"<p data-start=\\\"49\\\" data-end=\\\"461\\\">There are no great individuals, only great teams. With the team working together, the first-stage PCB CAM automation project for <strong data-start=\\\"178\\\" data-end=\\\"194\\\">net handling<\\\/strong> and <strong data-start=\\\"199\\\" data-end=\\\"217\\\">drill handling<\\\/strong> is done. Next, we can move on to the PCB rules engine. Here I talk about drill compensation in PCB engineering. As a PCB engineering developer, you should know what it is and why it works. I share the key points about drill compensation below.<\\\/p>\\n<hr data-start=\\\"463\\\" data-end=\\\"466\\\" \\\/>\\n<h2 data-start=\\\"468\\\" data-end=\\\"507\\\">1. Why do we compensate drill sizes?<\\\/h2>\\n<p data-start=\\\"509\\\" data-end=\\\"870\\\">The hole sizes in the PCB files the customer gives usually mean the <em data-start=\\\"577\\\" data-end=\\\"584\\\">final<\\\/em> hole size. During PCB production, copper is plated inside the holes (or the holes get a surface finish such as HASL, ENIG, OSP, etc.). This makes the hole smaller. To make sure the final hole size meets the requirement, the CAM step corrects the drill size. This is drill compensation.<\\\/p>\\n<p data-start=\\\"872\\\" data-end=\\\"1171\\\"><strong data-start=\\\"872\\\" data-end=\\\"889\\\">Real example:<\\\/strong><br data-start=\\\"889\\\" data-end=\\\"892\\\" \\\/>Final hole size: <strong data-start=\\\"909\\\" data-end=\\\"920\\\">1.00 mm<\\\/strong>. Surface finish: <strong data-start=\\\"938\\\" data-end=\\\"946\\\">ENIG<\\\/strong> (nickel thickness 2.54 \\u00b5m, gold thickness 0.0254 \\u00b5m). Follow IPC Class II and the average plated copper thickness is <strong data-start=\\\"1064\\\" data-end=\\\"1073\\\">20 \\u00b5m<\\\/strong>. If we use <strong data-start=\\\"1085\\\" data-end=\\\"1096\\\">0.10 mm<\\\/strong> as the compensation value, the CAM team will pick a <strong data-start=\\\"1149\\\" data-end=\\\"1160\\\">1.10 mm<\\\/strong> drill bit.<\\\/p>\\n<p data-start=\\\"872\\\" data-end=\\\"1171\\\"><img class=\\\"alignnone size-full wp-image-4578\\\" src=\\\"https:\\\/\\\/flj-pcb.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/Real-example.webp\\\" alt=\\\"Real example\\\" width=\\\"336\\\" height=\\\"297\\\" \\\/><\\\/p>\\n<hr data-start=\\\"1173\\\" data-end=\\\"1176\\\" \\\/>\\n<h2 data-start=\\\"1178\\\" data-end=\\\"1216\\\">2. How do we do drill compensation?<\\\/h2>\\n<p data-start=\\\"1218\\\" data-end=\\\"1445\\\">First, be clear about the three key parameters for drill compensation:<br data-start=\\\"1288\\\" data-end=\\\"1291\\\" \\\/><strong data-start=\\\"1291\\\" data-end=\\\"1298\\\">(1)<\\\/strong> Drill bit increment,<br data-start=\\\"1319\\\" data-end=\\\"1322\\\" \\\/><strong data-start=\\\"1322\\\" data-end=\\\"1329\\\">(2)<\\\/strong> Compensation value,<br data-start=\\\"1349\\\" data-end=\\\"1352\\\" \\\/><strong data-start=\\\"1352\\\" data-end=\\\"1359\\\">(3)<\\\/strong> Step-up threshold (advance value).<br data-start=\\\"1394\\\" data-end=\\\"1397\\\" \\\/>These three determine how to apply compensation.<\\\/p>\\n<h3 data-start=\\\"1447\\\" data-end=\\\"1475\\\">1) Drill bit increment<\\\/h3>\\n<p data-start=\\\"1476\\\" data-end=\\\"1773\\\">This depends on the drill bits the company buys. The industry common increment is <strong data-start=\\\"1558\\\" data-end=\\\"1567\\\">50 \\u00b5m<\\\/strong>. Typical drill sizes range from <strong data-start=\\\"1600\\\" data-end=\\\"1611\\\">0.10 mm<\\\/strong> to <strong data-start=\\\"1615\\\" data-end=\\\"1626\\\">6.35 mm<\\\/strong>. The usual smallest step between drill bits is <strong data-start=\\\"1674\\\" data-end=\\\"1685\\\">0.05 mm<\\\/strong>. So the drill library has sizes like <strong data-start=\\\"1723\\\" data-end=\\\"1761\\\">0.10 mm, 0.15 mm, 0.20 mm, 0.25 mm<\\\/strong>, and so on.<\\\/p>\\n<h3 data-start=\\\"1775\\\" data-end=\\\"1802\\\">2) Compensation value<\\\/h3>\\n<p data-start=\\\"1803\\\" data-end=\\\"1952\\\">The process team sets the compensation rules based on factory test results. Compensation values do not vary much across the industry. Common rules:<\\\/p>\\n<ul data-start=\\\"1953\\\" data-end=\\\"2098\\\">\\n<li data-start=\\\"1953\\\" data-end=\\\"2014\\\">\\n<p data-start=\\\"1955\\\" data-end=\\\"2014\\\"><strong data-start=\\\"1955\\\" data-end=\\\"1975\\\">Boards with HASL<\\\/strong> (spray tin): <strong data-start=\\\"1989\\\" data-end=\\\"2011\\\">compensate 0.15 mm<\\\/strong>.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"2015\\\" data-end=\\\"2098\\\">\\n<p data-start=\\\"2017\\\" data-end=\\\"2098\\\"><strong data-start=\\\"2017\\\" data-end=\\\"2040\\\">Boards without HASL<\\\/strong> (ENIG, immersion tin, OSP, etc.): <strong data-start=\\\"2075\\\" data-end=\\\"2097\\\">compensate 0.10 mm<\\\/strong>.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<h3 data-start=\\\"2100\\\" data-end=\\\"2142\\\">3) Step-up threshold (advance value)<\\\/h3>\\n<p data-start=\\\"2143\\\" data-end=\\\"2403\\\">The process team also sets the strategy for picking the drill bit, similar to a rounding rule. For example, when the increment is <strong data-start=\\\"2273\\\" data-end=\\\"2282\\\">20 \\u00b5m<\\\/strong>, if the remainder after dividing by the increment is <strong data-start=\\\"2336\\\" data-end=\\\"2347\\\">\\u2265 20 \\u00b5m<\\\/strong>, you round up 50 \\u00b5m; otherwise you keep the lower size.<\\\/p>\\n<p data-start=\\\"2405\\\" data-end=\\\"2737\\\"><strong data-start=\\\"2405\\\" data-end=\\\"2417\\\">Example:<\\\/strong><br data-start=\\\"2417\\\" data-end=\\\"2420\\\" \\\/>Final hole size = <strong data-start=\\\"2438\\\" data-end=\\\"2450\\\">1.025 mm<\\\/strong>, compensation = <strong data-start=\\\"2467\\\" data-end=\\\"2478\\\">0.10 mm<\\\/strong>, so compensated size = <strong data-start=\\\"2502\\\" data-end=\\\"2514\\\">1.125 mm<\\\/strong>. But there is no <strong data-start=\\\"2532\\\" data-end=\\\"2544\\\">1.125 mm<\\\/strong> drill in the library. Use the step-up rule. The remainder of 1.125 mm when compared to the 0.05 mm step is <strong data-start=\\\"2652\\\" data-end=\\\"2661\\\">25 \\u00b5m<\\\/strong>. Since <strong data-start=\\\"2669\\\" data-end=\\\"2686\\\">25 \\u00b5m &gt; 20 \\u00b5m<\\\/strong>, round up by 50 \\u00b5m and choose a <strong data-start=\\\"2719\\\" data-end=\\\"2730\\\">1.15 mm<\\\/strong> drill.<\\\/p>\\n<hr data-start=\\\"2739\\\" data-end=\\\"2742\\\" \\\/>\\n<h3 data-start=\\\"2744\\\" data-end=\\\"2782\\\">Actual drill compensation examples<\\\/h3>\\n<p data-start=\\\"2784\\\" data-end=\\\"2850\\\">Assume: drill increment = <strong data-start=\\\"2810\\\" data-end=\\\"2819\\\">50 \\u00b5m<\\\/strong>, step-up threshold = <strong data-start=\\\"2841\\\" data-end=\\\"2850\\\">20 \\u00b5m<\\\/strong><\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"2852\\\" data-end=\\\"3097\\\">\\n<thead data-start=\\\"2852\\\" data-end=\\\"2947\\\">\\n<tr data-start=\\\"2852\\\" data-end=\\\"2947\\\">\\n<th data-start=\\\"2852\\\" data-end=\\\"2868\\\" data-col-size=\\\"sm\\\">Original hole<\\\/th>\\n<th data-start=\\\"2868\\\" data-end=\\\"2883\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"2883\\\" data-end=\\\"2904\\\" data-col-size=\\\"sm\\\">After compensation<\\\/th>\\n<th data-start=\\\"2904\\\" data-end=\\\"2919\\\" data-col-size=\\\"sm\\\">Integer part<\\\/th>\\n<th data-start=\\\"2919\\\" data-end=\\\"2931\\\" data-col-size=\\\"sm\\\">Remainder<\\\/th>\\n<th data-start=\\\"2931\\\" data-end=\\\"2947\\\" data-col-size=\\\"sm\\\">Drill chosen<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"2980\\\" data-end=\\\"3097\\\">\\n<tr data-start=\\\"2980\\\" data-end=\\\"3038\\\">\\n<td data-start=\\\"2980\\\" data-end=\\\"2991\\\" data-col-size=\\\"sm\\\">1.025 mm<\\\/td>\\n<td data-start=\\\"2991\\\" data-end=\\\"2998\\\" data-col-size=\\\"sm\\\">0.10<\\\/td>\\n<td data-start=\\\"2998\\\" data-end=\\\"3009\\\" data-col-size=\\\"sm\\\">1.125 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3009\\\" data-end=\\\"3016\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3016\\\" data-end=\\\"3027\\\">0.025 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3027\\\" data-end=\\\"3038\\\">1.15 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"3039\\\" data-end=\\\"3097\\\">\\n<td data-start=\\\"3039\\\" data-end=\\\"3050\\\" data-col-size=\\\"sm\\\">1.016 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3050\\\" data-end=\\\"3057\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3057\\\" data-end=\\\"3068\\\">1.116 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3068\\\" data-end=\\\"3075\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3075\\\" data-end=\\\"3086\\\">0.016 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3086\\\" data-end=\\\"3097\\\">1.10 mm<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<h4 data-start=\\\"3099\\\" data-end=\\\"3140\\\">How to compute the chosen drill size<\\\/h4>\\n<p data-start=\\\"3141\\\" data-end=\\\"3241\\\">Break the compensated hole size into an integer part and a remainder part using the drill increment:<\\\/p>\\n<p data-start=\\\"3243\\\" data-end=\\\"3396\\\">Take <strong data-start=\\\"3248\\\" data-end=\\\"3260\\\">1.125 mm<\\\/strong> as an example:<br data-start=\\\"3275\\\" data-end=\\\"3278\\\" \\\/>1.125 \\\/ 0.05 = 22.5 \\u2192 floor to 22 \\u2192 integer part = 22 \\u00d7 0.05 = <strong data-start=\\\"3341\\\" data-end=\\\"3352\\\">1.10 mm<\\\/strong>.<br data-start=\\\"3353\\\" data-end=\\\"3356\\\" \\\/>Remainder = 1.125 % 0.05 = <strong data-start=\\\"3383\\\" data-end=\\\"3395\\\">0.025 mm<\\\/strong>.<\\\/p>\\n<p data-start=\\\"3398\\\" data-end=\\\"3475\\\">Then compare the remainder with the step-up threshold (for example, 20 \\u00b5m):<\\\/p>\\n<ul data-start=\\\"3476\\\" data-end=\\\"3607\\\">\\n<li data-start=\\\"3476\\\" data-end=\\\"3542\\\">\\n<p data-start=\\\"3478\\\" data-end=\\\"3542\\\">If remainder &gt; threshold, drill size = integer part + 0.05 mm.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"3543\\\" data-end=\\\"3607\\\">\\n<p data-start=\\\"3545\\\" data-end=\\\"3607\\\">If remainder \\u2264 threshold, drill size = integer part + 0.00 mm.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<hr data-start=\\\"3609\\\" data-end=\\\"3612\\\" \\\/>\\n<h3 data-start=\\\"3614\\\" data-end=\\\"3653\\\">Summary about the step-up threshold<\\\/h3>\\n<p data-start=\\\"3654\\\" data-end=\\\"3897\\\">When the drill increment is <strong data-start=\\\"3682\\\" data-end=\\\"3691\\\">50 \\u00b5m<\\\/strong>, the step-up threshold is critical. It performs a second correction of the compensated drill size. It decides whether to \\u201cstep up\\u201d or \\u201cstay.\\u201d Changing this threshold directly changes the chosen drill size.<\\\/p>\\n<p data-start=\\\"3899\\\" data-end=\\\"3943\\\"><strong data-start=\\\"3899\\\" data-end=\\\"3943\\\">More examples (drill increment = 50 \\u00b5m):<\\\/strong><\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"3945\\\" data-end=\\\"4209\\\">\\n<thead data-start=\\\"3945\\\" data-end=\\\"4041\\\">\\n<tr data-start=\\\"3945\\\" data-end=\\\"4041\\\">\\n<th data-start=\\\"3945\\\" data-end=\\\"3961\\\" data-col-size=\\\"sm\\\">Original hole<\\\/th>\\n<th data-start=\\\"3961\\\" data-end=\\\"3976\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"3976\\\" data-end=\\\"3990\\\" data-col-size=\\\"sm\\\">After comp.<\\\/th>\\n<th data-start=\\\"3990\\\" data-end=\\\"4000\\\" data-col-size=\\\"sm\\\">Integer<\\\/th>\\n<th data-start=\\\"4000\\\" data-end=\\\"4012\\\" data-col-size=\\\"sm\\\">Remainder<\\\/th>\\n<th data-start=\\\"4012\\\" data-end=\\\"4032\\\" data-col-size=\\\"sm\\\">Step-up threshold<\\\/th>\\n<th data-start=\\\"4032\\\" data-end=\\\"4041\\\" data-col-size=\\\"sm\\\">Drill<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"4079\\\" data-end=\\\"4209\\\">\\n<tr data-start=\\\"4079\\\" data-end=\\\"4143\\\">\\n<td data-start=\\\"4079\\\" data-end=\\\"4090\\\" data-col-size=\\\"sm\\\">1.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4090\\\" data-end=\\\"4096\\\">0.1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4096\\\" data-end=\\\"4107\\\">1.122 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4107\\\" data-end=\\\"4114\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4114\\\" data-end=\\\"4125\\\">0.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4125\\\" data-end=\\\"4132\\\">0.02<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4132\\\" data-end=\\\"4143\\\">1.15 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"4144\\\" data-end=\\\"4209\\\">\\n<td data-start=\\\"4144\\\" data-end=\\\"4155\\\" data-col-size=\\\"sm\\\">1.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4155\\\" data-end=\\\"4161\\\">0.1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4161\\\" data-end=\\\"4172\\\">1.122 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4172\\\" data-end=\\\"4179\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4179\\\" data-end=\\\"4190\\\">0.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4190\\\" data-end=\\\"4198\\\">0.025<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4198\\\" data-end=\\\"4209\\\">1.10 mm<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<hr data-start=\\\"4211\\\" data-end=\\\"4214\\\" \\\/>\\n<h3 data-start=\\\"4216\\\" data-end=\\\"4266\\\">Personal view on setting the step-up threshold<\\\/h3>\\n<p data-start=\\\"4267\\\" data-end=\\\"4575\\\"><strong data-start=\\\"4267\\\" data-end=\\\"4285\\\">Pros and cons:<\\\/strong> After compensation, if the final hole is a little larger, at least the part can be inserted. If the hole is too small, the part cannot be inserted. So we usually set the step-up threshold to <strong data-start=\\\"4477\\\" data-end=\\\"4486\\\">20 \\u00b5m<\\\/strong> instead of <strong data-start=\\\"4498\\\" data-end=\\\"4507\\\">25 \\u00b5m<\\\/strong>. The exact choice should match each process and compensation value.<\\\/p>\\n<p data-start=\\\"4577\\\" data-end=\\\"4862\\\"><strong data-start=\\\"4577\\\" data-end=\\\"4614\\\">Combined with compensation value:<\\\/strong> For boards with HASL where compensation is <strong data-start=\\\"4658\\\" data-end=\\\"4669\\\">0.15 mm<\\\/strong>, you already \\u201cover-compensate\\u201d a bit and the final holes tend to be slightly large. In that case, a step-up threshold of <strong data-start=\\\"4791\\\" data-end=\\\"4800\\\">25 \\u00b5m<\\\/strong> can also work. Use the \\u201cnearest\\u201d rule when picking the drill.<\\\/p>\\n<hr data-start=\\\"4864\\\" data-end=\\\"4867\\\" \\\/>\\n<h2 data-start=\\\"4869\\\" data-end=\\\"4943\\\">3. How to ensure final hole size meets requirements after compensation?<\\\/h2>\\n<h3 data-start=\\\"4945\\\" data-end=\\\"4983\\\">Method 1: Buy special drill bits<\\\/h3>\\n<p data-start=\\\"4984\\\" data-end=\\\"5207\\\">Standard drill increment is <strong data-start=\\\"5012\\\" data-end=\\\"5021\\\">50 \\u00b5m<\\\/strong> (0.05 mm steps like 1.00, 1.05, 1.10, 1.15 mm). With a PTH tolerance of \\u00b13 mil, a 50 \\u00b5m drill set can cover the tolerance. If the tolerance is smaller than that, use special drill bits.<\\\/p>\\n<p data-start=\\\"5209\\\" data-end=\\\"5352\\\"><strong data-start=\\\"5209\\\" data-end=\\\"5222\\\">Example 1<\\\/strong> \\u2014 Compare 50 \\u00b5m vs 25 \\u00b5m increments:<br data-start=\\\"5259\\\" data-end=\\\"5262\\\" \\\/>Original hole = <strong data-start=\\\"5278\\\" data-end=\\\"5290\\\">0.922 mm<\\\/strong>, compensation = <strong data-start=\\\"5307\\\" data-end=\\\"5318\\\">0.10 mm<\\\/strong>, compensated size = <strong data-start=\\\"5339\\\" data-end=\\\"5351\\\">1.022 mm<\\\/strong>.<\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"5354\\\" data-end=\\\"5545\\\">\\n<thead data-start=\\\"5354\\\" data-end=\\\"5422\\\">\\n<tr data-start=\\\"5354\\\" data-end=\\\"5422\\\">\\n<th data-start=\\\"5354\\\" data-end=\\\"5365\\\" data-col-size=\\\"sm\\\">Original<\\\/th>\\n<th data-start=\\\"5365\\\" data-end=\\\"5380\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"5380\\\" data-end=\\\"5394\\\" data-col-size=\\\"sm\\\">Compensated<\\\/th>\\n<th data-start=\\\"5394\\\" data-end=\\\"5406\\\" data-col-size=\\\"sm\\\">Increment<\\\/th>\\n<th data-start=\\\"5406\\\" data-end=\\\"5422\\\" data-col-size=\\\"sm\\\">Drill chosen<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"5450\\\" data-end=\\\"5545\\\">\\n<tr data-start=\\\"5450\\\" data-end=\\\"5496\\\">\\n<td data-start=\\\"5450\\\" data-end=\\\"5458\\\" data-col-size=\\\"sm\\\">0.922<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5458\\\" data-end=\\\"5465\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5465\\\" data-end=\\\"5473\\\">1.022<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5473\\\" data-end=\\\"5488\\\">0.05 (50 \\u00b5m)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5488\\\" data-end=\\\"5496\\\">1.05<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"5497\\\" data-end=\\\"5545\\\">\\n<td data-start=\\\"5497\\\" data-end=\\\"5505\\\" data-col-size=\\\"sm\\\">0.922<\\\/td>\\n<td data-start=\\\"5505\\\" data-end=\\\"5512\\\" data-col-size=\\\"sm\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5512\\\" data-end=\\\"5520\\\">1.022<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5520\\\" data-end=\\\"5536\\\">0.025 (25 \\u00b5m)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5536\\\" data-end=\\\"5545\\\">1.025<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<p data-start=\\\"5547\\\" data-end=\\\"5689\\\">Difference: 1.050 \\u2212 1.022 = 0.028 mm; 1.025 \\u2212 1.022 = 0.003 mm. The smaller difference is better, so <strong data-start=\\\"5648\\\" data-end=\\\"5660\\\">1.025 mm<\\\/strong> (25 \\u00b5m increment) is better.<\\\/p>\\n<p data-start=\\\"5691\\\" data-end=\\\"5818\\\"><strong data-start=\\\"5691\\\" data-end=\\\"5704\\\">Example 2<\\\/strong> \\u2014 50 \\u00b5m vs special drill:<br data-start=\\\"5730\\\" data-end=\\\"5733\\\" \\\/>Original hole = <strong data-start=\\\"5749\\\" data-end=\\\"5761\\\">0.611 mm<\\\/strong>, compensation = <strong data-start=\\\"5778\\\" data-end=\\\"5789\\\">0.10 mm<\\\/strong>, compensated = <strong data-start=\\\"5805\\\" data-end=\\\"5817\\\">0.711 mm<\\\/strong>.<\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"5820\\\" data-end=\\\"6018\\\">\\n<thead data-start=\\\"5820\\\" data-end=\\\"5895\\\">\\n<tr data-start=\\\"5820\\\" data-end=\\\"5895\\\">\\n<th data-start=\\\"5820\\\" data-end=\\\"5831\\\" data-col-size=\\\"sm\\\">Original<\\\/th>\\n<th data-start=\\\"5831\\\" data-end=\\\"5846\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"5846\\\" data-end=\\\"5860\\\" data-col-size=\\\"sm\\\">Compensated<\\\/th>\\n<th data-start=\\\"5860\\\" data-end=\\\"5879\\\" data-col-size=\\\"sm\\\">Increment \\\/ Type<\\\/th>\\n<th data-start=\\\"5879\\\" data-end=\\\"5895\\\" data-col-size=\\\"sm\\\">Drill chosen<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"5923\\\" data-end=\\\"6018\\\">\\n<tr data-start=\\\"5923\\\" data-end=\\\"5969\\\">\\n<td data-start=\\\"5923\\\" data-end=\\\"5931\\\" data-col-size=\\\"sm\\\">0.611<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5931\\\" data-end=\\\"5938\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5938\\\" data-end=\\\"5946\\\">0.711<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5946\\\" data-end=\\\"5961\\\">0.05 (50 \\u00b5m)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5961\\\" data-end=\\\"5969\\\">0.70<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"5970\\\" data-end=\\\"6018\\\">\\n<td data-start=\\\"5970\\\" data-end=\\\"5978\\\" data-col-size=\\\"sm\\\">0.611<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5978\\\" data-end=\\\"5985\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5985\\\" data-end=\\\"5993\\\">0.711<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5993\\\" data-end=\\\"6009\\\">Special drill<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"6009\\\" data-end=\\\"6018\\\">0.711<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<p data-start=\\\"6020\\\" data-end=\\\"6161\\\">Difference: 0.700 \\u2212 0.711 = \\u22120.011 mm; 0.711 \\u2212 0.711 = 0.000 mm. The smaller difference is better. So the <strong data-start=\\\"6126\\\" data-end=\\\"6152\\\">0.711 mm special drill<\\\/strong> is best.<\\\/p>\\n<h3 data-start=\\\"6163\\\" data-end=\\\"6206\\\">Method 2: Improve process and equipment<\\\/h3>\\n<ul data-start=\\\"6207\\\" data-end=\\\"6752\\\">\\n<li data-start=\\\"6207\\\" data-end=\\\"6296\\\">\\n<p data-start=\\\"6209\\\" data-end=\\\"6296\\\">Add a second board plating step to reduce uneven thickness from pattern distribution.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"6297\\\" data-end=\\\"6395\\\">\\n<p data-start=\\\"6299\\\" data-end=\\\"6395\\\">Use negative photo direct-etching and plate the whole board to reduce uneven copper thickness.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"6396\\\" data-end=\\\"6538\\\">\\n<p data-start=\\\"6398\\\" data-end=\\\"6538\\\">Lower the current density (typical is 19 ASF); slightly lower current density can improve plating uniformity but will extend plating time.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"6539\\\" data-end=\\\"6752\\\">\\n<p data-start=\\\"6541\\\" data-end=\\\"6752\\\">Upgrade to a horizontal plating line. Vertical plating lines often give thicker copper at the hole edge and thinner copper at the hole center for high aspect-ratio holes. A horizontal line can reduce that issue.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<h3 data-start=\\\"6754\\\" data-end=\\\"6790\\\">Method 3: Improve CAM strategies<\\\/h3>\\n<ul data-start=\\\"6791\\\" data-end=\\\"7885\\\">\\n<li data-start=\\\"6791\\\" data-end=\\\"7019\\\">\\n<p data-start=\\\"6793\\\" data-end=\\\"7019\\\">For holes in isolated copper areas, apply one extra increment compensation. Isolated areas have less copper, so during plating they get higher local current density and more copper thickness; extra compensation offsets that.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"7020\\\" data-end=\\\"7361\\\">\\n<p data-start=\\\"7022\\\" data-end=\\\"7361\\\">For designs with dense traces on one side and sparse on the other (for example, a power board), place the sparse side inward and the dense side outward, and use reversed panelization. During panel plating, areas near the board edge get higher current density and thicker plating. Reversed panelization helps balance plating distribution.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"7362\\\" data-end=\\\"7617\\\">\\n<p data-start=\\\"7364\\\" data-end=\\\"7617\\\">When TOP and BOTTOM copper area differ a lot, use positive\\\/negative (yin-yang) paneling. Uneven copper area causes \\u201cbell-mouth\\u201d vias; the thicker the board and the more copper, the worse the effect; yin-yang paneling helps balance copper distribution.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"7618\\\" data-end=\\\"7885\\\">\\n<p data-start=\\\"7620\\\" data-end=\\\"7885\\\">For isolated-area holes near the board edge or slots, add copper \\u201cpick-up\\u201d areas or copper pads near the edge or slot. Isolated holes can get too much plating thickness and become too small; extra copper near them reduces local current density and balances plating.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<hr data-start=\\\"7887\\\" data-end=\\\"7890\\\" \\\/>\\n<h2 data-start=\\\"7892\\\" data-end=\\\"7952\\\">4. How much compensation is needed and how is it derived?<\\\/h2>\\n<p data-start=\\\"7954\\\" data-end=\\\"8087\\\">Compensation values come from process tests. Below is one set of measured hole size changes after various steps (data from a report):<\\\/p>\\n<p data-start=\\\"8089\\\" data-end=\\\"8212\\\"><strong data-start=\\\"8089\\\" data-end=\\\"8106\\\">Process flow:<\\\/strong> mechanical drilling \\u2192 immersion copper \\u2192 electroplating \\u2192 pattern transfer \\u2192 etch \\u2192 AOI \\u2192 wet film \\u2192 HASL<\\\/p>\\n<p data-start=\\\"8214\\\" data-end=\\\"8239\\\"><strong data-start=\\\"8214\\\" data-end=\\\"8237\\\">Process parameters:<\\\/strong><\\\/p>\\n<ul data-start=\\\"8240\\\" data-end=\\\"8515\\\">\\n<li data-start=\\\"8240\\\" data-end=\\\"8330\\\">\\n<p data-start=\\\"8242\\\" data-end=\\\"8330\\\">Drill: drill bit size 0.95 mm, re-sharpen\\\/regrind 3 times, drill compensation 0.15 mm;<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"8331\\\" data-end=\\\"8386\\\">\\n<p data-start=\\\"8333\\\" data-end=\\\"8386\\\">Plating: copper thickness \\u2265 18 \\u00b5m, average \\u2265 20 \\u00b5m;<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"8387\\\" data-end=\\\"8456\\\">\\n<p data-start=\\\"8389\\\" data-end=\\\"8456\\\">HASL: final hole requirement 0.80 mm, tolerance \\u00b10.08 mm (3 mil);<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"8457\\\" data-end=\\\"8515\\\">\\n<p data-start=\\\"8459\\\" data-end=\\\"8515\\\">Test: 10 panels, corner trimmed, board thickness 2.0 mm.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<h3 data-start=\\\"8517\\\" data-end=\\\"8546\\\">Hole size changes by step<\\\/h3>\\n<p data-start=\\\"8548\\\" data-end=\\\"8593\\\"><strong data-start=\\\"8548\\\" data-end=\\\"8569\\\">1) After drilling<\\\/strong> \\u2014 hole sizes measured<\\\/p>\\n<ul data-start=\\\"8594\\\" data-end=\\\"8795\\\">\\n<li data-start=\\\"8594\\\" data-end=\\\"8795\\\">\\n<p data-start=\\\"8596\\\" data-end=\\\"8795\\\">Total 1920 holes tested (10 panels, 384 holes each). Sample: 200 holes (20 per panel). Hole range: <strong data-start=\\\"8695\\\" data-end=\\\"8711\\\">0.93\\u20130.94 mm<\\\/strong>, average <strong data-start=\\\"8721\\\" data-end=\\\"8733\\\">0.931 mm<\\\/strong>.<br data-start=\\\"8734\\\" data-end=\\\"8737\\\" \\\/>(Then a long list of sampled values, mostly 0.93 or 0.94.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"8797\\\" data-end=\\\"8848\\\"><strong data-start=\\\"8797\\\" data-end=\\\"8846\\\">2) After patterned plating \\u2014 copper thickness<\\\/strong><\\\/p>\\n<ul data-start=\\\"8849\\\" data-end=\\\"8999\\\">\\n<li data-start=\\\"8849\\\" data-end=\\\"8999\\\">\\n<p data-start=\\\"8851\\\" data-end=\\\"8999\\\">For each panel, test 10 holes. Copper thickness range <strong data-start=\\\"8905\\\" data-end=\\\"8917\\\">18\\u201331 \\u00b5m<\\\/strong>, meeting \\u226518 \\u00b5m and average \\u226520 \\u00b5m.<br data-start=\\\"8953\\\" data-end=\\\"8956\\\" \\\/>(Then many sample copper thickness values.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"9001\\\" data-end=\\\"9045\\\"><strong data-start=\\\"9001\\\" data-end=\\\"9043\\\">3) After patterned plating \\u2014 hole size<\\\/strong><\\\/p>\\n<ul data-start=\\\"9046\\\" data-end=\\\"9176\\\">\\n<li data-start=\\\"9046\\\" data-end=\\\"9176\\\">\\n<p data-start=\\\"9048\\\" data-end=\\\"9176\\\">Total 1920 holes, sample 200. Hole range: <strong data-start=\\\"9090\\\" data-end=\\\"9106\\\">0.84\\u20130.88 mm<\\\/strong>, average <strong data-start=\\\"9116\\\" data-end=\\\"9128\\\">0.858 mm<\\\/strong>.<br data-start=\\\"9129\\\" data-end=\\\"9132\\\" \\\/>(Then many sample values, mostly 0.85\\u20130.88.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"9178\\\" data-end=\\\"9209\\\"><strong data-start=\\\"9178\\\" data-end=\\\"9195\\\">4) After HASL<\\\/strong> \\u2014 hole size<\\\/p>\\n<ul data-start=\\\"9210\\\" data-end=\\\"9322\\\">\\n<li data-start=\\\"9210\\\" data-end=\\\"9322\\\">\\n<p data-start=\\\"9212\\\" data-end=\\\"9322\\\">Total 1920 holes, sample 200. Hole range: <strong data-start=\\\"9254\\\" data-end=\\\"9270\\\">0.82\\u20130.86 mm<\\\/strong>, average <strong data-start=\\\"9280\\\" data-end=\\\"9292\\\">0.836 mm<\\\/strong>.<br data-start=\\\"9293\\\" data-end=\\\"9296\\\" \\\/>(Then many sample values.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"9324\\\" data-end=\\\"9340\\\"><strong data-start=\\\"9324\\\" data-end=\\\"9340\\\">Test summary<\\\/strong><\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"9342\\\" data-end=\\\"9531\\\">\\n<thead data-start=\\\"9342\\\" data-end=\\\"9378\\\">\\n<tr data-start=\\\"9342\\\" data-end=\\\"9378\\\">\\n<th data-start=\\\"9342\\\" data-end=\\\"9349\\\" data-col-size=\\\"sm\\\">Step<\\\/th>\\n<th data-start=\\\"9349\\\" data-end=\\\"9362\\\" data-col-size=\\\"sm\\\">Hole range<\\\/th>\\n<th data-start=\\\"9362\\\" data-end=\\\"9378\\\" data-col-size=\\\"sm\\\">Average hole<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"9395\\\" data-end=\\\"9531\\\">\\n<tr data-start=\\\"9395\\\" data-end=\\\"9439\\\">\\n<td data-start=\\\"9395\\\" data-end=\\\"9412\\\" data-col-size=\\\"sm\\\">After drilling<\\\/td>\\n<td data-start=\\\"9412\\\" data-end=\\\"9427\\\" data-col-size=\\\"sm\\\">0.93\\u20130.94 mm<\\\/td>\\n<td data-start=\\\"9427\\\" data-end=\\\"9439\\\" data-col-size=\\\"sm\\\">0.931 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"9440\\\" data-end=\\\"9490\\\">\\n<td data-start=\\\"9440\\\" data-end=\\\"9463\\\" data-col-size=\\\"sm\\\">After copper plating<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9463\\\" data-end=\\\"9478\\\">0.84\\u20130.88 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9478\\\" data-end=\\\"9490\\\">0.858 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"9491\\\" data-end=\\\"9531\\\">\\n<td data-start=\\\"9491\\\" data-end=\\\"9504\\\" data-col-size=\\\"sm\\\">After HASL<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9504\\\" data-end=\\\"9519\\\">0.82\\u20130.86 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9519\\\" data-end=\\\"9531\\\">0.836 mm<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<p data-start=\\\"9533\\\" data-end=\\\"9723\\\"><strong data-start=\\\"9533\\\" data-end=\\\"9548\\\">Conclusion:<\\\/strong> For HASL boards the drill compensation of <strong data-start=\\\"9591\\\" data-end=\\\"9602\\\">0.15 mm<\\\/strong> is an \\u201cover-compensation\\u201d and causes final holes to be larger. The best compensation value in this test is <strong data-start=\\\"9710\\\" data-end=\\\"9722\\\">0.125 mm<\\\/strong>.<\\\/p>\\n<hr data-start=\\\"9725\\\" data-end=\\\"9728\\\" \\\/>\\n<h2>5. Drill compensation code implementation (rules)<\\\/h2>\\n<ol data-start=\\\"9784\\\" data-end=\\\"9817\\\">\\n<li data-start=\\\"9784\\\" data-end=\\\"9817\\\">\\n<p data-start=\\\"9787\\\" data-end=\\\"9817\\\">Compensation and step-up rules<\\\/p>\\n<\\\/li>\\n<\\\/ol>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"9819\\\" data-end=\\\"10843\\\">\\n<thead data-start=\\\"9819\\\" data-end=\\\"9968\\\">\\n<tr data-start=\\\"9819\\\" data-end=\\\"9968\\\">\\n<th data-start=\\\"9819\\\" data-end=\\\"9828\\\" data-col-size=\\\"sm\\\">Aspect<\\\/th>\\n<th data-start=\\\"9828\\\" data-end=\\\"9844\\\" data-col-size=\\\"sm\\\">Finished hole<\\\/th>\\n<th data-start=\\\"9844\\\" data-end=\\\"9861\\\" data-col-size=\\\"sm\\\">Surface finish<\\\/th>\\n<th data-start=\\\"9861\\\" data-end=\\\"9879\\\" data-col-size=\\\"sm\\\">Board thickness<\\\/th>\\n<th data-start=\\\"9879\\\" data-end=\\\"9899\\\" data-col-size=\\\"sm\\\">Step-up threshold<\\\/th>\\n<th data-start=\\\"9899\\\" data-end=\\\"9923\\\" data-col-size=\\\"sm\\\">If via copper &lt; 26 \\u00b5m<\\\/th>\\n<th data-start=\\\"9923\\\" data-end=\\\"9934\\\" data-col-size=\\\"sm\\\">26\\u201337 \\u00b5m<\\\/th>\\n<th data-start=\\\"9934\\\" data-end=\\\"9945\\\" data-col-size=\\\"sm\\\">37\\u201347 \\u00b5m<\\\/th>\\n<th data-start=\\\"9945\\\" data-end=\\\"9956\\\" data-col-size=\\\"sm\\\">47\\u201367 \\u00b5m<\\\/th>\\n<th data-start=\\\"9956\\\" data-end=\\\"9968\\\" data-col-size=\\\"sm\\\">67\\u201386 \\u00b5m<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"10018\\\" data-end=\\\"10843\\\">\\n<tr data-start=\\\"10018\\\" data-end=\\\"10146\\\">\\n<td data-start=\\\"10018\\\" data-end=\\\"10043\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-start=\\\"10043\\\" data-end=\\\"10055\\\" data-col-size=\\\"sm\\\">\\u2264 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10055\\\" data-end=\\\"10084\\\">HASL (leaded or lead-free)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10084\\\" data-end=\\\"10095\\\">\\u2265 3.5 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10095\\\" data-end=\\\"10105\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10105\\\" data-end=\\\"10113\\\">5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10113\\\" data-end=\\\"10121\\\">6 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10121\\\" data-end=\\\"10129\\\">7 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10129\\\" data-end=\\\"10137\\\">8 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10137\\\" data-end=\\\"10146\\\">9 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10147\\\" data-end=\\\"10285\\\">\\n<td data-start=\\\"10147\\\" data-end=\\\"10172\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10172\\\" data-end=\\\"10184\\\">\\u2264 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10184\\\" data-end=\\\"10213\\\">HASL (leaded or lead-free)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10213\\\" data-end=\\\"10224\\\">&lt; 3.5 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10224\\\" data-end=\\\"10234\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10234\\\" data-end=\\\"10244\\\">4.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10244\\\" data-end=\\\"10254\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10254\\\" data-end=\\\"10264\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10264\\\" data-end=\\\"10274\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10274\\\" data-end=\\\"10285\\\">8.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10286\\\" data-end=\\\"10395\\\">\\n<td data-start=\\\"10286\\\" data-end=\\\"10311\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10311\\\" data-end=\\\"10323\\\">\\u2264 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10323\\\" data-end=\\\"10340\\\">Other finishes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10340\\\" data-end=\\\"10344\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10344\\\" data-end=\\\"10354\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10354\\\" data-end=\\\"10362\\\">4 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10362\\\" data-end=\\\"10370\\\">5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10370\\\" data-end=\\\"10378\\\">6 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10378\\\" data-end=\\\"10386\\\">7 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10386\\\" data-end=\\\"10395\\\">8 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10396\\\" data-end=\\\"10504\\\">\\n<td data-start=\\\"10396\\\" data-end=\\\"10421\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10421\\\" data-end=\\\"10433\\\">&gt; 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10433\\\" data-end=\\\"10440\\\">HASL<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10440\\\" data-end=\\\"10444\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10444\\\" data-end=\\\"10453\\\">0.0246<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10453\\\" data-end=\\\"10463\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10463\\\" data-end=\\\"10473\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10473\\\" data-end=\\\"10483\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10483\\\" data-end=\\\"10493\\\">8.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10493\\\" data-end=\\\"10504\\\">9.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10505\\\" data-end=\\\"10624\\\">\\n<td data-start=\\\"10505\\\" data-end=\\\"10530\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10530\\\" data-end=\\\"10542\\\">&gt; 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10542\\\" data-end=\\\"10559\\\">Other finishes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10559\\\" data-end=\\\"10563\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10563\\\" data-end=\\\"10573\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10573\\\" data-end=\\\"10583\\\">4.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10583\\\" data-end=\\\"10593\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10593\\\" data-end=\\\"10603\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10603\\\" data-end=\\\"10613\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10613\\\" data-end=\\\"10624\\\">8.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10625\\\" data-end=\\\"10733\\\">\\n<td data-start=\\\"10625\\\" data-end=\\\"10650\\\" data-col-size=\\\"sm\\\">thickness ratio \\u2265 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10650\\\" data-end=\\\"10662\\\">all holes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10662\\\" data-end=\\\"10669\\\">HASL<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10669\\\" data-end=\\\"10673\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10673\\\" data-end=\\\"10682\\\">0.0246<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10682\\\" data-end=\\\"10692\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10692\\\" data-end=\\\"10702\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10702\\\" data-end=\\\"10712\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10712\\\" data-end=\\\"10722\\\">8.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10722\\\" data-end=\\\"10733\\\">9.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10734\\\" data-end=\\\"10843\\\">\\n<td data-start=\\\"10734\\\" data-end=\\\"10759\\\" data-col-size=\\\"sm\\\">thickness ratio \\u2265 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10759\\\" data-end=\\\"10771\\\">all holes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10771\\\" data-end=\\\"10788\\\">Other finishes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10788\\\" data-end=\\\"10792\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10792\\\" data-end=\\\"10802\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10802\\\" data-end=\\\"10810\\\">5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10810\\\" data-end=\\\"10818\\\">6 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10818\\\" data-end=\\\"10826\\\">7 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10826\\\" data-end=\\\"10834\\\">8 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10834\\\" data-end=\\\"10843\\\">9 mil<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<ol start=\\\"2\\\" data-start=\\\"10845\\\" data-end=\\\"10953\\\">\\n<li data-start=\\\"10845\\\" data-end=\\\"10953\\\">\\n<p data-start=\\\"10848\\\" data-end=\\\"10953\\\">Special drill sizes (if tolerance &lt; 3 mil, use special drills or 25 \\u00b5m increment, use nearest drill rule)<\\\/p>\\n<\\\/li>\\n<\\\/ol>\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"a4fd860\"}]},\"elements\":[],\"widgetType\":\"text-editor\"},{\"id\":\"f7e142f\",\"elType\":\"widget\",\"settings\":{\"language\":\"aspnet\",\"code\":\"List<double> ContainDrillToolList = new List<double>();\\r\\nContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"e63c3e6\"}]},\"elements\":[],\"widgetType\":\"code-highlight\"},{\"id\":\"ec5424b\",\"elType\":\"widget\",\"settings\":{\"editor\":\"<p>3. Drill Compensation Code<\\\/p>\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"17c7393\"}]},\"elements\":[],\"widgetType\":\"text-editor\"},{\"id\":\"3dfeb51\",\"elType\":\"widget\",\"settings\":{\"language\":\"csharp\",\"code\":\"\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Calculate the drill bit diameter based on drill compensation parameters\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\n\\\/\\\/\\\/<param name=\\\"ToolInfo\\\">Drill tool basic information<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"UpParam\\\">Drill compensation parameters<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"ContainDrillToolList\\\">Special drill bit diameter list<\\\/param>\\r\\n\\\/\\\/\\\/<returns>Return 1 if calculation is successful<\\\/returns>\\r\\npublic static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List<double> ContainDrillToolList)\\r\\n{\\r\\n    if (ContainDrillToolList == null) ContainDrillToolList = new List<double>();\\r\\n    gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();\\r\\n    switch (ToolInfo.type)\\r\\n    {\\r\\n        case \\\"via\\\":\\r\\n            UpParamHole = UpParam.Via;\\r\\n            break;\\r\\n        case \\\"plate\\\":\\r\\n            UpParamHole = UpParam.Pth;\\r\\n            break;\\r\\n        case \\\"nplate\\\":\\r\\n            UpParamHole = UpParam.Npth;\\r\\n            break;\\r\\n    }\\r\\n    ToolInfo.max_tol = Math.Round(UpParamHole.Max_Tol, 0);\\r\\n    ToolInfo.min_tol = Math.Round(UpParamHole.Min_Tol, 0);\\r\\n    if (ToolInfo.finish_size < 50)\\r\\n    {\\r\\n        ToolInfo.finish_size = ToolInfo.drill_size;\\r\\n    }\\r\\n    double DrillSlotLevel = (ToolInfo.shape == \\\"slot\\\") ? UpParam.SlotLevel : UpParam.DrillLevel;  \\\/\\\/Drill step interval: Round holes have two levels (25\\\/50\\u03bcm), slot holes have one level (50\\u03bcm)\\r\\n    double UpLevel;\\r\\n    if (UpParam.DrillLevel > 49) \\\/\\\/When the step interval is 50\\u03bcm, do not use special drill bits\\r\\n    {\\r\\n        ContainDrillToolList = new List<double>();\\r\\n        UpLevel = UpParamHole.UpLevel;\\r\\n    }\\r\\n    else\\r\\n    {\\r\\n        UpLevel = UpParam.DrillLevel * 0.5;   \\\/\\\/Select drill bit by half of the step interval\\r\\n    }\\r\\n\\r\\n    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) \\\/ DrillSlotLevel)); \\\/\\\/Drill step count\\r\\n    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step\\r\\n    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;\\\/\\\/Remainder of drill size after step division\\r\\n    double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n\\r\\n    \\\/\\\/Check if special drill bits are included\\r\\n    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt \\\/ DrillSlotLevel)) == DrillLevelCount);\\r\\n    if (ContainDrillIndex > -1)\\r\\n    {\\r\\n        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;\\\/\\\/Remainder of special drill bit size after step division\\r\\n        if (DrillsizeFloat > UpLevel) \\\/\\\/ e.g. 38 > 20\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel);   \\\/\\\/e.g. 40-50\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 40-38\\r\\n            DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;\\r\\n        }\\r\\n        else \\\/\\\/if (ContainDrillFloat < UpLevel)\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - 0);  \\\/\\\/e.g. 12-0\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 12-16\\r\\n            DrillsizeLevel = (diff1 < diff2) ? 0 : ContainDrillFloat;\\r\\n        }\\r\\n    }\\r\\n    ToolInfo.drill_size = DrillsizeInt + DrillsizeLevel;\\r\\n\\r\\n    double DiffDrillSizeUp = ToolInfo.drill_size - ToolInfo.finish_size;\\r\\n    if (ToolInfo.shape == \\\"slot\\\") \\\/\\\/ Slot length compensation\\r\\n    {\\r\\n        if (UpParam.isSlotUpLevel) \\\/\\\/Whether to round the slot length to step interval\\r\\n        {\\r\\n            Drillfinish_size = ToolInfo.slot_len + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n            DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) \\\/ DrillSlotLevel)); \\\/\\\/ Drill step count\\r\\n            DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step (50\\u03bcm)\\r\\n            DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) % DrillSlotLevel;\\\/\\\/Remainder of slot length after step division\\r\\n            DrillsizeLevel = (DrillsizeFloat > UpParamHole.UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;\\r\\n        }\\r\\n        else\\r\\n        {\\r\\n            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) \\\/ 10) * 10; \\\/\\\/ Round down to the nearest 10\\u03bcm\\r\\n            ToolInfo.slot_len = DrillsizeInt;\\r\\n        }\\r\\n        ToolInfo.drill_size += UpParam.SlotEndNumber;  \\\/\\\/ Add suffix number for slot drill bit segmentation\\r\\n    }\\r\\n    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();\\r\\n    return 1;\\r\\n}\\r\\n\\r\\npublic class gToolUpParam\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for VIA holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for PTH (Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for NPTH (Non-Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for round drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double DrillLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for slot drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Suffix number for slot drill bit segmentation\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public int SlotEndNumber { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Additional compensation value for slot length (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLengthUp { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Whether to round the slot length to step interval\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public bool isSlotUpLevel { get; set; } = false;\\r\\n}\\r\\n\\r\\npublic class gToolUpParamHole\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation value (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpVal { get; set; } = 100;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval threshold for rounding up (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpLevel { get; set; } = 25;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Max_Tol { get; set; } = 76;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Min_Tol { get; set; } = 76;\\r\\n}\\r\\n\\r\\n\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Mod_tool: Drill tool attribute model\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\npublic class Mod_tool\\r\\n{\\r\\n    public int num { get; set; }\\r\\n    public string type { get; set; } \\\/\\\/ Hole type: via\\\/plate(nplate)\\r\\n    public string shape { get; set; } \\\/\\\/ Hole shape: round\\\/slot\\r\\n    public double finish_size { get; set; } \\\/\\\/ Finished hole size (in \\u03bcm)\\r\\n    public double drill_size { get; set; } \\\/\\\/ Drill bit size (in \\u03bcm)\\r\\n    public double max_tol { get; set; } \\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    public double min_tol { get; set; } \\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    public double slot_len { get; set; } \\\/\\\/ Slot length (in \\u03bcm)\\r\\n    public string bit { get; set; } \\\/\\\/ Drill bit size (in mm, formatted string)\\r\\n}\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"771dd1c\"}]},\"elements\":[],\"widgetType\":\"code-highlight\"},{\"id\":\"578eb26\",\"elType\":\"widget\",\"settings\":{\"editor\":\"<h2 data-start=\\\"10960\\\" data-end=\\\"11017\\\">6. Why does board thickness affect drill compensation?<\\\/h2>\\n<p data-start=\\\"11019\\\" data-end=\\\"11464\\\">I did not understand this at first either. The main reason is the high <strong data-start=\\\"11090\\\" data-end=\\\"11121\\\">thickness-to-diameter ratio<\\\/strong> (board thickness divided by hole diameter). A high ratio makes the copper at the hole center thinner and the copper at the hole edge thicker. To compute the thickness-to-diameter ratio you need the board thickness value. So board thickness enters the drill compensation rules. For high thickness-to-diameter holes, the compensation is larger.<\\\/p>\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"715c69a\"}]},\"elements\":[],\"widgetType\":\"text-editor\"}],\"isInner\":false}]"],"_elementor_conditions":["a:0:{}"],"_edit_last":["1"],"_wp_page_template":["default"],"_elementor_version":["3.33.4"],"_elementor_pro_version":["3.31.2"],"_elementor_page_settings":["a:0:{}"],"rank_math_og_content_image":["a:2:{s:5:\"check\";s:32:\"ecdd2e25359dae372358174e8b65526d\";s:6:\"images\";a:1:{i:0;i:4578;}}"],"rank_math_primary_category":["1"],"site-post-title":[""],"_thumbnail_id":["4584"],"_elementor_controls_usage":["a:3:{s:11:\"text-editor\";a:3:{s:5:\"count\";i:3;s:15:\"control_percent\";i:1;s:8:\"controls\";a:2:{s:7:\"content\";a:1:{s:14:\"section_editor\";a:1:{s:6:\"editor\";i:3;}}s:8:\"advanced\";a:1:{s:26:\"display_conditions_section\";a:1:{s:22:\"display_condition_list\";i:3;}}}}s:14:\"code-highlight\";a:3:{s:5:\"count\";i:2;s:15:\"control_percent\";i:1;s:8:\"controls\";a:2:{s:7:\"content\";a:1:{s:15:\"section_content\";a:2:{s:8:\"language\";i:2;s:4:\"code\";i:2;}}s:8:\"advanced\";a:1:{s:26:\"display_conditions_section\";a:1:{s:22:\"display_condition_list\";i:2;}}}}s:9:\"container\";a:3:{s:5:\"count\";i:1;s:15:\"control_percent\";i:0;s:8:\"controls\";a:1:{s:8:\"advanced\";a:1:{s:26:\"display_conditions_section\";a:1:{s:22:\"display_condition_list\";i:1;}}}}}"],"_uag_css_file_name":["uag-css-4575.css"],"_uag_js_file_name":["uag-js-4575.js"],"_uag_page_assets":["a:9:{s:3:\"css\";s:30170:\".uag-blocks-common-selector{z-index:var(--z-index-desktop) !important}@media(max-width: 976px){.uag-blocks-common-selector{z-index:var(--z-index-tablet) !important}}@media(max-width: 767px){.uag-blocks-common-selector{z-index:var(--z-index-mobile) !important}}.uagb-social-share__outer-wrap,.uagb-social-share__wrap{display:flex;align-items:center;justify-content:center}.uagb-social-share__layout-vertical.uagb-social-share__outer-wrap,.uagb-social-share__layout-vertical .uagb-social-share__wrap{flex-direction:column}.uagb-social-share__layout-vertical .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:first-child{margin-top:0 !important}.uagb-social-share__layout-vertical .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:last-child{margin-bottom:0 !important}.uagb-social-share__outer-wrap a.uagb-button__link:focus{box-shadow:none}.uagb-social-share__outer-wrap .uagb-ss__wrapper{padding:0;margin-left:5px;margin-right:5px;transition:all .2s;display:inline-flex;text-align:center}.uagb-social-share__outer-wrap .uagb-ss__source-wrap{display:inline-block}.uagb-social-share__outer-wrap .uagb-ss__link{color:#3a3a3a;display:inline-table;line-height:0;cursor:pointer}.uagb-social-share__outer-wrap .uagb-ss__source-icon{font-size:40px;width:40px;height:40px}.uagb-social-share__outer-wrap .uagb-ss__source-image{width:40px}@media(max-width: 976px){.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left:0;margin-right:0}}.uagb-social-share__layout-horizontal .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:first-child{margin-left:0 !important}.uagb-social-share__layout-horizontal .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:last-child{margin-right:0 !important}.wp-block-uagb-social-share .uagb-social-share__wrapper{text-decoration:none}.uagb-social-share__wrapper{box-shadow:none}.uagb-social-share__outer-wrap:not(.uagb-social-share__no-label) .uagb-social-share__source-wrap{margin-right:15px}.uagb-social-share__outer-wrap.uagb-social-share__icon-at-top .uagb-social-share__source-wrap{-ms-flex-item-align:flex-start;align-self:flex-start;margin-top:5px}.uagb-block-015f0124 .uagb-ss-repeater span.uagb-ss__link{color: #3a3a3a;}.uagb-block-015f0124 .uagb-ss-repeater a.uagb-ss__link{color: #3a3a3a;}.uagb-block-015f0124 .uagb-ss-repeater span.uagb-ss__link svg{fill: #3a3a3a;}.uagb-block-015f0124 .uagb-ss-repeater a.uagb-ss__link svg{fill: #3a3a3a;}.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__wrapper{margin-left: 0;margin-right: 0;margin-top: 5px;margin-bottom: 5px;}.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__link{padding: 10px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__link{padding: 10px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left: 5px;margin-right: 5px;}.uagb-block-015f0124 .wp-block-uagb-social-share-child {border-radius: 0px;}.uagb-block-015f0124 .uagb-ss__source-wrap{width: 30px;}.uagb-block-015f0124 .uagb-ss__source-wrap svg{width: 30px;height: 30px;}.uagb-block-015f0124 .uagb-ss__source-image{width: 30px;}.uagb-block-015f0124 .uagb-ss__source-icon{width: 30px;height: 30px;font-size: 30px;}.uagb-block-015f0124.uagb-social-share__outer-wrap{justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}.uagb-block-44317091.uagb-ss-repeater span.uagb-ss__link{color: #3b5998;}.uagb-block-44317091.uagb-ss-repeater a.uagb-ss__link{color: #3b5998;}.uagb-block-44317091.uagb-ss-repeater span.uagb-ss__link svg{fill: #3b5998;}.uagb-block-44317091.uagb-ss-repeater a.uagb-ss__link svg{fill: #3b5998;}.uagb-block-df693e43.uagb-ss-repeater span.uagb-ss__link{color: #55acee;}.uagb-block-df693e43.uagb-ss-repeater a.uagb-ss__link{color: #55acee;}.uagb-block-df693e43.uagb-ss-repeater span.uagb-ss__link svg{fill: #55acee;}.uagb-block-df693e43.uagb-ss-repeater a.uagb-ss__link svg{fill: #55acee;}.uagb-block-e0123642.uagb-ss-repeater span.uagb-ss__link{color: #bd081c;}.uagb-block-e0123642.uagb-ss-repeater a.uagb-ss__link{color: #bd081c;}.uagb-block-e0123642.uagb-ss-repeater span.uagb-ss__link svg{fill: #bd081c;}.uagb-block-e0123642.uagb-ss-repeater a.uagb-ss__link svg{fill: #bd081c;}.uagb-block-23521e42.uagb-ss-repeater span.uagb-ss__link{color: #0077b5;}.uagb-block-23521e42.uagb-ss-repeater a.uagb-ss__link{color: #0077b5;}.uagb-block-23521e42.uagb-ss-repeater span.uagb-ss__link svg{fill: #0077b5;}.uagb-block-23521e42.uagb-ss-repeater a.uagb-ss__link svg{fill: #0077b5;}@media only screen and (max-width: 976px) {.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__wrapper{margin-left: 0;margin-right: 0;margin-top: 5px;margin-bottom: 5px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left: 5px;margin-right: 5px;}.uagb-block-015f0124.uagb-social-share__outer-wrap{justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}}@media only screen and (max-width: 767px) {.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__wrapper{margin-left: 0;margin-right: 0;margin-top: 5px;margin-bottom: 5px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left: 5px;margin-right: 5px;}.uagb-block-015f0124.uagb-social-share__outer-wrap{justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}}.uagb-cta__outer-wrap .uagb-cta__content,.uagb-cta__outer-wrap a.uagb-cta__block-link span,.uagb-cta__outer-wrap .uagb-cta__content-right .uagb-cta__button-wrapper,.uagb-cta__outer-wrap .uagb-cta-typeof-button,.uagb-cta__outer-wrap .uagb-cta__content-right .uagb-cta__block-link,.uagb-cta__outer-wrap .uagb-cta-with-svg{display:inline-block}.uagb-cta__outer-wrap{display:flex;justify-content:space-between}.wp-block-uagb-call-to-action .uagb-cta__buttons{display:inline-flex}.wp-block-uagb-call-to-action .wp-block-button__link,.wp-block-uagb-call-to-action .ast-outline-button{fill:currentColor;justify-content:center}.uagb-cta__button-link-wrapper,.uagb-cta-second__button{display:inline-flex;align-items:center;word-break:keep-all;width:100%}.uagb-cta__title{padding:0;margin:0;display:block}.uagb-cta__content-right .uagb-cta__button-wrapper{float:right}.uagb-cta__link-wrapper.uagb-cta__block-link-style:empty{display:none}a.uagb-cta__block-link,.entry .entry-content a.uagb-cta__block-link,a.uagb-cta__block-link-wrap,.entry .entry-content a.uagb-cta__block-link-wrap{text-decoration:none}a.uagb-cta__block-link:hover,.entry .entry-content a.uagb-cta__block-link:hover,a.uagb-cta__block-link-wrap:hover,.entry .entry-content a.uagb-cta__block-link-wrap:hover .entry .entry-content a.uagb-cta__block-link:hover{color:inherit}.uagb-cta__content-right{text-align:right;justify-content:flex-end}.uagb-cta__left-right-wrap{width:100%;word-break:break-word}.uagb-cta__icon-position-below-title .uagb-cta__left-right-wrap{display:block;min-width:100%;width:100%}.uagb-cta__icon-position-left .uagb-cta__left-right-wrap,.uagb-cta__icon-position-right .uagb-cta__left-right-wrap{display:flex}.uagb-cta__icon-position-right .uagb-cta__left-right-wrap{justify-content:flex-end}.uagb-cta__block-link-icon-after{margin-left:5px;margin-right:0}.uagb-cta__block-link-icon-before{margin-left:0;margin-right:5px}.uagb-cta__block-link-icon,.uagb-cta__block svg{transition:all 200ms linear}.uagb-cta__block{position:relative}.uagb-cta-typeof-button{line-height:1;text-align:center}.uagb-cta__content-right .uagb-cta__button-link-wrapper,.uagb-cta__content-right .uagb-cta-second__button .uagb-cta__content-right .uagb-cta__block-link,.uagb-cta__content-right.uagb-cta__button-valign-middle .uagb-cta__left-right-wrap{display:flex;align-items:center}.uagb-cta__content-right .uagb-cta__button-link-wrapper,.uagb-cta__content-right .uagb-cta-second__button .uagb-cta__content-right .uagb-cta__block-link{justify-content:center}.uagb-cta__link-wrapper a{box-shadow:none;text-decoration:none}.uagb-cta__block,.uagb-cta__content,.uagb-cta__left-right-wrap{z-index:1}.uagb-cta__block-link{cursor:pointer}.uagb-cta__content-right .uagb-cta__block-link{float:right;padding:10px 14px}a.uagb-cta__block-link-wrap{color:inherit}.uagb-cta__content p:empty{display:none}.uagb-cta__button-type-none .uagb-cta__content{width:100%}.uagb-cta-with-svg{height:14px;width:14px;line-height:14px;vertical-align:middle}.uagb-cta__block svg{display:block;height:inherit;width:inherit}.uagb-cta__button-link-wrapper svg{width:20px;height:20px}.uagb-cta__align-button-after{margin-left:5px}.uagb-cta__align-button-before{margin-right:5px}.uagb-cta__block-link i{font-style:normal}a.uagb-cta__link-to-all{position:absolute;top:0;left:0;width:100%;height:100%;z-index:11}.wp-block-uagb-call-to-action{position:relative}.wp-block-uagb-call-to-action a.uagb-cta__link-to-all{position:absolute;top:0;left:0;width:100%;height:100%;z-index:11}@media only screen and (max-width: 976px){.uagb-cta__content-stacked-tablet,.uagb-cta__content-stacked-tablet .uagb-cta__left-right-wrap{flex-direction:column;text-align:center}.uagb-cta__content-stacked-tablet.uagb-cta__content-right .uagb-cta__button-wrapper{float:none;margin:0 auto}.uagb-cta__content-stacked-tablet .uagb-cta__left-right-wrap .uagb-cta__content{margin-left:0;margin-right:0}.uagb-cta__content-stacked-tablet.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__content,.uagb-cta__content-stacked-tablet.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width:100% !important}}@media screen and (max-width: 767px){.uagb-cta__content-stacked-mobile,.uagb-cta__content-stacked-mobile .uagb-cta__left-right-wrap{flex-direction:column;text-align:center}.uagb-cta__content-stacked-mobile.uagb-cta__content-right .uagb-cta__button-wrapper{float:none;margin:0 auto}.uagb-cta__content-stacked-mobile .uagb-cta__left-right-wrap .uagb-cta__content{margin-left:0;margin-right:0}.uagb-cta__content-stacked-mobile.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__content,.uagb-cta__content-stacked-mobile.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width:100% !important}}.uagb-cta__desc p:last-child{margin-bottom:0}#uagb-cta-block-.wp-block-uagb-call-to-action .uagb-cta__title{margin-bottom: 10px;}#uagb-cta-block-.wp-block-uagb-call-to-action .uagb-cta__desc{margin-bottom: 10px;}#uagb-cta-block- .uagb-cta__align-button-after{margin-left: 10px;}#uagb-cta-block- .uagb-cta__align-button-before{margin-right: 10px;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta__button-link-wrapper > svg{margin-left: 10px;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta-second__button > svg{margin-left: 10px;font-size: 14px;width: 14px;height: 14px;line-height: 14px;}#uagb-cta-block- .uagb-cta__content-wrap{text-align: left;}#uagb-cta-block- .uagb-cta__wrap{width: 70%;text-align: left;}#uagb-cta-block-.wp-block-uagb-call-to-action{text-align: left;}#uagb-cta-block- .uagb-cta__left-right-wrap .uagb-cta__content{margin-left: 0px;}#uagb-cta-block- .uagb-cta__buttons{column-gap: 15px;}#uagb-cta-block-.wp-block-uagb-call-to-action {display: flex;justify-content: space-between;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__content{width: 70%;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width: 30%;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta__button-link-wrapper {align-self: center;height: fit-content;margin-left: auto;}#uagb-cta-block-.wp-block-uagb-call-to-action  {flex-direction: row;align-items: center;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button a.uagb-cta-second__button{align-self: center;height: fit-content;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button a.uagb-cta-second__button:hover{background-color: !important;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button a.uagb-cta-second__button:focus{background-color: !important;}#uagb-cta-block- .uagb-cta__button-wrapper a.uagb-cta-typeof-button{color: #333;border-style: solid;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button .uagb-cta__buttons a.uagb-cta__button-link-wrapper.wp-block-button__link{border-style: solid;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta-second__button{text-transform: normal;text-decoration: none;font-size: 14px;}@media only screen and (max-width: 976px) {#uagb-cta-block-.wp-block-uagb-call-to-action.uagb-cta__content-stacked-tablet {display: inherit;}#uagb-cta-block-.uagb-cta__content-stacked-tablet .uagb-cta__wrap{width: 100%;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width: 30%;}#uagb-cta-block- .uagb-cta__wrap{text-align: center;}#uagb-cta-block-.wp-block-uagb-call-to-action {flex-direction: column;align-items: center;}}@media only screen and (max-width: 767px) {#uagb-cta-block-.wp-block-uagb-call-to-action.uagb-cta__content-stacked-mobile {display: inherit;}#uagb-cta-block-.uagb-cta__content-stacked-mobile .uagb-cta__wrap{width: 100%;}#uagb-cta-block- .uagb-cta__buttons{justify-content: center;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width: 30%;}#uagb-cta-block- .uagb-cta__wrap{text-align: center;}#uagb-cta-block-.wp-block-uagb-call-to-action {flex-direction: column;align-items: center;}}.uagb-icon-list__wrap{display:flex;align-items:flex-start;justify-content:flex-start}.wp-block-uagb-icon-list-child{padding:0;transition:all .2s;display:inline-flex;color:#3a3a3a;align-items:center;text-decoration:none;box-shadow:none}.wp-block-uagb-icon-list-child span.uagb-icon-list__source-wrap{display:block;align-items:center}.uagb-icon-list__source-wrap svg{display:block}.uagb-icon-list__source-image{width:40px}.uagb-icon-list__outer-wrap .uagb-icon-list__content-wrap{color:#3a3a3a;display:flex;align-items:center}.wp-block-uagb-icon-list-child{position:relative}.wp-block-uagb-icon-list-child>a{position:absolute;top:0;left:0;width:100%;height:100%}img.uagb-icon-list__source-image{max-width:unset}.wp-block-uagb-icon-list-child .uagb-icon-list__label{word-break:break-word}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-image{width: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap svg{width: 16px;height: 16px;font-size: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{padding: 0px;border-radius: 0px;border-width: 0px;align-self: center;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__label{text-decoration: !important;line-height: em;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__wrap{display: flex;flex-direction: column;justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: flex-start;-ms-flex-align: flex-start;align-items: flex-start;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__label{text-align: left;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child{text-decoration: !important;line-height: em;}.wp-block-uagb-icon-list.uagb-block-f606f41a.wp-block-uagb-icon-list .wp-block-uagb-icon-list-child{margin-left: 0;margin-right: 0;margin-bottom: 10px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-wrap{margin-right: 15px;}.uagb-block-ddf54d80.wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-ddf54d80.wp-block-uagb-icon-list-child:hover .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-b45e4180.wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-b45e4180.wp-block-uagb-icon-list-child:hover .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-6962245c.wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-6962245c.wp-block-uagb-icon-list-child:hover .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}@media only screen and (max-width: 976px) {.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-image{width: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap svg{width: 16px;height: 16px;font-size: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap {padding: 0px;border-width: 0px;align-self: center;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__wrap{display: flex;flex-direction: column;justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: flex-start;-ms-flex-align: flex-start;align-items: flex-start;}.wp-block-uagb-icon-list.uagb-block-f606f41a.wp-block-uagb-icon-list .wp-block-uagb-icon-list-child{margin-left: 0;margin-right: 0;margin-bottom: 10px;}}@media only screen and (max-width: 767px) {.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-image{width: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap svg{width: 16px;height: 16px;font-size: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{padding: 0px;border-width: 0px;align-self: center;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__wrap{display: flex;flex-direction: column;justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: flex-start;-ms-flex-align: flex-start;align-items: flex-start;}.wp-block-uagb-icon-list.uagb-block-f606f41a.wp-block-uagb-icon-list .wp-block-uagb-icon-list-child{margin-left: 0;margin-right: 0;margin-bottom: 10px;}}.wp-block-uagb-container{display:flex;position:relative;box-sizing:border-box;transition-property:box-shadow;transition-duration:.2s;transition-timing-function:ease}.wp-block-uagb-container .spectra-container-link-overlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10}.wp-block-uagb-container.uagb-is-root-container{margin-left:auto;margin-right:auto}.wp-block-uagb-container.alignfull.uagb-is-root-container .uagb-container-inner-blocks-wrap{display:flex;position:relative;box-sizing:border-box;margin-left:auto !important;margin-right:auto !important}.wp-block-uagb-container .wp-block-uagb-blockquote,.wp-block-uagb-container .wp-block-spectra-pro-login,.wp-block-uagb-container .wp-block-spectra-pro-register{margin:unset}.wp-block-uagb-container .uagb-container__video-wrap{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.wp-block-uagb-container .uagb-container__video-wrap video{max-width:100%;width:100%;height:100%;margin:0;line-height:1;border:none;display:inline-block;vertical-align:baseline;-o-object-fit:cover;object-fit:cover;background-size:cover}.wp-block-uagb-container.uagb-layout-grid{display:grid;width:100%}.wp-block-uagb-container.uagb-layout-grid>.uagb-container-inner-blocks-wrap{display:inherit;width:inherit}.wp-block-uagb-container.uagb-layout-grid>.uagb-container-inner-blocks-wrap>.wp-block-uagb-container{max-width:unset !important;width:unset !important}.wp-block-uagb-container.uagb-layout-grid>.wp-block-uagb-container{max-width:unset !important;width:unset !important}.wp-block-uagb-container.uagb-layout-grid.uagb-is-root-container{margin-left:auto;margin-right:auto}.wp-block-uagb-container.uagb-layout-grid.uagb-is-root-container>.wp-block-uagb-container{max-width:unset !important;width:unset !important}.wp-block-uagb-container.uagb-layout-grid.alignwide.uagb-is-root-container{margin-left:auto;margin-right:auto}.wp-block-uagb-container.uagb-layout-grid.alignfull.uagb-is-root-container .uagb-container-inner-blocks-wrap{display:inherit;position:relative;box-sizing:border-box;margin-left:auto !important;margin-right:auto !important}body .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>*:not(.wp-block-uagb-container):not(.wp-block-uagb-column):not(.wp-block-uagb-container):not(.wp-block-uagb-section):not(.uagb-container__shape):not(.uagb-container__video-wrap):not(.wp-block-spectra-pro-register):not(.wp-block-spectra-pro-login):not(.uagb-slider-container):not(.spectra-image-gallery__control-lightbox):not(.wp-block-uagb-info-box),body .wp-block-uagb-container>.uagb-container-inner-blocks-wrap,body .wp-block-uagb-container>*:not(.wp-block-uagb-container):not(.wp-block-uagb-column):not(.wp-block-uagb-container):not(.wp-block-uagb-section):not(.uagb-container__shape):not(.uagb-container__video-wrap):not(.wp-block-spectra-pro-register):not(.wp-block-spectra-pro-login):not(.uagb-slider-container):not(.spectra-container-link-overlay):not(.spectra-image-gallery__control-lightbox):not(.wp-block-uagb-lottie):not(.uagb-faq__outer-wrap){min-width:unset !important;width:100%;position:relative}body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>.wp-block-uagb-container>ul,body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>.wp-block-uagb-container ol,body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>ul,body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap ol{max-width:-webkit-fill-available;margin-block-start:0;margin-block-end:0;margin-left:20px}.ast-plain-container .editor-styles-wrapper .block-editor-block-list__layout.is-root-container .uagb-is-root-container.wp-block-uagb-container.alignwide{margin-left:auto;margin-right:auto}.uagb-container__shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.uagb-container__shape-top{top:-3px}.uagb-container__shape-bottom{bottom:-3px}.uagb-container__shape.uagb-container__invert.uagb-container__shape-bottom,.uagb-container__shape.uagb-container__invert.uagb-container__shape-top{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.uagb-container__shape.uagb-container__shape-flip svg{transform:translateX(-50%) rotateY(180deg)}.uagb-container__shape svg{display:block;width:-webkit-calc(100% + 1.3px);width:calc(100% + 1.3px);position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.uagb-container__shape .uagb-container__shape-fill{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.uagb-container__shape.uagb-container__shape-above-content{z-index:9;pointer-events:none}.nv-single-page-wrap .nv-content-wrap.entry-content .wp-block-uagb-container.alignfull{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}@media only screen and (max-width: 767px){.wp-block-uagb-container .wp-block-uagb-advanced-heading{width:-webkit-fill-available}}.wp-block-uagb-image--align-none{justify-content:center}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape-top svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape.uagb-container__shape-top .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape-bottom svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape.uagb-container__shape-bottom .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__video-wrap video{opacity: 1;}.wp-block-uagb-container.uagb-is-root-container .uagb-block-845e6da6{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-845e6da6 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1200px);max-width: var(--inner-content-custom-width);width: 100%;flex-direction: column;align-items: center;justify-content: center;flex-wrap: nowrap;row-gap: 20px;column-gap: 20px;}.wp-block-uagb-container.uagb-block-845e6da6{box-shadow: 0px 0px   #00000070 ;padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;overflow: visible;order: initial;border-color: inherit;row-gap: 20px;column-gap: 20px;}@media only screen and (max-width: 976px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-845e6da6{width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-845e6da6 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1024px);max-width: var(--inner-content-custom-width);width: 100%;}.wp-block-uagb-container.uagb-block-845e6da6{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}@media only screen and (max-width: 767px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-845e6da6{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-845e6da6 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 767px);max-width: var(--inner-content-custom-width);width: 100%;flex-wrap: wrap;}.wp-block-uagb-container.uagb-block-845e6da6{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}.wp-block-uagb-icon svg{width:30px}.uagb-icon-wrapper .uagb-svg-wrapper{transition:box-shadow .2s ease} .uagb-block-2b67c985.uagb-icon-wrapper{text-align: center;} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper a{display: contents;} .uagb-block-2b67c985.uagb-icon-wrapper svg{width: 40px;height: 40px;transform: rotate(0deg);box-sizing: content-box;fill: #333;filter: drop-shadow( 0px 0px 0px #00000070 );} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;padding-top: 5px;padding-right: 5px;padding-bottom: 5px;padding-left: 5px;border-style: default;box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper:hover{box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper:focus-visible{box-shadow: 0px 0px 0 #00000070 ;}@media only screen and (max-width: 976px) { .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}}@media only screen and (max-width: 767px) { .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}} .uagb-block-3c223d05.uagb-icon-wrapper{text-align: center;} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper a{display: contents;} .uagb-block-3c223d05.uagb-icon-wrapper svg{width: 40px;height: 40px;transform: rotate(0deg);box-sizing: content-box;fill: #333;filter: drop-shadow( 0px 0px 0px #00000070 );} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;padding-top: 5px;padding-right: 5px;padding-bottom: 5px;padding-left: 5px;border-style: default;box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper:hover{box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper:focus-visible{box-shadow: 0px 0px 0 #00000070 ;}@media only screen and (max-width: 976px) { .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}}@media only screen and (max-width: 767px) { .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape-top svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape.uagb-container__shape-top .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape-bottom svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape.uagb-container__shape-bottom .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__video-wrap video{opacity: 1;}.wp-block-uagb-container.uagb-is-root-container .uagb-block-e5b2e3b1{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-e5b2e3b1 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1200px);max-width: var(--inner-content-custom-width);width: 100%;flex-direction: column;align-items: center;justify-content: center;flex-wrap: nowrap;row-gap: 20px;column-gap: 20px;}.wp-block-uagb-container.uagb-block-e5b2e3b1{box-shadow: 0px 0px   #00000070 ;padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;overflow: visible;order: initial;border-color: inherit;row-gap: 20px;column-gap: 20px;}@media only screen and (max-width: 976px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-e5b2e3b1{width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-e5b2e3b1 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1024px);max-width: var(--inner-content-custom-width);width: 100%;}.wp-block-uagb-container.uagb-block-e5b2e3b1{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}@media only screen and (max-width: 767px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-e5b2e3b1{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-e5b2e3b1 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 767px);max-width: var(--inner-content-custom-width);width: 100%;flex-wrap: wrap;}.wp-block-uagb-container.uagb-block-e5b2e3b1{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}\";s:2:\"js\";s:2038:\"document.addEventListener(\"DOMContentLoaded\", function(){ var ssLinksParent = document.querySelector( '.uagb-block-015f0124' );\nssLinksParent?.addEventListener( 'keyup', function ( e ) {\nvar link = e.target.closest( '.uagb-ss__link' );\nif ( link && e.keyCode === 13 ) {\n\thandleSocialLinkClick( link );\n}\n});\n\nssLinksParent?.addEventListener( 'click', function ( e ) {\nvar link = e.target.closest( '.uagb-ss__link' );\nif ( link ) {\n\thandleSocialLinkClick( link );\n}\n});\n\nfunction handleSocialLinkClick( link ) {\nvar social_url = link.dataset.href;\nvar target = \"\";\nif ( social_url == \"mailto:?body=\" ) {\n\ttarget = \"_self\";\n}\nvar request_url = \"\";\nif ( social_url.indexOf(\"\/pin\/create\/link\/?url=\") !== -1 ) {\n\trequest_url = social_url + encodeURIComponent( window.location.href ) + \"&media=\" + 'https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp';\n} else {\n\trequest_url = social_url + encodeURIComponent( window.location.href );\n}\nwindow.open( request_url, target );\n}\n\t\t\t\twindow.addEventListener( 'DOMContentLoaded', () => {\n\t\t\t\t\tconst blockScope = document.querySelector( '.uagb-block-2b67c985' );\n\t\t\t\t\tif ( ! blockScope ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst anchorElement = blockScope.querySelector('a');\n\t\t\t\t\tif (!anchorElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} \n\n\t\t\t\t\t \n\t\t\t\t\tblockScope.addEventListener('keydown', (event) => {\n\t\t\t\t\t\tif ( 13 === event.keyCode || 32 === event.keyCode ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tanchorElement.click();\t\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\t\t\t\twindow.addEventListener( 'DOMContentLoaded', () => {\n\t\t\t\t\tconst blockScope = document.querySelector( '.uagb-block-3c223d05' );\n\t\t\t\t\tif ( ! blockScope ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst anchorElement = blockScope.querySelector('a');\n\t\t\t\t\tif (!anchorElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} \n\n\t\t\t\t\t \n\t\t\t\t\tblockScope.addEventListener('keydown', (event) => {\n\t\t\t\t\t\tif ( 13 === event.keyCode || 32 === event.keyCode ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tanchorElement.click();\t\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t });\";s:18:\"current_block_list\";a:19:{i:0;s:11:\"core\/search\";i:1;s:10:\"core\/group\";i:2;s:12:\"core\/heading\";i:3;s:17:\"core\/latest-posts\";i:4;s:20:\"core\/latest-comments\";i:5;s:13:\"core\/archives\";i:6;s:15:\"core\/categories\";i:7;s:10:\"core\/image\";i:8;s:14:\"core\/paragraph\";i:9;s:10:\"core\/embed\";i:10;s:17:\"uagb\/social-share\";i:11;s:23:\"uagb\/social-share-child\";i:12;s:19:\"uagb\/call-to-action\";i:13;s:14:\"uagb\/icon-list\";i:14;s:20:\"uagb\/icon-list-child\";i:15;s:14:\"uagb\/container\";i:16;s:9:\"uagb\/icon\";i:17;s:17:\"core\/social-links\";i:18;s:16:\"core\/social-link\";}s:8:\"uag_flag\";b:1;s:11:\"uag_version\";s:10:\"1778144389\";s:6:\"gfonts\";a:0:{}s:10:\"gfonts_url\";s:0:\"\";s:12:\"gfonts_files\";a:0:{}s:14:\"uag_faq_layout\";b:0;}"],"_elementor_page_assets":["a:2:{s:7:\"scripts\";a:7:{i:0;s:18:\"elementor-frontend\";i:1;s:12:\"prismjs_core\";i:2;s:14:\"prismjs_loader\";i:3;s:17:\"prismjs_normalize\";i:4;s:17:\"highlight_handler\";i:5;s:20:\"prismjs_line_numbers\";i:6;s:25:\"prismjs_copy_to_clipboard\";}s:6:\"styles\";a:1:{i:0;s:21:\"widget-code-highlight\";}}"],"_elementor_css":["a:6:{s:4:\"time\";i:1778182270;s:5:\"fonts\";a:0:{}s:5:\"icons\";a:0:{}s:20:\"dynamic_elements_ids\";a:0:{}s:6:\"status\";s:4:\"file\";i:0;s:0:\"\";}"],"_elementor_element_cache":["{\"timeout\":1778268671,\"value\":{\"content\":\"<div class=\\\"elementor-element elementor-element-733c0b06 e-flex e-con-boxed e-con e-parent\\\" data-id=\\\"733c0b06\\\" data-element_type=\\\"container\\\" data-e-type=\\\"container\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"e-con-inner\\\">\\n\\t\\t[elementor-element k=\\\"0e46bd9387093ca73b9000e38f18cce4\\\" data=\\\"eyJpZCI6IjYyNjk4NDZkIiwiZWxUeXBlIjoid2lkZ2V0Iiwic2V0dGluZ3MiOnsiZWRpdG9yIjoiPHAgZGF0YS1zdGFydD1cIjQ5XCIgZGF0YS1lbmQ9XCI0NjFcIj5UaGVyZSBhcmUgbm8gZ3JlYXQgaW5kaXZpZHVhbHMsIG9ubHkgZ3JlYXQgdGVhbXMuIFdpdGggdGhlIHRlYW0gd29ya2luZyB0b2dldGhlciwgdGhlIGZpcnN0LXN0YWdlIFBDQiBDQU0gYXV0b21hdGlvbiBwcm9qZWN0IGZvciA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNzhcIiBkYXRhLWVuZD1cIjE5NFwiPm5ldCBoYW5kbGluZzxcL3N0cm9uZz4gYW5kIDxzdHJvbmcgZGF0YS1zdGFydD1cIjE5OVwiIGRhdGEtZW5kPVwiMjE3XCI+ZHJpbGwgaGFuZGxpbmc8XC9zdHJvbmc+IGlzIGRvbmUuIE5leHQsIHdlIGNhbiBtb3ZlIG9uIHRvIHRoZSBQQ0IgcnVsZXMgZW5naW5lLiBIZXJlIEkgdGFsayBhYm91dCBkcmlsbCBjb21wZW5zYXRpb24gaW4gUENCIGVuZ2luZWVyaW5nLiBBcyBhIFBDQiBlbmdpbmVlcmluZyBkZXZlbG9wZXIsIHlvdSBzaG91bGQga25vdyB3aGF0IGl0IGlzIGFuZCB3aHkgaXQgd29ya3MuIEkgc2hhcmUgdGhlIGtleSBwb2ludHMgYWJvdXQgZHJpbGwgY29tcGVuc2F0aW9uIGJlbG93LjxcL3A+XG48aHIgZGF0YS1zdGFydD1cIjQ2M1wiIGRhdGEtZW5kPVwiNDY2XCIgXC8+XG48aDIgZGF0YS1zdGFydD1cIjQ2OFwiIGRhdGEtZW5kPVwiNTA3XCI+MS4gV2h5IGRvIHdlIGNvbXBlbnNhdGUgZHJpbGwgc2l6ZXM\\\/PFwvaDI+XG48cCBkYXRhLXN0YXJ0PVwiNTA5XCIgZGF0YS1lbmQ9XCI4NzBcIj5UaGUgaG9sZSBzaXplcyBpbiB0aGUgUENCIGZpbGVzIHRoZSBjdXN0b21lciBnaXZlcyB1c3VhbGx5IG1lYW4gdGhlIDxlbSBkYXRhLXN0YXJ0PVwiNTc3XCIgZGF0YS1lbmQ9XCI1ODRcIj5maW5hbDxcL2VtPiBob2xlIHNpemUuIER1cmluZyBQQ0IgcHJvZHVjdGlvbiwgY29wcGVyIGlzIHBsYXRlZCBpbnNpZGUgdGhlIGhvbGVzIChvciB0aGUgaG9sZXMgZ2V0IGEgc3VyZmFjZSBmaW5pc2ggc3VjaCBhcyBIQVNMLCBFTklHLCBPU1AsIGV0Yy4pLiBUaGlzIG1ha2VzIHRoZSBob2xlIHNtYWxsZXIuIFRvIG1ha2Ugc3VyZSB0aGUgZmluYWwgaG9sZSBzaXplIG1lZXRzIHRoZSByZXF1aXJlbWVudCwgdGhlIENBTSBzdGVwIGNvcnJlY3RzIHRoZSBkcmlsbCBzaXplLiBUaGlzIGlzIGRyaWxsIGNvbXBlbnNhdGlvbi48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjg3MlwiIGRhdGEtZW5kPVwiMTE3MVwiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjg3MlwiIGRhdGEtZW5kPVwiODg5XCI+UmVhbCBleGFtcGxlOjxcL3N0cm9uZz48YnIgZGF0YS1zdGFydD1cIjg4OVwiIGRhdGEtZW5kPVwiODkyXCIgXC8+RmluYWwgaG9sZSBzaXplOiA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MDlcIiBkYXRhLWVuZD1cIjkyMFwiPjEuMDAgbW08XC9zdHJvbmc+LiBTdXJmYWNlIGZpbmlzaDogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTM4XCIgZGF0YS1lbmQ9XCI5NDZcIj5FTklHPFwvc3Ryb25nPiAobmlja2VsIHRoaWNrbmVzcyAyLjU0IFx1MDBiNW0sIGdvbGQgdGhpY2tuZXNzIDAuMDI1NCBcdTAwYjVtKS4gRm9sbG93IElQQyBDbGFzcyBJSSBhbmQgdGhlIGF2ZXJhZ2UgcGxhdGVkIGNvcHBlciB0aGlja25lc3MgaXMgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTA2NFwiIGRhdGEtZW5kPVwiMTA3M1wiPjIwIFx1MDBiNW08XC9zdHJvbmc+LiBJZiB3ZSB1c2UgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTA4NVwiIGRhdGEtZW5kPVwiMTA5NlwiPjAuMTAgbW08XC9zdHJvbmc+IGFzIHRoZSBjb21wZW5zYXRpb24gdmFsdWUsIHRoZSBDQU0gdGVhbSB3aWxsIHBpY2sgYSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxMTQ5XCIgZGF0YS1lbmQ9XCIxMTYwXCI+MS4xMCBtbTxcL3N0cm9uZz4gZHJpbGwgYml0LjxcL3A+XG48cCBkYXRhLXN0YXJ0PVwiODcyXCIgZGF0YS1lbmQ9XCIxMTcxXCI+PGltZyBjbGFzcz1cImFsaWdubm9uZSBzaXplLWZ1bGwgd3AtaW1hZ2UtNDU3OFwiIHNyYz1cImh0dHBzOlwvXC9mbGotcGNiLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyNVwvMTJcL1JlYWwtZXhhbXBsZS53ZWJwXCIgYWx0PVwiUmVhbCBleGFtcGxlXCIgd2lkdGg9XCIzMzZcIiBoZWlnaHQ9XCIyOTdcIiBcLz48XC9wPlxuPGhyIGRhdGEtc3RhcnQ9XCIxMTczXCIgZGF0YS1lbmQ9XCIxMTc2XCIgXC8+XG48aDIgZGF0YS1zdGFydD1cIjExNzhcIiBkYXRhLWVuZD1cIjEyMTZcIj4yLiBIb3cgZG8gd2UgZG8gZHJpbGwgY29tcGVuc2F0aW9uPzxcL2gyPlxuPHAgZGF0YS1zdGFydD1cIjEyMThcIiBkYXRhLWVuZD1cIjE0NDVcIj5GaXJzdCwgYmUgY2xlYXIgYWJvdXQgdGhlIHRocmVlIGtleSBwYXJhbWV0ZXJzIGZvciBkcmlsbCBjb21wZW5zYXRpb246PGJyIGRhdGEtc3RhcnQ9XCIxMjg4XCIgZGF0YS1lbmQ9XCIxMjkxXCIgXC8+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTI5MVwiIGRhdGEtZW5kPVwiMTI5OFwiPigxKTxcL3N0cm9uZz4gRHJpbGwgYml0IGluY3JlbWVudCw8YnIgZGF0YS1zdGFydD1cIjEzMTlcIiBkYXRhLWVuZD1cIjEzMjJcIiBcLz48c3Ryb25nIGRhdGEtc3RhcnQ9XCIxMzIyXCIgZGF0YS1lbmQ9XCIxMzI5XCI+KDIpPFwvc3Ryb25nPiBDb21wZW5zYXRpb24gdmFsdWUsPGJyIGRhdGEtc3RhcnQ9XCIxMzQ5XCIgZGF0YS1lbmQ9XCIxMzUyXCIgXC8+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTM1MlwiIGRhdGEtZW5kPVwiMTM1OVwiPigzKTxcL3N0cm9uZz4gU3RlcC11cCB0aHJlc2hvbGQgKGFkdmFuY2UgdmFsdWUpLjxiciBkYXRhLXN0YXJ0PVwiMTM5NFwiIGRhdGEtZW5kPVwiMTM5N1wiIFwvPlRoZXNlIHRocmVlIGRldGVybWluZSBob3cgdG8gYXBwbHkgY29tcGVuc2F0aW9uLjxcL3A+XG48aDMgZGF0YS1zdGFydD1cIjE0NDdcIiBkYXRhLWVuZD1cIjE0NzVcIj4xKSBEcmlsbCBiaXQgaW5jcmVtZW50PFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiMTQ3NlwiIGRhdGEtZW5kPVwiMTc3M1wiPlRoaXMgZGVwZW5kcyBvbiB0aGUgZHJpbGwgYml0cyB0aGUgY29tcGFueSBidXlzLiBUaGUgaW5kdXN0cnkgY29tbW9uIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNTU4XCIgZGF0YS1lbmQ9XCIxNTY3XCI+NTAgXHUwMGI1bTxcL3N0cm9uZz4uIFR5cGljYWwgZHJpbGwgc2l6ZXMgcmFuZ2UgZnJvbSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNjAwXCIgZGF0YS1lbmQ9XCIxNjExXCI+MC4xMCBtbTxcL3N0cm9uZz4gdG8gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTYxNVwiIGRhdGEtZW5kPVwiMTYyNlwiPjYuMzUgbW08XC9zdHJvbmc+LiBUaGUgdXN1YWwgc21hbGxlc3Qgc3RlcCBiZXR3ZWVuIGRyaWxsIGJpdHMgaXMgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTY3NFwiIGRhdGEtZW5kPVwiMTY4NVwiPjAuMDUgbW08XC9zdHJvbmc+LiBTbyB0aGUgZHJpbGwgbGlicmFyeSBoYXMgc2l6ZXMgbGlrZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNzIzXCIgZGF0YS1lbmQ9XCIxNzYxXCI+MC4xMCBtbSwgMC4xNSBtbSwgMC4yMCBtbSwgMC4yNSBtbTxcL3N0cm9uZz4sIGFuZCBzbyBvbi48XC9wPlxuPGgzIGRhdGEtc3RhcnQ9XCIxNzc1XCIgZGF0YS1lbmQ9XCIxODAyXCI+MikgQ29tcGVuc2F0aW9uIHZhbHVlPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiMTgwM1wiIGRhdGEtZW5kPVwiMTk1MlwiPlRoZSBwcm9jZXNzIHRlYW0gc2V0cyB0aGUgY29tcGVuc2F0aW9uIHJ1bGVzIGJhc2VkIG9uIGZhY3RvcnkgdGVzdCByZXN1bHRzLiBDb21wZW5zYXRpb24gdmFsdWVzIGRvIG5vdCB2YXJ5IG11Y2ggYWNyb3NzIHRoZSBpbmR1c3RyeS4gQ29tbW9uIHJ1bGVzOjxcL3A+XG48dWwgZGF0YS1zdGFydD1cIjE5NTNcIiBkYXRhLWVuZD1cIjIwOThcIj5cbjxsaSBkYXRhLXN0YXJ0PVwiMTk1M1wiIGRhdGEtZW5kPVwiMjAxNFwiPlxuPHAgZGF0YS1zdGFydD1cIjE5NTVcIiBkYXRhLWVuZD1cIjIwMTRcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCIxOTU1XCIgZGF0YS1lbmQ9XCIxOTc1XCI+Qm9hcmRzIHdpdGggSEFTTDxcL3N0cm9uZz4gKHNwcmF5IHRpbik6IDxzdHJvbmcgZGF0YS1zdGFydD1cIjE5ODlcIiBkYXRhLWVuZD1cIjIwMTFcIj5jb21wZW5zYXRlIDAuMTUgbW08XC9zdHJvbmc+LjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiMjAxNVwiIGRhdGEtZW5kPVwiMjA5OFwiPlxuPHAgZGF0YS1zdGFydD1cIjIwMTdcIiBkYXRhLWVuZD1cIjIwOThcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCIyMDE3XCIgZGF0YS1lbmQ9XCIyMDQwXCI+Qm9hcmRzIHdpdGhvdXQgSEFTTDxcL3N0cm9uZz4gKEVOSUcsIGltbWVyc2lvbiB0aW4sIE9TUCwgZXRjLik6IDxzdHJvbmcgZGF0YS1zdGFydD1cIjIwNzVcIiBkYXRhLWVuZD1cIjIwOTdcIj5jb21wZW5zYXRlIDAuMTAgbW08XC9zdHJvbmc+LjxcL3A+XG48XC9saT5cbjxcL3VsPlxuPGgzIGRhdGEtc3RhcnQ9XCIyMTAwXCIgZGF0YS1lbmQ9XCIyMTQyXCI+MykgU3RlcC11cCB0aHJlc2hvbGQgKGFkdmFuY2UgdmFsdWUpPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiMjE0M1wiIGRhdGEtZW5kPVwiMjQwM1wiPlRoZSBwcm9jZXNzIHRlYW0gYWxzbyBzZXRzIHRoZSBzdHJhdGVneSBmb3IgcGlja2luZyB0aGUgZHJpbGwgYml0LCBzaW1pbGFyIHRvIGEgcm91bmRpbmcgcnVsZS4gRm9yIGV4YW1wbGUsIHdoZW4gdGhlIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyMjczXCIgZGF0YS1lbmQ9XCIyMjgyXCI+MjAgXHUwMGI1bTxcL3N0cm9uZz4sIGlmIHRoZSByZW1haW5kZXIgYWZ0ZXIgZGl2aWRpbmcgYnkgdGhlIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyMzM2XCIgZGF0YS1lbmQ9XCIyMzQ3XCI+XHUyMjY1IDIwIFx1MDBiNW08XC9zdHJvbmc+LCB5b3Ugcm91bmQgdXAgNTAgXHUwMGI1bTsgb3RoZXJ3aXNlIHlvdSBrZWVwIHRoZSBsb3dlciBzaXplLjxcL3A+XG48cCBkYXRhLXN0YXJ0PVwiMjQwNVwiIGRhdGEtZW5kPVwiMjczN1wiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjI0MDVcIiBkYXRhLWVuZD1cIjI0MTdcIj5FeGFtcGxlOjxcL3N0cm9uZz48YnIgZGF0YS1zdGFydD1cIjI0MTdcIiBkYXRhLWVuZD1cIjI0MjBcIiBcLz5GaW5hbCBob2xlIHNpemUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyNDM4XCIgZGF0YS1lbmQ9XCIyNDUwXCI+MS4wMjUgbW08XC9zdHJvbmc+LCBjb21wZW5zYXRpb24gPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyNDY3XCIgZGF0YS1lbmQ9XCIyNDc4XCI+MC4xMCBtbTxcL3N0cm9uZz4sIHNvIGNvbXBlbnNhdGVkIHNpemUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyNTAyXCIgZGF0YS1lbmQ9XCIyNTE0XCI+MS4xMjUgbW08XC9zdHJvbmc+LiBCdXQgdGhlcmUgaXMgbm8gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjUzMlwiIGRhdGEtZW5kPVwiMjU0NFwiPjEuMTI1IG1tPFwvc3Ryb25nPiBkcmlsbCBpbiB0aGUgbGlicmFyeS4gVXNlIHRoZSBzdGVwLXVwIHJ1bGUuIFRoZSByZW1haW5kZXIgb2YgMS4xMjUgbW0gd2hlbiBjb21wYXJlZCB0byB0aGUgMC4wNSBtbSBzdGVwIGlzIDxzdHJvbmcgZGF0YS1zdGFydD1cIjI2NTJcIiBkYXRhLWVuZD1cIjI2NjFcIj4yNSBcdTAwYjVtPFwvc3Ryb25nPi4gU2luY2UgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjY2OVwiIGRhdGEtZW5kPVwiMjY4NlwiPjI1IFx1MDBiNW0gJmd0OyAyMCBcdTAwYjVtPFwvc3Ryb25nPiwgcm91bmQgdXAgYnkgNTAgXHUwMGI1bSBhbmQgY2hvb3NlIGEgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjcxOVwiIGRhdGEtZW5kPVwiMjczMFwiPjEuMTUgbW08XC9zdHJvbmc+IGRyaWxsLjxcL3A+XG48aHIgZGF0YS1zdGFydD1cIjI3MzlcIiBkYXRhLWVuZD1cIjI3NDJcIiBcLz5cbjxoMyBkYXRhLXN0YXJ0PVwiMjc0NFwiIGRhdGEtZW5kPVwiMjc4MlwiPkFjdHVhbCBkcmlsbCBjb21wZW5zYXRpb24gZXhhbXBsZXM8XC9oMz5cbjxwIGRhdGEtc3RhcnQ9XCIyNzg0XCIgZGF0YS1lbmQ9XCIyODUwXCI+QXNzdW1lOiBkcmlsbCBpbmNyZW1lbnQgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyODEwXCIgZGF0YS1lbmQ9XCIyODE5XCI+NTAgXHUwMGI1bTxcL3N0cm9uZz4sIHN0ZXAtdXAgdGhyZXNob2xkID0gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjg0MVwiIGRhdGEtZW5kPVwiMjg1MFwiPjIwIFx1MDBiNW08XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJUeWFnR1dfdGFibGVDb250YWluZXJcIj5cbjxkaXYgY2xhc3M9XCJncm91cCBUeWFnR1dfdGFibGVXcmFwcGVyIGZsZXggdy1maXQgZmxleC1jb2wtcmV2ZXJzZVwiIHRhYmluZGV4PVwiLTFcIj5cbjx0YWJsZSBjbGFzcz1cInctZml0IG1pbi13LSgtLXRocmVhZC1jb250ZW50LXdpZHRoKVwiIGRhdGEtc3RhcnQ9XCIyODUyXCIgZGF0YS1lbmQ9XCIzMDk3XCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjI4NTJcIiBkYXRhLWVuZD1cIjI5NDdcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiMjg1MlwiIGRhdGEtZW5kPVwiMjk0N1wiPlxuPHRoIGRhdGEtc3RhcnQ9XCIyODUyXCIgZGF0YS1lbmQ9XCIyODY4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+T3JpZ2luYWwgaG9sZTxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCIyODY4XCIgZGF0YS1lbmQ9XCIyODgzXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Q29tcGVuc2F0aW9uPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjI4ODNcIiBkYXRhLWVuZD1cIjI5MDRcIiBkYXRhLWNvbC1zaXplPVwic21cIj5BZnRlciBjb21wZW5zYXRpb248XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiMjkwNFwiIGRhdGEtZW5kPVwiMjkxOVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkludGVnZXIgcGFydDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCIyOTE5XCIgZGF0YS1lbmQ9XCIyOTMxXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+UmVtYWluZGVyPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjI5MzFcIiBkYXRhLWVuZD1cIjI5NDdcIiBkYXRhLWNvbC1zaXplPVwic21cIj5EcmlsbCBjaG9zZW48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHkgZGF0YS1zdGFydD1cIjI5ODBcIiBkYXRhLWVuZD1cIjMwOTdcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiMjk4MFwiIGRhdGEtZW5kPVwiMzAzOFwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIyOTgwXCIgZGF0YS1lbmQ9XCIyOTkxXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MS4wMjUgbW08XC90ZD5cbjx0ZCBkYXRhLXN0YXJ0PVwiMjk5MVwiIGRhdGEtZW5kPVwiMjk5OFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjAuMTA8XC90ZD5cbjx0ZCBkYXRhLXN0YXJ0PVwiMjk5OFwiIGRhdGEtZW5kPVwiMzAwOVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMTI1IG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwMDlcIiBkYXRhLWVuZD1cIjMwMTZcIj4xLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwMTZcIiBkYXRhLWVuZD1cIjMwMjdcIj4wLjAyNSBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIzMDI3XCIgZGF0YS1lbmQ9XCIzMDM4XCI+MS4xNSBtbTxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjMwMzlcIiBkYXRhLWVuZD1cIjMwOTdcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMzAzOVwiIGRhdGEtZW5kPVwiMzA1MFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMDE2IG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwNTBcIiBkYXRhLWVuZD1cIjMwNTdcIj4wLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwNTdcIiBkYXRhLWVuZD1cIjMwNjhcIj4xLjExNiBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIzMDY4XCIgZGF0YS1lbmQ9XCIzMDc1XCI+MS4xMDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIzMDc1XCIgZGF0YS1lbmQ9XCIzMDg2XCI+MC4wMTYgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMzA4NlwiIGRhdGEtZW5kPVwiMzA5N1wiPjEuMTAgbW08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT5cbjxcL2Rpdj5cbjxcL2Rpdj5cbjxoNCBkYXRhLXN0YXJ0PVwiMzA5OVwiIGRhdGEtZW5kPVwiMzE0MFwiPkhvdyB0byBjb21wdXRlIHRoZSBjaG9zZW4gZHJpbGwgc2l6ZTxcL2g0PlxuPHAgZGF0YS1zdGFydD1cIjMxNDFcIiBkYXRhLWVuZD1cIjMyNDFcIj5CcmVhayB0aGUgY29tcGVuc2F0ZWQgaG9sZSBzaXplIGludG8gYW4gaW50ZWdlciBwYXJ0IGFuZCBhIHJlbWFpbmRlciBwYXJ0IHVzaW5nIHRoZSBkcmlsbCBpbmNyZW1lbnQ6PFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCIzMjQzXCIgZGF0YS1lbmQ9XCIzMzk2XCI+VGFrZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIzMjQ4XCIgZGF0YS1lbmQ9XCIzMjYwXCI+MS4xMjUgbW08XC9zdHJvbmc+IGFzIGFuIGV4YW1wbGU6PGJyIGRhdGEtc3RhcnQ9XCIzMjc1XCIgZGF0YS1lbmQ9XCIzMjc4XCIgXC8+MS4xMjUgXC8gMC4wNSA9IDIyLjUgXHUyMTkyIGZsb29yIHRvIDIyIFx1MjE5MiBpbnRlZ2VyIHBhcnQgPSAyMiBcdTAwZDcgMC4wNSA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjMzNDFcIiBkYXRhLWVuZD1cIjMzNTJcIj4xLjEwIG1tPFwvc3Ryb25nPi48YnIgZGF0YS1zdGFydD1cIjMzNTNcIiBkYXRhLWVuZD1cIjMzNTZcIiBcLz5SZW1haW5kZXIgPSAxLjEyNSAlIDAuMDUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIzMzgzXCIgZGF0YS1lbmQ9XCIzMzk1XCI+MC4wMjUgbW08XC9zdHJvbmc+LjxcL3A+XG48cCBkYXRhLXN0YXJ0PVwiMzM5OFwiIGRhdGEtZW5kPVwiMzQ3NVwiPlRoZW4gY29tcGFyZSB0aGUgcmVtYWluZGVyIHdpdGggdGhlIHN0ZXAtdXAgdGhyZXNob2xkIChmb3IgZXhhbXBsZSwgMjAgXHUwMGI1bSk6PFwvcD5cbjx1bCBkYXRhLXN0YXJ0PVwiMzQ3NlwiIGRhdGEtZW5kPVwiMzYwN1wiPlxuPGxpIGRhdGEtc3RhcnQ9XCIzNDc2XCIgZGF0YS1lbmQ9XCIzNTQyXCI+XG48cCBkYXRhLXN0YXJ0PVwiMzQ3OFwiIGRhdGEtZW5kPVwiMzU0MlwiPklmIHJlbWFpbmRlciAmZ3Q7IHRocmVzaG9sZCwgZHJpbGwgc2l6ZSA9IGludGVnZXIgcGFydCArIDAuMDUgbW0uPFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCIzNTQzXCIgZGF0YS1lbmQ9XCIzNjA3XCI+XG48cCBkYXRhLXN0YXJ0PVwiMzU0NVwiIGRhdGEtZW5kPVwiMzYwN1wiPklmIHJlbWFpbmRlciBcdTIyNjQgdGhyZXNob2xkLCBkcmlsbCBzaXplID0gaW50ZWdlciBwYXJ0ICsgMC4wMCBtbS48XC9wPlxuPFwvbGk+XG48XC91bD5cbjxociBkYXRhLXN0YXJ0PVwiMzYwOVwiIGRhdGEtZW5kPVwiMzYxMlwiIFwvPlxuPGgzIGRhdGEtc3RhcnQ9XCIzNjE0XCIgZGF0YS1lbmQ9XCIzNjUzXCI+U3VtbWFyeSBhYm91dCB0aGUgc3RlcC11cCB0aHJlc2hvbGQ8XC9oMz5cbjxwIGRhdGEtc3RhcnQ9XCIzNjU0XCIgZGF0YS1lbmQ9XCIzODk3XCI+V2hlbiB0aGUgZHJpbGwgaW5jcmVtZW50IGlzIDxzdHJvbmcgZGF0YS1zdGFydD1cIjM2ODJcIiBkYXRhLWVuZD1cIjM2OTFcIj41MCBcdTAwYjVtPFwvc3Ryb25nPiwgdGhlIHN0ZXAtdXAgdGhyZXNob2xkIGlzIGNyaXRpY2FsLiBJdCBwZXJmb3JtcyBhIHNlY29uZCBjb3JyZWN0aW9uIG9mIHRoZSBjb21wZW5zYXRlZCBkcmlsbCBzaXplLiBJdCBkZWNpZGVzIHdoZXRoZXIgdG8gXHUyMDFjc3RlcCB1cFx1MjAxZCBvciBcdTIwMWNzdGF5Llx1MjAxZCBDaGFuZ2luZyB0aGlzIHRocmVzaG9sZCBkaXJlY3RseSBjaGFuZ2VzIHRoZSBjaG9zZW4gZHJpbGwgc2l6ZS48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjM4OTlcIiBkYXRhLWVuZD1cIjM5NDNcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCIzODk5XCIgZGF0YS1lbmQ9XCIzOTQzXCI+TW9yZSBleGFtcGxlcyAoZHJpbGwgaW5jcmVtZW50ID0gNTAgXHUwMGI1bSk6PFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwiVHlhZ0dXX3RhYmxlQ29udGFpbmVyXCI+XG48ZGl2IGNsYXNzPVwiZ3JvdXAgVHlhZ0dXX3RhYmxlV3JhcHBlciBmbGV4IHctZml0IGZsZXgtY29sLXJldmVyc2VcIiB0YWJpbmRleD1cIi0xXCI+XG48dGFibGUgY2xhc3M9XCJ3LWZpdCBtaW4tdy0oLS10aHJlYWQtY29udGVudC13aWR0aClcIiBkYXRhLXN0YXJ0PVwiMzk0NVwiIGRhdGEtZW5kPVwiNDIwOVwiPlxuPHRoZWFkIGRhdGEtc3RhcnQ9XCIzOTQ1XCIgZGF0YS1lbmQ9XCI0MDQxXCI+XG48dHIgZGF0YS1zdGFydD1cIjM5NDVcIiBkYXRhLWVuZD1cIjQwNDFcIj5cbjx0aCBkYXRhLXN0YXJ0PVwiMzk0NVwiIGRhdGEtZW5kPVwiMzk2MVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPk9yaWdpbmFsIGhvbGU8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiMzk2MVwiIGRhdGEtZW5kPVwiMzk3NlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkNvbXBlbnNhdGlvbjxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCIzOTc2XCIgZGF0YS1lbmQ9XCIzOTkwXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QWZ0ZXIgY29tcC48XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiMzk5MFwiIGRhdGEtZW5kPVwiNDAwMFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkludGVnZXI8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNDAwMFwiIGRhdGEtZW5kPVwiNDAxMlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPlJlbWFpbmRlcjxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI0MDEyXCIgZGF0YS1lbmQ9XCI0MDMyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+U3RlcC11cCB0aHJlc2hvbGQ8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNDAzMlwiIGRhdGEtZW5kPVwiNDA0MVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkRyaWxsPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5IGRhdGEtc3RhcnQ9XCI0MDc5XCIgZGF0YS1lbmQ9XCI0MjA5XCI+XG48dHIgZGF0YS1zdGFydD1cIjQwNzlcIiBkYXRhLWVuZD1cIjQxNDNcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiNDA3OVwiIGRhdGEtZW5kPVwiNDA5MFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMDIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQwOTBcIiBkYXRhLWVuZD1cIjQwOTZcIj4wLjE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNDA5NlwiIGRhdGEtZW5kPVwiNDEwN1wiPjEuMTIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxMDdcIiBkYXRhLWVuZD1cIjQxMTRcIj4xLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxMTRcIiBkYXRhLWVuZD1cIjQxMjVcIj4wLjAyMiBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI0MTI1XCIgZGF0YS1lbmQ9XCI0MTMyXCI+MC4wMjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI0MTMyXCIgZGF0YS1lbmQ9XCI0MTQzXCI+MS4xNSBtbTxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjQxNDRcIiBkYXRhLWVuZD1cIjQyMDlcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiNDE0NFwiIGRhdGEtZW5kPVwiNDE1NVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMDIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxNTVcIiBkYXRhLWVuZD1cIjQxNjFcIj4wLjE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNDE2MVwiIGRhdGEtZW5kPVwiNDE3MlwiPjEuMTIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxNzJcIiBkYXRhLWVuZD1cIjQxNzlcIj4xLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxNzlcIiBkYXRhLWVuZD1cIjQxOTBcIj4wLjAyMiBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI0MTkwXCIgZGF0YS1lbmQ9XCI0MTk4XCI+MC4wMjU8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNDE5OFwiIGRhdGEtZW5kPVwiNDIwOVwiPjEuMTAgbW08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT5cbjxcL2Rpdj5cbjxcL2Rpdj5cbjxociBkYXRhLXN0YXJ0PVwiNDIxMVwiIGRhdGEtZW5kPVwiNDIxNFwiIFwvPlxuPGgzIGRhdGEtc3RhcnQ9XCI0MjE2XCIgZGF0YS1lbmQ9XCI0MjY2XCI+UGVyc29uYWwgdmlldyBvbiBzZXR0aW5nIHRoZSBzdGVwLXVwIHRocmVzaG9sZDxcL2gzPlxuPHAgZGF0YS1zdGFydD1cIjQyNjdcIiBkYXRhLWVuZD1cIjQ1NzVcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI0MjY3XCIgZGF0YS1lbmQ9XCI0Mjg1XCI+UHJvcyBhbmQgY29uczo8XC9zdHJvbmc+IEFmdGVyIGNvbXBlbnNhdGlvbiwgaWYgdGhlIGZpbmFsIGhvbGUgaXMgYSBsaXR0bGUgbGFyZ2VyLCBhdCBsZWFzdCB0aGUgcGFydCBjYW4gYmUgaW5zZXJ0ZWQuIElmIHRoZSBob2xlIGlzIHRvbyBzbWFsbCwgdGhlIHBhcnQgY2Fubm90IGJlIGluc2VydGVkLiBTbyB3ZSB1c3VhbGx5IHNldCB0aGUgc3RlcC11cCB0aHJlc2hvbGQgdG8gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDQ3N1wiIGRhdGEtZW5kPVwiNDQ4NlwiPjIwIFx1MDBiNW08XC9zdHJvbmc+IGluc3RlYWQgb2YgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDQ5OFwiIGRhdGEtZW5kPVwiNDUwN1wiPjI1IFx1MDBiNW08XC9zdHJvbmc+LiBUaGUgZXhhY3QgY2hvaWNlIHNob3VsZCBtYXRjaCBlYWNoIHByb2Nlc3MgYW5kIGNvbXBlbnNhdGlvbiB2YWx1ZS48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjQ1NzdcIiBkYXRhLWVuZD1cIjQ4NjJcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI0NTc3XCIgZGF0YS1lbmQ9XCI0NjE0XCI+Q29tYmluZWQgd2l0aCBjb21wZW5zYXRpb24gdmFsdWU6PFwvc3Ryb25nPiBGb3IgYm9hcmRzIHdpdGggSEFTTCB3aGVyZSBjb21wZW5zYXRpb24gaXMgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDY1OFwiIGRhdGEtZW5kPVwiNDY2OVwiPjAuMTUgbW08XC9zdHJvbmc+LCB5b3UgYWxyZWFkeSBcdTIwMWNvdmVyLWNvbXBlbnNhdGVcdTIwMWQgYSBiaXQgYW5kIHRoZSBmaW5hbCBob2xlcyB0ZW5kIHRvIGJlIHNsaWdodGx5IGxhcmdlLiBJbiB0aGF0IGNhc2UsIGEgc3RlcC11cCB0aHJlc2hvbGQgb2YgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDc5MVwiIGRhdGEtZW5kPVwiNDgwMFwiPjI1IFx1MDBiNW08XC9zdHJvbmc+IGNhbiBhbHNvIHdvcmsuIFVzZSB0aGUgXHUyMDFjbmVhcmVzdFx1MjAxZCBydWxlIHdoZW4gcGlja2luZyB0aGUgZHJpbGwuPFwvcD5cbjxociBkYXRhLXN0YXJ0PVwiNDg2NFwiIGRhdGEtZW5kPVwiNDg2N1wiIFwvPlxuPGgyIGRhdGEtc3RhcnQ9XCI0ODY5XCIgZGF0YS1lbmQ9XCI0OTQzXCI+My4gSG93IHRvIGVuc3VyZSBmaW5hbCBob2xlIHNpemUgbWVldHMgcmVxdWlyZW1lbnRzIGFmdGVyIGNvbXBlbnNhdGlvbj88XC9oMj5cbjxoMyBkYXRhLXN0YXJ0PVwiNDk0NVwiIGRhdGEtZW5kPVwiNDk4M1wiPk1ldGhvZCAxOiBCdXkgc3BlY2lhbCBkcmlsbCBiaXRzPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiNDk4NFwiIGRhdGEtZW5kPVwiNTIwN1wiPlN0YW5kYXJkIGRyaWxsIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI1MDEyXCIgZGF0YS1lbmQ9XCI1MDIxXCI+NTAgXHUwMGI1bTxcL3N0cm9uZz4gKDAuMDUgbW0gc3RlcHMgbGlrZSAxLjAwLCAxLjA1LCAxLjEwLCAxLjE1IG1tKS4gV2l0aCBhIFBUSCB0b2xlcmFuY2Ugb2YgXHUwMGIxMyBtaWwsIGEgNTAgXHUwMGI1bSBkcmlsbCBzZXQgY2FuIGNvdmVyIHRoZSB0b2xlcmFuY2UuIElmIHRoZSB0b2xlcmFuY2UgaXMgc21hbGxlciB0aGFuIHRoYXQsIHVzZSBzcGVjaWFsIGRyaWxsIGJpdHMuPFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCI1MjA5XCIgZGF0YS1lbmQ9XCI1MzUyXCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiNTIwOVwiIGRhdGEtZW5kPVwiNTIyMlwiPkV4YW1wbGUgMTxcL3N0cm9uZz4gXHUyMDE0IENvbXBhcmUgNTAgXHUwMGI1bSB2cyAyNSBcdTAwYjVtIGluY3JlbWVudHM6PGJyIGRhdGEtc3RhcnQ9XCI1MjU5XCIgZGF0YS1lbmQ9XCI1MjYyXCIgXC8+T3JpZ2luYWwgaG9sZSA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjUyNzhcIiBkYXRhLWVuZD1cIjUyOTBcIj4wLjkyMiBtbTxcL3N0cm9uZz4sIGNvbXBlbnNhdGlvbiA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjUzMDdcIiBkYXRhLWVuZD1cIjUzMThcIj4wLjEwIG1tPFwvc3Ryb25nPiwgY29tcGVuc2F0ZWQgc2l6ZSA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjUzMzlcIiBkYXRhLWVuZD1cIjUzNTFcIj4xLjAyMiBtbTxcL3N0cm9uZz4uPFwvcD5cbjxkaXYgY2xhc3M9XCJUeWFnR1dfdGFibGVDb250YWluZXJcIj5cbjxkaXYgY2xhc3M9XCJncm91cCBUeWFnR1dfdGFibGVXcmFwcGVyIGZsZXggdy1maXQgZmxleC1jb2wtcmV2ZXJzZVwiIHRhYmluZGV4PVwiLTFcIj5cbjx0YWJsZSBjbGFzcz1cInctZml0IG1pbi13LSgtLXRocmVhZC1jb250ZW50LXdpZHRoKVwiIGRhdGEtc3RhcnQ9XCI1MzU0XCIgZGF0YS1lbmQ9XCI1NTQ1XCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjUzNTRcIiBkYXRhLWVuZD1cIjU0MjJcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiNTM1NFwiIGRhdGEtZW5kPVwiNTQyMlwiPlxuPHRoIGRhdGEtc3RhcnQ9XCI1MzU0XCIgZGF0YS1lbmQ9XCI1MzY1XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+T3JpZ2luYWw8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNTM2NVwiIGRhdGEtZW5kPVwiNTM4MFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkNvbXBlbnNhdGlvbjxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1MzgwXCIgZGF0YS1lbmQ9XCI1Mzk0XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Q29tcGVuc2F0ZWQ8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNTM5NFwiIGRhdGEtZW5kPVwiNTQwNlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkluY3JlbWVudDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1NDA2XCIgZGF0YS1lbmQ9XCI1NDIyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+RHJpbGwgY2hvc2VuPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5IGRhdGEtc3RhcnQ9XCI1NDUwXCIgZGF0YS1lbmQ9XCI1NTQ1XCI+XG48dHIgZGF0YS1zdGFydD1cIjU0NTBcIiBkYXRhLWVuZD1cIjU0OTZcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiNTQ1MFwiIGRhdGEtZW5kPVwiNTQ1OFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjAuOTIyPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU0NThcIiBkYXRhLWVuZD1cIjU0NjVcIj4wLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU0NjVcIiBkYXRhLWVuZD1cIjU0NzNcIj4xLjAyMjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1NDczXCIgZGF0YS1lbmQ9XCI1NDg4XCI+MC4wNSAoNTAgXHUwMGI1bSk8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTQ4OFwiIGRhdGEtZW5kPVwiNTQ5NlwiPjEuMDU8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCI1NDk3XCIgZGF0YS1lbmQ9XCI1NTQ1XCI+XG48dGQgZGF0YS1zdGFydD1cIjU0OTdcIiBkYXRhLWVuZD1cIjU1MDVcIiBkYXRhLWNvbC1zaXplPVwic21cIj4wLjkyMjxcL3RkPlxuPHRkIGRhdGEtc3RhcnQ9XCI1NTA1XCIgZGF0YS1lbmQ9XCI1NTEyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MC4xMDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1NTEyXCIgZGF0YS1lbmQ9XCI1NTIwXCI+MS4wMjI8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTUyMFwiIGRhdGEtZW5kPVwiNTUzNlwiPjAuMDI1ICgyNSBcdTAwYjVtKTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1NTM2XCIgZGF0YS1lbmQ9XCI1NTQ1XCI+MS4wMjU8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT5cbjxcL2Rpdj5cbjxcL2Rpdj5cbjxwIGRhdGEtc3RhcnQ9XCI1NTQ3XCIgZGF0YS1lbmQ9XCI1Njg5XCI+RGlmZmVyZW5jZTogMS4wNTAgXHUyMjEyIDEuMDIyID0gMC4wMjggbW07IDEuMDI1IFx1MjIxMiAxLjAyMiA9IDAuMDAzIG1tLiBUaGUgc21hbGxlciBkaWZmZXJlbmNlIGlzIGJldHRlciwgc28gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNTY0OFwiIGRhdGEtZW5kPVwiNTY2MFwiPjEuMDI1IG1tPFwvc3Ryb25nPiAoMjUgXHUwMGI1bSBpbmNyZW1lbnQpIGlzIGJldHRlci48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjU2OTFcIiBkYXRhLWVuZD1cIjU4MThcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI1NjkxXCIgZGF0YS1lbmQ9XCI1NzA0XCI+RXhhbXBsZSAyPFwvc3Ryb25nPiBcdTIwMTQgNTAgXHUwMGI1bSB2cyBzcGVjaWFsIGRyaWxsOjxiciBkYXRhLXN0YXJ0PVwiNTczMFwiIGRhdGEtZW5kPVwiNTczM1wiIFwvPk9yaWdpbmFsIGhvbGUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI1NzQ5XCIgZGF0YS1lbmQ9XCI1NzYxXCI+MC42MTEgbW08XC9zdHJvbmc+LCBjb21wZW5zYXRpb24gPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI1Nzc4XCIgZGF0YS1lbmQ9XCI1Nzg5XCI+MC4xMCBtbTxcL3N0cm9uZz4sIGNvbXBlbnNhdGVkID0gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNTgwNVwiIGRhdGEtZW5kPVwiNTgxN1wiPjAuNzExIG1tPFwvc3Ryb25nPi48XC9wPlxuPGRpdiBjbGFzcz1cIlR5YWdHV190YWJsZUNvbnRhaW5lclwiPlxuPGRpdiBjbGFzcz1cImdyb3VwIFR5YWdHV190YWJsZVdyYXBwZXIgZmxleCB3LWZpdCBmbGV4LWNvbC1yZXZlcnNlXCIgdGFiaW5kZXg9XCItMVwiPlxuPHRhYmxlIGNsYXNzPVwidy1maXQgbWluLXctKC0tdGhyZWFkLWNvbnRlbnQtd2lkdGgpXCIgZGF0YS1zdGFydD1cIjU4MjBcIiBkYXRhLWVuZD1cIjYwMThcIj5cbjx0aGVhZCBkYXRhLXN0YXJ0PVwiNTgyMFwiIGRhdGEtZW5kPVwiNTg5NVwiPlxuPHRyIGRhdGEtc3RhcnQ9XCI1ODIwXCIgZGF0YS1lbmQ9XCI1ODk1XCI+XG48dGggZGF0YS1zdGFydD1cIjU4MjBcIiBkYXRhLWVuZD1cIjU4MzFcIiBkYXRhLWNvbC1zaXplPVwic21cIj5PcmlnaW5hbDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1ODMxXCIgZGF0YS1lbmQ9XCI1ODQ2XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Q29tcGVuc2F0aW9uPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjU4NDZcIiBkYXRhLWVuZD1cIjU4NjBcIiBkYXRhLWNvbC1zaXplPVwic21cIj5Db21wZW5zYXRlZDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1ODYwXCIgZGF0YS1lbmQ9XCI1ODc5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+SW5jcmVtZW50IFwvIFR5cGU8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNTg3OVwiIGRhdGEtZW5kPVwiNTg5NVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkRyaWxsIGNob3NlbjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keSBkYXRhLXN0YXJ0PVwiNTkyM1wiIGRhdGEtZW5kPVwiNjAxOFwiPlxuPHRyIGRhdGEtc3RhcnQ9XCI1OTIzXCIgZGF0YS1lbmQ9XCI1OTY5XCI+XG48dGQgZGF0YS1zdGFydD1cIjU5MjNcIiBkYXRhLWVuZD1cIjU5MzFcIiBkYXRhLWNvbC1zaXplPVwic21cIj4wLjYxMTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1OTMxXCIgZGF0YS1lbmQ9XCI1OTM4XCI+MC4xMDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1OTM4XCIgZGF0YS1lbmQ9XCI1OTQ2XCI+MC43MTE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTk0NlwiIGRhdGEtZW5kPVwiNTk2MVwiPjAuMDUgKDUwIFx1MDBiNW0pPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU5NjFcIiBkYXRhLWVuZD1cIjU5NjlcIj4wLjcwPFwvdGQ+XG48XC90cj5cbjx0ciBkYXRhLXN0YXJ0PVwiNTk3MFwiIGRhdGEtZW5kPVwiNjAxOFwiPlxuPHRkIGRhdGEtc3RhcnQ9XCI1OTcwXCIgZGF0YS1lbmQ9XCI1OTc4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MC42MTE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTk3OFwiIGRhdGEtZW5kPVwiNTk4NVwiPjAuMTA8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTk4NVwiIGRhdGEtZW5kPVwiNTk5M1wiPjAuNzExPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU5OTNcIiBkYXRhLWVuZD1cIjYwMDlcIj5TcGVjaWFsIGRyaWxsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjYwMDlcIiBkYXRhLWVuZD1cIjYwMThcIj4wLjcxMTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPlxuPFwvZGl2PlxuPFwvZGl2PlxuPHAgZGF0YS1zdGFydD1cIjYwMjBcIiBkYXRhLWVuZD1cIjYxNjFcIj5EaWZmZXJlbmNlOiAwLjcwMCBcdTIyMTIgMC43MTEgPSBcdTIyMTIwLjAxMSBtbTsgMC43MTEgXHUyMjEyIDAuNzExID0gMC4wMDAgbW0uIFRoZSBzbWFsbGVyIGRpZmZlcmVuY2UgaXMgYmV0dGVyLiBTbyB0aGUgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNjEyNlwiIGRhdGEtZW5kPVwiNjE1MlwiPjAuNzExIG1tIHNwZWNpYWwgZHJpbGw8XC9zdHJvbmc+IGlzIGJlc3QuPFwvcD5cbjxoMyBkYXRhLXN0YXJ0PVwiNjE2M1wiIGRhdGEtZW5kPVwiNjIwNlwiPk1ldGhvZCAyOiBJbXByb3ZlIHByb2Nlc3MgYW5kIGVxdWlwbWVudDxcL2gzPlxuPHVsIGRhdGEtc3RhcnQ9XCI2MjA3XCIgZGF0YS1lbmQ9XCI2NzUyXCI+XG48bGkgZGF0YS1zdGFydD1cIjYyMDdcIiBkYXRhLWVuZD1cIjYyOTZcIj5cbjxwIGRhdGEtc3RhcnQ9XCI2MjA5XCIgZGF0YS1lbmQ9XCI2Mjk2XCI+QWRkIGEgc2Vjb25kIGJvYXJkIHBsYXRpbmcgc3RlcCB0byByZWR1Y2UgdW5ldmVuIHRoaWNrbmVzcyBmcm9tIHBhdHRlcm4gZGlzdHJpYnV0aW9uLjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiNjI5N1wiIGRhdGEtZW5kPVwiNjM5NVwiPlxuPHAgZGF0YS1zdGFydD1cIjYyOTlcIiBkYXRhLWVuZD1cIjYzOTVcIj5Vc2UgbmVnYXRpdmUgcGhvdG8gZGlyZWN0LWV0Y2hpbmcgYW5kIHBsYXRlIHRoZSB3aG9sZSBib2FyZCB0byByZWR1Y2UgdW5ldmVuIGNvcHBlciB0aGlja25lc3MuPFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCI2Mzk2XCIgZGF0YS1lbmQ9XCI2NTM4XCI+XG48cCBkYXRhLXN0YXJ0PVwiNjM5OFwiIGRhdGEtZW5kPVwiNjUzOFwiPkxvd2VyIHRoZSBjdXJyZW50IGRlbnNpdHkgKHR5cGljYWwgaXMgMTkgQVNGKTsgc2xpZ2h0bHkgbG93ZXIgY3VycmVudCBkZW5zaXR5IGNhbiBpbXByb3ZlIHBsYXRpbmcgdW5pZm9ybWl0eSBidXQgd2lsbCBleHRlbmQgcGxhdGluZyB0aW1lLjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiNjUzOVwiIGRhdGEtZW5kPVwiNjc1MlwiPlxuPHAgZGF0YS1zdGFydD1cIjY1NDFcIiBkYXRhLWVuZD1cIjY3NTJcIj5VcGdyYWRlIHRvIGEgaG9yaXpvbnRhbCBwbGF0aW5nIGxpbmUuIFZlcnRpY2FsIHBsYXRpbmcgbGluZXMgb2Z0ZW4gZ2l2ZSB0aGlja2VyIGNvcHBlciBhdCB0aGUgaG9sZSBlZGdlIGFuZCB0aGlubmVyIGNvcHBlciBhdCB0aGUgaG9sZSBjZW50ZXIgZm9yIGhpZ2ggYXNwZWN0LXJhdGlvIGhvbGVzLiBBIGhvcml6b250YWwgbGluZSBjYW4gcmVkdWNlIHRoYXQgaXNzdWUuPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48aDMgZGF0YS1zdGFydD1cIjY3NTRcIiBkYXRhLWVuZD1cIjY3OTBcIj5NZXRob2QgMzogSW1wcm92ZSBDQU0gc3RyYXRlZ2llczxcL2gzPlxuPHVsIGRhdGEtc3RhcnQ9XCI2NzkxXCIgZGF0YS1lbmQ9XCI3ODg1XCI+XG48bGkgZGF0YS1zdGFydD1cIjY3OTFcIiBkYXRhLWVuZD1cIjcwMTlcIj5cbjxwIGRhdGEtc3RhcnQ9XCI2NzkzXCIgZGF0YS1lbmQ9XCI3MDE5XCI+Rm9yIGhvbGVzIGluIGlzb2xhdGVkIGNvcHBlciBhcmVhcywgYXBwbHkgb25lIGV4dHJhIGluY3JlbWVudCBjb21wZW5zYXRpb24uIElzb2xhdGVkIGFyZWFzIGhhdmUgbGVzcyBjb3BwZXIsIHNvIGR1cmluZyBwbGF0aW5nIHRoZXkgZ2V0IGhpZ2hlciBsb2NhbCBjdXJyZW50IGRlbnNpdHkgYW5kIG1vcmUgY29wcGVyIHRoaWNrbmVzczsgZXh0cmEgY29tcGVuc2F0aW9uIG9mZnNldHMgdGhhdC48XC9wPlxuPFwvbGk+XG48bGkgZGF0YS1zdGFydD1cIjcwMjBcIiBkYXRhLWVuZD1cIjczNjFcIj5cbjxwIGRhdGEtc3RhcnQ9XCI3MDIyXCIgZGF0YS1lbmQ9XCI3MzYxXCI+Rm9yIGRlc2lnbnMgd2l0aCBkZW5zZSB0cmFjZXMgb24gb25lIHNpZGUgYW5kIHNwYXJzZSBvbiB0aGUgb3RoZXIgKGZvciBleGFtcGxlLCBhIHBvd2VyIGJvYXJkKSwgcGxhY2UgdGhlIHNwYXJzZSBzaWRlIGlud2FyZCBhbmQgdGhlIGRlbnNlIHNpZGUgb3V0d2FyZCwgYW5kIHVzZSByZXZlcnNlZCBwYW5lbGl6YXRpb24uIER1cmluZyBwYW5lbCBwbGF0aW5nLCBhcmVhcyBuZWFyIHRoZSBib2FyZCBlZGdlIGdldCBoaWdoZXIgY3VycmVudCBkZW5zaXR5IGFuZCB0aGlja2VyIHBsYXRpbmcuIFJldmVyc2VkIHBhbmVsaXphdGlvbiBoZWxwcyBiYWxhbmNlIHBsYXRpbmcgZGlzdHJpYnV0aW9uLjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiNzM2MlwiIGRhdGEtZW5kPVwiNzYxN1wiPlxuPHAgZGF0YS1zdGFydD1cIjczNjRcIiBkYXRhLWVuZD1cIjc2MTdcIj5XaGVuIFRPUCBhbmQgQk9UVE9NIGNvcHBlciBhcmVhIGRpZmZlciBhIGxvdCwgdXNlIHBvc2l0aXZlXC9uZWdhdGl2ZSAoeWluLXlhbmcpIHBhbmVsaW5nLiBVbmV2ZW4gY29wcGVyIGFyZWEgY2F1c2VzIFx1MjAxY2JlbGwtbW91dGhcdTIwMWQgdmlhczsgdGhlIHRoaWNrZXIgdGhlIGJvYXJkIGFuZCB0aGUgbW9yZSBjb3BwZXIsIHRoZSB3b3JzZSB0aGUgZWZmZWN0OyB5aW4teWFuZyBwYW5lbGluZyBoZWxwcyBiYWxhbmNlIGNvcHBlciBkaXN0cmlidXRpb24uPFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCI3NjE4XCIgZGF0YS1lbmQ9XCI3ODg1XCI+XG48cCBkYXRhLXN0YXJ0PVwiNzYyMFwiIGRhdGEtZW5kPVwiNzg4NVwiPkZvciBpc29sYXRlZC1hcmVhIGhvbGVzIG5lYXIgdGhlIGJvYXJkIGVkZ2Ugb3Igc2xvdHMsIGFkZCBjb3BwZXIgXHUyMDFjcGljay11cFx1MjAxZCBhcmVhcyBvciBjb3BwZXIgcGFkcyBuZWFyIHRoZSBlZGdlIG9yIHNsb3QuIElzb2xhdGVkIGhvbGVzIGNhbiBnZXQgdG9vIG11Y2ggcGxhdGluZyB0aGlja25lc3MgYW5kIGJlY29tZSB0b28gc21hbGw7IGV4dHJhIGNvcHBlciBuZWFyIHRoZW0gcmVkdWNlcyBsb2NhbCBjdXJyZW50IGRlbnNpdHkgYW5kIGJhbGFuY2VzIHBsYXRpbmcuPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48aHIgZGF0YS1zdGFydD1cIjc4ODdcIiBkYXRhLWVuZD1cIjc4OTBcIiBcLz5cbjxoMiBkYXRhLXN0YXJ0PVwiNzg5MlwiIGRhdGEtZW5kPVwiNzk1MlwiPjQuIEhvdyBtdWNoIGNvbXBlbnNhdGlvbiBpcyBuZWVkZWQgYW5kIGhvdyBpcyBpdCBkZXJpdmVkPzxcL2gyPlxuPHAgZGF0YS1zdGFydD1cIjc5NTRcIiBkYXRhLWVuZD1cIjgwODdcIj5Db21wZW5zYXRpb24gdmFsdWVzIGNvbWUgZnJvbSBwcm9jZXNzIHRlc3RzLiBCZWxvdyBpcyBvbmUgc2V0IG9mIG1lYXN1cmVkIGhvbGUgc2l6ZSBjaGFuZ2VzIGFmdGVyIHZhcmlvdXMgc3RlcHMgKGRhdGEgZnJvbSBhIHJlcG9ydCk6PFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCI4MDg5XCIgZGF0YS1lbmQ9XCI4MjEyXCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiODA4OVwiIGRhdGEtZW5kPVwiODEwNlwiPlByb2Nlc3MgZmxvdzo8XC9zdHJvbmc+IG1lY2hhbmljYWwgZHJpbGxpbmcgXHUyMTkyIGltbWVyc2lvbiBjb3BwZXIgXHUyMTkyIGVsZWN0cm9wbGF0aW5nIFx1MjE5MiBwYXR0ZXJuIHRyYW5zZmVyIFx1MjE5MiBldGNoIFx1MjE5MiBBT0kgXHUyMTkyIHdldCBmaWxtIFx1MjE5MiBIQVNMPFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCI4MjE0XCIgZGF0YS1lbmQ9XCI4MjM5XCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiODIxNFwiIGRhdGEtZW5kPVwiODIzN1wiPlByb2Nlc3MgcGFyYW1ldGVyczo8XC9zdHJvbmc+PFwvcD5cbjx1bCBkYXRhLXN0YXJ0PVwiODI0MFwiIGRhdGEtZW5kPVwiODUxNVwiPlxuPGxpIGRhdGEtc3RhcnQ9XCI4MjQwXCIgZGF0YS1lbmQ9XCI4MzMwXCI+XG48cCBkYXRhLXN0YXJ0PVwiODI0MlwiIGRhdGEtZW5kPVwiODMzMFwiPkRyaWxsOiBkcmlsbCBiaXQgc2l6ZSAwLjk1IG1tLCByZS1zaGFycGVuXC9yZWdyaW5kIDMgdGltZXMsIGRyaWxsIGNvbXBlbnNhdGlvbiAwLjE1IG1tOzxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiODMzMVwiIGRhdGEtZW5kPVwiODM4NlwiPlxuPHAgZGF0YS1zdGFydD1cIjgzMzNcIiBkYXRhLWVuZD1cIjgzODZcIj5QbGF0aW5nOiBjb3BwZXIgdGhpY2tuZXNzIFx1MjI2NSAxOCBcdTAwYjVtLCBhdmVyYWdlIFx1MjI2NSAyMCBcdTAwYjVtOzxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiODM4N1wiIGRhdGEtZW5kPVwiODQ1NlwiPlxuPHAgZGF0YS1zdGFydD1cIjgzODlcIiBkYXRhLWVuZD1cIjg0NTZcIj5IQVNMOiBmaW5hbCBob2xlIHJlcXVpcmVtZW50IDAuODAgbW0sIHRvbGVyYW5jZSBcdTAwYjEwLjA4IG1tICgzIG1pbCk7PFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCI4NDU3XCIgZGF0YS1lbmQ9XCI4NTE1XCI+XG48cCBkYXRhLXN0YXJ0PVwiODQ1OVwiIGRhdGEtZW5kPVwiODUxNVwiPlRlc3Q6IDEwIHBhbmVscywgY29ybmVyIHRyaW1tZWQsIGJvYXJkIHRoaWNrbmVzcyAyLjAgbW0uPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48aDMgZGF0YS1zdGFydD1cIjg1MTdcIiBkYXRhLWVuZD1cIjg1NDZcIj5Ib2xlIHNpemUgY2hhbmdlcyBieSBzdGVwPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiODU0OFwiIGRhdGEtZW5kPVwiODU5M1wiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjg1NDhcIiBkYXRhLWVuZD1cIjg1NjlcIj4xKSBBZnRlciBkcmlsbGluZzxcL3N0cm9uZz4gXHUyMDE0IGhvbGUgc2l6ZXMgbWVhc3VyZWQ8XC9wPlxuPHVsIGRhdGEtc3RhcnQ9XCI4NTk0XCIgZGF0YS1lbmQ9XCI4Nzk1XCI+XG48bGkgZGF0YS1zdGFydD1cIjg1OTRcIiBkYXRhLWVuZD1cIjg3OTVcIj5cbjxwIGRhdGEtc3RhcnQ9XCI4NTk2XCIgZGF0YS1lbmQ9XCI4Nzk1XCI+VG90YWwgMTkyMCBob2xlcyB0ZXN0ZWQgKDEwIHBhbmVscywgMzg0IGhvbGVzIGVhY2gpLiBTYW1wbGU6IDIwMCBob2xlcyAoMjAgcGVyIHBhbmVsKS4gSG9sZSByYW5nZTogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiODY5NVwiIGRhdGEtZW5kPVwiODcxMVwiPjAuOTNcdTIwMTMwLjk0IG1tPFwvc3Ryb25nPiwgYXZlcmFnZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI4NzIxXCIgZGF0YS1lbmQ9XCI4NzMzXCI+MC45MzEgbW08XC9zdHJvbmc+LjxiciBkYXRhLXN0YXJ0PVwiODczNFwiIGRhdGEtZW5kPVwiODczN1wiIFwvPihUaGVuIGEgbG9uZyBsaXN0IG9mIHNhbXBsZWQgdmFsdWVzLCBtb3N0bHkgMC45MyBvciAwLjk0Lik8XC9wPlxuPFwvbGk+XG48XC91bD5cbjxwIGRhdGEtc3RhcnQ9XCI4Nzk3XCIgZGF0YS1lbmQ9XCI4ODQ4XCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiODc5N1wiIGRhdGEtZW5kPVwiODg0NlwiPjIpIEFmdGVyIHBhdHRlcm5lZCBwbGF0aW5nIFx1MjAxNCBjb3BwZXIgdGhpY2tuZXNzPFwvc3Ryb25nPjxcL3A+XG48dWwgZGF0YS1zdGFydD1cIjg4NDlcIiBkYXRhLWVuZD1cIjg5OTlcIj5cbjxsaSBkYXRhLXN0YXJ0PVwiODg0OVwiIGRhdGEtZW5kPVwiODk5OVwiPlxuPHAgZGF0YS1zdGFydD1cIjg4NTFcIiBkYXRhLWVuZD1cIjg5OTlcIj5Gb3IgZWFjaCBwYW5lbCwgdGVzdCAxMCBob2xlcy4gQ29wcGVyIHRoaWNrbmVzcyByYW5nZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI4OTA1XCIgZGF0YS1lbmQ9XCI4OTE3XCI+MThcdTIwMTMzMSBcdTAwYjVtPFwvc3Ryb25nPiwgbWVldGluZyBcdTIyNjUxOCBcdTAwYjVtIGFuZCBhdmVyYWdlIFx1MjI2NTIwIFx1MDBiNW0uPGJyIGRhdGEtc3RhcnQ9XCI4OTUzXCIgZGF0YS1lbmQ9XCI4OTU2XCIgXC8+KFRoZW4gbWFueSBzYW1wbGUgY29wcGVyIHRoaWNrbmVzcyB2YWx1ZXMuKTxcL3A+XG48XC9saT5cbjxcL3VsPlxuPHAgZGF0YS1zdGFydD1cIjkwMDFcIiBkYXRhLWVuZD1cIjkwNDVcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MDAxXCIgZGF0YS1lbmQ9XCI5MDQzXCI+MykgQWZ0ZXIgcGF0dGVybmVkIHBsYXRpbmcgXHUyMDE0IGhvbGUgc2l6ZTxcL3N0cm9uZz48XC9wPlxuPHVsIGRhdGEtc3RhcnQ9XCI5MDQ2XCIgZGF0YS1lbmQ9XCI5MTc2XCI+XG48bGkgZGF0YS1zdGFydD1cIjkwNDZcIiBkYXRhLWVuZD1cIjkxNzZcIj5cbjxwIGRhdGEtc3RhcnQ9XCI5MDQ4XCIgZGF0YS1lbmQ9XCI5MTc2XCI+VG90YWwgMTkyMCBob2xlcywgc2FtcGxlIDIwMC4gSG9sZSByYW5nZTogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTA5MFwiIGRhdGEtZW5kPVwiOTEwNlwiPjAuODRcdTIwMTMwLjg4IG1tPFwvc3Ryb25nPiwgYXZlcmFnZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MTE2XCIgZGF0YS1lbmQ9XCI5MTI4XCI+MC44NTggbW08XC9zdHJvbmc+LjxiciBkYXRhLXN0YXJ0PVwiOTEyOVwiIGRhdGEtZW5kPVwiOTEzMlwiIFwvPihUaGVuIG1hbnkgc2FtcGxlIHZhbHVlcywgbW9zdGx5IDAuODVcdTIwMTMwLjg4Lik8XC9wPlxuPFwvbGk+XG48XC91bD5cbjxwIGRhdGEtc3RhcnQ9XCI5MTc4XCIgZGF0YS1lbmQ9XCI5MjA5XCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTE3OFwiIGRhdGEtZW5kPVwiOTE5NVwiPjQpIEFmdGVyIEhBU0w8XC9zdHJvbmc+IFx1MjAxNCBob2xlIHNpemU8XC9wPlxuPHVsIGRhdGEtc3RhcnQ9XCI5MjEwXCIgZGF0YS1lbmQ9XCI5MzIyXCI+XG48bGkgZGF0YS1zdGFydD1cIjkyMTBcIiBkYXRhLWVuZD1cIjkzMjJcIj5cbjxwIGRhdGEtc3RhcnQ9XCI5MjEyXCIgZGF0YS1lbmQ9XCI5MzIyXCI+VG90YWwgMTkyMCBob2xlcywgc2FtcGxlIDIwMC4gSG9sZSByYW5nZTogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTI1NFwiIGRhdGEtZW5kPVwiOTI3MFwiPjAuODJcdTIwMTMwLjg2IG1tPFwvc3Ryb25nPiwgYXZlcmFnZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MjgwXCIgZGF0YS1lbmQ9XCI5MjkyXCI+MC44MzYgbW08XC9zdHJvbmc+LjxiciBkYXRhLXN0YXJ0PVwiOTI5M1wiIGRhdGEtZW5kPVwiOTI5NlwiIFwvPihUaGVuIG1hbnkgc2FtcGxlIHZhbHVlcy4pPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48cCBkYXRhLXN0YXJ0PVwiOTMyNFwiIGRhdGEtZW5kPVwiOTM0MFwiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjkzMjRcIiBkYXRhLWVuZD1cIjkzNDBcIj5UZXN0IHN1bW1hcnk8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJUeWFnR1dfdGFibGVDb250YWluZXJcIj5cbjxkaXYgY2xhc3M9XCJncm91cCBUeWFnR1dfdGFibGVXcmFwcGVyIGZsZXggdy1maXQgZmxleC1jb2wtcmV2ZXJzZVwiIHRhYmluZGV4PVwiLTFcIj5cbjx0YWJsZSBjbGFzcz1cInctZml0IG1pbi13LSgtLXRocmVhZC1jb250ZW50LXdpZHRoKVwiIGRhdGEtc3RhcnQ9XCI5MzQyXCIgZGF0YS1lbmQ9XCI5NTMxXCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjkzNDJcIiBkYXRhLWVuZD1cIjkzNzhcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiOTM0MlwiIGRhdGEtZW5kPVwiOTM3OFwiPlxuPHRoIGRhdGEtc3RhcnQ9XCI5MzQyXCIgZGF0YS1lbmQ9XCI5MzQ5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+U3RlcDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5MzQ5XCIgZGF0YS1lbmQ9XCI5MzYyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+SG9sZSByYW5nZTxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5MzYyXCIgZGF0YS1lbmQ9XCI5Mzc4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QXZlcmFnZSBob2xlPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5IGRhdGEtc3RhcnQ9XCI5Mzk1XCIgZGF0YS1lbmQ9XCI5NTMxXCI+XG48dHIgZGF0YS1zdGFydD1cIjkzOTVcIiBkYXRhLWVuZD1cIjk0MzlcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiOTM5NVwiIGRhdGEtZW5kPVwiOTQxMlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkFmdGVyIGRyaWxsaW5nPFwvdGQ+XG48dGQgZGF0YS1zdGFydD1cIjk0MTJcIiBkYXRhLWVuZD1cIjk0MjdcIiBkYXRhLWNvbC1zaXplPVwic21cIj4wLjkzXHUyMDEzMC45NCBtbTxcL3RkPlxuPHRkIGRhdGEtc3RhcnQ9XCI5NDI3XCIgZGF0YS1lbmQ9XCI5NDM5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MC45MzEgbW08XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCI5NDQwXCIgZGF0YS1lbmQ9XCI5NDkwXCI+XG48dGQgZGF0YS1zdGFydD1cIjk0NDBcIiBkYXRhLWVuZD1cIjk0NjNcIiBkYXRhLWNvbC1zaXplPVwic21cIj5BZnRlciBjb3BwZXIgcGxhdGluZzxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI5NDYzXCIgZGF0YS1lbmQ9XCI5NDc4XCI+MC44NFx1MjAxMzAuODggbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiOTQ3OFwiIGRhdGEtZW5kPVwiOTQ5MFwiPjAuODU4IG1tPFwvdGQ+XG48XC90cj5cbjx0ciBkYXRhLXN0YXJ0PVwiOTQ5MVwiIGRhdGEtZW5kPVwiOTUzMVwiPlxuPHRkIGRhdGEtc3RhcnQ9XCI5NDkxXCIgZGF0YS1lbmQ9XCI5NTA0XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QWZ0ZXIgSEFTTDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI5NTA0XCIgZGF0YS1lbmQ9XCI5NTE5XCI+MC44Mlx1MjAxMzAuODYgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiOTUxOVwiIGRhdGEtZW5kPVwiOTUzMVwiPjAuODM2IG1tPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+XG48XC9kaXY+XG48XC9kaXY+XG48cCBkYXRhLXN0YXJ0PVwiOTUzM1wiIGRhdGEtZW5kPVwiOTcyM1wiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjk1MzNcIiBkYXRhLWVuZD1cIjk1NDhcIj5Db25jbHVzaW9uOjxcL3N0cm9uZz4gRm9yIEhBU0wgYm9hcmRzIHRoZSBkcmlsbCBjb21wZW5zYXRpb24gb2YgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTU5MVwiIGRhdGEtZW5kPVwiOTYwMlwiPjAuMTUgbW08XC9zdHJvbmc+IGlzIGFuIFx1MjAxY292ZXItY29tcGVuc2F0aW9uXHUyMDFkIGFuZCBjYXVzZXMgZmluYWwgaG9sZXMgdG8gYmUgbGFyZ2VyLiBUaGUgYmVzdCBjb21wZW5zYXRpb24gdmFsdWUgaW4gdGhpcyB0ZXN0IGlzIDxzdHJvbmcgZGF0YS1zdGFydD1cIjk3MTBcIiBkYXRhLWVuZD1cIjk3MjJcIj4wLjEyNSBtbTxcL3N0cm9uZz4uPFwvcD5cbjxociBkYXRhLXN0YXJ0PVwiOTcyNVwiIGRhdGEtZW5kPVwiOTcyOFwiIFwvPlxuPGgyPjUuIERyaWxsIGNvbXBlbnNhdGlvbiBjb2RlIGltcGxlbWVudGF0aW9uIChydWxlcyk8XC9oMj5cbjxvbCBkYXRhLXN0YXJ0PVwiOTc4NFwiIGRhdGEtZW5kPVwiOTgxN1wiPlxuPGxpIGRhdGEtc3RhcnQ9XCI5Nzg0XCIgZGF0YS1lbmQ9XCI5ODE3XCI+XG48cCBkYXRhLXN0YXJ0PVwiOTc4N1wiIGRhdGEtZW5kPVwiOTgxN1wiPkNvbXBlbnNhdGlvbiBhbmQgc3RlcC11cCBydWxlczxcL3A+XG48XC9saT5cbjxcL29sPlxuPGRpdiBjbGFzcz1cIlR5YWdHV190YWJsZUNvbnRhaW5lclwiPlxuPGRpdiBjbGFzcz1cImdyb3VwIFR5YWdHV190YWJsZVdyYXBwZXIgZmxleCB3LWZpdCBmbGV4LWNvbC1yZXZlcnNlXCIgdGFiaW5kZXg9XCItMVwiPlxuPHRhYmxlIGNsYXNzPVwidy1maXQgbWluLXctKC0tdGhyZWFkLWNvbnRlbnQtd2lkdGgpXCIgZGF0YS1zdGFydD1cIjk4MTlcIiBkYXRhLWVuZD1cIjEwODQzXCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjk4MTlcIiBkYXRhLWVuZD1cIjk5NjhcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiOTgxOVwiIGRhdGEtZW5kPVwiOTk2OFwiPlxuPHRoIGRhdGEtc3RhcnQ9XCI5ODE5XCIgZGF0YS1lbmQ9XCI5ODI4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QXNwZWN0PFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk4MjhcIiBkYXRhLWVuZD1cIjk4NDRcIiBkYXRhLWNvbC1zaXplPVwic21cIj5GaW5pc2hlZCBob2xlPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk4NDRcIiBkYXRhLWVuZD1cIjk4NjFcIiBkYXRhLWNvbC1zaXplPVwic21cIj5TdXJmYWNlIGZpbmlzaDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5ODYxXCIgZGF0YS1lbmQ9XCI5ODc5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Qm9hcmQgdGhpY2tuZXNzPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk4NzlcIiBkYXRhLWVuZD1cIjk4OTlcIiBkYXRhLWNvbC1zaXplPVwic21cIj5TdGVwLXVwIHRocmVzaG9sZDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5ODk5XCIgZGF0YS1lbmQ9XCI5OTIzXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+SWYgdmlhIGNvcHBlciAmbHQ7IDI2IFx1MDBiNW08XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiOTkyM1wiIGRhdGEtZW5kPVwiOTkzNFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjI2XHUyMDEzMzcgXHUwMGI1bTxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5OTM0XCIgZGF0YS1lbmQ9XCI5OTQ1XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MzdcdTIwMTM0NyBcdTAwYjVtPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk5NDVcIiBkYXRhLWVuZD1cIjk5NTZcIiBkYXRhLWNvbC1zaXplPVwic21cIj40N1x1MjAxMzY3IFx1MDBiNW08XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiOTk1NlwiIGRhdGEtZW5kPVwiOTk2OFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjY3XHUyMDEzODYgXHUwMGI1bTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keSBkYXRhLXN0YXJ0PVwiMTAwMThcIiBkYXRhLWVuZD1cIjEwODQzXCI+XG48dHIgZGF0YS1zdGFydD1cIjEwMDE4XCIgZGF0YS1lbmQ9XCIxMDE0NlwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIxMDAxOFwiIGRhdGEtZW5kPVwiMTAwNDNcIiBkYXRhLWNvbC1zaXplPVwic21cIj50aGlja25lc3MgcmF0aW8gJmx0OyAxMjoxPFwvdGQ+XG48dGQgZGF0YS1zdGFydD1cIjEwMDQzXCIgZGF0YS1lbmQ9XCIxMDA1NVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPlx1MjI2NCAxLjkwIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMDU1XCIgZGF0YS1lbmQ9XCIxMDA4NFwiPkhBU0wgKGxlYWRlZCBvciBsZWFkLWZyZWUpPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMDg0XCIgZGF0YS1lbmQ9XCIxMDA5NVwiPlx1MjI2NSAzLjUgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAwOTVcIiBkYXRhLWVuZD1cIjEwMTA1XCI+MC4wMTk1MjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEwNVwiIGRhdGEtZW5kPVwiMTAxMTNcIj41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDExM1wiIGRhdGEtZW5kPVwiMTAxMjFcIj42IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEyMVwiIGRhdGEtZW5kPVwiMTAxMjlcIj43IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEyOVwiIGRhdGEtZW5kPVwiMTAxMzdcIj44IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEzN1wiIGRhdGEtZW5kPVwiMTAxNDZcIj45IG1pbDxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjEwMTQ3XCIgZGF0YS1lbmQ9XCIxMDI4NVwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIxMDE0N1wiIGRhdGEtZW5kPVwiMTAxNzJcIiBkYXRhLWNvbC1zaXplPVwic21cIj50aGlja25lc3MgcmF0aW8gJmx0OyAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMTcyXCIgZGF0YS1lbmQ9XCIxMDE4NFwiPlx1MjI2NCAxLjkwIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMTg0XCIgZGF0YS1lbmQ9XCIxMDIxM1wiPkhBU0wgKGxlYWRlZCBvciBsZWFkLWZyZWUpPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMjEzXCIgZGF0YS1lbmQ9XCIxMDIyNFwiPiZsdDsgMy41IG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMjI0XCIgZGF0YS1lbmQ9XCIxMDIzNFwiPjAuMDE5NTI8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAyMzRcIiBkYXRhLWVuZD1cIjEwMjQ0XCI+NC41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDI0NFwiIGRhdGEtZW5kPVwiMTAyNTRcIj41LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMjU0XCIgZGF0YS1lbmQ9XCIxMDI2NFwiPjYuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAyNjRcIiBkYXRhLWVuZD1cIjEwMjc0XCI+Ny41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDI3NFwiIGRhdGEtZW5kPVwiMTAyODVcIj44LjUgbWlsPFwvdGQ+XG48XC90cj5cbjx0ciBkYXRhLXN0YXJ0PVwiMTAyODZcIiBkYXRhLWVuZD1cIjEwMzk1XCI+XG48dGQgZGF0YS1zdGFydD1cIjEwMjg2XCIgZGF0YS1lbmQ9XCIxMDMxMVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPnRoaWNrbmVzcyByYXRpbyAmbHQ7IDEyOjE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzMTFcIiBkYXRhLWVuZD1cIjEwMzIzXCI+XHUyMjY0IDEuOTAgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzMjNcIiBkYXRhLWVuZD1cIjEwMzQwXCI+T3RoZXIgZmluaXNoZXM8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzNDBcIiBkYXRhLWVuZD1cIjEwMzQ0XCI+XC88XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzNDRcIiBkYXRhLWVuZD1cIjEwMzU0XCI+MC4wMTk1MjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM1NFwiIGRhdGEtZW5kPVwiMTAzNjJcIj40IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM2MlwiIGRhdGEtZW5kPVwiMTAzNzBcIj41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM3MFwiIGRhdGEtZW5kPVwiMTAzNzhcIj42IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM3OFwiIGRhdGEtZW5kPVwiMTAzODZcIj43IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM4NlwiIGRhdGEtZW5kPVwiMTAzOTVcIj44IG1pbDxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjEwMzk2XCIgZGF0YS1lbmQ9XCIxMDUwNFwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIxMDM5NlwiIGRhdGEtZW5kPVwiMTA0MjFcIiBkYXRhLWNvbC1zaXplPVwic21cIj50aGlja25lc3MgcmF0aW8gJmx0OyAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDIxXCIgZGF0YS1lbmQ9XCIxMDQzM1wiPiZndDsgMS45MCBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDQzM1wiIGRhdGEtZW5kPVwiMTA0NDBcIj5IQVNMPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDQwXCIgZGF0YS1lbmQ9XCIxMDQ0NFwiPlwvPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDQ0XCIgZGF0YS1lbmQ9XCIxMDQ1M1wiPjAuMDI0NjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDQ1M1wiIGRhdGEtZW5kPVwiMTA0NjNcIj41LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDYzXCIgZGF0YS1lbmQ9XCIxMDQ3M1wiPjYuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA0NzNcIiBkYXRhLWVuZD1cIjEwNDgzXCI+Ny41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDQ4M1wiIGRhdGEtZW5kPVwiMTA0OTNcIj44LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDkzXCIgZGF0YS1lbmQ9XCIxMDUwNFwiPjkuNSBtaWw8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCIxMDUwNVwiIGRhdGEtZW5kPVwiMTA2MjRcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMTA1MDVcIiBkYXRhLWVuZD1cIjEwNTMwXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+dGhpY2tuZXNzIHJhdGlvICZsdDsgMTI6MTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDUzMFwiIGRhdGEtZW5kPVwiMTA1NDJcIj4mZ3Q7IDEuOTAgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1NDJcIiBkYXRhLWVuZD1cIjEwNTU5XCI+T3RoZXIgZmluaXNoZXM8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1NTlcIiBkYXRhLWVuZD1cIjEwNTYzXCI+XC88XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1NjNcIiBkYXRhLWVuZD1cIjEwNTczXCI+MC4wMTk1MjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDU3M1wiIGRhdGEtZW5kPVwiMTA1ODNcIj40LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNTgzXCIgZGF0YS1lbmQ9XCIxMDU5M1wiPjUuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1OTNcIiBkYXRhLWVuZD1cIjEwNjAzXCI+Ni41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDYwM1wiIGRhdGEtZW5kPVwiMTA2MTNcIj43LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjEzXCIgZGF0YS1lbmQ9XCIxMDYyNFwiPjguNSBtaWw8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCIxMDYyNVwiIGRhdGEtZW5kPVwiMTA3MzNcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMTA2MjVcIiBkYXRhLWVuZD1cIjEwNjUwXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+dGhpY2tuZXNzIHJhdGlvIFx1MjI2NSAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjUwXCIgZGF0YS1lbmQ9XCIxMDY2MlwiPmFsbCBob2xlczxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDY2MlwiIGRhdGEtZW5kPVwiMTA2NjlcIj5IQVNMPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjY5XCIgZGF0YS1lbmQ9XCIxMDY3M1wiPlwvPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjczXCIgZGF0YS1lbmQ9XCIxMDY4MlwiPjAuMDI0NjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDY4MlwiIGRhdGEtZW5kPVwiMTA2OTJcIj41LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjkyXCIgZGF0YS1lbmQ9XCIxMDcwMlwiPjYuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA3MDJcIiBkYXRhLWVuZD1cIjEwNzEyXCI+Ny41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDcxMlwiIGRhdGEtZW5kPVwiMTA3MjJcIj44LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNzIyXCIgZGF0YS1lbmQ9XCIxMDczM1wiPjkuNSBtaWw8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCIxMDczNFwiIGRhdGEtZW5kPVwiMTA4NDNcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMTA3MzRcIiBkYXRhLWVuZD1cIjEwNzU5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+dGhpY2tuZXNzIHJhdGlvIFx1MjI2NSAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNzU5XCIgZGF0YS1lbmQ9XCIxMDc3MVwiPmFsbCBob2xlczxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDc3MVwiIGRhdGEtZW5kPVwiMTA3ODhcIj5PdGhlciBmaW5pc2hlczxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDc4OFwiIGRhdGEtZW5kPVwiMTA3OTJcIj5cLzxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDc5MlwiIGRhdGEtZW5kPVwiMTA4MDJcIj4wLjAxOTUyPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODAyXCIgZGF0YS1lbmQ9XCIxMDgxMFwiPjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODEwXCIgZGF0YS1lbmQ9XCIxMDgxOFwiPjYgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODE4XCIgZGF0YS1lbmQ9XCIxMDgyNlwiPjcgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODI2XCIgZGF0YS1lbmQ9XCIxMDgzNFwiPjggbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODM0XCIgZGF0YS1lbmQ9XCIxMDg0M1wiPjkgbWlsPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+XG48XC9kaXY+XG48XC9kaXY+XG48b2wgc3RhcnQ9XCIyXCIgZGF0YS1zdGFydD1cIjEwODQ1XCIgZGF0YS1lbmQ9XCIxMDk1M1wiPlxuPGxpIGRhdGEtc3RhcnQ9XCIxMDg0NVwiIGRhdGEtZW5kPVwiMTA5NTNcIj5cbjxwIGRhdGEtc3RhcnQ9XCIxMDg0OFwiIGRhdGEtZW5kPVwiMTA5NTNcIj5TcGVjaWFsIGRyaWxsIHNpemVzIChpZiB0b2xlcmFuY2UgJmx0OyAzIG1pbCwgdXNlIHNwZWNpYWwgZHJpbGxzIG9yIDI1IFx1MDBiNW0gaW5jcmVtZW50LCB1c2UgbmVhcmVzdCBkcmlsbCBydWxlKTxcL3A+XG48XC9saT5cbjxcL29sPiIsImRpc3BsYXlfY29uZGl0aW9uX2xpc3QiOlt7ImRpc3BsYXlfY29uZGl0aW9uX2xvZ2luX3N0YXR1cyI6InN1YnNjcmliZXIiLCJfaWQiOiJhNGZkODYwIn1dfSwiZWxlbWVudHMiOltdLCJ3aWRnZXRUeXBlIjoidGV4dC1lZGl0b3IifQ==\\\"]\\t\\t<div class=\\\"elementor-element elementor-element-f7e142f elementor-widget elementor-widget-code-highlight\\\" data-id=\\\"f7e142f\\\" data-element_type=\\\"widget\\\" data-e-type=\\\"widget\\\" data-widget_type=\\\"code-highlight.default\\\">\\n\\t\\t\\t\\t<div class=\\\"elementor-widget-container\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"prismjs-default copy-to-clipboard \\\">\\n\\t\\t\\t<pre data-line=\\\"\\\" class=\\\"highlight-height language-aspnet line-numbers\\\">\\n\\t\\t\\t\\t<code readonly=\\\"true\\\" class=\\\"language-aspnet\\\">\\n\\t\\t\\t\\t\\t<xmp>List<double> ContainDrillToolList = new List<double>();\\r\\nContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });<\\\/xmp>\\n\\t\\t\\t\\t<\\\/code>\\n\\t\\t\\t<\\\/pre>\\n\\t\\t<\\\/div>\\n\\t\\t\\t\\t\\t\\t<\\\/div>\\n\\t\\t\\t\\t<\\\/div>\\n\\t\\t[elementor-element k=\\\"0e46bd9387093ca73b9000e38f18cce4\\\" data=\\\"eyJpZCI6ImVjNTQyNGIiLCJlbFR5cGUiOiJ3aWRnZXQiLCJzZXR0aW5ncyI6eyJlZGl0b3IiOiI8cD4zLiBEcmlsbCBDb21wZW5zYXRpb24gQ29kZTxcL3A+IiwiZGlzcGxheV9jb25kaXRpb25fbGlzdCI6W3siZGlzcGxheV9jb25kaXRpb25fbG9naW5fc3RhdHVzIjoic3Vic2NyaWJlciIsIl9pZCI6IjE3YzczOTMifV19LCJlbGVtZW50cyI6W10sIndpZGdldFR5cGUiOiJ0ZXh0LWVkaXRvciJ9\\\"]\\t\\t<div class=\\\"elementor-element elementor-element-3dfeb51 elementor-widget elementor-widget-code-highlight\\\" data-id=\\\"3dfeb51\\\" data-element_type=\\\"widget\\\" data-e-type=\\\"widget\\\" data-widget_type=\\\"code-highlight.default\\\">\\n\\t\\t\\t\\t<div class=\\\"elementor-widget-container\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"prismjs-default copy-to-clipboard \\\">\\n\\t\\t\\t<pre data-line=\\\"\\\" class=\\\"highlight-height language-csharp line-numbers\\\">\\n\\t\\t\\t\\t<code readonly=\\\"true\\\" class=\\\"language-csharp\\\">\\n\\t\\t\\t\\t\\t<xmp>\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Calculate the drill bit diameter based on drill compensation parameters\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\n\\\/\\\/\\\/<param name=\\\"ToolInfo\\\">Drill tool basic information<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"UpParam\\\">Drill compensation parameters<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"ContainDrillToolList\\\">Special drill bit diameter list<\\\/param>\\r\\n\\\/\\\/\\\/<returns>Return 1 if calculation is successful<\\\/returns>\\r\\npublic static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List<double> ContainDrillToolList)\\r\\n{\\r\\n    if (ContainDrillToolList == null) ContainDrillToolList = new List<double>();\\r\\n    gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();\\r\\n    switch (ToolInfo.type)\\r\\n    {\\r\\n        case \\\"via\\\":\\r\\n            UpParamHole = UpParam.Via;\\r\\n            break;\\r\\n        case \\\"plate\\\":\\r\\n            UpParamHole = UpParam.Pth;\\r\\n            break;\\r\\n        case \\\"nplate\\\":\\r\\n            UpParamHole = UpParam.Npth;\\r\\n            break;\\r\\n    }\\r\\n    ToolInfo.max_tol = Math.Round(UpParamHole.Max_Tol, 0);\\r\\n    ToolInfo.min_tol = Math.Round(UpParamHole.Min_Tol, 0);\\r\\n    if (ToolInfo.finish_size < 50)\\r\\n    {\\r\\n        ToolInfo.finish_size = ToolInfo.drill_size;\\r\\n    }\\r\\n    double DrillSlotLevel = (ToolInfo.shape == \\\"slot\\\") ? UpParam.SlotLevel : UpParam.DrillLevel;  \\\/\\\/Drill step interval: Round holes have two levels (25\\\/50\\u03bcm), slot holes have one level (50\\u03bcm)\\r\\n    double UpLevel;\\r\\n    if (UpParam.DrillLevel > 49) \\\/\\\/When the step interval is 50\\u03bcm, do not use special drill bits\\r\\n    {\\r\\n        ContainDrillToolList = new List<double>();\\r\\n        UpLevel = UpParamHole.UpLevel;\\r\\n    }\\r\\n    else\\r\\n    {\\r\\n        UpLevel = UpParam.DrillLevel * 0.5;   \\\/\\\/Select drill bit by half of the step interval\\r\\n    }\\r\\n\\r\\n    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) \\\/ DrillSlotLevel)); \\\/\\\/Drill step count\\r\\n    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step\\r\\n    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;\\\/\\\/Remainder of drill size after step division\\r\\n    double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n\\r\\n    \\\/\\\/Check if special drill bits are included\\r\\n    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt \\\/ DrillSlotLevel)) == DrillLevelCount);\\r\\n    if (ContainDrillIndex > -1)\\r\\n    {\\r\\n        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;\\\/\\\/Remainder of special drill bit size after step division\\r\\n        if (DrillsizeFloat > UpLevel) \\\/\\\/ e.g. 38 > 20\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel);   \\\/\\\/e.g. 40-50\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 40-38\\r\\n            DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;\\r\\n        }\\r\\n        else \\\/\\\/if (ContainDrillFloat < UpLevel)\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - 0);  \\\/\\\/e.g. 12-0\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 12-16\\r\\n            DrillsizeLevel = (diff1 < diff2) ? 0 : ContainDrillFloat;\\r\\n        }\\r\\n    }\\r\\n    ToolInfo.drill_size = DrillsizeInt + DrillsizeLevel;\\r\\n\\r\\n    double DiffDrillSizeUp = ToolInfo.drill_size - ToolInfo.finish_size;\\r\\n    if (ToolInfo.shape == \\\"slot\\\") \\\/\\\/ Slot length compensation\\r\\n    {\\r\\n        if (UpParam.isSlotUpLevel) \\\/\\\/Whether to round the slot length to step interval\\r\\n        {\\r\\n            Drillfinish_size = ToolInfo.slot_len + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n            DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) \\\/ DrillSlotLevel)); \\\/\\\/ Drill step count\\r\\n            DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step (50\\u03bcm)\\r\\n            DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) % DrillSlotLevel;\\\/\\\/Remainder of slot length after step division\\r\\n            DrillsizeLevel = (DrillsizeFloat > UpParamHole.UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;\\r\\n        }\\r\\n        else\\r\\n        {\\r\\n            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) \\\/ 10) * 10; \\\/\\\/ Round down to the nearest 10\\u03bcm\\r\\n            ToolInfo.slot_len = DrillsizeInt;\\r\\n        }\\r\\n        ToolInfo.drill_size += UpParam.SlotEndNumber;  \\\/\\\/ Add suffix number for slot drill bit segmentation\\r\\n    }\\r\\n    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();\\r\\n    return 1;\\r\\n}\\r\\n\\r\\npublic class gToolUpParam\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for VIA holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for PTH (Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for NPTH (Non-Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for round drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double DrillLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for slot drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Suffix number for slot drill bit segmentation\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public int SlotEndNumber { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Additional compensation value for slot length (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLengthUp { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Whether to round the slot length to step interval\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public bool isSlotUpLevel { get; set; } = false;\\r\\n}\\r\\n\\r\\npublic class gToolUpParamHole\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation value (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpVal { get; set; } = 100;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval threshold for rounding up (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpLevel { get; set; } = 25;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Max_Tol { get; set; } = 76;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Min_Tol { get; set; } = 76;\\r\\n}\\r\\n\\r\\n\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Mod_tool: Drill tool attribute model\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\npublic class Mod_tool\\r\\n{\\r\\n    public int num { get; set; }\\r\\n    public string type { get; set; } \\\/\\\/ Hole type: via\\\/plate(nplate)\\r\\n    public string shape { get; set; } \\\/\\\/ Hole shape: round\\\/slot\\r\\n    public double finish_size { get; set; } \\\/\\\/ Finished hole size (in \\u03bcm)\\r\\n    public double drill_size { get; set; } \\\/\\\/ Drill bit size (in \\u03bcm)\\r\\n    public double max_tol { get; set; } \\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    public double min_tol { get; set; } \\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    public double slot_len { get; set; } \\\/\\\/ Slot length (in \\u03bcm)\\r\\n    public string bit { get; set; } \\\/\\\/ Drill bit size (in mm, formatted string)\\r\\n}<\\\/xmp>\\n\\t\\t\\t\\t<\\\/code>\\n\\t\\t\\t<\\\/pre>\\n\\t\\t<\\\/div>\\n\\t\\t\\t\\t\\t\\t<\\\/div>\\n\\t\\t\\t\\t<\\\/div>\\n\\t\\t[elementor-element k=\\\"0e46bd9387093ca73b9000e38f18cce4\\\" data=\\\"eyJpZCI6IjU3OGViMjYiLCJlbFR5cGUiOiJ3aWRnZXQiLCJzZXR0aW5ncyI6eyJlZGl0b3IiOiI8aDIgZGF0YS1zdGFydD1cIjEwOTYwXCIgZGF0YS1lbmQ9XCIxMTAxN1wiPjYuIFdoeSBkb2VzIGJvYXJkIHRoaWNrbmVzcyBhZmZlY3QgZHJpbGwgY29tcGVuc2F0aW9uPzxcL2gyPlxuPHAgZGF0YS1zdGFydD1cIjExMDE5XCIgZGF0YS1lbmQ9XCIxMTQ2NFwiPkkgZGlkIG5vdCB1bmRlcnN0YW5kIHRoaXMgYXQgZmlyc3QgZWl0aGVyLiBUaGUgbWFpbiByZWFzb24gaXMgdGhlIGhpZ2ggPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTEwOTBcIiBkYXRhLWVuZD1cIjExMTIxXCI+dGhpY2tuZXNzLXRvLWRpYW1ldGVyIHJhdGlvPFwvc3Ryb25nPiAoYm9hcmQgdGhpY2tuZXNzIGRpdmlkZWQgYnkgaG9sZSBkaWFtZXRlcikuIEEgaGlnaCByYXRpbyBtYWtlcyB0aGUgY29wcGVyIGF0IHRoZSBob2xlIGNlbnRlciB0aGlubmVyIGFuZCB0aGUgY29wcGVyIGF0IHRoZSBob2xlIGVkZ2UgdGhpY2tlci4gVG8gY29tcHV0ZSB0aGUgdGhpY2tuZXNzLXRvLWRpYW1ldGVyIHJhdGlvIHlvdSBuZWVkIHRoZSBib2FyZCB0aGlja25lc3MgdmFsdWUuIFNvIGJvYXJkIHRoaWNrbmVzcyBlbnRlcnMgdGhlIGRyaWxsIGNvbXBlbnNhdGlvbiBydWxlcy4gRm9yIGhpZ2ggdGhpY2tuZXNzLXRvLWRpYW1ldGVyIGhvbGVzLCB0aGUgY29tcGVuc2F0aW9uIGlzIGxhcmdlci48XC9wPiIsImRpc3BsYXlfY29uZGl0aW9uX2xpc3QiOlt7ImRpc3BsYXlfY29uZGl0aW9uX2xvZ2luX3N0YXR1cyI6InN1YnNjcmliZXIiLCJfaWQiOiI3MTVjNjlhIn1dfSwiZWxlbWVudHMiOltdLCJ3aWRnZXRUeXBlIjoidGV4dC1lZGl0b3IifQ==\\\"]\\t\\t\\t<\\\/div>\\n\\t\\t\\t\\t<\\\/div>\\n\\t\\t\",\"scripts\":[],\"styles\":[]}}"]},"uagb_featured_image_src":{"full":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"thumbnail":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-150x150.webp",150,150,true],"medium":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-300x200.webp",300,200,true],"medium_large":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-768x512.webp",768,512,true],"large":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"1536x1536":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"2048x2048":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"trp-custom-language-flag":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-18x12.webp",18,12,true]},"uagb_author_info":{"display_name":"Philifast","author_link":"https:\/\/flj-pcb.com\/da\/author\/2475017442jygmail-com\/"},"uagb_comment_info":1,"uagb_excerpt":"There are no great individuals, only great teams. With the team working together, the first-stage PCB CAM automation project for [&hellip;]","_links":{"self":[{"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/posts\/4575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/comments?post=4575"}],"version-history":[{"count":5,"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/posts\/4575\/revisions"}],"predecessor-version":[{"id":4582,"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/posts\/4575\/revisions\/4582"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/media\/4584"}],"wp:attachment":[{"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/media?parent=4575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/categories?post=4575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flj-pcb.com\/da\/wp-json\/wp\/v2\/tags?post=4575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}