[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"guide-api-key-management":3,"related-api-key-management":984},{"id":4,"title":5,"body":6,"category":974,"description":975,"draft":976,"extension":977,"icon":978,"meta":979,"navigation":261,"order":360,"path":980,"seo":981,"stem":982,"__hash__":983},"guides\u002Fguides\u002Fapi-key-management.md","Managing API Keys for Development, Staging, and Production",{"type":7,"value":8,"toc":958},"minimark",[9,13,16,21,30,59,62,68,72,75,86,89,159,162,166,169,174,181,205,208,365,368,412,416,421,433,439,611,615,624,650,657,676,680,683,709,712,716,719,723,726,750,753,849,852,856,859,862,865,869,872,888,894,900,906,912,916,954],[10,11,12],"p",{},"Most API integrations span multiple environments-local development, a staging server, and production. Using a single API key across all three creates problems: one accidental revocation takes everything down, you can't track which environment is generating traffic, and debugging becomes harder when all requests look identical in the logs.",[10,14,15],{},"Township Canada lets you create unlimited API keys on paid plans. The recommended approach is one key per environment, per project.",[17,18,20],"h2",{"id":19},"creating-api-keys","Creating API keys",[10,22,23,24,29],{},"API keys are managed from the ",[25,26,28],"a",{"href":27},"\u002Fapp\u002Fapi","Developer Portal",". To create a new key:",[31,32,33,42,48,51,56],"ol",{},[34,35,36,37,41],"li",{},"Go to ",[38,39,40],"strong",{},"API"," in the main navigation",[34,43,44,45],{},"Click ",[38,46,47],{},"+ Add Key",[34,49,50],{},"Enter a descriptive name (see naming conventions below)",[34,52,44,53],{},[38,54,55],{},"Create",[34,57,58],{},"Copy the key immediately - it will not be shown again",[10,60,61],{},"Each key displays its name, creation date, and last-used timestamp. Keys can be revoked individually without affecting any other key on your account.",[63,64,65],"warning",{},[10,66,67],{},"Copy your key before closing the dialog. Township Canada does not store the full key value after creation. If you lose it, revoke the key and create a new one.",[17,69,71],{"id":70},"naming-conventions","Naming conventions",[10,73,74],{},"A consistent naming pattern makes it easy to identify keys at a glance, especially once you have several. Use the format:",[76,77,82],"pre",{"className":78,"code":80,"language":81},[79],"language-text","{Environment} - {Project} {Version}\n","text",[83,84,80],"code",{"__ignoreMap":85},"",[10,87,88],{},"Examples:",[90,91,92,105],"table",{},[93,94,95],"thead",{},[96,97,98,102],"tr",{},[99,100,101],"th",{},"Key name",[99,103,104],{},"What it's for",[106,107,108,119,129,139,149],"tbody",{},[96,109,110,116],{},[111,112,113],"td",{},[83,114,115],{},"Production - Well Mapper v2",[111,117,118],{},"Live production traffic for version 2 of your app",[96,120,121,126],{},[111,122,123],{},[83,124,125],{},"Staging - Well Mapper v2",[111,127,128],{},"Pre-release testing against real data",[96,130,131,136],{},[111,132,133],{},[83,134,135],{},"Dev - Local Testing",[111,137,138],{},"Your local development environment",[96,140,141,146],{},[111,142,143],{},[83,144,145],{},"CI - Well Mapper",[111,147,148],{},"Automated tests in your CI pipeline",[96,150,151,156],{},[111,152,153],{},[83,154,155],{},"Dev - Jane Smith",[111,157,158],{},"A team member's personal development key",[10,160,161],{},"Avoid generic names like \"API Key 1\" or \"Test Key\". When you're reviewing keys six months from now, a descriptive name tells you exactly what to keep and what to revoke.",[17,163,165],{"id":164},"environment-variable-setup","Environment variable setup",[10,167,168],{},"Never hardcode an API key in your source code. Use environment variables so keys stay out of version control.",[170,171,173],"h3",{"id":172},"nodejs","Node.js",[10,175,176,177,180],{},"Create a ",[83,178,179],{},".env"," file in your project root:",[76,182,186],{"className":183,"code":184,"language":185,"meta":85,"style":85},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","TOWNSHIP_CANADA_API_KEY=tc_live_your_key_here\n","bash",[83,187,188],{"__ignoreMap":85},[189,190,193,197,201],"span",{"class":191,"line":192},"line",1,[189,194,196],{"class":195},"sSC40","TOWNSHIP_CANADA_API_KEY",[189,198,200],{"class":199},"soVBu","=",[189,202,204],{"class":203},"sTbE_","tc_live_your_key_here\n",[10,206,207],{},"Load and use it in your application:",[76,209,213],{"className":210,"code":211,"language":212,"meta":85,"style":85},"language-javascript shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\nrequire(\"dotenv\").config();\n\nconst response = await fetch(\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5\",\n  {\n    headers: {\n      \"X-API-Key\": process.env.TOWNSHIP_CANADA_API_KEY\n    }\n  }\n);\n","javascript",[83,214,215,221,256,263,286,300,306,319,346,352,358],{"__ignoreMap":85},[189,216,217],{"class":191,"line":192},[189,218,220],{"class":219},"s9Tkl","\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\n",[189,222,224,228,232,236,239,241,244,247,250,253],{"class":191,"line":223},2,[189,225,227],{"class":226},"sljsM","require",[189,229,231],{"class":230},"snCua","(",[189,233,235],{"class":234},"sbYkP","\"",[189,237,238],{"class":203},"dotenv",[189,240,235],{"class":234},[189,242,243],{"class":230},")",[189,245,246],{"class":199},".",[189,248,249],{"class":226},"config",[189,251,252],{"class":230},"()",[189,254,255],{"class":199},";\n",[189,257,259],{"class":191,"line":258},3,[189,260,262],{"emptyLinePlaceholder":261},true,"\n",[189,264,266,270,273,276,280,283],{"class":191,"line":265},4,[189,267,269],{"class":268},"s5Kfy","const",[189,271,272],{"class":195}," response",[189,274,275],{"class":199}," =",[189,277,279],{"class":278},"siDh9"," await",[189,281,282],{"class":226}," fetch",[189,284,285],{"class":230},"(\n",[189,287,289,292,295,297],{"class":191,"line":288},5,[189,290,291],{"class":234},"  \"",[189,293,294],{"class":203},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5",[189,296,235],{"class":234},[189,298,299],{"class":199},",\n",[189,301,303],{"class":191,"line":302},6,[189,304,305],{"class":199},"  {\n",[189,307,309,313,316],{"class":191,"line":308},7,[189,310,312],{"class":311},"suXOh","    headers",[189,314,315],{"class":199},":",[189,317,318],{"class":199}," {\n",[189,320,322,325,329,331,333,336,338,341,343],{"class":191,"line":321},8,[189,323,324],{"class":234},"      \"",[189,326,328],{"class":327},"sQtxO","X-API-Key",[189,330,235],{"class":234},[189,332,315],{"class":199},[189,334,335],{"class":195}," process",[189,337,246],{"class":199},[189,339,340],{"class":195},"env",[189,342,246],{"class":199},[189,344,345],{"class":195},"TOWNSHIP_CANADA_API_KEY\n",[189,347,349],{"class":191,"line":348},9,[189,350,351],{"class":199},"    }\n",[189,353,355],{"class":191,"line":354},10,[189,356,357],{"class":199},"  }\n",[189,359,361,363],{"class":191,"line":360},11,[189,362,243],{"class":230},[189,364,255],{"class":199},[10,366,367],{},"For the Maps API tiles, pass the key as a query parameter instead:",[76,369,371],{"className":210,"code":370,"language":212,"meta":85,"style":85},"const tileUrl = `https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=${process.env.TOWNSHIP_CANADA_API_KEY}`;\n",[83,372,373],{"__ignoreMap":85},[189,374,375,377,380,382,385,388,392,396,398,400,402,404,407,410],{"class":191,"line":192},[189,376,269],{"class":268},[189,378,379],{"class":195}," tileUrl",[189,381,275],{"class":199},[189,383,384],{"class":234}," `",[189,386,387],{"class":203},"https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=",[189,389,391],{"class":390},"s8XtY","${",[189,393,395],{"class":394},"su_V2","process",[189,397,246],{"class":199},[189,399,340],{"class":394},[189,401,246],{"class":199},[189,403,196],{"class":394},[189,405,406],{"class":390},"}",[189,408,409],{"class":234},"`",[189,411,255],{"class":199},[170,413,415],{"id":414},"python","Python",[10,417,176,418,420],{},[83,419,179],{}," file:",[76,422,423],{"className":183,"code":184,"language":185,"meta":85,"style":85},[83,424,425],{"__ignoreMap":85},[189,426,427,429,431],{"class":191,"line":192},[189,428,196],{"class":195},[189,430,200],{"class":199},[189,432,204],{"class":203},[10,434,435,436,315],{},"Load it using ",[83,437,438],{},"python-dotenv",[76,440,443],{"className":441,"code":442,"language":414,"meta":85,"style":85},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","import os\nfrom dotenv import load_dotenv\nimport requests\n\nload_dotenv()\n\napi_key = os.environ.get('TOWNSHIP_CANADA_API_KEY')\n\nresponse = requests.get(\n    'https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location',\n    headers={'X-API-Key': api_key},\n    params={'location': '10-15-23-4-W4'}\n)\n",[83,444,445,454,467,474,478,487,491,524,528,544,556,578,606],{"__ignoreMap":85},[189,446,447,450],{"class":191,"line":192},[189,448,449],{"class":278},"import",[189,451,453],{"class":452},"sftqT"," os\n",[189,455,456,459,462,464],{"class":191,"line":223},[189,457,458],{"class":278},"from",[189,460,461],{"class":452}," dotenv ",[189,463,449],{"class":278},[189,465,466],{"class":452}," load_dotenv\n",[189,468,469,471],{"class":191,"line":258},[189,470,449],{"class":278},[189,472,473],{"class":452}," requests\n",[189,475,476],{"class":191,"line":265},[189,477,262],{"emptyLinePlaceholder":261},[189,479,480,484],{"class":191,"line":288},[189,481,483],{"class":482},"siWMO","load_dotenv",[189,485,486],{"class":199},"()\n",[189,488,489],{"class":191,"line":302},[189,490,262],{"emptyLinePlaceholder":261},[189,492,493,496,498,501,503,507,509,512,514,517,519,521],{"class":191,"line":308},[189,494,495],{"class":452},"api_key ",[189,497,200],{"class":199},[189,499,500],{"class":452}," os",[189,502,246],{"class":199},[189,504,506],{"class":505},"sBPpx","environ",[189,508,246],{"class":199},[189,510,511],{"class":482},"get",[189,513,231],{"class":199},[189,515,516],{"class":234},"'",[189,518,196],{"class":203},[189,520,516],{"class":234},[189,522,523],{"class":199},")\n",[189,525,526],{"class":191,"line":321},[189,527,262],{"emptyLinePlaceholder":261},[189,529,530,533,535,538,540,542],{"class":191,"line":348},[189,531,532],{"class":452},"response ",[189,534,200],{"class":199},[189,536,537],{"class":452}," requests",[189,539,246],{"class":199},[189,541,511],{"class":482},[189,543,285],{"class":199},[189,545,546,549,552,554],{"class":191,"line":354},[189,547,548],{"class":234},"    '",[189,550,551],{"class":203},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location",[189,553,516],{"class":234},[189,555,299],{"class":199},[189,557,558,561,564,566,568,570,572,575],{"class":191,"line":360},[189,559,312],{"class":560},"sqOPj",[189,562,563],{"class":199},"={",[189,565,516],{"class":234},[189,567,328],{"class":203},[189,569,516],{"class":234},[189,571,315],{"class":199},[189,573,574],{"class":482}," api_key",[189,576,577],{"class":199},"},\n",[189,579,581,584,586,588,591,593,595,598,601,603],{"class":191,"line":580},12,[189,582,583],{"class":560},"    params",[189,585,563],{"class":199},[189,587,516],{"class":234},[189,589,590],{"class":203},"location",[189,592,516],{"class":234},[189,594,315],{"class":199},[189,596,597],{"class":234}," '",[189,599,600],{"class":203},"10-15-23-4-W4",[189,602,516],{"class":234},[189,604,605],{"class":199},"}\n",[189,607,609],{"class":191,"line":608},13,[189,610,523],{"class":199},[170,612,614],{"id":613},"keeping-keys-out-of-git","Keeping keys out of git",[10,616,617,618,620,621,420],{},"Add ",[83,619,179],{}," to your ",[83,622,623],{},".gitignore",[76,625,627],{"className":183,"code":626,"language":185,"meta":85,"style":85},"# .gitignore\n.env\n.env.local\n.env.*.local\n",[83,628,629,634,640,645],{"__ignoreMap":85},[189,630,631],{"class":191,"line":192},[189,632,633],{"class":219},"# .gitignore\n",[189,635,636],{"class":191,"line":223},[189,637,639],{"class":638},"sYn-s",".env\n",[189,641,642],{"class":191,"line":258},[189,643,644],{"class":638},".env.local\n",[189,646,647],{"class":191,"line":265},[189,648,649],{"class":638},".env.*.local\n",[10,651,652,653,656],{},"Commit a ",[83,654,655],{},".env.example"," file with placeholder values instead. Other developers on your team know what variables to set without seeing real credentials:",[76,658,660],{"className":183,"code":659,"language":185,"meta":85,"style":85},"# .env.example\nTOWNSHIP_CANADA_API_KEY=your_api_key_here\n",[83,661,662,667],{"__ignoreMap":85},[189,663,664],{"class":191,"line":192},[189,665,666],{"class":219},"# .env.example\n",[189,668,669,671,673],{"class":191,"line":223},[189,670,196],{"class":195},[189,672,200],{"class":199},[189,674,675],{"class":203},"your_api_key_here\n",[17,677,679],{"id":678},"key-rotation-without-downtime","Key rotation without downtime",[10,681,682],{},"Rotating a production key requires a brief overlap period where both the old and new key are valid. Follow this sequence:",[31,684,685,691,697,703],{},[34,686,687,690],{},[38,688,689],{},"Create the new key"," in the Developer Portal with the same name (add \"v2\" or today's date to distinguish it)",[34,692,693,696],{},[38,694,695],{},"Update your deployment"," - set the new key value in your environment variables or secrets manager",[34,698,699,702],{},[38,700,701],{},"Deploy and verify"," - confirm requests are succeeding with the new key in your application logs",[34,704,705,708],{},[38,706,707],{},"Revoke the old key"," - only after confirming the new key is working",[10,710,711],{},"Never revoke the old key before confirming the new one works. A failed deploy with no fallback means downtime.",[17,713,715],{"id":714},"cicd-secrets","CI\u002FCD secrets",[10,717,718],{},"Automated pipelines need API keys without human involvement. Store keys in your CI provider's secrets store, not in configuration files.",[170,720,722],{"id":721},"github-actions","GitHub Actions",[10,724,725],{},"Add your API key as a repository secret:",[31,727,728,734,739,745],{},[34,729,36,730,733],{},[38,731,732],{},"Settings → Secrets and variables → Actions"," in your GitHub repository",[34,735,44,736],{},[38,737,738],{},"New repository secret",[34,740,741,742,744],{},"Name it ",[83,743,196],{}," and paste your CI key value",[34,746,44,747],{},[38,748,749],{},"Add secret",[10,751,752],{},"Reference it in your workflow file:",[76,754,758],{"className":755,"code":756,"language":757,"meta":85,"style":85},"language-yaml shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# .github\u002Fworkflows\u002Ftest.yml\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Run integration tests\n        env:\n          TOWNSHIP_CANADA_API_KEY: ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n        run: npm test\n","yaml",[83,759,760,765,773,780,790,797,810,822,829,839],{"__ignoreMap":85},[189,761,762],{"class":191,"line":192},[189,763,764],{"class":219},"# .github\u002Fworkflows\u002Ftest.yml\n",[189,766,767,770],{"class":191,"line":223},[189,768,769],{"class":311},"jobs",[189,771,772],{"class":199},":\n",[189,774,775,778],{"class":191,"line":258},[189,776,777],{"class":311},"  test",[189,779,772],{"class":199},[189,781,782,785,787],{"class":191,"line":265},[189,783,784],{"class":311},"    runs-on",[189,786,315],{"class":199},[189,788,789],{"class":203}," ubuntu-latest\n",[189,791,792,795],{"class":191,"line":288},[189,793,794],{"class":311},"    steps",[189,796,772],{"class":199},[189,798,799,802,805,807],{"class":191,"line":302},[189,800,801],{"class":199},"      -",[189,803,804],{"class":311}," uses",[189,806,315],{"class":199},[189,808,809],{"class":203}," actions\u002Fcheckout@v4\n",[189,811,812,814,817,819],{"class":191,"line":308},[189,813,801],{"class":199},[189,815,816],{"class":311}," name",[189,818,315],{"class":199},[189,820,821],{"class":203}," Run integration tests\n",[189,823,824,827],{"class":191,"line":321},[189,825,826],{"class":311},"        env",[189,828,772],{"class":199},[189,830,831,834,836],{"class":191,"line":348},[189,832,833],{"class":311},"          TOWNSHIP_CANADA_API_KEY",[189,835,315],{"class":199},[189,837,838],{"class":203}," ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n",[189,840,841,844,846],{"class":191,"line":354},[189,842,843],{"class":311},"        run",[189,845,315],{"class":199},[189,847,848],{"class":203}," npm test\n",[10,850,851],{},"The same pattern applies to other CI platforms - GitLab CI uses project variables, Bitbucket Pipelines uses repository variables, and CircleCI uses environment variables in project settings. The key principle is the same: the secret is stored in the platform, referenced by name in the config file, and never written to disk or logs.",[17,853,855],{"id":854},"team-key-management","Team key management",[10,857,858],{},"On the Business plan, account admins can view all API keys created by team members - including the key name, creator, creation date, and last-used timestamp. This makes it possible to audit which keys are active, identify keys that haven't been used recently, and revoke credentials when a team member leaves.",[10,860,861],{},"Individual developers see only their own keys. Admins see keys across the entire team.",[10,863,864],{},"If your team uses a shared integration (for example, a company-wide internal tool), create that key under an admin account rather than a personal one. That way the key doesn't become inaccessible if the original creator's account is deactivated.",[17,866,868],{"id":867},"security-practices","Security practices",[10,870,871],{},"A few habits that prevent the most common problems:",[10,873,874,877,878,880,881,887],{},[38,875,876],{},"Don't commit keys."," The ",[83,879,623],{}," pattern above covers most cases. For extra protection, consider a tool like ",[25,882,886],{"href":883,"rel":884},"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fgit-secrets",[885],"nofollow","git-secrets"," that scans commits for credential patterns before they're pushed.",[10,889,890,893],{},[38,891,892],{},"Use separate keys for separate projects."," If Project A's key is ever compromised, you revoke that key without touching Project B. It also makes usage monitoring cleaner - each key's activity in the logs maps to exactly one project.",[10,895,896,899],{},[38,897,898],{},"Rotate keys periodically."," There's no hard rule on frequency, but a yearly rotation for production keys is a reasonable baseline. After a team member departure, rotate any keys they had access to.",[10,901,902,905],{},[38,903,904],{},"Delete unused keys."," Old keys from completed projects or former team members are attack surface with no benefit. If a key hasn't been used in 90 days and you don't recognize its purpose, revoke it.",[10,907,908,911],{},[38,909,910],{},"Treat keys like passwords."," Don't paste them into chat messages, emails, or support tickets. If you need to share a key temporarily, do it through a password manager or secrets vault.",[17,913,915],{"id":914},"related-guides","Related guides",[917,918,919,926,933,940,947],"ul",{},[34,920,921,925],{},[25,922,924],{"href":923},"\u002Fguides\u002Fapi-integration","API Integration"," - Get started with the Township Canada API",[34,927,928,932],{},[25,929,931],{"href":930},"\u002Fguides\u002Fbatch-api-guide","Batch API Guide"," - Process multiple records in a single request",[34,934,935,939],{},[25,936,938],{"href":937},"\u002Fguides\u002Fautocomplete-api-guide","Autocomplete API Guide"," - Add LLD search suggestions to your app",[34,941,942,946],{},[25,943,945],{"href":944},"\u002Fguides\u002Faccount-management","Account Management"," - Manage subscriptions and billing",[34,948,949,953],{},[25,950,952],{"href":951},"\u002Fpricing","Pricing"," - API plan tiers and request quotas",[955,956,957],"style",{},"html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}",{"title":85,"searchDepth":223,"depth":223,"links":959},[960,961,962,967,968,971,972,973],{"id":19,"depth":223,"text":20},{"id":70,"depth":223,"text":71},{"id":164,"depth":223,"text":165,"children":963},[964,965,966],{"id":172,"depth":258,"text":173},{"id":414,"depth":258,"text":415},{"id":613,"depth":258,"text":614},{"id":678,"depth":223,"text":679},{"id":714,"depth":223,"text":715,"children":969},[970],{"id":721,"depth":258,"text":722},{"id":854,"depth":223,"text":855},{"id":867,"depth":223,"text":868},{"id":914,"depth":223,"text":915},"api","Create and manage multiple Township Canada API keys for different environments. Naming conventions, key rotation, environment variables, and CI\u002FCD setup.",false,"md","i-lucide-key-round",{},"\u002Fguides\u002Fapi-key-management",{"title":5,"description":975},"guides\u002Fapi-key-management","y5S7M5b-MjrYZXjYnpDKKgJzo3-V9wx-qk4t04QBnso",[985,1459,2490],{"id":986,"title":987,"body":988,"category":974,"description":1453,"draft":976,"extension":977,"icon":1454,"meta":1455,"navigation":261,"order":192,"path":923,"seo":1456,"stem":1457,"__hash__":1458},"guides\u002Fguides\u002Fapi-integration.md","Legal Land Description API Integration Guide",{"type":7,"value":989,"toc":1418},[990,993,999,1003,1030,1037,1041,1044,1048,1051,1057,1061,1064,1069,1073,1076,1081,1085,1088,1093,1097,1100,1105,1167,1173,1223,1226,1230,1234,1237,1241,1244,1248,1251,1255,1258,1262,1265,1269,1307,1311,1317,1337,1341,1344,1348,1351,1355,1358,1362,1365,1369,1378,1380,1410],[10,991,992],{},"Integrate Township Canada's legal land description services directly into your applications and workflows. Our REST APIs enable LLD-to-coordinate conversion, autocomplete search, batch processing, and interactive grid maps-all with simple JSON responses.",[10,994,995],{},[996,997],"img",{"alt":28,"src":998},"\u002Fimages\u002Fguides\u002Fapi-portal.webp",[17,1000,1002],{"id":1001},"quick-start","Quick start",[1004,1005,1006,1010,1016,1020,1023,1027],"steps",{},[170,1007,1009],{"id":1008},"get-an-api-key","Get an API key",[10,1011,1012,1013,1015],{},"Log into your Township Canada account and go to ",[38,1014,40],{}," in the main navigation. Subscribe to an API endpoint and create your first API key.",[170,1017,1019],{"id":1018},"make-your-first-request","Make your first request",[10,1021,1022],{},"Add your API key to the request header and make a test request.",[170,1024,1026],{"id":1025},"parse-the-response","Parse the response",[10,1028,1029],{},"All APIs return JSON with coordinates, legal descriptions, and metadata.",[10,1031,1032,1033,246],{},"For full documentation and code examples, visit the ",[25,1034,1036],{"href":1035},"\u002Fapi","API documentation",[17,1038,1040],{"id":1039},"api-endpoints","API endpoints",[10,1042,1043],{},"Township Canada offers four distinct API endpoints:",[170,1045,1047],{"id":1046},"search-api-20month","Search API ($20\u002Fmonth)",[10,1049,1050],{},"Convert legal land descriptions to geographic coordinates and vice versa. Supports DLS, NTS, Geographic Townships, and FPS formats.",[10,1052,1053,1056],{},[38,1054,1055],{},"Use cases",": Property lookup, coordinate conversion, reverse geocoding",[170,1058,1060],{"id":1059},"autocomplete-api-20month","Autocomplete API ($20\u002Fmonth)",[10,1062,1063],{},"Search legal land descriptions with partial text. Returns up to 10 matching results with coordinates-ideal for search boxes and type-ahead interfaces.",[10,1065,1066,1068],{},[38,1067,1055],{},": Search boxes, type-ahead, field validation",[170,1070,1072],{"id":1071},"batch-api-40month","Batch API ($40\u002Fmonth)",[10,1074,1075],{},"Process up to 100 records per request. Convert lists of legal land descriptions to coordinates or coordinates to legal land descriptions.",[10,1077,1078,1080],{},[38,1079,1055],{},": Bulk data processing, migration, spatial analysis",[170,1082,1084],{"id":1083},"maps-api-20month","Maps API ($20\u002Fmonth)",[10,1086,1087],{},"Display legal survey grids on maps in your web or mobile applications. Vector tiles format compatible with Mapbox GL, Leaflet, and other mapping libraries.",[10,1089,1090,1092],{},[38,1091,1055],{},": Custom mapping applications, data visualization",[17,1094,1096],{"id":1095},"api-pricing-tiers","API pricing tiers",[10,1098,1099],{},"Each API offers three pricing tiers:",[10,1101,1102],{},[38,1103,1104],{},"Search, Autocomplete & Batch APIs",[90,1106,1107,1123],{},[93,1108,1109],{},[96,1110,1111,1114,1117,1120],{},[99,1112,1113],{},"Tier",[99,1115,1116],{},"Monthly Requests",[99,1118,1119],{},"Rate Limit",[99,1121,1122],{},"Price",[106,1124,1125,1139,1153],{},[96,1126,1127,1130,1133,1136],{},[111,1128,1129],{},"Build",[111,1131,1132],{},"1,000",[111,1134,1135],{},"1\u002Fsec",[111,1137,1138],{},"$20-40\u002Fmo",[96,1140,1141,1144,1147,1150],{},[111,1142,1143],{},"Scale",[111,1145,1146],{},"10,000",[111,1148,1149],{},"5\u002Fsec",[111,1151,1152],{},"$100-200\u002Fmo",[96,1154,1155,1158,1161,1164],{},[111,1156,1157],{},"Enterprise",[111,1159,1160],{},"100,000",[111,1162,1163],{},"25\u002Fsec",[111,1165,1166],{},"$500-1,000\u002Fmo",[10,1168,1169,1172],{},[38,1170,1171],{},"Maps API"," (higher request quotas for tile rendering)",[90,1174,1175,1187],{},[93,1176,1177],{},[96,1178,1179,1181,1183,1185],{},[99,1180,1113],{},[99,1182,1116],{},[99,1184,1119],{},[99,1186,1122],{},[106,1188,1189,1200,1211],{},[96,1190,1191,1193,1195,1197],{},[111,1192,1129],{},[111,1194,1146],{},[111,1196,1135],{},[111,1198,1199],{},"$20\u002Fmo",[96,1201,1202,1204,1206,1208],{},[111,1203,1143],{},[111,1205,1160],{},[111,1207,1149],{},[111,1209,1210],{},"$100\u002Fmo",[96,1212,1213,1215,1218,1220],{},[111,1214,1157],{},[111,1216,1217],{},"1,000,000",[111,1219,1163],{},[111,1221,1222],{},"$500\u002Fmo",[10,1224,1225],{},"Annual billing saves two months compared to monthly billing.",[17,1227,1229],{"id":1228},"common-integration-patterns","Common integration patterns",[170,1231,1233],{"id":1232},"real-estate-applications","Real Estate Applications",[10,1235,1236],{},"Add legal land description lookup to property search interfaces. Use the Autocomplete API for type-ahead search and the Search API for coordinate conversion.",[170,1238,1240],{"id":1239},"oil-gas-software","Oil & Gas Software",[10,1242,1243],{},"Integrate batch conversion for well location management. Use the Maps API to display DLS\u002FNTS grids in custom mapping applications.",[170,1245,1247],{"id":1246},"mobile-field-apps","Mobile Field Apps",[10,1249,1250],{},"Add LLD search and coordinate conversion for field workers. The APIs work with any mobile development framework (React Native, Flutter, native iOS\u002FAndroid).",[170,1252,1254],{"id":1253},"gis-platforms","GIS Platforms",[10,1256,1257],{},"Enhance ArcGIS, QGIS, or custom GIS tools with legal land description support. Batch API enables bulk coordinate conversion for spatial analysis.",[170,1259,1261],{"id":1260},"agriculture-technology","Agriculture Technology",[10,1263,1264],{},"Add quarter section and LSD lookup to farm management software. Combine with soil and boundary data for precision agriculture applications.",[17,1266,1268],{"id":1267},"getting-an-api-key","Getting an API key",[1004,1270,1271,1275,1280,1284,1287,1291,1296,1300],{},[170,1272,1274],{"id":1273},"open-the-developer-portal","Open the Developer Portal",[10,1276,36,1277,1279],{},[38,1278,40],{}," in the main navigation to access the Developer Portal.",[170,1281,1283],{"id":1282},"subscribe-to-an-api","Subscribe to an API",[10,1285,1286],{},"Click on the API you want to use (Search, Autocomplete, Batch, or Maps). Select a tier and complete payment.",[170,1288,1290],{"id":1289},"create-an-api-key","Create an API key",[10,1292,44,1293,1295],{},[38,1294,47],{}," and give your key a descriptive name. Copy the key immediately-it won't be shown again.",[170,1297,1299],{"id":1298},"use-your-key","Use your key",[10,1301,1302,1303,1306],{},"Include the API key in the ",[83,1304,1305],{},"x-api-key"," header for all requests.",[17,1308,1310],{"id":1309},"managing-api-subscriptions","Managing API subscriptions",[10,1312,1313,1314,1316],{},"Manage your API subscriptions from the ",[38,1315,40],{}," page in the main navigation. The Developer Portal provides:",[917,1318,1319,1325,1331],{},[34,1320,1321,1324],{},[38,1322,1323],{},"Overview",": View all your API keys and subscriptions",[34,1326,1327,1330],{},[38,1328,1329],{},"Logs",": Monitor API requests with timestamps and response codes",[34,1332,1333,1336],{},[38,1334,1335],{},"Alerts",": Configure usage threshold notifications",[170,1338,1340],{"id":1339},"usage-monitoring","Usage monitoring",[10,1342,1343],{},"Track your API usage in real-time from the Overview tab. Usage resets at the start of each billing period.",[170,1345,1347],{"id":1346},"rate-limiting","Rate limiting",[10,1349,1350],{},"Exceeding your rate limit results in HTTP 429 Too Many Requests responses. Implement exponential backoff in your integration to handle rate limits gracefully.",[170,1352,1354],{"id":1353},"quota-management","Quota management",[10,1356,1357],{},"When you reach your monthly quota, requests return HTTP 429 until the next billing cycle. Upgrade your tier for higher quotas or implement caching to reduce request volume.",[17,1359,1361],{"id":1360},"code-examples","Code examples",[10,1363,1364],{},"Access code examples in JavaScript, Python, and cURL from the Developer Portal. Each API endpoint includes ready-to-use code snippets you can copy and customize.",[17,1366,1368],{"id":1367},"checking-system-health","Checking system health",[10,1370,1371,1372,1377],{},"For the current status of Township Canada's APIs, including uptime, response time, and incident history, visit ",[25,1373,1376],{"href":1374,"rel":1375},"https:\u002F\u002Fstatus.townshipcanada.com",[885],"status.townshipcanada.com",". This site provides real-time updates on API system health.",[17,1379,915],{"id":914},[917,1381,1382,1387,1394,1401],{},[34,1383,1384,1386],{},[25,1385,945],{"href":944}," - Manage billing for API subscriptions",[34,1388,1389,1393],{},[25,1390,1392],{"href":1391},"\u002Fguides\u002Fbatch-conversion","Batch Conversion"," - Web interface for batch processing",[34,1395,1396,1400],{},[25,1397,1399],{"href":1398},"\u002Fguides\u002Fmap","Interactive Maps"," - Map features available through the Maps API",[34,1402,1403,1409],{},[25,1404,1406],{"href":1405},"\u002Fblog\u002Ftownshipcanada-sdk-typescript-npm-package",[83,1407,1408],{},"townshipcanada"," - Official TypeScript SDK for Node.js developers",[10,1411,1412,1413,1417],{},"Need help with your integration? ",[25,1414,1416],{"href":1415},"\u002Fcontact-us","Contact us"," for technical support and custom API solutions.",{"title":85,"searchDepth":223,"depth":223,"links":1419},[1420,1425,1431,1432,1439,1445,1450,1451,1452],{"id":1001,"depth":223,"text":1002,"children":1421},[1422,1423,1424],{"id":1008,"depth":258,"text":1009},{"id":1018,"depth":258,"text":1019},{"id":1025,"depth":258,"text":1026},{"id":1039,"depth":223,"text":1040,"children":1426},[1427,1428,1429,1430],{"id":1046,"depth":258,"text":1047},{"id":1059,"depth":258,"text":1060},{"id":1071,"depth":258,"text":1072},{"id":1083,"depth":258,"text":1084},{"id":1095,"depth":223,"text":1096},{"id":1228,"depth":223,"text":1229,"children":1433},[1434,1435,1436,1437,1438],{"id":1232,"depth":258,"text":1233},{"id":1239,"depth":258,"text":1240},{"id":1246,"depth":258,"text":1247},{"id":1253,"depth":258,"text":1254},{"id":1260,"depth":258,"text":1261},{"id":1267,"depth":223,"text":1268,"children":1440},[1441,1442,1443,1444],{"id":1273,"depth":258,"text":1274},{"id":1282,"depth":258,"text":1283},{"id":1289,"depth":258,"text":1290},{"id":1298,"depth":258,"text":1299},{"id":1309,"depth":223,"text":1310,"children":1446},[1447,1448,1449],{"id":1339,"depth":258,"text":1340},{"id":1346,"depth":258,"text":1347},{"id":1353,"depth":258,"text":1354},{"id":1360,"depth":223,"text":1361},{"id":1367,"depth":223,"text":1368},{"id":914,"depth":223,"text":915},"Integrate legal land description APIs into your applications. Convert LLDs to coordinates, add autocomplete search, process batch records, and display DLS\u002FNTS grid maps. REST API with JSON responses.","i-lucide-code",{},{"title":987,"description":1453},"guides\u002Fapi-integration","0skTidP_JHbRyEgb2lLso64Jt5ActydUoBJbxBER46M",{"id":1460,"title":1461,"body":1462,"category":974,"description":2483,"draft":976,"extension":977,"icon":2484,"meta":2485,"navigation":261,"order":321,"path":2486,"seo":2487,"stem":2488,"__hash__":2489},"guides\u002Fguides\u002Fapi-troubleshooting.md","API Troubleshooting & Best Practices",{"type":7,"value":1463,"toc":2461},[1464,1470,1474,1478,1512,1518,1523,1540,1575,1578,1582,1587,1620,1624,1651,1655,1661,1666,1671,1684,1688,1691,1696,1707,1712,1743,1747,1758,1763,1781,1785,1792,1827,1831,1835,1957,2039,2043,2265,2269,2272,2278,2282,2285,2342,2345,2359,2363,2367,2374,2378,2381,2413,2417,2424,2426,2458],[10,1465,1466,1469],{},[38,1467,1468],{},"Getting errors from the Township Canada API?"," This guide covers the most common issues developers run into - authentication failures, CORS blocks, rate limits, and unexpected empty responses - with clear fixes for each one.",[17,1471,1473],{"id":1472},"common-errors-and-what-they-mean","Common errors and what they mean",[170,1475,1477],{"id":1476},"forbidden-http-403","Forbidden (HTTP 403)",[76,1479,1483],{"className":1480,"code":1481,"language":1482,"meta":85,"style":85},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{ \"message\": \"Forbidden\" }\n","json",[83,1484,1485],{"__ignoreMap":85},[189,1486,1487,1490,1494,1498,1500,1502,1504,1507,1509],{"class":191,"line":192},[189,1488,1489],{"class":199},"{",[189,1491,1493],{"class":1492},"s4Jsk"," \"",[189,1495,1497],{"class":1496},"sLorS","message",[189,1499,235],{"class":1492},[189,1501,315],{"class":199},[189,1503,1493],{"class":234},[189,1505,1506],{"class":203},"Forbidden",[189,1508,235],{"class":234},[189,1510,1511],{"class":199}," }\n",[10,1513,1514,1517],{},[38,1515,1516],{},"Cause:"," Your API key is missing, invalid, or not included correctly.",[10,1519,1520],{},[38,1521,1522],{},"Fix:",[31,1524,1525,1531,1537],{},[34,1526,1527,1528],{},"Confirm your API key exists: go to ",[38,1529,1530],{},"My Account → API Access",[34,1532,1533,1534,1536],{},"Include it in the ",[83,1535,328],{}," header (not as a URL parameter)",[34,1538,1539],{},"Test with curl:",[76,1541,1543],{"className":183,"code":1542,"language":185,"meta":85,"style":85},"curl -H \"X-API-Key: YOUR_KEY\" \\\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5\"\n",[83,1544,1545,1565],{"__ignoreMap":85},[189,1546,1547,1550,1554,1556,1559,1561],{"class":191,"line":192},[189,1548,1549],{"class":638},"curl",[189,1551,1553],{"class":1552},"sz9Cv"," -H",[189,1555,1493],{"class":234},[189,1557,1558],{"class":203},"X-API-Key: YOUR_KEY",[189,1560,235],{"class":234},[189,1562,1564],{"class":1563},"se3Ec"," \\\n",[189,1566,1567,1569,1572],{"class":191,"line":223},[189,1568,291],{"class":234},[189,1570,1571],{"class":203},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5",[189,1573,1574],{"class":234},"\"\n",[10,1576,1577],{},"If you get a valid JSON response, your key works. If you still get Forbidden, the key may have been rotated - generate a new one from your account page.",[170,1579,1581],{"id":1580},"too-many-requests-http-429","Too Many Requests (HTTP 429)",[10,1583,1584,1586],{},[38,1585,1516],{}," You exceeded the rate limit for your API tier.",[90,1588,1589,1597],{},[93,1590,1591],{},[96,1592,1593,1595],{},[99,1594,1113],{},[99,1596,1119],{},[106,1598,1599,1606,1613],{},[96,1600,1601,1603],{},[111,1602,1129],{},[111,1604,1605],{},"1 request\u002Fsecond",[96,1607,1608,1610],{},[111,1609,1143],{},[111,1611,1612],{},"5 requests\u002Fsecond",[96,1614,1615,1617],{},[111,1616,1157],{},[111,1618,1619],{},"25 requests\u002Fsecond",[10,1621,1622],{},[38,1623,1522],{},[917,1625,1626,1637,1644],{},[34,1627,1628,1629,1632,1633,1636],{},"Add a delay between requests: ",[83,1630,1631],{},"await new Promise(r => setTimeout(r, 1000))"," in JavaScript, or ",[83,1634,1635],{},"time.sleep(1)"," in Python",[34,1638,1639,1640,1643],{},"Use the ",[25,1641,1642],{"href":930},"Batch API"," instead of looping single calls - it processes up to 100 records per request",[34,1645,1646,1647,1650],{},"If you consistently need higher throughput, ",[25,1648,1649],{"href":1415},"contact us"," about upgrading your tier",[170,1652,1654],{"id":1653},"cors-policy-error","CORS Policy Error",[76,1656,1659],{"className":1657,"code":1658,"language":81},[79],"Access to fetch at 'https:\u002F\u002Fdeveloper.townshipcanada.com\u002F...' has been blocked by CORS policy\n",[83,1660,1658],{"__ignoreMap":85},[10,1662,1663,1665],{},[38,1664,1516],{}," You are calling the API directly from a browser (client-side JavaScript). The API is designed for server-to-server calls and does not include CORS headers by default.",[10,1667,1668],{},[38,1669,1670],{},"Fix options:",[31,1672,1673,1679],{},[34,1674,1675,1678],{},[38,1676,1677],{},"Proxy through your backend"," - Make the API call from your server (Node.js, Python, etc.) and return the result to your frontend",[34,1680,1681,1683],{},[38,1682,1416],{}," - If you need direct browser access, we can add your domain to the CORS allowlist",[170,1685,1687],{"id":1686},"empty-response-no-features","Empty Response (no features)",[10,1689,1690],{},"The API returns a valid HTTP 200 response, but the result contains no features or coordinates.",[10,1692,1693],{},[38,1694,1695],{},"Possible causes:",[917,1697,1698,1701,1704],{},[34,1699,1700],{},"The legal description does not exist (e.g., a township\u002Frange combination that was never surveyed)",[34,1702,1703],{},"The description is at a resolution not supported for that region",[34,1705,1706],{},"Format is slightly wrong - the API is stricter than the web app",[10,1708,1709],{},[38,1710,1711],{},"Debugging steps:",[31,1713,1714,1722,1732,1735],{},[34,1715,1716,1717,1721],{},"Try the same description in the ",[25,1718,1720],{"href":1719},"\u002Fapp","web app search box"," - does it work there?",[34,1723,1724,1725,1728,1729,243],{},"Check that you included the full meridian (e.g., ",[83,1726,1727],{},"W5"," not just ",[83,1730,1731],{},"5",[34,1733,1734],{},"Verify component ranges: LSD 1–16, Section 1–36, Township 1–126, Range 1–34",[34,1736,1737,1738,1742],{},"Check the ",[25,1739,1741],{"href":1740},"\u002Fguides\u002Fcoverage","Coverage Guide"," for resolution limits by region",[170,1744,1746],{"id":1745},"database-errors-28000-08006","Database Errors (28000, 08006)",[10,1748,1749,1750,1753,1754,1757],{},"Errors with codes like ",[83,1751,1752],{},"28000"," or ",[83,1755,1756],{},"08006"," indicate a service disruption, not an issue with your code.",[10,1759,1760],{},[38,1761,1762],{},"What to do:",[917,1764,1765,1773,1776],{},[34,1766,1737,1767,1772],{},[25,1768,1771],{"href":1769,"rel":1770},"https:\u002F\u002Fstatus.townshipcanada.com\u002F",[885],"status page"," for incident reports",[34,1774,1775],{},"Wait a few minutes and retry",[34,1777,1778,1779],{},"If the issue persists beyond 15 minutes, ",[25,1780,1649],{"href":1415},[17,1782,1784],{"id":1783},"api-key-setup","API key setup",[10,1786,1787,1788,1791],{},"Quick recap of key setup (see the ",[25,1789,1790],{"href":980},"full API key management guide"," for details):",[31,1793,1794,1800,1809,1815,1821],{},[34,1795,1796,1799],{},[38,1797,1798],{},"Find your key:"," My Account → API Access",[34,1801,1802,1805,1806,1808],{},[38,1803,1804],{},"Include in requests:"," Add the ",[83,1807,328],{}," header to every request",[34,1810,1811,1814],{},[38,1812,1813],{},"Test before coding:"," Use curl or Postman to confirm the key works",[34,1816,1817,1820],{},[38,1818,1819],{},"Name your keys:"," Use descriptive names like \"production-backend\" or \"staging-test\" to keep track of which key is used where",[34,1822,1823,1826],{},[38,1824,1825],{},"Rotate regularly:"," Generate new keys periodically and phase out old ones",[17,1828,1830],{"id":1829},"rate-limiting-best-practices","Rate limiting best practices",[170,1832,1834],{"id":1833},"add-delay-between-requests","Add delay between requests",[76,1836,1838],{"className":210,"code":1837,"language":212,"meta":85,"style":85},"\u002F\u002F JavaScript - simple delay\nfor (const query of queries) {\n  const result = await fetch(url + query, { headers });\n  await new Promise((r) => setTimeout(r, 1000));\n}\n",[83,1839,1840,1845,1869,1910,1953],{"__ignoreMap":85},[189,1841,1842],{"class":191,"line":192},[189,1843,1844],{"class":219},"\u002F\u002F JavaScript - simple delay\n",[189,1846,1847,1850,1853,1855,1858,1862,1865,1867],{"class":191,"line":223},[189,1848,1849],{"class":278},"for",[189,1851,1852],{"class":230}," (",[189,1854,269],{"class":268},[189,1856,1857],{"class":195}," query",[189,1859,1861],{"class":1860},"sVsLi"," of",[189,1863,1864],{"class":195}," queries",[189,1866,243],{"class":230},[189,1868,318],{"class":199},[189,1870,1871,1874,1877,1879,1881,1883,1886,1889,1892,1894,1897,1900,1903,1906,1908],{"class":191,"line":258},[189,1872,1873],{"class":268},"  const",[189,1875,1876],{"class":195}," result",[189,1878,275],{"class":199},[189,1880,279],{"class":278},[189,1882,282],{"class":226},[189,1884,231],{"class":1885},"sLdnO",[189,1887,1888],{"class":195},"url",[189,1890,1891],{"class":1860}," +",[189,1893,1857],{"class":195},[189,1895,1896],{"class":199},",",[189,1898,1899],{"class":199}," {",[189,1901,1902],{"class":195}," headers",[189,1904,1905],{"class":199}," }",[189,1907,243],{"class":1885},[189,1909,255],{"class":199},[189,1911,1912,1915,1918,1922,1924,1926,1929,1931,1935,1938,1940,1942,1944,1948,1951],{"class":191,"line":265},[189,1913,1914],{"class":278},"  await",[189,1916,1917],{"class":1860}," new",[189,1919,1921],{"class":1920},"sa2tF"," Promise",[189,1923,231],{"class":1885},[189,1925,231],{"class":199},[189,1927,1928],{"class":560},"r",[189,1930,243],{"class":199},[189,1932,1934],{"class":1933},"sIOqK"," =>",[189,1936,1937],{"class":226}," setTimeout",[189,1939,231],{"class":1885},[189,1941,1928],{"class":195},[189,1943,1896],{"class":199},[189,1945,1947],{"class":1946},"s7CZa"," 1000",[189,1949,1950],{"class":1885},"))",[189,1952,255],{"class":199},[189,1954,1955],{"class":191,"line":288},[189,1956,605],{"class":199},[76,1958,1960],{"className":441,"code":1959,"language":414,"meta":85,"style":85},"# Python - simple delay\nimport time\nfor query in queries:\n    result = requests.get(url + query, headers=headers)\n    time.sleep(1)\n",[83,1961,1962,1967,1974,1988,2022],{"__ignoreMap":85},[189,1963,1964],{"class":191,"line":192},[189,1965,1966],{"class":219},"# Python - simple delay\n",[189,1968,1969,1971],{"class":191,"line":223},[189,1970,449],{"class":278},[189,1972,1973],{"class":452}," time\n",[189,1975,1976,1978,1981,1984,1986],{"class":191,"line":258},[189,1977,1849],{"class":278},[189,1979,1980],{"class":452}," query ",[189,1982,1983],{"class":278},"in",[189,1985,1864],{"class":452},[189,1987,772],{"class":199},[189,1989,1990,1993,1995,1997,1999,2001,2003,2006,2009,2011,2013,2015,2017,2020],{"class":191,"line":265},[189,1991,1992],{"class":452},"    result ",[189,1994,200],{"class":199},[189,1996,537],{"class":452},[189,1998,246],{"class":199},[189,2000,511],{"class":482},[189,2002,231],{"class":199},[189,2004,2005],{"class":482},"url ",[189,2007,2008],{"class":1860},"+",[189,2010,1857],{"class":482},[189,2012,1896],{"class":199},[189,2014,1902],{"class":560},[189,2016,200],{"class":199},[189,2018,2019],{"class":482},"headers",[189,2021,523],{"class":199},[189,2023,2024,2027,2029,2032,2034,2037],{"class":191,"line":288},[189,2025,2026],{"class":452},"    time",[189,2028,246],{"class":199},[189,2030,2031],{"class":482},"sleep",[189,2033,231],{"class":199},[189,2035,2036],{"class":1946},"1",[189,2038,523],{"class":199},[170,2040,2042],{"id":2041},"use-exponential-backoff-on-429","Use exponential backoff on 429",[76,2044,2046],{"className":210,"code":2045,"language":212,"meta":85,"style":85},"async function fetchWithBackoff(url, headers, maxRetries = 3) {\n  for (let i = 0; i \u003C maxRetries; i++) {\n    const res = await fetch(url, { headers });\n    if (res.status !== 429) return res;\n    await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, i)));\n  }\n  throw new Error(\"Rate limit exceeded after retries\");\n}\n",[83,2047,2048,2081,2120,2150,2180,2234,2238,2261],{"__ignoreMap":85},[189,2049,2050,2053,2056,2059,2061,2063,2065,2067,2069,2072,2074,2077,2079],{"class":191,"line":192},[189,2051,2052],{"class":268},"async",[189,2054,2055],{"class":268}," function",[189,2057,2058],{"class":226}," fetchWithBackoff",[189,2060,231],{"class":199},[189,2062,1888],{"class":560},[189,2064,1896],{"class":199},[189,2066,1902],{"class":560},[189,2068,1896],{"class":199},[189,2070,2071],{"class":560}," maxRetries",[189,2073,275],{"class":199},[189,2075,2076],{"class":1946}," 3",[189,2078,243],{"class":199},[189,2080,318],{"class":199},[189,2082,2083,2086,2088,2091,2094,2096,2099,2102,2104,2107,2109,2111,2113,2116,2118],{"class":191,"line":223},[189,2084,2085],{"class":278},"  for",[189,2087,1852],{"class":1885},[189,2089,2090],{"class":268},"let",[189,2092,2093],{"class":195}," i",[189,2095,275],{"class":199},[189,2097,2098],{"class":1946}," 0",[189,2100,2101],{"class":199},";",[189,2103,2093],{"class":195},[189,2105,2106],{"class":199}," \u003C",[189,2108,2071],{"class":195},[189,2110,2101],{"class":199},[189,2112,2093],{"class":195},[189,2114,2115],{"class":1860},"++",[189,2117,243],{"class":1885},[189,2119,318],{"class":199},[189,2121,2122,2125,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148],{"class":191,"line":258},[189,2123,2124],{"class":268},"    const",[189,2126,2127],{"class":195}," res",[189,2129,275],{"class":199},[189,2131,279],{"class":278},[189,2133,282],{"class":226},[189,2135,231],{"class":1885},[189,2137,1888],{"class":195},[189,2139,1896],{"class":199},[189,2141,1899],{"class":199},[189,2143,1902],{"class":195},[189,2145,1905],{"class":199},[189,2147,243],{"class":1885},[189,2149,255],{"class":199},[189,2151,2152,2155,2157,2160,2162,2165,2168,2171,2173,2176,2178],{"class":191,"line":265},[189,2153,2154],{"class":278},"    if",[189,2156,1852],{"class":1885},[189,2158,2159],{"class":195},"res",[189,2161,246],{"class":199},[189,2163,2164],{"class":195},"status",[189,2166,2167],{"class":1860}," !==",[189,2169,2170],{"class":1946}," 429",[189,2172,243],{"class":1885},[189,2174,2175],{"class":278}," return",[189,2177,2127],{"class":195},[189,2179,255],{"class":199},[189,2181,2182,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2212,2215,2217,2220,2222,2225,2227,2229,2232],{"class":191,"line":288},[189,2183,2184],{"class":278},"    await",[189,2186,1917],{"class":1860},[189,2188,1921],{"class":1920},[189,2190,231],{"class":1885},[189,2192,231],{"class":199},[189,2194,1928],{"class":560},[189,2196,243],{"class":199},[189,2198,1934],{"class":1933},[189,2200,1937],{"class":226},[189,2202,231],{"class":1885},[189,2204,1928],{"class":195},[189,2206,1896],{"class":199},[189,2208,1947],{"class":1946},[189,2210,2211],{"class":1860}," *",[189,2213,2214],{"class":195}," Math",[189,2216,246],{"class":199},[189,2218,2219],{"class":226},"pow",[189,2221,231],{"class":1885},[189,2223,2224],{"class":1946},"2",[189,2226,1896],{"class":199},[189,2228,2093],{"class":195},[189,2230,2231],{"class":1885},")))",[189,2233,255],{"class":199},[189,2235,2236],{"class":191,"line":302},[189,2237,357],{"class":199},[189,2239,2240,2243,2245,2248,2250,2252,2255,2257,2259],{"class":191,"line":308},[189,2241,2242],{"class":278},"  throw",[189,2244,1917],{"class":1860},[189,2246,2247],{"class":226}," Error",[189,2249,231],{"class":1885},[189,2251,235],{"class":234},[189,2253,2254],{"class":203},"Rate limit exceeded after retries",[189,2256,235],{"class":234},[189,2258,243],{"class":1885},[189,2260,255],{"class":199},[189,2262,2263],{"class":191,"line":321},[189,2264,605],{"class":199},[170,2266,2268],{"id":2267},"use-the-batch-api-for-bulk-work","Use the Batch API for bulk work",[10,2270,2271],{},"Instead of looping 1,000 single calls (which takes 17+ minutes at 1\u002Fsec), use the Batch API to process 100 records per call - the same 1,000 records take 10 calls.",[10,2273,2274,2275,2277],{},"See the ",[25,2276,931],{"href":930}," for chunking examples in Node.js and Python.",[17,2279,2281],{"id":2280},"format-differences-web-app-vs-api","Format differences: web app vs. API",[10,2283,2284],{},"The web app's search box is more forgiving than the API:",[90,2286,2287,2299],{},[93,2288,2289],{},[96,2290,2291,2294,2297],{},[99,2292,2293],{},"Issue",[99,2295,2296],{},"Web App",[99,2298,40],{},[106,2300,2301,2312,2323,2332],{},[96,2302,2303,2306,2309],{},[111,2304,2305],{},"Missing \"W\" on meridian",[111,2307,2308],{},"May auto-correct",[111,2310,2311],{},"Returns empty",[96,2313,2314,2317,2320],{},[111,2315,2316],{},"Extra spaces",[111,2318,2319],{},"Handled",[111,2321,2322],{},"May cause issues",[96,2324,2325,2328,2330],{},[111,2326,2327],{},"Mixed case",[111,2329,2319],{},[111,2331,2319],{},[96,2333,2334,2337,2340],{},[111,2335,2336],{},"Partial descriptions",[111,2338,2339],{},"Shows suggestions",[111,2341,2311],{},[10,2343,2344],{},"When building API integrations, always normalize your input first:",[917,2346,2347,2350,2353,2356],{},[34,2348,2349],{},"Include dashes between all components",[34,2351,2352],{},"Add the \"W\" prefix on meridians",[34,2354,2355],{},"Remove extra text, parentheses, and place names",[34,2357,2358],{},"Trim whitespace",[17,2360,2362],{"id":2361},"integration-patterns","Integration patterns",[170,2364,2366],{"id":2365},"caching","Caching",[10,2368,2369,2370,2373],{},"If your application looks up the same legal descriptions repeatedly, cache the results. Legal land descriptions map to fixed coordinates - the result for ",[83,2371,2372],{},"SW-25-24-1-W5"," will not change.",[170,2375,2377],{"id":2376},"error-handling","Error handling",[10,2379,2380],{},"Always handle these response codes:",[917,2382,2383,2389,2395,2401,2407],{},[34,2384,2385,2388],{},[38,2386,2387],{},"200"," - Success, parse the result",[34,2390,2391,2394],{},[38,2392,2393],{},"400"," - Bad request, check your input format",[34,2396,2397,2400],{},[38,2398,2399],{},"403"," - Authentication failed, check your API key",[34,2402,2403,2406],{},[38,2404,2405],{},"429"," - Rate limited, wait and retry",[34,2408,2409,2412],{},[38,2410,2411],{},"500\u002F502\u002F503"," - Server issue, retry after a short delay",[170,2414,2416],{"id":2415},"openapi-spec","OpenAPI spec",[10,2418,2419,2420,2423],{},"Download the OpenAPI specification at ",[25,2421,2422],{"href":2422},"\u002Fopenapi.yaml"," and import it into Postman, Swagger UI, or Insomnia for interactive testing and documentation.",[17,2425,915],{"id":914},[917,2427,2428,2434,2440,2447,2452],{},[34,2429,2430,2433],{},[25,2431,2432],{"href":923},"API Integration Guide"," - getting started with the API",[34,2435,2436,2439],{},[25,2437,2438],{"href":980},"API Key Management"," - creating and managing API keys",[34,2441,2442,2446],{},[25,2443,2445],{"href":2444},"\u002Fguides\u002Fsearch-api-guide","Search API Guide"," - single-location lookups",[34,2448,2449,2451],{},[25,2450,931],{"href":930}," - bulk conversions",[34,2453,2454,2457],{},[25,2455,2456],{"href":1740},"Coverage & Limitations"," - what regions and resolutions are supported",[955,2459,2460],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}",{"title":85,"searchDepth":223,"depth":223,"links":2462},[2463,2470,2471,2476,2477,2482],{"id":1472,"depth":223,"text":1473,"children":2464},[2465,2466,2467,2468,2469],{"id":1476,"depth":258,"text":1477},{"id":1580,"depth":258,"text":1581},{"id":1653,"depth":258,"text":1654},{"id":1686,"depth":258,"text":1687},{"id":1745,"depth":258,"text":1746},{"id":1783,"depth":223,"text":1784},{"id":1829,"depth":223,"text":1830,"children":2472},[2473,2474,2475],{"id":1833,"depth":258,"text":1834},{"id":2041,"depth":258,"text":2042},{"id":2267,"depth":258,"text":2268},{"id":2280,"depth":223,"text":2281},{"id":2361,"depth":223,"text":2362,"children":2478},[2479,2480,2481],{"id":2365,"depth":258,"text":2366},{"id":2376,"depth":258,"text":2377},{"id":2415,"depth":258,"text":2416},{"id":914,"depth":223,"text":915},"Fix common Township Canada API errors including Forbidden responses, CORS issues, rate limiting, and empty results. Includes debugging tips and integration patterns.","i-lucide-bug",{},"\u002Fguides\u002Fapi-troubleshooting",{"title":1461,"description":2483},"guides\u002Fapi-troubleshooting","YhFOkUOkxRyXExvO-F29ZJyxlbLEw9dMy2FCmSMog7U",{"id":2491,"title":2492,"body":2493,"category":974,"description":8608,"draft":976,"extension":977,"icon":8609,"meta":8610,"navigation":261,"order":321,"path":937,"seo":8611,"stem":8612,"__hash__":8613},"guides\u002Fguides\u002Fautocomplete-api-guide.md","Building Autocomplete Search with the Township Canada API",{"type":7,"value":2494,"toc":8596},[2495,2499,2502,2506,2520,2524,2530,2535,2541,2546,2606,2611,2617,2622,2868,2882,2886,2889,3012,3015,3019,3026,3249,3256,3260,3269,3390,3401,3405,3408,3428,3439,3443,3446,6158,6162,6165,6172,7326,7333,8457,8460,8527,8531,8575,8578,8593],[17,2496,2498],{"id":2497},"what-youll-build","What You'll Build",[10,2500,2501],{},"A search-as-you-type input that queries the Township Canada Autocomplete API as users type, shows a dropdown of matching legal land descriptions, and lets users select a result with mouse or keyboard. By the end you'll have a working component in vanilla JS and React.",[17,2503,2505],{"id":2504},"prerequisites","Prerequisites",[917,2507,2508,2514,2517],{},[34,2509,2510,2511],{},"A Township Canada API key - get one from the ",[25,2512,2513],{"href":27},"API page",[34,2515,2516],{},"Basic familiarity with fetch and async\u002Fawait",[34,2518,2519],{},"For the React example: a React project (Next.js, Vite, or Create React App)",[17,2521,2523],{"id":2522},"the-autocomplete-endpoint","The Autocomplete Endpoint",[76,2525,2528],{"className":2526,"code":2527,"language":81},[79],"GET https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location\n",[83,2529,2527],{"__ignoreMap":85},[10,2531,2532],{},[38,2533,2534],{},"Headers:",[76,2536,2539],{"className":2537,"code":2538,"language":81},[79],"X-API-Key: YOUR_API_KEY\n",[83,2540,2538],{"__ignoreMap":85},[10,2542,2543],{},[38,2544,2545],{},"Query parameters:",[90,2547,2548,2561],{},[93,2549,2550],{},[96,2551,2552,2555,2558],{},[99,2553,2554],{},"Parameter",[99,2556,2557],{},"Required",[99,2559,2560],{},"Description",[106,2562,2563,2578,2591],{},[96,2564,2565,2569,2572],{},[111,2566,2567],{},[83,2568,590],{},[111,2570,2571],{},"Yes",[111,2573,2574,2575],{},"Partial or full legal land description, e.g. ",[83,2576,2577],{},"NW-2",[96,2579,2580,2585,2588],{},[111,2581,2582],{},[83,2583,2584],{},"limit",[111,2586,2587],{},"No",[111,2589,2590],{},"Number of results to return. Range: 1–10, default 3",[96,2592,2593,2598,2600],{},[111,2594,2595],{},[83,2596,2597],{},"proximity",[111,2599,2587],{},[111,2601,2602,2603],{},"Bias results toward a point: ",[83,2604,2605],{},"lng,lat",[10,2607,2608],{},[38,2609,2610],{},"Example request:",[76,2612,2615],{"className":2613,"code":2614,"language":81},[79],"GET \u002Fautocomplete\u002Flegal-location?location=NW-25-24-1&limit=3\n",[83,2616,2614],{"__ignoreMap":85},[10,2618,2619],{},[38,2620,2621],{},"Response format:",[76,2623,2625],{"className":1480,"code":2624,"language":1482,"meta":85,"style":85},"{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"Point\",\n        \"coordinates\": [-114.01924, 51.077932]\n      },\n      \"properties\": {\n        \"legal_location\": \"NW-25-24-1-W5\",\n        \"search_term\": \"NW-25-24-1\",\n        \"survey_system\": \"DLS\",\n        \"unit\": \"Quarter Section\"\n      }\n    }\n  ]\n}\n",[83,2626,2627,2632,2652,2666,2671,2690,2703,2724,2749,2754,2767,2787,2807,2827,2846,2852,2857,2863],{"__ignoreMap":85},[189,2628,2629],{"class":191,"line":192},[189,2630,2631],{"class":199},"{\n",[189,2633,2634,2636,2639,2641,2643,2645,2648,2650],{"class":191,"line":223},[189,2635,291],{"class":1492},[189,2637,2638],{"class":1496},"type",[189,2640,235],{"class":1492},[189,2642,315],{"class":199},[189,2644,1493],{"class":234},[189,2646,2647],{"class":203},"FeatureCollection",[189,2649,235],{"class":234},[189,2651,299],{"class":199},[189,2653,2654,2656,2659,2661,2663],{"class":191,"line":258},[189,2655,291],{"class":1492},[189,2657,2658],{"class":1496},"features",[189,2660,235],{"class":1492},[189,2662,315],{"class":199},[189,2664,2665],{"class":199}," [\n",[189,2667,2668],{"class":191,"line":265},[189,2669,2670],{"class":199},"    {\n",[189,2672,2673,2675,2677,2679,2681,2683,2686,2688],{"class":191,"line":288},[189,2674,324],{"class":1492},[189,2676,2638],{"class":1920},[189,2678,235],{"class":1492},[189,2680,315],{"class":199},[189,2682,1493],{"class":234},[189,2684,2685],{"class":203},"Feature",[189,2687,235],{"class":234},[189,2689,299],{"class":199},[189,2691,2692,2694,2697,2699,2701],{"class":191,"line":302},[189,2693,324],{"class":1492},[189,2695,2696],{"class":1920},"geometry",[189,2698,235],{"class":1492},[189,2700,315],{"class":199},[189,2702,318],{"class":199},[189,2704,2705,2708,2711,2713,2715,2717,2720,2722],{"class":191,"line":308},[189,2706,2707],{"class":1492},"        \"",[189,2709,2638],{"class":2710},"skNjk",[189,2712,235],{"class":1492},[189,2714,315],{"class":199},[189,2716,1493],{"class":234},[189,2718,2719],{"class":203},"Point",[189,2721,235],{"class":234},[189,2723,299],{"class":199},[189,2725,2726,2728,2731,2733,2735,2738,2741,2743,2746],{"class":191,"line":321},[189,2727,2707],{"class":1492},[189,2729,2730],{"class":2710},"coordinates",[189,2732,235],{"class":1492},[189,2734,315],{"class":199},[189,2736,2737],{"class":199}," [",[189,2739,2740],{"class":1946},"-114.01924",[189,2742,1896],{"class":199},[189,2744,2745],{"class":1946}," 51.077932",[189,2747,2748],{"class":199},"]\n",[189,2750,2751],{"class":191,"line":348},[189,2752,2753],{"class":199},"      },\n",[189,2755,2756,2758,2761,2763,2765],{"class":191,"line":354},[189,2757,324],{"class":1492},[189,2759,2760],{"class":1920},"properties",[189,2762,235],{"class":1492},[189,2764,315],{"class":199},[189,2766,318],{"class":199},[189,2768,2769,2771,2774,2776,2778,2780,2783,2785],{"class":191,"line":360},[189,2770,2707],{"class":1492},[189,2772,2773],{"class":2710},"legal_location",[189,2775,235],{"class":1492},[189,2777,315],{"class":199},[189,2779,1493],{"class":234},[189,2781,2782],{"class":203},"NW-25-24-1-W5",[189,2784,235],{"class":234},[189,2786,299],{"class":199},[189,2788,2789,2791,2794,2796,2798,2800,2803,2805],{"class":191,"line":580},[189,2790,2707],{"class":1492},[189,2792,2793],{"class":2710},"search_term",[189,2795,235],{"class":1492},[189,2797,315],{"class":199},[189,2799,1493],{"class":234},[189,2801,2802],{"class":203},"NW-25-24-1",[189,2804,235],{"class":234},[189,2806,299],{"class":199},[189,2808,2809,2811,2814,2816,2818,2820,2823,2825],{"class":191,"line":608},[189,2810,2707],{"class":1492},[189,2812,2813],{"class":2710},"survey_system",[189,2815,235],{"class":1492},[189,2817,315],{"class":199},[189,2819,1493],{"class":234},[189,2821,2822],{"class":203},"DLS",[189,2824,235],{"class":234},[189,2826,299],{"class":199},[189,2828,2830,2832,2835,2837,2839,2841,2844],{"class":191,"line":2829},14,[189,2831,2707],{"class":1492},[189,2833,2834],{"class":2710},"unit",[189,2836,235],{"class":1492},[189,2838,315],{"class":199},[189,2840,1493],{"class":234},[189,2842,2843],{"class":203},"Quarter Section",[189,2845,1574],{"class":234},[189,2847,2849],{"class":191,"line":2848},15,[189,2850,2851],{"class":199},"      }\n",[189,2853,2855],{"class":191,"line":2854},16,[189,2856,351],{"class":199},[189,2858,2860],{"class":191,"line":2859},17,[189,2861,2862],{"class":199},"  ]\n",[189,2864,2866],{"class":191,"line":2865},18,[189,2867,605],{"class":199},[10,2869,2870,2871,2874,2875,2878,2879,246],{},"Each feature's display label is at ",[83,2872,2873],{},"feature.properties.legal_location",". Coordinates are at ",[83,2876,2877],{},"feature.geometry.coordinates"," as ",[83,2880,2881],{},"[longitude, latitude]",[17,2883,2885],{"id":2884},"step-1-debouncing","Step 1: Debouncing",[10,2887,2888],{},"The autocomplete endpoint is fast, but firing a request on every keystroke wastes API quota and creates a choppy experience. A 300ms debounce is the right balance - responsive enough that users don't notice the delay, but conservative enough to batch rapid keystrokes into a single request.",[76,2890,2894],{"className":2891,"code":2892,"language":2893,"meta":85,"style":85},"language-js shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","function debounce(fn, delay) {\n  let timer;\n  return function (...args) {\n    clearTimeout(timer);\n    timer = setTimeout(() => fn.apply(this, args), delay);\n  };\n}\n","js",[83,2895,2896,2918,2928,2945,2959,3003,3008],{"__ignoreMap":85},[189,2897,2898,2901,2904,2906,2909,2911,2914,2916],{"class":191,"line":192},[189,2899,2900],{"class":268},"function",[189,2902,2903],{"class":226}," debounce",[189,2905,231],{"class":199},[189,2907,2908],{"class":560},"fn",[189,2910,1896],{"class":199},[189,2912,2913],{"class":560}," delay",[189,2915,243],{"class":199},[189,2917,318],{"class":199},[189,2919,2920,2923,2926],{"class":191,"line":223},[189,2921,2922],{"class":268},"  let",[189,2924,2925],{"class":195}," timer",[189,2927,255],{"class":199},[189,2929,2930,2933,2935,2938,2941,2943],{"class":191,"line":258},[189,2931,2932],{"class":278},"  return",[189,2934,2055],{"class":268},[189,2936,2937],{"class":199}," (...",[189,2939,2940],{"class":560},"args",[189,2942,243],{"class":199},[189,2944,318],{"class":199},[189,2946,2947,2950,2952,2955,2957],{"class":191,"line":265},[189,2948,2949],{"class":226},"    clearTimeout",[189,2951,231],{"class":1885},[189,2953,2954],{"class":195},"timer",[189,2956,243],{"class":1885},[189,2958,255],{"class":199},[189,2960,2961,2964,2966,2968,2970,2972,2974,2977,2979,2982,2984,2988,2990,2993,2995,2997,2999,3001],{"class":191,"line":288},[189,2962,2963],{"class":195},"    timer",[189,2965,275],{"class":199},[189,2967,1937],{"class":226},[189,2969,231],{"class":1885},[189,2971,252],{"class":199},[189,2973,1934],{"class":1933},[189,2975,2976],{"class":195}," fn",[189,2978,246],{"class":199},[189,2980,2981],{"class":226},"apply",[189,2983,231],{"class":1885},[189,2985,2987],{"class":2986},"sETVe","this",[189,2989,1896],{"class":199},[189,2991,2992],{"class":195}," args",[189,2994,243],{"class":1885},[189,2996,1896],{"class":199},[189,2998,2913],{"class":195},[189,3000,243],{"class":1885},[189,3002,255],{"class":199},[189,3004,3005],{"class":191,"line":302},[189,3006,3007],{"class":199},"  };\n",[189,3009,3010],{"class":191,"line":308},[189,3011,605],{"class":199},[10,3013,3014],{},"Wrap your fetch call with this before attaching it to the input event.",[17,3016,3018],{"id":3017},"step-2-cancelling-in-flight-requests","Step 2: Cancelling In-Flight Requests",[10,3020,3021,3022,3025],{},"When a user types quickly, earlier requests may return after newer ones. Without cancellation, stale results can overwrite fresh ones. Use ",[83,3023,3024],{},"AbortController"," to cancel the previous request before issuing a new one:",[76,3027,3029],{"className":2891,"code":3028,"language":2893,"meta":85,"style":85},"let controller = null;\n\nasync function fetchSuggestions(query) {\n  if (controller) controller.abort();\n  controller = new AbortController();\n\n  const res = await fetch(\n    `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location?location=${encodeURIComponent(query)}&limit=3`,\n    {\n      headers: { \"X-API-Key\": \"YOUR_API_KEY\" },\n      signal: controller.signal\n    }\n  );\n\n  const data = await res.json();\n  return data.features;\n}\n",[83,3030,3031,3045,3049,3067,3090,3106,3110,3124,3152,3156,3183,3197,3201,3208,3212,3233,3245],{"__ignoreMap":85},[189,3032,3033,3035,3038,3040,3043],{"class":191,"line":192},[189,3034,2090],{"class":268},[189,3036,3037],{"class":195}," controller",[189,3039,275],{"class":199},[189,3041,3042],{"class":1860}," null",[189,3044,255],{"class":199},[189,3046,3047],{"class":191,"line":223},[189,3048,262],{"emptyLinePlaceholder":261},[189,3050,3051,3053,3055,3058,3060,3063,3065],{"class":191,"line":258},[189,3052,2052],{"class":268},[189,3054,2055],{"class":268},[189,3056,3057],{"class":226}," fetchSuggestions",[189,3059,231],{"class":199},[189,3061,3062],{"class":560},"query",[189,3064,243],{"class":199},[189,3066,318],{"class":199},[189,3068,3069,3072,3074,3077,3079,3081,3083,3086,3088],{"class":191,"line":265},[189,3070,3071],{"class":278},"  if",[189,3073,1852],{"class":1885},[189,3075,3076],{"class":195},"controller",[189,3078,243],{"class":1885},[189,3080,3037],{"class":195},[189,3082,246],{"class":199},[189,3084,3085],{"class":226},"abort",[189,3087,252],{"class":1885},[189,3089,255],{"class":199},[189,3091,3092,3095,3097,3099,3102,3104],{"class":191,"line":288},[189,3093,3094],{"class":195},"  controller",[189,3096,275],{"class":199},[189,3098,1917],{"class":1860},[189,3100,3101],{"class":226}," AbortController",[189,3103,252],{"class":1885},[189,3105,255],{"class":199},[189,3107,3108],{"class":191,"line":302},[189,3109,262],{"emptyLinePlaceholder":261},[189,3111,3112,3114,3116,3118,3120,3122],{"class":191,"line":308},[189,3113,1873],{"class":268},[189,3115,2127],{"class":195},[189,3117,275],{"class":199},[189,3119,279],{"class":278},[189,3121,282],{"class":226},[189,3123,285],{"class":1885},[189,3125,3126,3129,3132,3134,3137,3139,3141,3143,3145,3148,3150],{"class":191,"line":321},[189,3127,3128],{"class":234},"    `",[189,3130,3131],{"class":203},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location?location=",[189,3133,391],{"class":390},[189,3135,3136],{"class":226},"encodeURIComponent",[189,3138,231],{"class":230},[189,3140,3062],{"class":394},[189,3142,243],{"class":230},[189,3144,406],{"class":390},[189,3146,3147],{"class":203},"&limit=3",[189,3149,409],{"class":234},[189,3151,299],{"class":199},[189,3153,3154],{"class":191,"line":348},[189,3155,2670],{"class":199},[189,3157,3158,3161,3163,3165,3167,3169,3171,3173,3175,3178,3180],{"class":191,"line":354},[189,3159,3160],{"class":311},"      headers",[189,3162,315],{"class":199},[189,3164,1899],{"class":199},[189,3166,1493],{"class":234},[189,3168,328],{"class":327},[189,3170,235],{"class":234},[189,3172,315],{"class":199},[189,3174,1493],{"class":234},[189,3176,3177],{"class":203},"YOUR_API_KEY",[189,3179,235],{"class":234},[189,3181,3182],{"class":199}," },\n",[189,3184,3185,3188,3190,3192,3194],{"class":191,"line":360},[189,3186,3187],{"class":311},"      signal",[189,3189,315],{"class":199},[189,3191,3037],{"class":195},[189,3193,246],{"class":199},[189,3195,3196],{"class":195},"signal\n",[189,3198,3199],{"class":191,"line":580},[189,3200,351],{"class":199},[189,3202,3203,3206],{"class":191,"line":608},[189,3204,3205],{"class":1885},"  )",[189,3207,255],{"class":199},[189,3209,3210],{"class":191,"line":2829},[189,3211,262],{"emptyLinePlaceholder":261},[189,3213,3214,3216,3219,3221,3223,3225,3227,3229,3231],{"class":191,"line":2848},[189,3215,1873],{"class":268},[189,3217,3218],{"class":195}," data",[189,3220,275],{"class":199},[189,3222,279],{"class":278},[189,3224,2127],{"class":195},[189,3226,246],{"class":199},[189,3228,1482],{"class":226},[189,3230,252],{"class":1885},[189,3232,255],{"class":199},[189,3234,3235,3237,3239,3241,3243],{"class":191,"line":2854},[189,3236,2932],{"class":278},[189,3238,3218],{"class":195},[189,3240,246],{"class":199},[189,3242,2658],{"class":195},[189,3244,255],{"class":199},[189,3246,3247],{"class":191,"line":2859},[189,3248,605],{"class":199},[10,3250,3251,3252,3255],{},"Catch ",[83,3253,3254],{},"AbortError"," separately so it doesn't surface as a user-visible error - it's expected behaviour.",[17,3257,3259],{"id":3258},"step-3-proximity-biasing","Step 3: Proximity Biasing",[10,3261,3262,3263,3265,3266,3268],{},"If your app has a map, pass its current center to the ",[83,3264,2597],{}," parameter. The API will score results closer to that point higher. This is especially useful for partial queries like ",[83,3267,2577],{}," that match dozens of locations across the prairies.",[76,3270,3272],{"className":2891,"code":3271,"language":2893,"meta":85,"style":85},"const center = map.getCenter(); \u002F\u002F { lng, lat } from your map library\nconst url =\n  `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location` +\n  `?location=${encodeURIComponent(query)}` +\n  `&limit=3` +\n  `&proximity=${center.lng},${center.lat}`;\n",[83,3273,3274,3298,3308,3321,3344,3354],{"__ignoreMap":85},[189,3275,3276,3278,3281,3283,3286,3288,3291,3293,3295],{"class":191,"line":192},[189,3277,269],{"class":268},[189,3279,3280],{"class":195}," center",[189,3282,275],{"class":199},[189,3284,3285],{"class":195}," map",[189,3287,246],{"class":199},[189,3289,3290],{"class":226},"getCenter",[189,3292,252],{"class":230},[189,3294,2101],{"class":199},[189,3296,3297],{"class":219}," \u002F\u002F { lng, lat } from your map library\n",[189,3299,3300,3302,3305],{"class":191,"line":223},[189,3301,269],{"class":268},[189,3303,3304],{"class":195}," url",[189,3306,3307],{"class":199}," =\n",[189,3309,3310,3313,3316,3318],{"class":191,"line":258},[189,3311,3312],{"class":234},"  `",[189,3314,3315],{"class":203},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location",[189,3317,409],{"class":234},[189,3319,3320],{"class":1860}," +\n",[189,3322,3323,3325,3328,3330,3332,3334,3336,3338,3340,3342],{"class":191,"line":265},[189,3324,3312],{"class":234},[189,3326,3327],{"class":203},"?location=",[189,3329,391],{"class":390},[189,3331,3136],{"class":226},[189,3333,231],{"class":230},[189,3335,3062],{"class":394},[189,3337,243],{"class":230},[189,3339,406],{"class":390},[189,3341,409],{"class":234},[189,3343,3320],{"class":1860},[189,3345,3346,3348,3350,3352],{"class":191,"line":288},[189,3347,3312],{"class":234},[189,3349,3147],{"class":203},[189,3351,409],{"class":234},[189,3353,3320],{"class":1860},[189,3355,3356,3358,3361,3363,3366,3368,3371,3373,3375,3377,3379,3381,3384,3386,3388],{"class":191,"line":302},[189,3357,3312],{"class":234},[189,3359,3360],{"class":203},"&proximity=",[189,3362,391],{"class":390},[189,3364,3365],{"class":394},"center",[189,3367,246],{"class":199},[189,3369,3370],{"class":394},"lng",[189,3372,406],{"class":390},[189,3374,1896],{"class":203},[189,3376,391],{"class":390},[189,3378,3365],{"class":394},[189,3380,246],{"class":199},[189,3382,3383],{"class":394},"lat",[189,3385,406],{"class":390},[189,3387,409],{"class":234},[189,3389,255],{"class":199},[10,3391,3392,3393,3395,3396,3400],{},"Without proximity, a search for ",[83,3394,2577],{}," returns the first five alphabetical matches. With proximity set to central Alberta, it returns the five closest matches to where the user is looking. See the ",[25,3397,3399],{"href":3398},"\u002Fguides\u002Fmapbox-integration","Mapbox integration guide"," for how to wire this up with a live map.",[17,3402,3404],{"id":3403},"step-4-dropdown-ux-and-keyboard-navigation","Step 4: Dropdown UX and Keyboard Navigation",[10,3406,3407],{},"A good autocomplete dropdown handles three interaction modes:",[917,3409,3410,3416,3422],{},[34,3411,3412,3415],{},[38,3413,3414],{},"Mouse",": hover highlights a suggestion, click selects it",[34,3417,3418,3421],{},[38,3419,3420],{},"Keyboard",": arrow keys move the highlighted index, Enter selects, Escape closes",[34,3423,3424,3427],{},[38,3425,3426],{},"Outside click",": clicking anywhere outside the input or dropdown closes it",[10,3429,3430,3431,3434,3435,3438],{},"Track ",[83,3432,3433],{},"highlightedIndex"," as an integer, reset to ",[83,3436,3437],{},"-1"," when the list updates.",[17,3440,3442],{"id":3441},"vanilla-js-example","Vanilla JS Example",[10,3444,3445],{},"A complete standalone implementation - no build step required.",[76,3447,3451],{"className":3448,"code":3449,"language":3450,"meta":85,"style":85},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n  \u003Chead>\n    \u003Cmeta charset=\"UTF-8\" \u002F>\n    \u003Ctitle>Township Autocomplete\u003C\u002Ftitle>\n    \u003Cstyle>\n      .autocomplete-wrapper {\n        position: relative;\n        width: 360px;\n      }\n      input {\n        width: 100%;\n        padding: 8px 12px;\n        font-size: 16px;\n        box-sizing: border-box;\n      }\n      .suggestions {\n        position: absolute;\n        top: 100%;\n        left: 0;\n        right: 0;\n        background: #fff;\n        border: 1px solid #ddd;\n        border-top: none;\n        list-style: none;\n        margin: 0;\n        padding: 0;\n        z-index: 100;\n      }\n      .suggestions li {\n        padding: 10px 12px;\n        cursor: pointer;\n        font-size: 15px;\n      }\n      .suggestions li.highlighted {\n        background: #f0f7f4;\n      }\n      .suggestions li.no-results {\n        color: #888;\n        cursor: default;\n      }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Cdiv class=\"autocomplete-wrapper\">\n      \u003Cinput\n        id=\"lld-input\"\n        type=\"text\"\n        placeholder=\"e.g. NW-25-24-1-W5\"\n        autocomplete=\"off\"\n      \u002F>\n      \u003Cul\n        id=\"suggestions\"\n        class=\"suggestions\"\n        hidden\n      >\u003C\u002Ful>\n    \u003C\u002Fdiv>\n\n    \u003Cscript>\n      const API_KEY = \"YOUR_API_KEY\";\n      const input = document.getElementById(\"lld-input\");\n      const list = document.getElementById(\"suggestions\");\n      let features = [];\n      let highlightedIndex = -1;\n      let controller = null;\n\n      function debounce(fn, delay) {\n        let timer;\n        return function (...args) {\n          clearTimeout(timer);\n          timer = setTimeout(() => fn.apply(this, args), delay);\n        };\n      }\n\n      async function fetchSuggestions(query) {\n        if (controller) controller.abort();\n        controller = new AbortController();\n\n        try {\n          const res = await fetch(\n            `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location` +\n              `?location=${encodeURIComponent(query)}&limit=3`,\n            {\n              headers: { \"X-API-Key\": API_KEY },\n              signal: controller.signal\n            }\n          );\n          const data = await res.json();\n          return data.features || [];\n        } catch (err) {\n          if (err.name === \"AbortError\") return null;\n          console.error(\"Autocomplete error:\", err);\n          return [];\n        }\n      }\n\n      function renderSuggestions() {\n        list.innerHTML = \"\";\n        highlightedIndex = -1;\n\n        if (features.length === 0) {\n          const li = document.createElement(\"li\");\n          li.className = \"no-results\";\n          li.textContent = \"No results\";\n          list.appendChild(li);\n        } else {\n          features.forEach((feature, i) => {\n            const li = document.createElement(\"li\");\n            li.textContent = feature.properties.legal_location;\n            li.addEventListener(\"mouseenter\", () => highlight(i));\n            li.addEventListener(\"click\", () => selectFeature(feature));\n            list.appendChild(li);\n          });\n        }\n\n        list.hidden = false;\n      }\n\n      function highlight(index) {\n        const items = list.querySelectorAll(\"li:not(.no-results)\");\n        items.forEach((el) => el.classList.remove(\"highlighted\"));\n        highlightedIndex = index;\n        if (index >= 0 && index \u003C items.length) {\n          items[index].classList.add(\"highlighted\");\n        }\n      }\n\n      function selectFeature(feature) {\n        input.value = feature.properties.legal_location;\n        const [lng, lat] = feature.geometry.coordinates;\n        list.hidden = true;\n        features = [];\n        console.log(\"Selected:\", feature.properties.legal_location, { lng, lat });\n        \u002F\u002F → fly your map here, or dispatch an event\n      }\n\n      const debouncedFetch = debounce(async (query) => {\n        if (query.length \u003C 2) {\n          list.hidden = true;\n          return;\n        }\n        const results = await fetchSuggestions(query);\n        if (results === null) return; \u002F\u002F aborted\n        features = results;\n        renderSuggestions();\n      }, 300);\n\n      input.addEventListener(\"input\", () => debouncedFetch(input.value.trim()));\n\n      input.addEventListener(\"keydown\", (e) => {\n        const items = list.querySelectorAll(\"li:not(.no-results)\");\n        if (e.key === \"ArrowDown\") {\n          e.preventDefault();\n          highlight(Math.min(highlightedIndex + 1, items.length - 1));\n        } else if (e.key === \"ArrowUp\") {\n          e.preventDefault();\n          highlight(Math.max(highlightedIndex - 1, 0));\n        } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n          e.preventDefault();\n          selectFeature(features[highlightedIndex]);\n        } else if (e.key === \"Escape\") {\n          list.hidden = true;\n        }\n      });\n\n      document.addEventListener(\"click\", (e) => {\n        if (!e.target.closest(\".autocomplete-wrapper\")) {\n          list.hidden = true;\n        }\n      });\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n","html",[83,3452,3453,3469,3490,3500,3523,3543,3551,3562,3575,3591,3595,3603,3617,3636,3650,3662,3666,3675,3686,3700,3712,3724,3740,3763,3776,3788,3800,3811,3823,3828,3840,3858,3871,3885,3890,3906,3920,3925,3941,3956,3968,3973,3983,3993,4003,4024,4033,4048,4062,4077,4092,4098,4106,4119,4133,4139,4149,4158,4163,4173,4192,4222,4250,4266,4283,4296,4301,4321,4331,4347,4361,4401,4407,4412,4417,4435,4457,4473,4478,4486,4502,4514,4540,4546,4568,4582,4588,4596,4617,4636,4654,4686,4715,4724,4730,4735,4740,4752,4770,4784,4789,4812,4840,4861,4882,4901,4911,4939,4967,4992,5030,5065,5083,5093,5098,5103,5121,5126,5131,5147,5178,5224,5236,5267,5302,5307,5312,5317,5332,5357,5387,5403,5415,5464,5470,5475,5480,5506,5528,5543,5550,5555,5577,5600,5611,5621,5634,5639,5683,5688,5719,5746,5773,5788,5828,5859,5872,5902,5940,5953,5972,6002,6017,6022,6032,6037,6067,6102,6117,6122,6131,6140,6149],{"__ignoreMap":85},[189,3454,3455,3458,3462,3466],{"class":191,"line":192},[189,3456,3457],{"class":199},"\u003C!",[189,3459,3461],{"class":3460},"sJFLg","DOCTYPE",[189,3463,3465],{"class":3464},"s5q8q"," html",[189,3467,3468],{"class":199},">\n",[189,3470,3471,3474,3476,3479,3481,3483,3486,3488],{"class":191,"line":223},[189,3472,3473],{"class":199},"\u003C",[189,3475,3450],{"class":3460},[189,3477,3478],{"class":3464}," lang",[189,3480,200],{"class":199},[189,3482,235],{"class":234},[189,3484,3485],{"class":203},"en",[189,3487,235],{"class":234},[189,3489,3468],{"class":199},[189,3491,3492,3495,3498],{"class":191,"line":258},[189,3493,3494],{"class":199},"  \u003C",[189,3496,3497],{"class":3460},"head",[189,3499,3468],{"class":199},[189,3501,3502,3505,3508,3511,3513,3515,3518,3520],{"class":191,"line":265},[189,3503,3504],{"class":199},"    \u003C",[189,3506,3507],{"class":3460},"meta",[189,3509,3510],{"class":3464}," charset",[189,3512,200],{"class":199},[189,3514,235],{"class":234},[189,3516,3517],{"class":203},"UTF-8",[189,3519,235],{"class":234},[189,3521,3522],{"class":199}," \u002F>\n",[189,3524,3525,3527,3530,3533,3536,3539,3541],{"class":191,"line":288},[189,3526,3504],{"class":199},[189,3528,3529],{"class":3460},"title",[189,3531,3532],{"class":199},">",[189,3534,3535],{"class":452},"Township Autocomplete",[189,3537,3538],{"class":199},"\u003C\u002F",[189,3540,3529],{"class":3460},[189,3542,3468],{"class":199},[189,3544,3545,3547,3549],{"class":191,"line":302},[189,3546,3504],{"class":199},[189,3548,955],{"class":3460},[189,3550,3468],{"class":199},[189,3552,3553,3556,3560],{"class":191,"line":308},[189,3554,3555],{"class":199},"      .",[189,3557,3559],{"class":3558},"sKL33","autocomplete-wrapper",[189,3561,318],{"class":199},[189,3563,3564,3568,3570,3573],{"class":191,"line":321},[189,3565,3567],{"class":3566},"s5HLA","        position",[189,3569,315],{"class":199},[189,3571,3572],{"class":1563}," relative",[189,3574,255],{"class":199},[189,3576,3577,3580,3582,3585,3589],{"class":191,"line":348},[189,3578,3579],{"class":3566},"        width",[189,3581,315],{"class":199},[189,3583,3584],{"class":1946}," 360",[189,3586,3588],{"class":3587},"sQBxk","px",[189,3590,255],{"class":199},[189,3592,3593],{"class":191,"line":354},[189,3594,2851],{"class":199},[189,3596,3597,3601],{"class":191,"line":360},[189,3598,3600],{"class":3599},"skzw8","      input",[189,3602,318],{"class":199},[189,3604,3605,3607,3609,3612,3615],{"class":191,"line":580},[189,3606,3579],{"class":3566},[189,3608,315],{"class":199},[189,3610,3611],{"class":1946}," 100",[189,3613,3614],{"class":3587},"%",[189,3616,255],{"class":199},[189,3618,3619,3622,3624,3627,3629,3632,3634],{"class":191,"line":608},[189,3620,3621],{"class":3566},"        padding",[189,3623,315],{"class":199},[189,3625,3626],{"class":1946}," 8",[189,3628,3588],{"class":3587},[189,3630,3631],{"class":1946}," 12",[189,3633,3588],{"class":3587},[189,3635,255],{"class":199},[189,3637,3638,3641,3643,3646,3648],{"class":191,"line":2829},[189,3639,3640],{"class":3566},"        font-size",[189,3642,315],{"class":199},[189,3644,3645],{"class":1946}," 16",[189,3647,3588],{"class":3587},[189,3649,255],{"class":199},[189,3651,3652,3655,3657,3660],{"class":191,"line":2848},[189,3653,3654],{"class":3566},"        box-sizing",[189,3656,315],{"class":199},[189,3658,3659],{"class":1563}," border-box",[189,3661,255],{"class":199},[189,3663,3664],{"class":191,"line":2854},[189,3665,2851],{"class":199},[189,3667,3668,3670,3673],{"class":191,"line":2859},[189,3669,3555],{"class":199},[189,3671,3672],{"class":3558},"suggestions",[189,3674,318],{"class":199},[189,3676,3677,3679,3681,3684],{"class":191,"line":2865},[189,3678,3567],{"class":3566},[189,3680,315],{"class":199},[189,3682,3683],{"class":1563}," absolute",[189,3685,255],{"class":199},[189,3687,3689,3692,3694,3696,3698],{"class":191,"line":3688},19,[189,3690,3691],{"class":3566},"        top",[189,3693,315],{"class":199},[189,3695,3611],{"class":1946},[189,3697,3614],{"class":3587},[189,3699,255],{"class":199},[189,3701,3703,3706,3708,3710],{"class":191,"line":3702},20,[189,3704,3705],{"class":3566},"        left",[189,3707,315],{"class":199},[189,3709,2098],{"class":1946},[189,3711,255],{"class":199},[189,3713,3715,3718,3720,3722],{"class":191,"line":3714},21,[189,3716,3717],{"class":3566},"        right",[189,3719,315],{"class":199},[189,3721,2098],{"class":1946},[189,3723,255],{"class":199},[189,3725,3727,3730,3732,3735,3738],{"class":191,"line":3726},22,[189,3728,3729],{"class":3566},"        background",[189,3731,315],{"class":199},[189,3733,3734],{"class":199}," #",[189,3736,3737],{"class":1563},"fff",[189,3739,255],{"class":199},[189,3741,3743,3746,3748,3751,3753,3756,3758,3761],{"class":191,"line":3742},23,[189,3744,3745],{"class":3566},"        border",[189,3747,315],{"class":199},[189,3749,3750],{"class":1946}," 1",[189,3752,3588],{"class":3587},[189,3754,3755],{"class":1563}," solid",[189,3757,3734],{"class":199},[189,3759,3760],{"class":1563},"ddd",[189,3762,255],{"class":199},[189,3764,3766,3769,3771,3774],{"class":191,"line":3765},24,[189,3767,3768],{"class":3566},"        border-top",[189,3770,315],{"class":199},[189,3772,3773],{"class":1563}," none",[189,3775,255],{"class":199},[189,3777,3779,3782,3784,3786],{"class":191,"line":3778},25,[189,3780,3781],{"class":3566},"        list-style",[189,3783,315],{"class":199},[189,3785,3773],{"class":1563},[189,3787,255],{"class":199},[189,3789,3791,3794,3796,3798],{"class":191,"line":3790},26,[189,3792,3793],{"class":3566},"        margin",[189,3795,315],{"class":199},[189,3797,2098],{"class":1946},[189,3799,255],{"class":199},[189,3801,3803,3805,3807,3809],{"class":191,"line":3802},27,[189,3804,3621],{"class":3566},[189,3806,315],{"class":199},[189,3808,2098],{"class":1946},[189,3810,255],{"class":199},[189,3812,3814,3817,3819,3821],{"class":191,"line":3813},28,[189,3815,3816],{"class":3566},"        z-index",[189,3818,315],{"class":199},[189,3820,3611],{"class":1946},[189,3822,255],{"class":199},[189,3824,3826],{"class":191,"line":3825},29,[189,3827,2851],{"class":199},[189,3829,3831,3833,3835,3838],{"class":191,"line":3830},30,[189,3832,3555],{"class":199},[189,3834,3672],{"class":3558},[189,3836,3837],{"class":3599}," li",[189,3839,318],{"class":199},[189,3841,3843,3845,3847,3850,3852,3854,3856],{"class":191,"line":3842},31,[189,3844,3621],{"class":3566},[189,3846,315],{"class":199},[189,3848,3849],{"class":1946}," 10",[189,3851,3588],{"class":3587},[189,3853,3631],{"class":1946},[189,3855,3588],{"class":3587},[189,3857,255],{"class":199},[189,3859,3861,3864,3866,3869],{"class":191,"line":3860},32,[189,3862,3863],{"class":3566},"        cursor",[189,3865,315],{"class":199},[189,3867,3868],{"class":1563}," pointer",[189,3870,255],{"class":199},[189,3872,3874,3876,3878,3881,3883],{"class":191,"line":3873},33,[189,3875,3640],{"class":3566},[189,3877,315],{"class":199},[189,3879,3880],{"class":1946}," 15",[189,3882,3588],{"class":3587},[189,3884,255],{"class":199},[189,3886,3888],{"class":191,"line":3887},34,[189,3889,2851],{"class":199},[189,3891,3893,3895,3897,3899,3901,3904],{"class":191,"line":3892},35,[189,3894,3555],{"class":199},[189,3896,3672],{"class":3558},[189,3898,3837],{"class":3599},[189,3900,246],{"class":199},[189,3902,3903],{"class":3558},"highlighted",[189,3905,318],{"class":199},[189,3907,3909,3911,3913,3915,3918],{"class":191,"line":3908},36,[189,3910,3729],{"class":3566},[189,3912,315],{"class":199},[189,3914,3734],{"class":199},[189,3916,3917],{"class":1563},"f0f7f4",[189,3919,255],{"class":199},[189,3921,3923],{"class":191,"line":3922},37,[189,3924,2851],{"class":199},[189,3926,3928,3930,3932,3934,3936,3939],{"class":191,"line":3927},38,[189,3929,3555],{"class":199},[189,3931,3672],{"class":3558},[189,3933,3837],{"class":3599},[189,3935,246],{"class":199},[189,3937,3938],{"class":3558},"no-results",[189,3940,318],{"class":199},[189,3942,3944,3947,3949,3951,3954],{"class":191,"line":3943},39,[189,3945,3946],{"class":3566},"        color",[189,3948,315],{"class":199},[189,3950,3734],{"class":199},[189,3952,3953],{"class":1563},"888",[189,3955,255],{"class":199},[189,3957,3959,3961,3963,3966],{"class":191,"line":3958},40,[189,3960,3863],{"class":3566},[189,3962,315],{"class":199},[189,3964,3965],{"class":1563}," default",[189,3967,255],{"class":199},[189,3969,3971],{"class":191,"line":3970},41,[189,3972,2851],{"class":199},[189,3974,3976,3979,3981],{"class":191,"line":3975},42,[189,3977,3978],{"class":199},"    \u003C\u002F",[189,3980,955],{"class":3460},[189,3982,3468],{"class":199},[189,3984,3986,3989,3991],{"class":191,"line":3985},43,[189,3987,3988],{"class":199},"  \u003C\u002F",[189,3990,3497],{"class":3460},[189,3992,3468],{"class":199},[189,3994,3996,3998,4001],{"class":191,"line":3995},44,[189,3997,3494],{"class":199},[189,3999,4000],{"class":3460},"body",[189,4002,3468],{"class":199},[189,4004,4006,4008,4011,4014,4016,4018,4020,4022],{"class":191,"line":4005},45,[189,4007,3504],{"class":199},[189,4009,4010],{"class":3460},"div",[189,4012,4013],{"class":3464}," class",[189,4015,200],{"class":199},[189,4017,235],{"class":234},[189,4019,3559],{"class":203},[189,4021,235],{"class":234},[189,4023,3468],{"class":199},[189,4025,4027,4030],{"class":191,"line":4026},46,[189,4028,4029],{"class":199},"      \u003C",[189,4031,4032],{"class":3460},"input\n",[189,4034,4036,4039,4041,4043,4046],{"class":191,"line":4035},47,[189,4037,4038],{"class":3464},"        id",[189,4040,200],{"class":199},[189,4042,235],{"class":234},[189,4044,4045],{"class":203},"lld-input",[189,4047,1574],{"class":234},[189,4049,4051,4054,4056,4058,4060],{"class":191,"line":4050},48,[189,4052,4053],{"class":3464},"        type",[189,4055,200],{"class":199},[189,4057,235],{"class":234},[189,4059,81],{"class":203},[189,4061,1574],{"class":234},[189,4063,4065,4068,4070,4072,4075],{"class":191,"line":4064},49,[189,4066,4067],{"class":3464},"        placeholder",[189,4069,200],{"class":199},[189,4071,235],{"class":234},[189,4073,4074],{"class":203},"e.g. NW-25-24-1-W5",[189,4076,1574],{"class":234},[189,4078,4080,4083,4085,4087,4090],{"class":191,"line":4079},50,[189,4081,4082],{"class":3464},"        autocomplete",[189,4084,200],{"class":199},[189,4086,235],{"class":234},[189,4088,4089],{"class":203},"off",[189,4091,1574],{"class":234},[189,4093,4095],{"class":191,"line":4094},51,[189,4096,4097],{"class":199},"      \u002F>\n",[189,4099,4101,4103],{"class":191,"line":4100},52,[189,4102,4029],{"class":199},[189,4104,4105],{"class":3460},"ul\n",[189,4107,4109,4111,4113,4115,4117],{"class":191,"line":4108},53,[189,4110,4038],{"class":3464},[189,4112,200],{"class":199},[189,4114,235],{"class":234},[189,4116,3672],{"class":203},[189,4118,1574],{"class":234},[189,4120,4122,4125,4127,4129,4131],{"class":191,"line":4121},54,[189,4123,4124],{"class":3464},"        class",[189,4126,200],{"class":199},[189,4128,235],{"class":234},[189,4130,3672],{"class":203},[189,4132,1574],{"class":234},[189,4134,4136],{"class":191,"line":4135},55,[189,4137,4138],{"class":3464},"        hidden\n",[189,4140,4142,4145,4147],{"class":191,"line":4141},56,[189,4143,4144],{"class":199},"      >\u003C\u002F",[189,4146,917],{"class":3460},[189,4148,3468],{"class":199},[189,4150,4152,4154,4156],{"class":191,"line":4151},57,[189,4153,3978],{"class":199},[189,4155,4010],{"class":3460},[189,4157,3468],{"class":199},[189,4159,4161],{"class":191,"line":4160},58,[189,4162,262],{"emptyLinePlaceholder":261},[189,4164,4166,4168,4171],{"class":191,"line":4165},59,[189,4167,3504],{"class":199},[189,4169,4170],{"class":3460},"script",[189,4172,3468],{"class":199},[189,4174,4176,4179,4182,4184,4186,4188,4190],{"class":191,"line":4175},60,[189,4177,4178],{"class":268},"      const",[189,4180,4181],{"class":195}," API_KEY",[189,4183,275],{"class":199},[189,4185,1493],{"class":234},[189,4187,3177],{"class":203},[189,4189,235],{"class":234},[189,4191,255],{"class":199},[189,4193,4195,4197,4200,4202,4205,4207,4210,4212,4214,4216,4218,4220],{"class":191,"line":4194},61,[189,4196,4178],{"class":268},[189,4198,4199],{"class":195}," input",[189,4201,275],{"class":199},[189,4203,4204],{"class":195}," document",[189,4206,246],{"class":199},[189,4208,4209],{"class":226},"getElementById",[189,4211,231],{"class":230},[189,4213,235],{"class":234},[189,4215,4045],{"class":203},[189,4217,235],{"class":234},[189,4219,243],{"class":230},[189,4221,255],{"class":199},[189,4223,4225,4227,4230,4232,4234,4236,4238,4240,4242,4244,4246,4248],{"class":191,"line":4224},62,[189,4226,4178],{"class":268},[189,4228,4229],{"class":195}," list",[189,4231,275],{"class":199},[189,4233,4204],{"class":195},[189,4235,246],{"class":199},[189,4237,4209],{"class":226},[189,4239,231],{"class":230},[189,4241,235],{"class":234},[189,4243,3672],{"class":203},[189,4245,235],{"class":234},[189,4247,243],{"class":230},[189,4249,255],{"class":199},[189,4251,4253,4256,4259,4261,4264],{"class":191,"line":4252},63,[189,4254,4255],{"class":268},"      let",[189,4257,4258],{"class":195}," features",[189,4260,275],{"class":199},[189,4262,4263],{"class":230}," []",[189,4265,255],{"class":199},[189,4267,4269,4271,4274,4276,4279,4281],{"class":191,"line":4268},64,[189,4270,4255],{"class":268},[189,4272,4273],{"class":195}," highlightedIndex",[189,4275,275],{"class":199},[189,4277,4278],{"class":1860}," -",[189,4280,2036],{"class":1946},[189,4282,255],{"class":199},[189,4284,4286,4288,4290,4292,4294],{"class":191,"line":4285},65,[189,4287,4255],{"class":268},[189,4289,3037],{"class":195},[189,4291,275],{"class":199},[189,4293,3042],{"class":1860},[189,4295,255],{"class":199},[189,4297,4299],{"class":191,"line":4298},66,[189,4300,262],{"emptyLinePlaceholder":261},[189,4302,4304,4307,4309,4311,4313,4315,4317,4319],{"class":191,"line":4303},67,[189,4305,4306],{"class":268},"      function",[189,4308,2903],{"class":226},[189,4310,231],{"class":199},[189,4312,2908],{"class":560},[189,4314,1896],{"class":199},[189,4316,2913],{"class":560},[189,4318,243],{"class":199},[189,4320,318],{"class":199},[189,4322,4324,4327,4329],{"class":191,"line":4323},68,[189,4325,4326],{"class":268},"        let",[189,4328,2925],{"class":195},[189,4330,255],{"class":199},[189,4332,4334,4337,4339,4341,4343,4345],{"class":191,"line":4333},69,[189,4335,4336],{"class":278},"        return",[189,4338,2055],{"class":268},[189,4340,2937],{"class":199},[189,4342,2940],{"class":560},[189,4344,243],{"class":199},[189,4346,318],{"class":199},[189,4348,4350,4353,4355,4357,4359],{"class":191,"line":4349},70,[189,4351,4352],{"class":226},"          clearTimeout",[189,4354,231],{"class":1885},[189,4356,2954],{"class":195},[189,4358,243],{"class":1885},[189,4360,255],{"class":199},[189,4362,4364,4367,4369,4371,4373,4375,4377,4379,4381,4383,4385,4387,4389,4391,4393,4395,4397,4399],{"class":191,"line":4363},71,[189,4365,4366],{"class":195},"          timer",[189,4368,275],{"class":199},[189,4370,1937],{"class":226},[189,4372,231],{"class":1885},[189,4374,252],{"class":199},[189,4376,1934],{"class":1933},[189,4378,2976],{"class":195},[189,4380,246],{"class":199},[189,4382,2981],{"class":226},[189,4384,231],{"class":1885},[189,4386,2987],{"class":2986},[189,4388,1896],{"class":199},[189,4390,2992],{"class":195},[189,4392,243],{"class":1885},[189,4394,1896],{"class":199},[189,4396,2913],{"class":195},[189,4398,243],{"class":1885},[189,4400,255],{"class":199},[189,4402,4404],{"class":191,"line":4403},72,[189,4405,4406],{"class":199},"        };\n",[189,4408,4410],{"class":191,"line":4409},73,[189,4411,2851],{"class":199},[189,4413,4415],{"class":191,"line":4414},74,[189,4416,262],{"emptyLinePlaceholder":261},[189,4418,4420,4423,4425,4427,4429,4431,4433],{"class":191,"line":4419},75,[189,4421,4422],{"class":268},"      async",[189,4424,2055],{"class":268},[189,4426,3057],{"class":226},[189,4428,231],{"class":199},[189,4430,3062],{"class":560},[189,4432,243],{"class":199},[189,4434,318],{"class":199},[189,4436,4438,4441,4443,4445,4447,4449,4451,4453,4455],{"class":191,"line":4437},76,[189,4439,4440],{"class":278},"        if",[189,4442,1852],{"class":1885},[189,4444,3076],{"class":195},[189,4446,243],{"class":1885},[189,4448,3037],{"class":195},[189,4450,246],{"class":199},[189,4452,3085],{"class":226},[189,4454,252],{"class":1885},[189,4456,255],{"class":199},[189,4458,4460,4463,4465,4467,4469,4471],{"class":191,"line":4459},77,[189,4461,4462],{"class":195},"        controller",[189,4464,275],{"class":199},[189,4466,1917],{"class":1860},[189,4468,3101],{"class":226},[189,4470,252],{"class":1885},[189,4472,255],{"class":199},[189,4474,4476],{"class":191,"line":4475},78,[189,4477,262],{"emptyLinePlaceholder":261},[189,4479,4481,4484],{"class":191,"line":4480},79,[189,4482,4483],{"class":278},"        try",[189,4485,318],{"class":199},[189,4487,4489,4492,4494,4496,4498,4500],{"class":191,"line":4488},80,[189,4490,4491],{"class":268},"          const",[189,4493,2127],{"class":195},[189,4495,275],{"class":199},[189,4497,279],{"class":278},[189,4499,282],{"class":226},[189,4501,285],{"class":1885},[189,4503,4505,4508,4510,4512],{"class":191,"line":4504},81,[189,4506,4507],{"class":234},"            `",[189,4509,3315],{"class":203},[189,4511,409],{"class":234},[189,4513,3320],{"class":1860},[189,4515,4517,4520,4522,4524,4526,4528,4530,4532,4534,4536,4538],{"class":191,"line":4516},82,[189,4518,4519],{"class":234},"              `",[189,4521,3327],{"class":203},[189,4523,391],{"class":390},[189,4525,3136],{"class":226},[189,4527,231],{"class":230},[189,4529,3062],{"class":394},[189,4531,243],{"class":230},[189,4533,406],{"class":390},[189,4535,3147],{"class":203},[189,4537,409],{"class":234},[189,4539,299],{"class":199},[189,4541,4543],{"class":191,"line":4542},83,[189,4544,4545],{"class":199},"            {\n",[189,4547,4549,4552,4554,4556,4558,4560,4562,4564,4566],{"class":191,"line":4548},84,[189,4550,4551],{"class":311},"              headers",[189,4553,315],{"class":199},[189,4555,1899],{"class":199},[189,4557,1493],{"class":234},[189,4559,328],{"class":327},[189,4561,235],{"class":234},[189,4563,315],{"class":199},[189,4565,4181],{"class":195},[189,4567,3182],{"class":199},[189,4569,4571,4574,4576,4578,4580],{"class":191,"line":4570},85,[189,4572,4573],{"class":311},"              signal",[189,4575,315],{"class":199},[189,4577,3037],{"class":195},[189,4579,246],{"class":199},[189,4581,3196],{"class":195},[189,4583,4585],{"class":191,"line":4584},86,[189,4586,4587],{"class":199},"            }\n",[189,4589,4591,4594],{"class":191,"line":4590},87,[189,4592,4593],{"class":1885},"          )",[189,4595,255],{"class":199},[189,4597,4599,4601,4603,4605,4607,4609,4611,4613,4615],{"class":191,"line":4598},88,[189,4600,4491],{"class":268},[189,4602,3218],{"class":195},[189,4604,275],{"class":199},[189,4606,279],{"class":278},[189,4608,2127],{"class":195},[189,4610,246],{"class":199},[189,4612,1482],{"class":226},[189,4614,252],{"class":1885},[189,4616,255],{"class":199},[189,4618,4620,4623,4625,4627,4629,4632,4634],{"class":191,"line":4619},89,[189,4621,4622],{"class":278},"          return",[189,4624,3218],{"class":195},[189,4626,246],{"class":199},[189,4628,2658],{"class":195},[189,4630,4631],{"class":1860}," ||",[189,4633,4263],{"class":1885},[189,4635,255],{"class":199},[189,4637,4639,4642,4645,4647,4650,4652],{"class":191,"line":4638},90,[189,4640,4641],{"class":199},"        }",[189,4643,4644],{"class":278}," catch",[189,4646,1852],{"class":1885},[189,4648,4649],{"class":195},"err",[189,4651,243],{"class":1885},[189,4653,318],{"class":199},[189,4655,4657,4660,4662,4664,4666,4669,4672,4674,4676,4678,4680,4682,4684],{"class":191,"line":4656},91,[189,4658,4659],{"class":278},"          if",[189,4661,1852],{"class":1885},[189,4663,4649],{"class":195},[189,4665,246],{"class":199},[189,4667,4668],{"class":195},"name",[189,4670,4671],{"class":1860}," ===",[189,4673,1493],{"class":234},[189,4675,3254],{"class":203},[189,4677,235],{"class":234},[189,4679,243],{"class":1885},[189,4681,2175],{"class":278},[189,4683,3042],{"class":1860},[189,4685,255],{"class":199},[189,4687,4689,4692,4694,4697,4699,4701,4704,4706,4708,4711,4713],{"class":191,"line":4688},92,[189,4690,4691],{"class":195},"          console",[189,4693,246],{"class":199},[189,4695,4696],{"class":226},"error",[189,4698,231],{"class":1885},[189,4700,235],{"class":234},[189,4702,4703],{"class":203},"Autocomplete error:",[189,4705,235],{"class":234},[189,4707,1896],{"class":199},[189,4709,4710],{"class":195}," err",[189,4712,243],{"class":1885},[189,4714,255],{"class":199},[189,4716,4718,4720,4722],{"class":191,"line":4717},93,[189,4719,4622],{"class":278},[189,4721,4263],{"class":1885},[189,4723,255],{"class":199},[189,4725,4727],{"class":191,"line":4726},94,[189,4728,4729],{"class":199},"        }\n",[189,4731,4733],{"class":191,"line":4732},95,[189,4734,2851],{"class":199},[189,4736,4738],{"class":191,"line":4737},96,[189,4739,262],{"emptyLinePlaceholder":261},[189,4741,4743,4745,4748,4750],{"class":191,"line":4742},97,[189,4744,4306],{"class":268},[189,4746,4747],{"class":226}," renderSuggestions",[189,4749,252],{"class":199},[189,4751,318],{"class":199},[189,4753,4755,4758,4760,4763,4765,4768],{"class":191,"line":4754},98,[189,4756,4757],{"class":195},"        list",[189,4759,246],{"class":199},[189,4761,4762],{"class":195},"innerHTML",[189,4764,275],{"class":199},[189,4766,4767],{"class":234}," \"\"",[189,4769,255],{"class":199},[189,4771,4773,4776,4778,4780,4782],{"class":191,"line":4772},99,[189,4774,4775],{"class":195},"        highlightedIndex",[189,4777,275],{"class":199},[189,4779,4278],{"class":1860},[189,4781,2036],{"class":1946},[189,4783,255],{"class":199},[189,4785,4787],{"class":191,"line":4786},100,[189,4788,262],{"emptyLinePlaceholder":261},[189,4790,4792,4794,4796,4798,4800,4804,4806,4808,4810],{"class":191,"line":4791},101,[189,4793,4440],{"class":278},[189,4795,1852],{"class":1885},[189,4797,2658],{"class":195},[189,4799,246],{"class":199},[189,4801,4803],{"class":4802},"s131V","length",[189,4805,4671],{"class":1860},[189,4807,2098],{"class":1946},[189,4809,243],{"class":1885},[189,4811,318],{"class":199},[189,4813,4815,4817,4819,4821,4823,4825,4828,4830,4832,4834,4836,4838],{"class":191,"line":4814},102,[189,4816,4491],{"class":268},[189,4818,3837],{"class":195},[189,4820,275],{"class":199},[189,4822,4204],{"class":195},[189,4824,246],{"class":199},[189,4826,4827],{"class":226},"createElement",[189,4829,231],{"class":1885},[189,4831,235],{"class":234},[189,4833,34],{"class":203},[189,4835,235],{"class":234},[189,4837,243],{"class":1885},[189,4839,255],{"class":199},[189,4841,4843,4846,4848,4851,4853,4855,4857,4859],{"class":191,"line":4842},103,[189,4844,4845],{"class":195},"          li",[189,4847,246],{"class":199},[189,4849,4850],{"class":195},"className",[189,4852,275],{"class":199},[189,4854,1493],{"class":234},[189,4856,3938],{"class":203},[189,4858,235],{"class":234},[189,4860,255],{"class":199},[189,4862,4864,4866,4868,4871,4873,4875,4878,4880],{"class":191,"line":4863},104,[189,4865,4845],{"class":195},[189,4867,246],{"class":199},[189,4869,4870],{"class":195},"textContent",[189,4872,275],{"class":199},[189,4874,1493],{"class":234},[189,4876,4877],{"class":203},"No results",[189,4879,235],{"class":234},[189,4881,255],{"class":199},[189,4883,4885,4888,4890,4893,4895,4897,4899],{"class":191,"line":4884},105,[189,4886,4887],{"class":195},"          list",[189,4889,246],{"class":199},[189,4891,4892],{"class":226},"appendChild",[189,4894,231],{"class":1885},[189,4896,34],{"class":195},[189,4898,243],{"class":1885},[189,4900,255],{"class":199},[189,4902,4904,4906,4909],{"class":191,"line":4903},106,[189,4905,4641],{"class":199},[189,4907,4908],{"class":278}," else",[189,4910,318],{"class":199},[189,4912,4914,4917,4919,4922,4924,4926,4929,4931,4933,4935,4937],{"class":191,"line":4913},107,[189,4915,4916],{"class":195},"          features",[189,4918,246],{"class":199},[189,4920,4921],{"class":226},"forEach",[189,4923,231],{"class":1885},[189,4925,231],{"class":199},[189,4927,4928],{"class":560},"feature",[189,4930,1896],{"class":199},[189,4932,2093],{"class":560},[189,4934,243],{"class":199},[189,4936,1934],{"class":1933},[189,4938,318],{"class":199},[189,4940,4942,4945,4947,4949,4951,4953,4955,4957,4959,4961,4963,4965],{"class":191,"line":4941},108,[189,4943,4944],{"class":268},"            const",[189,4946,3837],{"class":195},[189,4948,275],{"class":199},[189,4950,4204],{"class":195},[189,4952,246],{"class":199},[189,4954,4827],{"class":226},[189,4956,231],{"class":1885},[189,4958,235],{"class":234},[189,4960,34],{"class":203},[189,4962,235],{"class":234},[189,4964,243],{"class":1885},[189,4966,255],{"class":199},[189,4968,4970,4973,4975,4977,4979,4982,4984,4986,4988,4990],{"class":191,"line":4969},109,[189,4971,4972],{"class":195},"            li",[189,4974,246],{"class":199},[189,4976,4870],{"class":195},[189,4978,275],{"class":199},[189,4980,4981],{"class":195}," feature",[189,4983,246],{"class":199},[189,4985,2760],{"class":195},[189,4987,246],{"class":199},[189,4989,2773],{"class":195},[189,4991,255],{"class":199},[189,4993,4995,4997,4999,5002,5004,5006,5009,5011,5013,5016,5018,5021,5023,5026,5028],{"class":191,"line":4994},110,[189,4996,4972],{"class":195},[189,4998,246],{"class":199},[189,5000,5001],{"class":226},"addEventListener",[189,5003,231],{"class":1885},[189,5005,235],{"class":234},[189,5007,5008],{"class":203},"mouseenter",[189,5010,235],{"class":234},[189,5012,1896],{"class":199},[189,5014,5015],{"class":199}," ()",[189,5017,1934],{"class":1933},[189,5019,5020],{"class":226}," highlight",[189,5022,231],{"class":1885},[189,5024,5025],{"class":195},"i",[189,5027,1950],{"class":1885},[189,5029,255],{"class":199},[189,5031,5033,5035,5037,5039,5041,5043,5046,5048,5050,5052,5054,5057,5059,5061,5063],{"class":191,"line":5032},111,[189,5034,4972],{"class":195},[189,5036,246],{"class":199},[189,5038,5001],{"class":226},[189,5040,231],{"class":1885},[189,5042,235],{"class":234},[189,5044,5045],{"class":203},"click",[189,5047,235],{"class":234},[189,5049,1896],{"class":199},[189,5051,5015],{"class":199},[189,5053,1934],{"class":1933},[189,5055,5056],{"class":226}," selectFeature",[189,5058,231],{"class":1885},[189,5060,4928],{"class":195},[189,5062,1950],{"class":1885},[189,5064,255],{"class":199},[189,5066,5068,5071,5073,5075,5077,5079,5081],{"class":191,"line":5067},112,[189,5069,5070],{"class":195},"            list",[189,5072,246],{"class":199},[189,5074,4892],{"class":226},[189,5076,231],{"class":1885},[189,5078,34],{"class":195},[189,5080,243],{"class":1885},[189,5082,255],{"class":199},[189,5084,5086,5089,5091],{"class":191,"line":5085},113,[189,5087,5088],{"class":199},"          }",[189,5090,243],{"class":1885},[189,5092,255],{"class":199},[189,5094,5096],{"class":191,"line":5095},114,[189,5097,4729],{"class":199},[189,5099,5101],{"class":191,"line":5100},115,[189,5102,262],{"emptyLinePlaceholder":261},[189,5104,5106,5108,5110,5113,5115,5119],{"class":191,"line":5105},116,[189,5107,4757],{"class":195},[189,5109,246],{"class":199},[189,5111,5112],{"class":195},"hidden",[189,5114,275],{"class":199},[189,5116,5118],{"class":5117},"sq3J1"," false",[189,5120,255],{"class":199},[189,5122,5124],{"class":191,"line":5123},117,[189,5125,2851],{"class":199},[189,5127,5129],{"class":191,"line":5128},118,[189,5130,262],{"emptyLinePlaceholder":261},[189,5132,5134,5136,5138,5140,5143,5145],{"class":191,"line":5133},119,[189,5135,4306],{"class":268},[189,5137,5020],{"class":226},[189,5139,231],{"class":199},[189,5141,5142],{"class":560},"index",[189,5144,243],{"class":199},[189,5146,318],{"class":199},[189,5148,5150,5153,5156,5158,5160,5162,5165,5167,5169,5172,5174,5176],{"class":191,"line":5149},120,[189,5151,5152],{"class":268},"        const",[189,5154,5155],{"class":195}," items",[189,5157,275],{"class":199},[189,5159,4229],{"class":195},[189,5161,246],{"class":199},[189,5163,5164],{"class":226},"querySelectorAll",[189,5166,231],{"class":1885},[189,5168,235],{"class":234},[189,5170,5171],{"class":203},"li:not(.no-results)",[189,5173,235],{"class":234},[189,5175,243],{"class":1885},[189,5177,255],{"class":199},[189,5179,5181,5184,5186,5188,5190,5192,5195,5197,5199,5202,5204,5207,5209,5212,5214,5216,5218,5220,5222],{"class":191,"line":5180},121,[189,5182,5183],{"class":195},"        items",[189,5185,246],{"class":199},[189,5187,4921],{"class":226},[189,5189,231],{"class":1885},[189,5191,231],{"class":199},[189,5193,5194],{"class":560},"el",[189,5196,243],{"class":199},[189,5198,1934],{"class":1933},[189,5200,5201],{"class":195}," el",[189,5203,246],{"class":199},[189,5205,5206],{"class":195},"classList",[189,5208,246],{"class":199},[189,5210,5211],{"class":226},"remove",[189,5213,231],{"class":1885},[189,5215,235],{"class":234},[189,5217,3903],{"class":203},[189,5219,235],{"class":234},[189,5221,1950],{"class":1885},[189,5223,255],{"class":199},[189,5225,5227,5229,5231,5234],{"class":191,"line":5226},122,[189,5228,4775],{"class":195},[189,5230,275],{"class":199},[189,5232,5233],{"class":195}," index",[189,5235,255],{"class":199},[189,5237,5239,5241,5243,5245,5248,5250,5253,5255,5257,5259,5261,5263,5265],{"class":191,"line":5238},123,[189,5240,4440],{"class":278},[189,5242,1852],{"class":1885},[189,5244,5142],{"class":195},[189,5246,5247],{"class":199}," >=",[189,5249,2098],{"class":1946},[189,5251,5252],{"class":1860}," &&",[189,5254,5233],{"class":195},[189,5256,2106],{"class":199},[189,5258,5155],{"class":195},[189,5260,246],{"class":199},[189,5262,4803],{"class":4802},[189,5264,243],{"class":1885},[189,5266,318],{"class":199},[189,5268,5270,5273,5276,5278,5281,5283,5285,5287,5290,5292,5294,5296,5298,5300],{"class":191,"line":5269},124,[189,5271,5272],{"class":195},"          items",[189,5274,5275],{"class":1885},"[",[189,5277,5142],{"class":195},[189,5279,5280],{"class":1885},"]",[189,5282,246],{"class":199},[189,5284,5206],{"class":195},[189,5286,246],{"class":199},[189,5288,5289],{"class":226},"add",[189,5291,231],{"class":1885},[189,5293,235],{"class":234},[189,5295,3903],{"class":203},[189,5297,235],{"class":234},[189,5299,243],{"class":1885},[189,5301,255],{"class":199},[189,5303,5305],{"class":191,"line":5304},125,[189,5306,4729],{"class":199},[189,5308,5310],{"class":191,"line":5309},126,[189,5311,2851],{"class":199},[189,5313,5315],{"class":191,"line":5314},127,[189,5316,262],{"emptyLinePlaceholder":261},[189,5318,5320,5322,5324,5326,5328,5330],{"class":191,"line":5319},128,[189,5321,4306],{"class":268},[189,5323,5056],{"class":226},[189,5325,231],{"class":199},[189,5327,4928],{"class":560},[189,5329,243],{"class":199},[189,5331,318],{"class":199},[189,5333,5335,5338,5340,5343,5345,5347,5349,5351,5353,5355],{"class":191,"line":5334},129,[189,5336,5337],{"class":195},"        input",[189,5339,246],{"class":199},[189,5341,5342],{"class":195},"value",[189,5344,275],{"class":199},[189,5346,4981],{"class":195},[189,5348,246],{"class":199},[189,5350,2760],{"class":195},[189,5352,246],{"class":199},[189,5354,2773],{"class":195},[189,5356,255],{"class":199},[189,5358,5360,5362,5364,5366,5368,5371,5373,5375,5377,5379,5381,5383,5385],{"class":191,"line":5359},130,[189,5361,5152],{"class":268},[189,5363,2737],{"class":199},[189,5365,3370],{"class":195},[189,5367,1896],{"class":199},[189,5369,5370],{"class":195}," lat",[189,5372,5280],{"class":199},[189,5374,275],{"class":199},[189,5376,4981],{"class":195},[189,5378,246],{"class":199},[189,5380,2696],{"class":195},[189,5382,246],{"class":199},[189,5384,2730],{"class":195},[189,5386,255],{"class":199},[189,5388,5390,5392,5394,5396,5398,5401],{"class":191,"line":5389},131,[189,5391,4757],{"class":195},[189,5393,246],{"class":199},[189,5395,5112],{"class":195},[189,5397,275],{"class":199},[189,5399,5400],{"class":5117}," true",[189,5402,255],{"class":199},[189,5404,5406,5409,5411,5413],{"class":191,"line":5405},132,[189,5407,5408],{"class":195},"        features",[189,5410,275],{"class":199},[189,5412,4263],{"class":1885},[189,5414,255],{"class":199},[189,5416,5418,5421,5423,5426,5428,5430,5433,5435,5437,5439,5441,5443,5445,5447,5449,5451,5454,5456,5458,5460,5462],{"class":191,"line":5417},133,[189,5419,5420],{"class":195},"        console",[189,5422,246],{"class":199},[189,5424,5425],{"class":226},"log",[189,5427,231],{"class":1885},[189,5429,235],{"class":234},[189,5431,5432],{"class":203},"Selected:",[189,5434,235],{"class":234},[189,5436,1896],{"class":199},[189,5438,4981],{"class":195},[189,5440,246],{"class":199},[189,5442,2760],{"class":195},[189,5444,246],{"class":199},[189,5446,2773],{"class":195},[189,5448,1896],{"class":199},[189,5450,1899],{"class":199},[189,5452,5453],{"class":195}," lng",[189,5455,1896],{"class":199},[189,5457,5370],{"class":195},[189,5459,1905],{"class":199},[189,5461,243],{"class":1885},[189,5463,255],{"class":199},[189,5465,5467],{"class":191,"line":5466},134,[189,5468,5469],{"class":219},"        \u002F\u002F → fly your map here, or dispatch an event\n",[189,5471,5473],{"class":191,"line":5472},135,[189,5474,2851],{"class":199},[189,5476,5478],{"class":191,"line":5477},136,[189,5479,262],{"emptyLinePlaceholder":261},[189,5481,5483,5485,5488,5490,5492,5494,5496,5498,5500,5502,5504],{"class":191,"line":5482},137,[189,5484,4178],{"class":268},[189,5486,5487],{"class":195}," debouncedFetch",[189,5489,275],{"class":199},[189,5491,2903],{"class":226},[189,5493,231],{"class":230},[189,5495,2052],{"class":268},[189,5497,1852],{"class":199},[189,5499,3062],{"class":560},[189,5501,243],{"class":199},[189,5503,1934],{"class":1933},[189,5505,318],{"class":199},[189,5507,5509,5511,5513,5515,5517,5519,5521,5524,5526],{"class":191,"line":5508},138,[189,5510,4440],{"class":278},[189,5512,1852],{"class":1885},[189,5514,3062],{"class":195},[189,5516,246],{"class":199},[189,5518,4803],{"class":4802},[189,5520,2106],{"class":199},[189,5522,5523],{"class":1946}," 2",[189,5525,243],{"class":1885},[189,5527,318],{"class":199},[189,5529,5531,5533,5535,5537,5539,5541],{"class":191,"line":5530},139,[189,5532,4887],{"class":195},[189,5534,246],{"class":199},[189,5536,5112],{"class":195},[189,5538,275],{"class":199},[189,5540,5400],{"class":5117},[189,5542,255],{"class":199},[189,5544,5546,5548],{"class":191,"line":5545},140,[189,5547,4622],{"class":278},[189,5549,255],{"class":199},[189,5551,5553],{"class":191,"line":5552},141,[189,5554,4729],{"class":199},[189,5556,5558,5560,5563,5565,5567,5569,5571,5573,5575],{"class":191,"line":5557},142,[189,5559,5152],{"class":268},[189,5561,5562],{"class":195}," results",[189,5564,275],{"class":199},[189,5566,279],{"class":278},[189,5568,3057],{"class":226},[189,5570,231],{"class":1885},[189,5572,3062],{"class":195},[189,5574,243],{"class":1885},[189,5576,255],{"class":199},[189,5578,5580,5582,5584,5587,5589,5591,5593,5595,5597],{"class":191,"line":5579},143,[189,5581,4440],{"class":278},[189,5583,1852],{"class":1885},[189,5585,5586],{"class":195},"results",[189,5588,4671],{"class":1860},[189,5590,3042],{"class":1860},[189,5592,243],{"class":1885},[189,5594,2175],{"class":278},[189,5596,2101],{"class":199},[189,5598,5599],{"class":219}," \u002F\u002F aborted\n",[189,5601,5603,5605,5607,5609],{"class":191,"line":5602},144,[189,5604,5408],{"class":195},[189,5606,275],{"class":199},[189,5608,5562],{"class":195},[189,5610,255],{"class":199},[189,5612,5614,5617,5619],{"class":191,"line":5613},145,[189,5615,5616],{"class":226},"        renderSuggestions",[189,5618,252],{"class":1885},[189,5620,255],{"class":199},[189,5622,5624,5627,5630,5632],{"class":191,"line":5623},146,[189,5625,5626],{"class":199},"      },",[189,5628,5629],{"class":1946}," 300",[189,5631,243],{"class":230},[189,5633,255],{"class":199},[189,5635,5637],{"class":191,"line":5636},147,[189,5638,262],{"emptyLinePlaceholder":261},[189,5640,5642,5644,5646,5648,5650,5652,5655,5657,5659,5661,5663,5665,5667,5669,5671,5673,5675,5678,5681],{"class":191,"line":5641},148,[189,5643,3600],{"class":195},[189,5645,246],{"class":199},[189,5647,5001],{"class":226},[189,5649,231],{"class":230},[189,5651,235],{"class":234},[189,5653,5654],{"class":203},"input",[189,5656,235],{"class":234},[189,5658,1896],{"class":199},[189,5660,5015],{"class":199},[189,5662,1934],{"class":1933},[189,5664,5487],{"class":226},[189,5666,231],{"class":230},[189,5668,5654],{"class":195},[189,5670,246],{"class":199},[189,5672,5342],{"class":195},[189,5674,246],{"class":199},[189,5676,5677],{"class":226},"trim",[189,5679,5680],{"class":230},"()))",[189,5682,255],{"class":199},[189,5684,5686],{"class":191,"line":5685},149,[189,5687,262],{"emptyLinePlaceholder":261},[189,5689,5691,5693,5695,5697,5699,5701,5704,5706,5708,5710,5713,5715,5717],{"class":191,"line":5690},150,[189,5692,3600],{"class":195},[189,5694,246],{"class":199},[189,5696,5001],{"class":226},[189,5698,231],{"class":230},[189,5700,235],{"class":234},[189,5702,5703],{"class":203},"keydown",[189,5705,235],{"class":234},[189,5707,1896],{"class":199},[189,5709,1852],{"class":199},[189,5711,5712],{"class":560},"e",[189,5714,243],{"class":199},[189,5716,1934],{"class":1933},[189,5718,318],{"class":199},[189,5720,5722,5724,5726,5728,5730,5732,5734,5736,5738,5740,5742,5744],{"class":191,"line":5721},151,[189,5723,5152],{"class":268},[189,5725,5155],{"class":195},[189,5727,275],{"class":199},[189,5729,4229],{"class":195},[189,5731,246],{"class":199},[189,5733,5164],{"class":226},[189,5735,231],{"class":1885},[189,5737,235],{"class":234},[189,5739,5171],{"class":203},[189,5741,235],{"class":234},[189,5743,243],{"class":1885},[189,5745,255],{"class":199},[189,5747,5749,5751,5753,5755,5757,5760,5762,5764,5767,5769,5771],{"class":191,"line":5748},152,[189,5750,4440],{"class":278},[189,5752,1852],{"class":1885},[189,5754,5712],{"class":195},[189,5756,246],{"class":199},[189,5758,5759],{"class":195},"key",[189,5761,4671],{"class":1860},[189,5763,1493],{"class":234},[189,5765,5766],{"class":203},"ArrowDown",[189,5768,235],{"class":234},[189,5770,243],{"class":1885},[189,5772,318],{"class":199},[189,5774,5776,5779,5781,5784,5786],{"class":191,"line":5775},153,[189,5777,5778],{"class":195},"          e",[189,5780,246],{"class":199},[189,5782,5783],{"class":226},"preventDefault",[189,5785,252],{"class":1885},[189,5787,255],{"class":199},[189,5789,5791,5794,5796,5799,5801,5804,5806,5808,5810,5812,5814,5816,5818,5820,5822,5824,5826],{"class":191,"line":5790},154,[189,5792,5793],{"class":226},"          highlight",[189,5795,231],{"class":1885},[189,5797,5798],{"class":195},"Math",[189,5800,246],{"class":199},[189,5802,5803],{"class":226},"min",[189,5805,231],{"class":1885},[189,5807,3433],{"class":195},[189,5809,1891],{"class":1860},[189,5811,3750],{"class":1946},[189,5813,1896],{"class":199},[189,5815,5155],{"class":195},[189,5817,246],{"class":199},[189,5819,4803],{"class":4802},[189,5821,4278],{"class":1860},[189,5823,3750],{"class":1946},[189,5825,1950],{"class":1885},[189,5827,255],{"class":199},[189,5829,5831,5833,5835,5838,5840,5842,5844,5846,5848,5850,5853,5855,5857],{"class":191,"line":5830},155,[189,5832,4641],{"class":199},[189,5834,4908],{"class":278},[189,5836,5837],{"class":278}," if",[189,5839,1852],{"class":1885},[189,5841,5712],{"class":195},[189,5843,246],{"class":199},[189,5845,5759],{"class":195},[189,5847,4671],{"class":1860},[189,5849,1493],{"class":234},[189,5851,5852],{"class":203},"ArrowUp",[189,5854,235],{"class":234},[189,5856,243],{"class":1885},[189,5858,318],{"class":199},[189,5860,5862,5864,5866,5868,5870],{"class":191,"line":5861},156,[189,5863,5778],{"class":195},[189,5865,246],{"class":199},[189,5867,5783],{"class":226},[189,5869,252],{"class":1885},[189,5871,255],{"class":199},[189,5873,5875,5877,5879,5881,5883,5886,5888,5890,5892,5894,5896,5898,5900],{"class":191,"line":5874},157,[189,5876,5793],{"class":226},[189,5878,231],{"class":1885},[189,5880,5798],{"class":195},[189,5882,246],{"class":199},[189,5884,5885],{"class":226},"max",[189,5887,231],{"class":1885},[189,5889,3433],{"class":195},[189,5891,4278],{"class":1860},[189,5893,3750],{"class":1946},[189,5895,1896],{"class":199},[189,5897,2098],{"class":1946},[189,5899,1950],{"class":1885},[189,5901,255],{"class":199},[189,5903,5905,5907,5909,5911,5913,5915,5917,5919,5921,5923,5926,5928,5930,5932,5934,5936,5938],{"class":191,"line":5904},158,[189,5906,4641],{"class":199},[189,5908,4908],{"class":278},[189,5910,5837],{"class":278},[189,5912,1852],{"class":1885},[189,5914,5712],{"class":195},[189,5916,246],{"class":199},[189,5918,5759],{"class":195},[189,5920,4671],{"class":1860},[189,5922,1493],{"class":234},[189,5924,5925],{"class":203},"Enter",[189,5927,235],{"class":234},[189,5929,5252],{"class":1860},[189,5931,4273],{"class":195},[189,5933,5247],{"class":199},[189,5935,2098],{"class":1946},[189,5937,243],{"class":1885},[189,5939,318],{"class":199},[189,5941,5943,5945,5947,5949,5951],{"class":191,"line":5942},159,[189,5944,5778],{"class":195},[189,5946,246],{"class":199},[189,5948,5783],{"class":226},[189,5950,252],{"class":1885},[189,5952,255],{"class":199},[189,5954,5956,5959,5961,5963,5965,5967,5970],{"class":191,"line":5955},160,[189,5957,5958],{"class":226},"          selectFeature",[189,5960,231],{"class":1885},[189,5962,2658],{"class":195},[189,5964,5275],{"class":1885},[189,5966,3433],{"class":195},[189,5968,5969],{"class":1885},"])",[189,5971,255],{"class":199},[189,5973,5975,5977,5979,5981,5983,5985,5987,5989,5991,5993,5996,5998,6000],{"class":191,"line":5974},161,[189,5976,4641],{"class":199},[189,5978,4908],{"class":278},[189,5980,5837],{"class":278},[189,5982,1852],{"class":1885},[189,5984,5712],{"class":195},[189,5986,246],{"class":199},[189,5988,5759],{"class":195},[189,5990,4671],{"class":1860},[189,5992,1493],{"class":234},[189,5994,5995],{"class":203},"Escape",[189,5997,235],{"class":234},[189,5999,243],{"class":1885},[189,6001,318],{"class":199},[189,6003,6005,6007,6009,6011,6013,6015],{"class":191,"line":6004},162,[189,6006,4887],{"class":195},[189,6008,246],{"class":199},[189,6010,5112],{"class":195},[189,6012,275],{"class":199},[189,6014,5400],{"class":5117},[189,6016,255],{"class":199},[189,6018,6020],{"class":191,"line":6019},163,[189,6021,4729],{"class":199},[189,6023,6025,6028,6030],{"class":191,"line":6024},164,[189,6026,6027],{"class":199},"      }",[189,6029,243],{"class":230},[189,6031,255],{"class":199},[189,6033,6035],{"class":191,"line":6034},165,[189,6036,262],{"emptyLinePlaceholder":261},[189,6038,6040,6043,6045,6047,6049,6051,6053,6055,6057,6059,6061,6063,6065],{"class":191,"line":6039},166,[189,6041,6042],{"class":195},"      document",[189,6044,246],{"class":199},[189,6046,5001],{"class":226},[189,6048,231],{"class":230},[189,6050,235],{"class":234},[189,6052,5045],{"class":203},[189,6054,235],{"class":234},[189,6056,1896],{"class":199},[189,6058,1852],{"class":199},[189,6060,5712],{"class":560},[189,6062,243],{"class":199},[189,6064,1934],{"class":1933},[189,6066,318],{"class":199},[189,6068,6070,6072,6074,6077,6079,6081,6084,6086,6089,6091,6093,6096,6098,6100],{"class":191,"line":6069},167,[189,6071,4440],{"class":278},[189,6073,1852],{"class":1885},[189,6075,6076],{"class":1860},"!",[189,6078,5712],{"class":195},[189,6080,246],{"class":199},[189,6082,6083],{"class":195},"target",[189,6085,246],{"class":199},[189,6087,6088],{"class":226},"closest",[189,6090,231],{"class":1885},[189,6092,235],{"class":234},[189,6094,6095],{"class":203},".autocomplete-wrapper",[189,6097,235],{"class":234},[189,6099,1950],{"class":1885},[189,6101,318],{"class":199},[189,6103,6105,6107,6109,6111,6113,6115],{"class":191,"line":6104},168,[189,6106,4887],{"class":195},[189,6108,246],{"class":199},[189,6110,5112],{"class":195},[189,6112,275],{"class":199},[189,6114,5400],{"class":5117},[189,6116,255],{"class":199},[189,6118,6120],{"class":191,"line":6119},169,[189,6121,4729],{"class":199},[189,6123,6125,6127,6129],{"class":191,"line":6124},170,[189,6126,6027],{"class":199},[189,6128,243],{"class":230},[189,6130,255],{"class":199},[189,6132,6134,6136,6138],{"class":191,"line":6133},171,[189,6135,3978],{"class":199},[189,6137,4170],{"class":3460},[189,6139,3468],{"class":199},[189,6141,6143,6145,6147],{"class":191,"line":6142},172,[189,6144,3988],{"class":199},[189,6146,4000],{"class":3460},[189,6148,3468],{"class":199},[189,6150,6152,6154,6156],{"class":191,"line":6151},173,[189,6153,3538],{"class":199},[189,6155,3450],{"class":3460},[189,6157,3468],{"class":199},[17,6159,6161],{"id":6160},"react-example","React Example",[10,6163,6164],{},"A custom hook that encapsulates the autocomplete logic, paired with a component.",[10,6166,6167],{},[38,6168,6169],{},[83,6170,6171],{},"hooks\u002FuseAutocomplete.js",[76,6173,6175],{"className":2891,"code":6174,"language":2893,"meta":85,"style":85},"import { useState, useRef, useCallback, useEffect } from \"react\";\n\nexport function useAutocomplete(apiKey) {\n  const [query, setQuery] = useState(\"\");\n  const [suggestions, setSuggestions] = useState([]);\n  const [highlightedIndex, setHighlightedIndex] = useState(-1);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const controllerRef = useRef(null);\n  const timerRef = useRef(null);\n\n  const fetchSuggestions = useCallback(\n    async (value, proximity) => {\n      if (controllerRef.current) controllerRef.current.abort();\n      controllerRef.current = new AbortController();\n\n      let url =\n        `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location` +\n        `?location=${encodeURIComponent(value)}&limit=3`;\n\n      if (proximity) {\n        url += `&proximity=${proximity.lng},${proximity.lat}`;\n      }\n\n      try {\n        const res = await fetch(url, {\n          headers: { \"X-API-Key\": apiKey },\n          signal: controllerRef.current.signal\n        });\n        const data = await res.json();\n        const features = data.features || [];\n        setSuggestions(features);\n        setHighlightedIndex(-1);\n        setIsOpen(features.length > 0 || value.length >= 2);\n      } catch (err) {\n        if (err.name !== \"AbortError\") {\n          console.error(\"Autocomplete error:\", err);\n          setSuggestions([]);\n        }\n      }\n    },\n    [apiKey]\n  );\n\n  useEffect(() => {\n    clearTimeout(timerRef.current);\n    if (query.trim().length \u003C 2) {\n      setSuggestions([]);\n      setIsOpen(false);\n      return;\n    }\n    timerRef.current = setTimeout(() => fetchSuggestions(query.trim()), 300);\n    return () => clearTimeout(timerRef.current);\n  }, [query, fetchSuggestions]);\n\n  const moveDown = useCallback(() => {\n    setHighlightedIndex((i) => Math.min(i + 1, suggestions.length - 1));\n  }, [suggestions.length]);\n\n  const moveUp = useCallback(() => {\n    setHighlightedIndex((i) => Math.max(i - 1, 0));\n  }, []);\n\n  const close = useCallback(() => {\n    setIsOpen(false);\n    setHighlightedIndex(-1);\n  }, []);\n\n  return {\n    query,\n    setQuery,\n    suggestions,\n    highlightedIndex,\n    setHighlightedIndex,\n    isOpen,\n    moveDown,\n    moveUp,\n    close\n  };\n}\n",[83,6176,6177,6215,6219,6238,6266,6290,6320,6349,6353,6373,6392,6396,6408,6428,6459,6478,6482,6490,6501,6525,6529,6541,6579,6583,6587,6594,6614,6636,6653,6661,6681,6701,6714,6729,6764,6778,6802,6826,6835,6839,6843,6848,6857,6863,6867,6880,6897,6923,6932,6945,6952,6956,6996,7020,7037,7041,7060,7106,7122,7126,7145,7181,7190,7194,7213,7226,7240,7248,7252,7258,7265,7272,7279,7286,7292,7299,7306,7313,7318,7322],{"__ignoreMap":85},[189,6178,6179,6181,6183,6186,6188,6191,6193,6196,6198,6201,6203,6206,6208,6211,6213],{"class":191,"line":192},[189,6180,449],{"class":278},[189,6182,1899],{"class":199},[189,6184,6185],{"class":195}," useState",[189,6187,1896],{"class":199},[189,6189,6190],{"class":195}," useRef",[189,6192,1896],{"class":199},[189,6194,6195],{"class":195}," useCallback",[189,6197,1896],{"class":199},[189,6199,6200],{"class":195}," useEffect",[189,6202,1905],{"class":199},[189,6204,6205],{"class":278}," from",[189,6207,1493],{"class":234},[189,6209,6210],{"class":203},"react",[189,6212,235],{"class":234},[189,6214,255],{"class":199},[189,6216,6217],{"class":191,"line":223},[189,6218,262],{"emptyLinePlaceholder":261},[189,6220,6221,6224,6226,6229,6231,6234,6236],{"class":191,"line":258},[189,6222,6223],{"class":278},"export",[189,6225,2055],{"class":268},[189,6227,6228],{"class":226}," useAutocomplete",[189,6230,231],{"class":199},[189,6232,6233],{"class":560},"apiKey",[189,6235,243],{"class":199},[189,6237,318],{"class":199},[189,6239,6240,6242,6244,6246,6248,6251,6253,6255,6257,6259,6262,6264],{"class":191,"line":265},[189,6241,1873],{"class":268},[189,6243,2737],{"class":199},[189,6245,3062],{"class":195},[189,6247,1896],{"class":199},[189,6249,6250],{"class":195}," setQuery",[189,6252,5280],{"class":199},[189,6254,275],{"class":199},[189,6256,6185],{"class":226},[189,6258,231],{"class":1885},[189,6260,6261],{"class":234},"\"\"",[189,6263,243],{"class":1885},[189,6265,255],{"class":199},[189,6267,6268,6270,6272,6274,6276,6279,6281,6283,6285,6288],{"class":191,"line":288},[189,6269,1873],{"class":268},[189,6271,2737],{"class":199},[189,6273,3672],{"class":195},[189,6275,1896],{"class":199},[189,6277,6278],{"class":195}," setSuggestions",[189,6280,5280],{"class":199},[189,6282,275],{"class":199},[189,6284,6185],{"class":226},[189,6286,6287],{"class":1885},"([])",[189,6289,255],{"class":199},[189,6291,6292,6294,6296,6298,6300,6303,6305,6307,6309,6311,6314,6316,6318],{"class":191,"line":302},[189,6293,1873],{"class":268},[189,6295,2737],{"class":199},[189,6297,3433],{"class":195},[189,6299,1896],{"class":199},[189,6301,6302],{"class":195}," setHighlightedIndex",[189,6304,5280],{"class":199},[189,6306,275],{"class":199},[189,6308,6185],{"class":226},[189,6310,231],{"class":1885},[189,6312,6313],{"class":1860},"-",[189,6315,2036],{"class":1946},[189,6317,243],{"class":1885},[189,6319,255],{"class":199},[189,6321,6322,6324,6326,6329,6331,6334,6336,6338,6340,6342,6345,6347],{"class":191,"line":308},[189,6323,1873],{"class":268},[189,6325,2737],{"class":199},[189,6327,6328],{"class":195},"isOpen",[189,6330,1896],{"class":199},[189,6332,6333],{"class":195}," setIsOpen",[189,6335,5280],{"class":199},[189,6337,275],{"class":199},[189,6339,6185],{"class":226},[189,6341,231],{"class":1885},[189,6343,6344],{"class":5117},"false",[189,6346,243],{"class":1885},[189,6348,255],{"class":199},[189,6350,6351],{"class":191,"line":321},[189,6352,262],{"emptyLinePlaceholder":261},[189,6354,6355,6357,6360,6362,6364,6366,6369,6371],{"class":191,"line":348},[189,6356,1873],{"class":268},[189,6358,6359],{"class":195}," controllerRef",[189,6361,275],{"class":199},[189,6363,6190],{"class":226},[189,6365,231],{"class":1885},[189,6367,6368],{"class":1860},"null",[189,6370,243],{"class":1885},[189,6372,255],{"class":199},[189,6374,6375,6377,6380,6382,6384,6386,6388,6390],{"class":191,"line":354},[189,6376,1873],{"class":268},[189,6378,6379],{"class":195}," timerRef",[189,6381,275],{"class":199},[189,6383,6190],{"class":226},[189,6385,231],{"class":1885},[189,6387,6368],{"class":1860},[189,6389,243],{"class":1885},[189,6391,255],{"class":199},[189,6393,6394],{"class":191,"line":360},[189,6395,262],{"emptyLinePlaceholder":261},[189,6397,6398,6400,6402,6404,6406],{"class":191,"line":580},[189,6399,1873],{"class":268},[189,6401,3057],{"class":195},[189,6403,275],{"class":199},[189,6405,6195],{"class":226},[189,6407,285],{"class":1885},[189,6409,6410,6413,6415,6417,6419,6422,6424,6426],{"class":191,"line":608},[189,6411,6412],{"class":268},"    async",[189,6414,1852],{"class":199},[189,6416,5342],{"class":560},[189,6418,1896],{"class":199},[189,6420,6421],{"class":560}," proximity",[189,6423,243],{"class":199},[189,6425,1934],{"class":1933},[189,6427,318],{"class":199},[189,6429,6430,6433,6435,6438,6440,6443,6445,6447,6449,6451,6453,6455,6457],{"class":191,"line":2829},[189,6431,6432],{"class":278},"      if",[189,6434,1852],{"class":1885},[189,6436,6437],{"class":195},"controllerRef",[189,6439,246],{"class":199},[189,6441,6442],{"class":195},"current",[189,6444,243],{"class":1885},[189,6446,6359],{"class":195},[189,6448,246],{"class":199},[189,6450,6442],{"class":195},[189,6452,246],{"class":199},[189,6454,3085],{"class":226},[189,6456,252],{"class":1885},[189,6458,255],{"class":199},[189,6460,6461,6464,6466,6468,6470,6472,6474,6476],{"class":191,"line":2848},[189,6462,6463],{"class":195},"      controllerRef",[189,6465,246],{"class":199},[189,6467,6442],{"class":195},[189,6469,275],{"class":199},[189,6471,1917],{"class":1860},[189,6473,3101],{"class":226},[189,6475,252],{"class":1885},[189,6477,255],{"class":199},[189,6479,6480],{"class":191,"line":2854},[189,6481,262],{"emptyLinePlaceholder":261},[189,6483,6484,6486,6488],{"class":191,"line":2859},[189,6485,4255],{"class":268},[189,6487,3304],{"class":195},[189,6489,3307],{"class":199},[189,6491,6492,6495,6497,6499],{"class":191,"line":2865},[189,6493,6494],{"class":234},"        `",[189,6496,3315],{"class":203},[189,6498,409],{"class":234},[189,6500,3320],{"class":1860},[189,6502,6503,6505,6507,6509,6511,6513,6515,6517,6519,6521,6523],{"class":191,"line":3688},[189,6504,6494],{"class":234},[189,6506,3327],{"class":203},[189,6508,391],{"class":390},[189,6510,3136],{"class":226},[189,6512,231],{"class":230},[189,6514,5342],{"class":394},[189,6516,243],{"class":230},[189,6518,406],{"class":390},[189,6520,3147],{"class":203},[189,6522,409],{"class":234},[189,6524,255],{"class":199},[189,6526,6527],{"class":191,"line":3702},[189,6528,262],{"emptyLinePlaceholder":261},[189,6530,6531,6533,6535,6537,6539],{"class":191,"line":3714},[189,6532,6432],{"class":278},[189,6534,1852],{"class":1885},[189,6536,2597],{"class":195},[189,6538,243],{"class":1885},[189,6540,318],{"class":199},[189,6542,6543,6546,6549,6551,6553,6555,6557,6559,6561,6563,6565,6567,6569,6571,6573,6575,6577],{"class":191,"line":3726},[189,6544,6545],{"class":195},"        url",[189,6547,6548],{"class":1860}," +=",[189,6550,384],{"class":234},[189,6552,3360],{"class":203},[189,6554,391],{"class":390},[189,6556,2597],{"class":394},[189,6558,246],{"class":199},[189,6560,3370],{"class":394},[189,6562,406],{"class":390},[189,6564,1896],{"class":203},[189,6566,391],{"class":390},[189,6568,2597],{"class":394},[189,6570,246],{"class":199},[189,6572,3383],{"class":394},[189,6574,406],{"class":390},[189,6576,409],{"class":234},[189,6578,255],{"class":199},[189,6580,6581],{"class":191,"line":3742},[189,6582,2851],{"class":199},[189,6584,6585],{"class":191,"line":3765},[189,6586,262],{"emptyLinePlaceholder":261},[189,6588,6589,6592],{"class":191,"line":3778},[189,6590,6591],{"class":278},"      try",[189,6593,318],{"class":199},[189,6595,6596,6598,6600,6602,6604,6606,6608,6610,6612],{"class":191,"line":3790},[189,6597,5152],{"class":268},[189,6599,2127],{"class":195},[189,6601,275],{"class":199},[189,6603,279],{"class":278},[189,6605,282],{"class":226},[189,6607,231],{"class":1885},[189,6609,1888],{"class":195},[189,6611,1896],{"class":199},[189,6613,318],{"class":199},[189,6615,6616,6619,6621,6623,6625,6627,6629,6631,6634],{"class":191,"line":3802},[189,6617,6618],{"class":311},"          headers",[189,6620,315],{"class":199},[189,6622,1899],{"class":199},[189,6624,1493],{"class":234},[189,6626,328],{"class":327},[189,6628,235],{"class":234},[189,6630,315],{"class":199},[189,6632,6633],{"class":195}," apiKey",[189,6635,3182],{"class":199},[189,6637,6638,6641,6643,6645,6647,6649,6651],{"class":191,"line":3813},[189,6639,6640],{"class":311},"          signal",[189,6642,315],{"class":199},[189,6644,6359],{"class":195},[189,6646,246],{"class":199},[189,6648,6442],{"class":195},[189,6650,246],{"class":199},[189,6652,3196],{"class":195},[189,6654,6655,6657,6659],{"class":191,"line":3825},[189,6656,4641],{"class":199},[189,6658,243],{"class":1885},[189,6660,255],{"class":199},[189,6662,6663,6665,6667,6669,6671,6673,6675,6677,6679],{"class":191,"line":3830},[189,6664,5152],{"class":268},[189,6666,3218],{"class":195},[189,6668,275],{"class":199},[189,6670,279],{"class":278},[189,6672,2127],{"class":195},[189,6674,246],{"class":199},[189,6676,1482],{"class":226},[189,6678,252],{"class":1885},[189,6680,255],{"class":199},[189,6682,6683,6685,6687,6689,6691,6693,6695,6697,6699],{"class":191,"line":3842},[189,6684,5152],{"class":268},[189,6686,4258],{"class":195},[189,6688,275],{"class":199},[189,6690,3218],{"class":195},[189,6692,246],{"class":199},[189,6694,2658],{"class":195},[189,6696,4631],{"class":1860},[189,6698,4263],{"class":1885},[189,6700,255],{"class":199},[189,6702,6703,6706,6708,6710,6712],{"class":191,"line":3860},[189,6704,6705],{"class":226},"        setSuggestions",[189,6707,231],{"class":1885},[189,6709,2658],{"class":195},[189,6711,243],{"class":1885},[189,6713,255],{"class":199},[189,6715,6716,6719,6721,6723,6725,6727],{"class":191,"line":3873},[189,6717,6718],{"class":226},"        setHighlightedIndex",[189,6720,231],{"class":1885},[189,6722,6313],{"class":1860},[189,6724,2036],{"class":1946},[189,6726,243],{"class":1885},[189,6728,255],{"class":199},[189,6730,6731,6734,6736,6738,6740,6742,6745,6747,6749,6752,6754,6756,6758,6760,6762],{"class":191,"line":3887},[189,6732,6733],{"class":226},"        setIsOpen",[189,6735,231],{"class":1885},[189,6737,2658],{"class":195},[189,6739,246],{"class":199},[189,6741,4803],{"class":4802},[189,6743,6744],{"class":199}," >",[189,6746,2098],{"class":1946},[189,6748,4631],{"class":1860},[189,6750,6751],{"class":195}," value",[189,6753,246],{"class":199},[189,6755,4803],{"class":4802},[189,6757,5247],{"class":199},[189,6759,5523],{"class":1946},[189,6761,243],{"class":1885},[189,6763,255],{"class":199},[189,6765,6766,6768,6770,6772,6774,6776],{"class":191,"line":3892},[189,6767,6027],{"class":199},[189,6769,4644],{"class":278},[189,6771,1852],{"class":1885},[189,6773,4649],{"class":195},[189,6775,243],{"class":1885},[189,6777,318],{"class":199},[189,6779,6780,6782,6784,6786,6788,6790,6792,6794,6796,6798,6800],{"class":191,"line":3908},[189,6781,4440],{"class":278},[189,6783,1852],{"class":1885},[189,6785,4649],{"class":195},[189,6787,246],{"class":199},[189,6789,4668],{"class":195},[189,6791,2167],{"class":1860},[189,6793,1493],{"class":234},[189,6795,3254],{"class":203},[189,6797,235],{"class":234},[189,6799,243],{"class":1885},[189,6801,318],{"class":199},[189,6803,6804,6806,6808,6810,6812,6814,6816,6818,6820,6822,6824],{"class":191,"line":3922},[189,6805,4691],{"class":195},[189,6807,246],{"class":199},[189,6809,4696],{"class":226},[189,6811,231],{"class":1885},[189,6813,235],{"class":234},[189,6815,4703],{"class":203},[189,6817,235],{"class":234},[189,6819,1896],{"class":199},[189,6821,4710],{"class":195},[189,6823,243],{"class":1885},[189,6825,255],{"class":199},[189,6827,6828,6831,6833],{"class":191,"line":3927},[189,6829,6830],{"class":226},"          setSuggestions",[189,6832,6287],{"class":1885},[189,6834,255],{"class":199},[189,6836,6837],{"class":191,"line":3943},[189,6838,4729],{"class":199},[189,6840,6841],{"class":191,"line":3958},[189,6842,2851],{"class":199},[189,6844,6845],{"class":191,"line":3970},[189,6846,6847],{"class":199},"    },\n",[189,6849,6850,6853,6855],{"class":191,"line":3975},[189,6851,6852],{"class":1885},"    [",[189,6854,6233],{"class":195},[189,6856,2748],{"class":1885},[189,6858,6859,6861],{"class":191,"line":3985},[189,6860,3205],{"class":1885},[189,6862,255],{"class":199},[189,6864,6865],{"class":191,"line":3995},[189,6866,262],{"emptyLinePlaceholder":261},[189,6868,6869,6872,6874,6876,6878],{"class":191,"line":4005},[189,6870,6871],{"class":226},"  useEffect",[189,6873,231],{"class":1885},[189,6875,252],{"class":199},[189,6877,1934],{"class":1933},[189,6879,318],{"class":199},[189,6881,6882,6884,6886,6889,6891,6893,6895],{"class":191,"line":4026},[189,6883,2949],{"class":226},[189,6885,231],{"class":1885},[189,6887,6888],{"class":195},"timerRef",[189,6890,246],{"class":199},[189,6892,6442],{"class":195},[189,6894,243],{"class":1885},[189,6896,255],{"class":199},[189,6898,6899,6901,6903,6905,6907,6909,6911,6913,6915,6917,6919,6921],{"class":191,"line":4035},[189,6900,2154],{"class":278},[189,6902,1852],{"class":1885},[189,6904,3062],{"class":195},[189,6906,246],{"class":199},[189,6908,5677],{"class":226},[189,6910,252],{"class":1885},[189,6912,246],{"class":199},[189,6914,4803],{"class":4802},[189,6916,2106],{"class":199},[189,6918,5523],{"class":1946},[189,6920,243],{"class":1885},[189,6922,318],{"class":199},[189,6924,6925,6928,6930],{"class":191,"line":4050},[189,6926,6927],{"class":226},"      setSuggestions",[189,6929,6287],{"class":1885},[189,6931,255],{"class":199},[189,6933,6934,6937,6939,6941,6943],{"class":191,"line":4064},[189,6935,6936],{"class":226},"      setIsOpen",[189,6938,231],{"class":1885},[189,6940,6344],{"class":5117},[189,6942,243],{"class":1885},[189,6944,255],{"class":199},[189,6946,6947,6950],{"class":191,"line":4079},[189,6948,6949],{"class":278},"      return",[189,6951,255],{"class":199},[189,6953,6954],{"class":191,"line":4094},[189,6955,351],{"class":199},[189,6957,6958,6961,6963,6965,6967,6969,6971,6973,6975,6977,6979,6981,6983,6985,6988,6990,6992,6994],{"class":191,"line":4100},[189,6959,6960],{"class":195},"    timerRef",[189,6962,246],{"class":199},[189,6964,6442],{"class":195},[189,6966,275],{"class":199},[189,6968,1937],{"class":226},[189,6970,231],{"class":1885},[189,6972,252],{"class":199},[189,6974,1934],{"class":1933},[189,6976,3057],{"class":226},[189,6978,231],{"class":1885},[189,6980,3062],{"class":195},[189,6982,246],{"class":199},[189,6984,5677],{"class":226},[189,6986,6987],{"class":1885},"())",[189,6989,1896],{"class":199},[189,6991,5629],{"class":1946},[189,6993,243],{"class":1885},[189,6995,255],{"class":199},[189,6997,6998,7001,7003,7005,7008,7010,7012,7014,7016,7018],{"class":191,"line":4108},[189,6999,7000],{"class":278},"    return",[189,7002,5015],{"class":199},[189,7004,1934],{"class":1933},[189,7006,7007],{"class":226}," clearTimeout",[189,7009,231],{"class":1885},[189,7011,6888],{"class":195},[189,7013,246],{"class":199},[189,7015,6442],{"class":195},[189,7017,243],{"class":1885},[189,7019,255],{"class":199},[189,7021,7022,7025,7027,7029,7031,7033,7035],{"class":191,"line":4121},[189,7023,7024],{"class":199},"  },",[189,7026,2737],{"class":1885},[189,7028,3062],{"class":195},[189,7030,1896],{"class":199},[189,7032,3057],{"class":195},[189,7034,5969],{"class":1885},[189,7036,255],{"class":199},[189,7038,7039],{"class":191,"line":4135},[189,7040,262],{"emptyLinePlaceholder":261},[189,7042,7043,7045,7048,7050,7052,7054,7056,7058],{"class":191,"line":4141},[189,7044,1873],{"class":268},[189,7046,7047],{"class":195}," moveDown",[189,7049,275],{"class":199},[189,7051,6195],{"class":226},[189,7053,231],{"class":1885},[189,7055,252],{"class":199},[189,7057,1934],{"class":1933},[189,7059,318],{"class":199},[189,7061,7062,7065,7067,7069,7071,7073,7075,7077,7079,7081,7083,7085,7087,7089,7091,7094,7096,7098,7100,7102,7104],{"class":191,"line":4151},[189,7063,7064],{"class":226},"    setHighlightedIndex",[189,7066,231],{"class":1885},[189,7068,231],{"class":199},[189,7070,5025],{"class":560},[189,7072,243],{"class":199},[189,7074,1934],{"class":1933},[189,7076,2214],{"class":195},[189,7078,246],{"class":199},[189,7080,5803],{"class":226},[189,7082,231],{"class":1885},[189,7084,5025],{"class":195},[189,7086,1891],{"class":1860},[189,7088,3750],{"class":1946},[189,7090,1896],{"class":199},[189,7092,7093],{"class":195}," suggestions",[189,7095,246],{"class":199},[189,7097,4803],{"class":4802},[189,7099,4278],{"class":1860},[189,7101,3750],{"class":1946},[189,7103,1950],{"class":1885},[189,7105,255],{"class":199},[189,7107,7108,7110,7112,7114,7116,7118,7120],{"class":191,"line":4160},[189,7109,7024],{"class":199},[189,7111,2737],{"class":1885},[189,7113,3672],{"class":195},[189,7115,246],{"class":199},[189,7117,4803],{"class":4802},[189,7119,5969],{"class":1885},[189,7121,255],{"class":199},[189,7123,7124],{"class":191,"line":4165},[189,7125,262],{"emptyLinePlaceholder":261},[189,7127,7128,7130,7133,7135,7137,7139,7141,7143],{"class":191,"line":4175},[189,7129,1873],{"class":268},[189,7131,7132],{"class":195}," moveUp",[189,7134,275],{"class":199},[189,7136,6195],{"class":226},[189,7138,231],{"class":1885},[189,7140,252],{"class":199},[189,7142,1934],{"class":1933},[189,7144,318],{"class":199},[189,7146,7147,7149,7151,7153,7155,7157,7159,7161,7163,7165,7167,7169,7171,7173,7175,7177,7179],{"class":191,"line":4194},[189,7148,7064],{"class":226},[189,7150,231],{"class":1885},[189,7152,231],{"class":199},[189,7154,5025],{"class":560},[189,7156,243],{"class":199},[189,7158,1934],{"class":1933},[189,7160,2214],{"class":195},[189,7162,246],{"class":199},[189,7164,5885],{"class":226},[189,7166,231],{"class":1885},[189,7168,5025],{"class":195},[189,7170,4278],{"class":1860},[189,7172,3750],{"class":1946},[189,7174,1896],{"class":199},[189,7176,2098],{"class":1946},[189,7178,1950],{"class":1885},[189,7180,255],{"class":199},[189,7182,7183,7185,7188],{"class":191,"line":4224},[189,7184,7024],{"class":199},[189,7186,7187],{"class":1885}," [])",[189,7189,255],{"class":199},[189,7191,7192],{"class":191,"line":4252},[189,7193,262],{"emptyLinePlaceholder":261},[189,7195,7196,7198,7201,7203,7205,7207,7209,7211],{"class":191,"line":4268},[189,7197,1873],{"class":268},[189,7199,7200],{"class":195}," close",[189,7202,275],{"class":199},[189,7204,6195],{"class":226},[189,7206,231],{"class":1885},[189,7208,252],{"class":199},[189,7210,1934],{"class":1933},[189,7212,318],{"class":199},[189,7214,7215,7218,7220,7222,7224],{"class":191,"line":4285},[189,7216,7217],{"class":226},"    setIsOpen",[189,7219,231],{"class":1885},[189,7221,6344],{"class":5117},[189,7223,243],{"class":1885},[189,7225,255],{"class":199},[189,7227,7228,7230,7232,7234,7236,7238],{"class":191,"line":4298},[189,7229,7064],{"class":226},[189,7231,231],{"class":1885},[189,7233,6313],{"class":1860},[189,7235,2036],{"class":1946},[189,7237,243],{"class":1885},[189,7239,255],{"class":199},[189,7241,7242,7244,7246],{"class":191,"line":4303},[189,7243,7024],{"class":199},[189,7245,7187],{"class":1885},[189,7247,255],{"class":199},[189,7249,7250],{"class":191,"line":4323},[189,7251,262],{"emptyLinePlaceholder":261},[189,7253,7254,7256],{"class":191,"line":4333},[189,7255,2932],{"class":278},[189,7257,318],{"class":199},[189,7259,7260,7263],{"class":191,"line":4349},[189,7261,7262],{"class":195},"    query",[189,7264,299],{"class":199},[189,7266,7267,7270],{"class":191,"line":4363},[189,7268,7269],{"class":195},"    setQuery",[189,7271,299],{"class":199},[189,7273,7274,7277],{"class":191,"line":4403},[189,7275,7276],{"class":195},"    suggestions",[189,7278,299],{"class":199},[189,7280,7281,7284],{"class":191,"line":4409},[189,7282,7283],{"class":195},"    highlightedIndex",[189,7285,299],{"class":199},[189,7287,7288,7290],{"class":191,"line":4414},[189,7289,7064],{"class":195},[189,7291,299],{"class":199},[189,7293,7294,7297],{"class":191,"line":4419},[189,7295,7296],{"class":195},"    isOpen",[189,7298,299],{"class":199},[189,7300,7301,7304],{"class":191,"line":4437},[189,7302,7303],{"class":195},"    moveDown",[189,7305,299],{"class":199},[189,7307,7308,7311],{"class":191,"line":4459},[189,7309,7310],{"class":195},"    moveUp",[189,7312,299],{"class":199},[189,7314,7315],{"class":191,"line":4475},[189,7316,7317],{"class":195},"    close\n",[189,7319,7320],{"class":191,"line":4480},[189,7321,3007],{"class":199},[189,7323,7324],{"class":191,"line":4488},[189,7325,605],{"class":199},[10,7327,7328],{},[38,7329,7330],{},[83,7331,7332],{},"components\u002FLldAutocomplete.jsx",[76,7334,7336],{"className":2891,"code":7335,"language":2893,"meta":85,"style":85},"import { useRef, useEffect } from \"react\";\nimport { useAutocomplete } from \"..\u002Fhooks\u002FuseAutocomplete\";\n\nexport function LldAutocomplete({ apiKey, onSelect }) {\n  const wrapperRef = useRef(null);\n  const ac = useAutocomplete(apiKey);\n\n  function selectFeature(feature) {\n    ac.setQuery(feature.properties.legal_location);\n    const [lng, lat] = feature.geometry.coordinates;\n    onSelect({ label: feature.properties.legal_location, lng, lat });\n    ac.close();\n  }\n\n  function handleKeyDown(e) {\n    if (e.key === \"ArrowDown\") {\n      e.preventDefault();\n      ac.moveDown();\n    } else if (e.key === \"ArrowUp\") {\n      e.preventDefault();\n      ac.moveUp();\n    } else if (e.key === \"Enter\" && ac.highlightedIndex >= 0) {\n      e.preventDefault();\n      selectFeature(ac.suggestions[ac.highlightedIndex]);\n    } else if (e.key === \"Escape\") {\n      ac.close();\n    }\n  }\n\n  useEffect(() => {\n    function handleClick(e) {\n      if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n        ac.close();\n      }\n    }\n    document.addEventListener(\"click\", handleClick);\n    return () => document.removeEventListener(\"click\", handleClick);\n  }, [ac.close]);\n\n  return (\n    \u003Cdiv\n      ref={wrapperRef}\n      className=\"autocomplete-wrapper\"\n    >\n      \u003Cinput\n        type=\"text\"\n        value={ac.query}\n        onChange={(e) => ac.setQuery(e.target.value)}\n        onKeyDown={handleKeyDown}\n        placeholder=\"e.g. NW-25-24-1-W5\"\n        autoComplete=\"off\"\n      \u002F>\n\n      {ac.isOpen && (\n        \u003Cul className=\"suggestions\">\n          {ac.suggestions.length === 0 ? (\n            \u003Cli className=\"no-results\">No results\u003C\u002Fli>\n          ) : (\n            ac.suggestions.map((feature, i) => (\n              \u003Cli\n                key={feature.properties.legal_location}\n                className={i === ac.highlightedIndex ? \"highlighted\" : \"\"}\n                onMouseEnter={() => ac.setHighlightedIndex(i)}\n                onClick={() => selectFeature(feature)}\n              >\n                {feature.properties.legal_location}\n              \u003C\u002Fli>\n            ))\n          )}\n        \u003C\u002Ful>\n      )}\n    \u003C\u002Fdiv>\n  );\n}\n",[83,7337,7338,7362,7383,7387,7411,7430,7449,7453,7468,7494,7522,7560,7573,7577,7581,7596,7620,7633,7647,7676,7688,7701,7741,7753,7779,7807,7819,7823,7827,7831,7843,7859,7900,7913,7917,7921,7946,7977,7993,7997,8004,8011,8022,8035,8040,8046,8058,8073,8109,8121,8133,8146,8150,8154,8169,8189,8213,8240,8249,8279,8287,8306,8337,8362,8381,8386,8403,8412,8417,8423,8432,8439,8447,8453],{"__ignoreMap":85},[189,7339,7340,7342,7344,7346,7348,7350,7352,7354,7356,7358,7360],{"class":191,"line":192},[189,7341,449],{"class":278},[189,7343,1899],{"class":199},[189,7345,6190],{"class":195},[189,7347,1896],{"class":199},[189,7349,6200],{"class":195},[189,7351,1905],{"class":199},[189,7353,6205],{"class":278},[189,7355,1493],{"class":234},[189,7357,6210],{"class":203},[189,7359,235],{"class":234},[189,7361,255],{"class":199},[189,7363,7364,7366,7368,7370,7372,7374,7376,7379,7381],{"class":191,"line":223},[189,7365,449],{"class":278},[189,7367,1899],{"class":199},[189,7369,6228],{"class":195},[189,7371,1905],{"class":199},[189,7373,6205],{"class":278},[189,7375,1493],{"class":234},[189,7377,7378],{"class":203},"..\u002Fhooks\u002FuseAutocomplete",[189,7380,235],{"class":234},[189,7382,255],{"class":199},[189,7384,7385],{"class":191,"line":258},[189,7386,262],{"emptyLinePlaceholder":261},[189,7388,7389,7391,7393,7396,7399,7401,7403,7406,7409],{"class":191,"line":265},[189,7390,6223],{"class":278},[189,7392,2055],{"class":268},[189,7394,7395],{"class":226}," LldAutocomplete",[189,7397,7398],{"class":199},"({",[189,7400,6633],{"class":560},[189,7402,1896],{"class":199},[189,7404,7405],{"class":560}," onSelect",[189,7407,7408],{"class":199}," })",[189,7410,318],{"class":199},[189,7412,7413,7415,7418,7420,7422,7424,7426,7428],{"class":191,"line":288},[189,7414,1873],{"class":268},[189,7416,7417],{"class":195}," wrapperRef",[189,7419,275],{"class":199},[189,7421,6190],{"class":226},[189,7423,231],{"class":1885},[189,7425,6368],{"class":1860},[189,7427,243],{"class":1885},[189,7429,255],{"class":199},[189,7431,7432,7434,7437,7439,7441,7443,7445,7447],{"class":191,"line":302},[189,7433,1873],{"class":268},[189,7435,7436],{"class":195}," ac",[189,7438,275],{"class":199},[189,7440,6228],{"class":226},[189,7442,231],{"class":1885},[189,7444,6233],{"class":195},[189,7446,243],{"class":1885},[189,7448,255],{"class":199},[189,7450,7451],{"class":191,"line":308},[189,7452,262],{"emptyLinePlaceholder":261},[189,7454,7455,7458,7460,7462,7464,7466],{"class":191,"line":321},[189,7456,7457],{"class":268},"  function",[189,7459,5056],{"class":226},[189,7461,231],{"class":199},[189,7463,4928],{"class":560},[189,7465,243],{"class":199},[189,7467,318],{"class":199},[189,7469,7470,7473,7475,7478,7480,7482,7484,7486,7488,7490,7492],{"class":191,"line":348},[189,7471,7472],{"class":195},"    ac",[189,7474,246],{"class":199},[189,7476,7477],{"class":226},"setQuery",[189,7479,231],{"class":1885},[189,7481,4928],{"class":195},[189,7483,246],{"class":199},[189,7485,2760],{"class":195},[189,7487,246],{"class":199},[189,7489,2773],{"class":195},[189,7491,243],{"class":1885},[189,7493,255],{"class":199},[189,7495,7496,7498,7500,7502,7504,7506,7508,7510,7512,7514,7516,7518,7520],{"class":191,"line":354},[189,7497,2124],{"class":268},[189,7499,2737],{"class":199},[189,7501,3370],{"class":195},[189,7503,1896],{"class":199},[189,7505,5370],{"class":195},[189,7507,5280],{"class":199},[189,7509,275],{"class":199},[189,7511,4981],{"class":195},[189,7513,246],{"class":199},[189,7515,2696],{"class":195},[189,7517,246],{"class":199},[189,7519,2730],{"class":195},[189,7521,255],{"class":199},[189,7523,7524,7527,7529,7531,7534,7536,7538,7540,7542,7544,7546,7548,7550,7552,7554,7556,7558],{"class":191,"line":360},[189,7525,7526],{"class":226},"    onSelect",[189,7528,231],{"class":1885},[189,7530,1489],{"class":199},[189,7532,7533],{"class":311}," label",[189,7535,315],{"class":199},[189,7537,4981],{"class":195},[189,7539,246],{"class":199},[189,7541,2760],{"class":195},[189,7543,246],{"class":199},[189,7545,2773],{"class":195},[189,7547,1896],{"class":199},[189,7549,5453],{"class":195},[189,7551,1896],{"class":199},[189,7553,5370],{"class":195},[189,7555,1905],{"class":199},[189,7557,243],{"class":1885},[189,7559,255],{"class":199},[189,7561,7562,7564,7566,7569,7571],{"class":191,"line":580},[189,7563,7472],{"class":195},[189,7565,246],{"class":199},[189,7567,7568],{"class":226},"close",[189,7570,252],{"class":1885},[189,7572,255],{"class":199},[189,7574,7575],{"class":191,"line":608},[189,7576,357],{"class":199},[189,7578,7579],{"class":191,"line":2829},[189,7580,262],{"emptyLinePlaceholder":261},[189,7582,7583,7585,7588,7590,7592,7594],{"class":191,"line":2848},[189,7584,7457],{"class":268},[189,7586,7587],{"class":226}," handleKeyDown",[189,7589,231],{"class":199},[189,7591,5712],{"class":560},[189,7593,243],{"class":199},[189,7595,318],{"class":199},[189,7597,7598,7600,7602,7604,7606,7608,7610,7612,7614,7616,7618],{"class":191,"line":2854},[189,7599,2154],{"class":278},[189,7601,1852],{"class":1885},[189,7603,5712],{"class":195},[189,7605,246],{"class":199},[189,7607,5759],{"class":195},[189,7609,4671],{"class":1860},[189,7611,1493],{"class":234},[189,7613,5766],{"class":203},[189,7615,235],{"class":234},[189,7617,243],{"class":1885},[189,7619,318],{"class":199},[189,7621,7622,7625,7627,7629,7631],{"class":191,"line":2859},[189,7623,7624],{"class":195},"      e",[189,7626,246],{"class":199},[189,7628,5783],{"class":226},[189,7630,252],{"class":1885},[189,7632,255],{"class":199},[189,7634,7635,7638,7640,7643,7645],{"class":191,"line":2865},[189,7636,7637],{"class":195},"      ac",[189,7639,246],{"class":199},[189,7641,7642],{"class":226},"moveDown",[189,7644,252],{"class":1885},[189,7646,255],{"class":199},[189,7648,7649,7652,7654,7656,7658,7660,7662,7664,7666,7668,7670,7672,7674],{"class":191,"line":3688},[189,7650,7651],{"class":199},"    }",[189,7653,4908],{"class":278},[189,7655,5837],{"class":278},[189,7657,1852],{"class":1885},[189,7659,5712],{"class":195},[189,7661,246],{"class":199},[189,7663,5759],{"class":195},[189,7665,4671],{"class":1860},[189,7667,1493],{"class":234},[189,7669,5852],{"class":203},[189,7671,235],{"class":234},[189,7673,243],{"class":1885},[189,7675,318],{"class":199},[189,7677,7678,7680,7682,7684,7686],{"class":191,"line":3702},[189,7679,7624],{"class":195},[189,7681,246],{"class":199},[189,7683,5783],{"class":226},[189,7685,252],{"class":1885},[189,7687,255],{"class":199},[189,7689,7690,7692,7694,7697,7699],{"class":191,"line":3714},[189,7691,7637],{"class":195},[189,7693,246],{"class":199},[189,7695,7696],{"class":226},"moveUp",[189,7698,252],{"class":1885},[189,7700,255],{"class":199},[189,7702,7703,7705,7707,7709,7711,7713,7715,7717,7719,7721,7723,7725,7727,7729,7731,7733,7735,7737,7739],{"class":191,"line":3726},[189,7704,7651],{"class":199},[189,7706,4908],{"class":278},[189,7708,5837],{"class":278},[189,7710,1852],{"class":1885},[189,7712,5712],{"class":195},[189,7714,246],{"class":199},[189,7716,5759],{"class":195},[189,7718,4671],{"class":1860},[189,7720,1493],{"class":234},[189,7722,5925],{"class":203},[189,7724,235],{"class":234},[189,7726,5252],{"class":1860},[189,7728,7436],{"class":195},[189,7730,246],{"class":199},[189,7732,3433],{"class":195},[189,7734,5247],{"class":199},[189,7736,2098],{"class":1946},[189,7738,243],{"class":1885},[189,7740,318],{"class":199},[189,7742,7743,7745,7747,7749,7751],{"class":191,"line":3742},[189,7744,7624],{"class":195},[189,7746,246],{"class":199},[189,7748,5783],{"class":226},[189,7750,252],{"class":1885},[189,7752,255],{"class":199},[189,7754,7755,7758,7760,7763,7765,7767,7769,7771,7773,7775,7777],{"class":191,"line":3765},[189,7756,7757],{"class":226},"      selectFeature",[189,7759,231],{"class":1885},[189,7761,7762],{"class":195},"ac",[189,7764,246],{"class":199},[189,7766,3672],{"class":195},[189,7768,5275],{"class":1885},[189,7770,7762],{"class":195},[189,7772,246],{"class":199},[189,7774,3433],{"class":195},[189,7776,5969],{"class":1885},[189,7778,255],{"class":199},[189,7780,7781,7783,7785,7787,7789,7791,7793,7795,7797,7799,7801,7803,7805],{"class":191,"line":3778},[189,7782,7651],{"class":199},[189,7784,4908],{"class":278},[189,7786,5837],{"class":278},[189,7788,1852],{"class":1885},[189,7790,5712],{"class":195},[189,7792,246],{"class":199},[189,7794,5759],{"class":195},[189,7796,4671],{"class":1860},[189,7798,1493],{"class":234},[189,7800,5995],{"class":203},[189,7802,235],{"class":234},[189,7804,243],{"class":1885},[189,7806,318],{"class":199},[189,7808,7809,7811,7813,7815,7817],{"class":191,"line":3790},[189,7810,7637],{"class":195},[189,7812,246],{"class":199},[189,7814,7568],{"class":226},[189,7816,252],{"class":1885},[189,7818,255],{"class":199},[189,7820,7821],{"class":191,"line":3802},[189,7822,351],{"class":199},[189,7824,7825],{"class":191,"line":3813},[189,7826,357],{"class":199},[189,7828,7829],{"class":191,"line":3825},[189,7830,262],{"emptyLinePlaceholder":261},[189,7832,7833,7835,7837,7839,7841],{"class":191,"line":3830},[189,7834,6871],{"class":226},[189,7836,231],{"class":1885},[189,7838,252],{"class":199},[189,7840,1934],{"class":1933},[189,7842,318],{"class":199},[189,7844,7845,7848,7851,7853,7855,7857],{"class":191,"line":3842},[189,7846,7847],{"class":268},"    function",[189,7849,7850],{"class":226}," handleClick",[189,7852,231],{"class":199},[189,7854,5712],{"class":560},[189,7856,243],{"class":199},[189,7858,318],{"class":199},[189,7860,7861,7863,7865,7868,7870,7872,7874,7877,7879,7881,7883,7885,7888,7890,7892,7894,7896,7898],{"class":191,"line":3860},[189,7862,6432],{"class":278},[189,7864,1852],{"class":1885},[189,7866,7867],{"class":195},"wrapperRef",[189,7869,246],{"class":199},[189,7871,6442],{"class":195},[189,7873,5252],{"class":1860},[189,7875,7876],{"class":1860}," !",[189,7878,7867],{"class":195},[189,7880,246],{"class":199},[189,7882,6442],{"class":195},[189,7884,246],{"class":199},[189,7886,7887],{"class":226},"contains",[189,7889,231],{"class":1885},[189,7891,5712],{"class":195},[189,7893,246],{"class":199},[189,7895,6083],{"class":195},[189,7897,1950],{"class":1885},[189,7899,318],{"class":199},[189,7901,7902,7905,7907,7909,7911],{"class":191,"line":3873},[189,7903,7904],{"class":195},"        ac",[189,7906,246],{"class":199},[189,7908,7568],{"class":226},[189,7910,252],{"class":1885},[189,7912,255],{"class":199},[189,7914,7915],{"class":191,"line":3887},[189,7916,2851],{"class":199},[189,7918,7919],{"class":191,"line":3892},[189,7920,351],{"class":199},[189,7922,7923,7926,7928,7930,7932,7934,7936,7938,7940,7942,7944],{"class":191,"line":3908},[189,7924,7925],{"class":195},"    document",[189,7927,246],{"class":199},[189,7929,5001],{"class":226},[189,7931,231],{"class":1885},[189,7933,235],{"class":234},[189,7935,5045],{"class":203},[189,7937,235],{"class":234},[189,7939,1896],{"class":199},[189,7941,7850],{"class":195},[189,7943,243],{"class":1885},[189,7945,255],{"class":199},[189,7947,7948,7950,7952,7954,7956,7958,7961,7963,7965,7967,7969,7971,7973,7975],{"class":191,"line":3922},[189,7949,7000],{"class":278},[189,7951,5015],{"class":199},[189,7953,1934],{"class":1933},[189,7955,4204],{"class":195},[189,7957,246],{"class":199},[189,7959,7960],{"class":226},"removeEventListener",[189,7962,231],{"class":1885},[189,7964,235],{"class":234},[189,7966,5045],{"class":203},[189,7968,235],{"class":234},[189,7970,1896],{"class":199},[189,7972,7850],{"class":195},[189,7974,243],{"class":1885},[189,7976,255],{"class":199},[189,7978,7979,7981,7983,7985,7987,7989,7991],{"class":191,"line":3927},[189,7980,7024],{"class":199},[189,7982,2737],{"class":1885},[189,7984,7762],{"class":195},[189,7986,246],{"class":199},[189,7988,7568],{"class":195},[189,7990,5969],{"class":1885},[189,7992,255],{"class":199},[189,7994,7995],{"class":191,"line":3943},[189,7996,262],{"emptyLinePlaceholder":261},[189,7998,7999,8001],{"class":191,"line":3958},[189,8000,2932],{"class":278},[189,8002,8003],{"class":1885}," (\n",[189,8005,8006,8008],{"class":191,"line":3970},[189,8007,3504],{"class":199},[189,8009,8010],{"class":3460},"div\n",[189,8012,8013,8016,8018,8020],{"class":191,"line":3975},[189,8014,8015],{"class":3464},"      ref",[189,8017,563],{"class":199},[189,8019,7867],{"class":195},[189,8021,605],{"class":199},[189,8023,8024,8027,8029,8031,8033],{"class":191,"line":3985},[189,8025,8026],{"class":3464},"      className",[189,8028,200],{"class":199},[189,8030,235],{"class":234},[189,8032,3559],{"class":203},[189,8034,1574],{"class":234},[189,8036,8037],{"class":191,"line":3995},[189,8038,8039],{"class":199},"    >\n",[189,8041,8042,8044],{"class":191,"line":4005},[189,8043,4029],{"class":199},[189,8045,4032],{"class":3460},[189,8047,8048,8050,8052,8054,8056],{"class":191,"line":4026},[189,8049,4053],{"class":3464},[189,8051,200],{"class":199},[189,8053,235],{"class":234},[189,8055,81],{"class":203},[189,8057,1574],{"class":234},[189,8059,8060,8063,8065,8067,8069,8071],{"class":191,"line":4035},[189,8061,8062],{"class":3464},"        value",[189,8064,563],{"class":199},[189,8066,7762],{"class":195},[189,8068,246],{"class":199},[189,8070,3062],{"class":195},[189,8072,605],{"class":199},[189,8074,8075,8078,8081,8083,8085,8087,8089,8091,8093,8095,8097,8099,8101,8103,8105,8107],{"class":191,"line":4050},[189,8076,8077],{"class":3464},"        onChange",[189,8079,8080],{"class":199},"={(",[189,8082,5712],{"class":560},[189,8084,243],{"class":199},[189,8086,1934],{"class":1933},[189,8088,7436],{"class":195},[189,8090,246],{"class":199},[189,8092,7477],{"class":226},[189,8094,231],{"class":230},[189,8096,5712],{"class":195},[189,8098,246],{"class":199},[189,8100,6083],{"class":195},[189,8102,246],{"class":199},[189,8104,5342],{"class":195},[189,8106,243],{"class":230},[189,8108,605],{"class":199},[189,8110,8111,8114,8116,8119],{"class":191,"line":4064},[189,8112,8113],{"class":3464},"        onKeyDown",[189,8115,563],{"class":199},[189,8117,8118],{"class":195},"handleKeyDown",[189,8120,605],{"class":199},[189,8122,8123,8125,8127,8129,8131],{"class":191,"line":4079},[189,8124,4067],{"class":3464},[189,8126,200],{"class":199},[189,8128,235],{"class":234},[189,8130,4074],{"class":203},[189,8132,1574],{"class":234},[189,8134,8135,8138,8140,8142,8144],{"class":191,"line":4094},[189,8136,8137],{"class":3464},"        autoComplete",[189,8139,200],{"class":199},[189,8141,235],{"class":234},[189,8143,4089],{"class":203},[189,8145,1574],{"class":234},[189,8147,8148],{"class":191,"line":4100},[189,8149,4097],{"class":199},[189,8151,8152],{"class":191,"line":4108},[189,8153,262],{"emptyLinePlaceholder":261},[189,8155,8156,8159,8161,8163,8165,8167],{"class":191,"line":4121},[189,8157,8158],{"class":199},"      {",[189,8160,7762],{"class":195},[189,8162,246],{"class":199},[189,8164,6328],{"class":195},[189,8166,5252],{"class":1860},[189,8168,8003],{"class":230},[189,8170,8171,8174,8176,8179,8181,8183,8185,8187],{"class":191,"line":4135},[189,8172,8173],{"class":199},"        \u003C",[189,8175,917],{"class":3460},[189,8177,8178],{"class":3464}," className",[189,8180,200],{"class":199},[189,8182,235],{"class":234},[189,8184,3672],{"class":203},[189,8186,235],{"class":234},[189,8188,3468],{"class":199},[189,8190,8191,8194,8196,8198,8200,8202,8204,8206,8208,8211],{"class":191,"line":4141},[189,8192,8193],{"class":199},"          {",[189,8195,7762],{"class":195},[189,8197,246],{"class":199},[189,8199,3672],{"class":195},[189,8201,246],{"class":199},[189,8203,4803],{"class":4802},[189,8205,4671],{"class":1860},[189,8207,2098],{"class":1946},[189,8209,8210],{"class":1860}," ?",[189,8212,8003],{"class":230},[189,8214,8215,8218,8220,8222,8224,8226,8228,8230,8232,8234,8236,8238],{"class":191,"line":4151},[189,8216,8217],{"class":199},"            \u003C",[189,8219,34],{"class":3460},[189,8221,8178],{"class":3464},[189,8223,200],{"class":199},[189,8225,235],{"class":234},[189,8227,3938],{"class":203},[189,8229,235],{"class":234},[189,8231,3532],{"class":199},[189,8233,4877],{"class":452},[189,8235,3538],{"class":199},[189,8237,34],{"class":3460},[189,8239,3468],{"class":199},[189,8241,8242,8244,8247],{"class":191,"line":4160},[189,8243,4593],{"class":230},[189,8245,8246],{"class":1860}," :",[189,8248,8003],{"class":230},[189,8250,8251,8254,8256,8258,8260,8263,8265,8267,8269,8271,8273,8275,8277],{"class":191,"line":4165},[189,8252,8253],{"class":195},"            ac",[189,8255,246],{"class":199},[189,8257,3672],{"class":195},[189,8259,246],{"class":199},[189,8261,8262],{"class":226},"map",[189,8264,231],{"class":230},[189,8266,231],{"class":199},[189,8268,4928],{"class":560},[189,8270,1896],{"class":199},[189,8272,2093],{"class":560},[189,8274,243],{"class":199},[189,8276,1934],{"class":1933},[189,8278,8003],{"class":230},[189,8280,8281,8284],{"class":191,"line":4175},[189,8282,8283],{"class":199},"              \u003C",[189,8285,8286],{"class":3460},"li\n",[189,8288,8289,8292,8294,8296,8298,8300,8302,8304],{"class":191,"line":4194},[189,8290,8291],{"class":3464},"                key",[189,8293,563],{"class":199},[189,8295,4928],{"class":195},[189,8297,246],{"class":199},[189,8299,2760],{"class":195},[189,8301,246],{"class":199},[189,8303,2773],{"class":195},[189,8305,605],{"class":199},[189,8307,8308,8311,8313,8315,8317,8319,8321,8323,8325,8327,8329,8331,8333,8335],{"class":191,"line":4224},[189,8309,8310],{"class":3464},"                className",[189,8312,563],{"class":199},[189,8314,5025],{"class":195},[189,8316,4671],{"class":1860},[189,8318,7436],{"class":195},[189,8320,246],{"class":199},[189,8322,3433],{"class":195},[189,8324,8210],{"class":1860},[189,8326,1493],{"class":234},[189,8328,3903],{"class":203},[189,8330,235],{"class":234},[189,8332,8246],{"class":1860},[189,8334,4767],{"class":234},[189,8336,605],{"class":199},[189,8338,8339,8342,8345,8347,8349,8351,8354,8356,8358,8360],{"class":191,"line":4252},[189,8340,8341],{"class":3464},"                onMouseEnter",[189,8343,8344],{"class":199},"={()",[189,8346,1934],{"class":1933},[189,8348,7436],{"class":195},[189,8350,246],{"class":199},[189,8352,8353],{"class":226},"setHighlightedIndex",[189,8355,231],{"class":230},[189,8357,5025],{"class":195},[189,8359,243],{"class":230},[189,8361,605],{"class":199},[189,8363,8364,8367,8369,8371,8373,8375,8377,8379],{"class":191,"line":4268},[189,8365,8366],{"class":3464},"                onClick",[189,8368,8344],{"class":199},[189,8370,1934],{"class":1933},[189,8372,5056],{"class":226},[189,8374,231],{"class":230},[189,8376,4928],{"class":195},[189,8378,243],{"class":230},[189,8380,605],{"class":199},[189,8382,8383],{"class":191,"line":4285},[189,8384,8385],{"class":199},"              >\n",[189,8387,8388,8391,8393,8395,8397,8399,8401],{"class":191,"line":4298},[189,8389,8390],{"class":199},"                {",[189,8392,4928],{"class":195},[189,8394,246],{"class":199},[189,8396,2760],{"class":195},[189,8398,246],{"class":199},[189,8400,2773],{"class":195},[189,8402,605],{"class":199},[189,8404,8405,8408,8410],{"class":191,"line":4303},[189,8406,8407],{"class":199},"              \u003C\u002F",[189,8409,34],{"class":3460},[189,8411,3468],{"class":199},[189,8413,8414],{"class":191,"line":4323},[189,8415,8416],{"class":230},"            ))\n",[189,8418,8419,8421],{"class":191,"line":4333},[189,8420,4593],{"class":230},[189,8422,605],{"class":199},[189,8424,8425,8428,8430],{"class":191,"line":4349},[189,8426,8427],{"class":199},"        \u003C\u002F",[189,8429,917],{"class":3460},[189,8431,3468],{"class":199},[189,8433,8434,8437],{"class":191,"line":4363},[189,8435,8436],{"class":230},"      )",[189,8438,605],{"class":199},[189,8440,8441,8443,8445],{"class":191,"line":4403},[189,8442,3978],{"class":199},[189,8444,4010],{"class":3460},[189,8446,3468],{"class":199},[189,8448,8449,8451],{"class":191,"line":4409},[189,8450,3205],{"class":1885},[189,8452,255],{"class":199},[189,8454,8455],{"class":191,"line":4414},[189,8456,605],{"class":199},[10,8458,8459],{},"Usage in a parent component:",[76,8461,8463],{"className":2891,"code":8462,"language":2893,"meta":85,"style":85},"\u003CLldAutocomplete\n  apiKey=\"YOUR_API_KEY\"\n  onSelect={({ label, lng, lat }) => flyToLocation(lng, lat)}\n\u002F>\n",[83,8464,8465,8472,8485,8522],{"__ignoreMap":85},[189,8466,8467,8469],{"class":191,"line":192},[189,8468,3473],{"class":199},[189,8470,8471],{"class":1920},"LldAutocomplete\n",[189,8473,8474,8477,8479,8481,8483],{"class":191,"line":223},[189,8475,8476],{"class":3464},"  apiKey",[189,8478,200],{"class":199},[189,8480,235],{"class":234},[189,8482,3177],{"class":203},[189,8484,1574],{"class":234},[189,8486,8487,8490,8493,8495,8497,8499,8501,8503,8505,8507,8510,8512,8514,8516,8518,8520],{"class":191,"line":258},[189,8488,8489],{"class":3464},"  onSelect",[189,8491,8492],{"class":199},"={({",[189,8494,7533],{"class":560},[189,8496,1896],{"class":199},[189,8498,5453],{"class":560},[189,8500,1896],{"class":199},[189,8502,5370],{"class":560},[189,8504,7408],{"class":199},[189,8506,1934],{"class":1933},[189,8508,8509],{"class":226}," flyToLocation",[189,8511,231],{"class":230},[189,8513,3370],{"class":195},[189,8515,1896],{"class":199},[189,8517,5370],{"class":195},[189,8519,243],{"class":230},[189,8521,605],{"class":199},[189,8523,8524],{"class":191,"line":265},[189,8525,8526],{"class":199},"\u002F>\n",[17,8528,8530],{"id":8529},"next-steps","Next Steps",[917,8532,8533,8546,8556,8566],{},[34,8534,8535,8538,8539,8542,8543,8545],{},[38,8536,8537],{},"Fly to the selected location",": pass the ",[83,8540,8541],{},"[lng, lat]"," coordinates to your map's fly-to method - see the ",[25,8544,3399],{"href":3398}," for a complete walkthrough.",[34,8547,8548,8551,8552,8555],{},[38,8549,8550],{},"Geocode a full LLD",": once a user selects a result, use the ",[25,8553,8554],{"href":1035},"API reference"," to fetch the full boundary polygon for that location.",[34,8557,8558,8561,8562,8565],{},[38,8559,8560],{},"Batch lookups",": if you need to geocode multiple locations at once, the ",[25,8563,8564],{"href":930},"batch API guide"," covers CSV uploads and programmatic batch requests.",[34,8567,8568,8571,8572,246],{},[38,8569,8570],{},"API key setup and rate limits",": covered in the ",[25,8573,8574],{"href":923},"API integration guide",[8576,8577],"hr",{},[10,8579,8580,8581,8583,8584,8583,8587,8583,8589],{},"Related guides: ",[25,8582,924],{"href":923}," · ",[25,8585,8586],{"href":3398},"Mapbox Integration",[25,8588,931],{"href":930},[25,8590,8592],{"href":8591},"\u002Fabout","About Township Canada",[955,8594,8595],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .skNjk, html code.shiki .skNjk{--shiki-light:#F76D47;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sETVe, html code.shiki .sETVe{--shiki-light:#39ADB5;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sq3J1, html code.shiki .sq3J1{--shiki-light:#FF5370;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s131V, html code.shiki .s131V{--shiki-light:#90A4AE;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sJFLg, html code.shiki .sJFLg{--shiki-light:#E53935;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5q8q, html code.shiki .s5q8q{--shiki-light:#9C3EDA;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sKL33, html code.shiki .sKL33{--shiki-light:#E2931D;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .s5HLA, html code.shiki .s5HLA{--shiki-light:#8796B0;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sQBxk, html code.shiki .sQBxk{--shiki-light:#F76D47;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .skzw8, html code.shiki .skzw8{--shiki-light:#E2931D;--shiki-default:#1E754F;--shiki-dark:#4D9375}",{"title":85,"searchDepth":223,"depth":223,"links":8597},[8598,8599,8600,8601,8602,8603,8604,8605,8606,8607],{"id":2497,"depth":223,"text":2498},{"id":2504,"depth":223,"text":2505},{"id":2522,"depth":223,"text":2523},{"id":2884,"depth":223,"text":2885},{"id":3017,"depth":223,"text":3018},{"id":3258,"depth":223,"text":3259},{"id":3403,"depth":223,"text":3404},{"id":3441,"depth":223,"text":3442},{"id":6160,"depth":223,"text":6161},{"id":8529,"depth":223,"text":8530},"Build a search-as-you-type component for legal land descriptions using the Township Canada Autocomplete API. Includes debouncing, proximity biasing, and examples in vanilla JS and React.","i-lucide-search",{},{"title":2492,"description":8608},"guides\u002Fautocomplete-api-guide","WX-FnuJTkSt6abj5nepjSRdwu5wCIstJbuOznmyyDwc"]