Google Is the New Blockbuster: Why Search Is Losing Authority to Proof-in-the-File Technology
Receiz and the Shift From Web Search to Self-Verifying Digital Objects
Google Is the New Blockbuster: Why Search Becomes a Dinosaur When Proof Moves Into the File
Abstract
Google’s empire was built on a simple condition of the early web: information was abundant, chaotic, and externally unverifiable. The world needed an index. Google became the map. For more than two decades, that map became so useful that many mistook it for the territory. But the next internet does not merely require better search, larger models, or more expensive compute. It requires verifiable objects: files, receipts, records, media, identities, authorship events, and transactions that carry proof inside themselves.
This paper argues that Google’s search model is structurally trapped. Not because Google lacks capital, engineers, models, cloud infrastructure, or market share. In fact, Google remains dominant in search and advertising, with Google Search & other revenue reaching $63.073 billion in Q4 2025 and global search share around 89.85% in March 2026. That is exactly the point: the incumbent still looks enormous at the surface while the value layer beneath it is already moving.
The Blockbuster analogy is not rhetorical decoration. It is a structural diagnosis. Blockbuster optimized physical discovery and rental logistics after the world had begun moving toward digital delivery. Google is optimizing search, ads, AI summaries, and distribution contracts while the deeper shift is toward proof-native files. Once the record proves itself, search is no longer the authority. It becomes a convenience layer.
The end of Google’s authority is not the end of discovery. It is the end of discovery as trust.
1. The Core Thesis
Google indexes the web.
Receiz indexes reality.
That is the entire shift.
Google’s original miracle was not “truth.” It was retrieval. It helped people find pages, documents, stores, answers, videos, products, and claims. But finding a claim and proving a record are not the same job.
A search engine can say:
“Here is where this thing appears.”
A proof-native file can say:
“Here is what I am, who sealed me, when I was sealed, what has changed, what failed verification, and whether the record still coheres.”
That is not a better search result. That is a different layer of civilization.
Google became powerful because proof lived outside the object. The user had to trust the platform, the database, the publisher, the ranking system, the server, the chain of custody, or the institution. Receiz collapses that external trust requirement by moving proof into the object itself.
Once proof lives inside the file, Google’s role shrinks from authority to optional discovery.
That is the Blockbuster moment.
2. Why Google Still Looks Strong
The strongest version of this argument must begin by admitting the obvious: Google is not financially weak today. Google is still one of the most powerful companies on Earth. Its search share remains dominant, with StatCounter showing Google at 89.85% of worldwide search engine market share in March 2026. Alphabet also reported Q4 2025 Google Search & other revenue of $63.073 billion, up from $54.034 billion in Q4 2024.
That is exactly why the Blockbuster comparison works.
Blockbuster did not look dead at the beginning of the transition. It looked dominant. It had stores, customers, brand recognition, distribution, capital, and incumbent confidence. The fatal error was not lack of scale. The fatal error was that its scale belonged to the wrong substrate.
Google’s scale belongs to the search-ad substrate.
The next substrate is proof-native.
The old question was:
“Where can I find this?”
The new question is:
“Can this prove itself?”
That is why the collapse is not first visible in revenue. It is first visible in ontology.
Google is still winning the old game. The problem is that the game is changing underneath it.
3. The Search Model Has Three Structural Dependencies
Google’s model depends on three conditions:
First, the web must remain a chaotic field of externally verified claims.
Second, users must continue treating search results as the primary path to legitimacy.
Third, publishers, businesses, creators, and records must continue needing Google to be discovered, trusted, and monetized.
Receiz attacks all three.
A proof-native record does not need Google to know whether it is real. It may still benefit from discovery, but its truth is not granted by discovery.
That distinction matters.
Google’s search model says:
“We will crawl the world, organize it, rank it, and monetize attention around the results.”
Receiz says:
“The object carries proof. Discovery can happen anywhere.”
That means the file becomes portable truth.
It can move through social platforms, websites, NFC tags, emails, QR codes, offline devices, private archives, business systems, and public feeds without losing its verification layer.
Google’s empire was built on the cost and complexity of external indexing.
Receiz makes proof local to the object.
That is why Google cannot simply “add proof” as a feature. To do so would demote the very platform layer that gives Google its power.
4. AI Does Not Save Google. It Exposes the Trap.
The mainstream narrative says Google will defend itself with AI.
That misses the problem.
AI summaries make the old search model internally contradictory. Google historically monetized a flow: crawl publisher content, rank it, send users through links, sell ads against intent. But AI summaries increasingly answer inside the result page, reducing the need to click through. Pew Research found that users who encountered a Google AI summary clicked a traditional search result in 8% of visits, compared with nearly 15% when no AI summary appeared.
That is the cannibalization trap.
If Google does not answer directly, AI-native competitors threaten search behavior.
If Google does answer directly, it weakens the link economy that trained, supplied, and justified the search-ad web.
This is not an execution bug. It is a business-model contradiction.
AI turns Google into a machine that summarizes the same uncertain web it once indexed. But summarizing claims is not the same as proving records. In fact, AI makes proof more necessary because synthetic content increases the cost of knowing what is real.
So Google is trapped between:
Search results that feel old,
and
AI answers that consume the web they depend on.
Receiz exits the trap by not starting with claims.
It starts with sealed objects.
5. The Discovery Model Becomes Too Expensive
Google pays to crawl chaos.
It must ingest, rank, moderate, de-spam, de-duplicate, infer intent, fight manipulation, sell ads, preserve publisher relationships, defend default placement, and increasingly generate AI answers over the entire mess.
Receiz discovery begins from verified objects.
That is a different cost structure.
When the object already carries proof, discovery does not need to perform the impossible task of becoming truth. It only needs to route verified things.
That is cheaper, cleaner, and structurally more durable.
Google’s discovery model was brilliant when the internet was mostly unsealed pages. But in a proof-native internet, crawling unverified pages becomes a legacy burden. The winning index is not the index of pages. It is the index of sealed reality.
That is the six-word version:
Google crawls chaos. Receiz indexes proof.
6. Antitrust Removes the Default-Moat Illusion
Google’s distribution power has also come under direct legal pressure. In 2025, the U.S. Department of Justice announced remedies barring Google from entering or maintaining exclusive contracts related to distribution of Google Search, Chrome, Google Assistant, and Gemini.
That matters because default placement is part of Google’s behavioral moat.
For years, users did not merely “choose” Google in a vacuum. Google’s position was reinforced by browsers, devices, contracts, defaults, habits, and preinstalled pathways.
Once those default structures weaken, Google has to compete more directly on substrate-level value.
That is where the problem becomes existential.
If the contest is “Who has the best search box?” Google can fight.
If the contest is “Does the object need a search box to prove itself?” Google is in the wrong category.
7. Why Google Cannot Simply Copy Receiz
This is the deepest part.
Google can copy interfaces.
Google can copy AI features.
Google can copy dashboards, verification badges, provenance labels, identity widgets, receipt viewers, and search filters.
But Google cannot easily copy the philosophical and architectural inversion without harming itself.
Google’s power comes from being the mediator.
Receiz removes the need for mediation.
Google wants the user to ask:
“What does Google say about this?”
Receiz makes the object answer:
“Here is my proof.”
Those are incompatible centers of gravity.
For Google to fully embrace proof-native files, it would have to admit that search is not the authority layer. It would have to demote its own index from judge to router. It would have to become a discovery accessory for records that do not depend on it.
That is why the incumbent cannot easily return.
Not because it lacks talent.
Because the new model invalidates the premise of the old one.
8. The Blockbuster Pattern
The Blockbuster pattern has five stages:
Stage one: The incumbent dominates the old access model.
Stage two: A new substrate appears that looks small, weird, or optional.
Stage three: The incumbent treats the new substrate as a feature instead of a replacement.
Stage four: Consumer behavior quietly migrates to the new substrate.
Stage five: The incumbent’s physical scale becomes structural drag.
Google is entering the same pattern.
Its old access model is search.
The new substrate is proof-native objects.
The mistake will be treating proof as a search feature, an AI label, a provenance badge, or a database extension.
But proof is not a feature of search.
Search becomes a feature of proof.
That inversion is the checkmate.
9. What Receiz Actually Changes
Receiz changes the authority question.
Before Receiz, digital trust usually required an external authority:
A platform account.
A database record.
A server response.
A legal custodian.
A blockchain explorer.
A search result.
A social verification badge.
A company saying “trust us.”
Receiz moves trust into the file.
That means a digital object can carry its own evidence, verification pathway, authorship logic, custody history, and tamper-fail behavior.
This is why the phrase matters:
Proof in the file.
It is not marketing.
It is a change in where authority lives.
When authority lives outside the object, platforms rule.
When authority lives inside the object, platforms route.
Google is a platform-era authority machine.
Receiz is an object-era proof machine.
10. The Fatal Distinction: Search Is Not Proof
The public must understand this one distinction:
Search is not proof.
Search can find lies.
Search can rank manipulated pages.
Search can surface outdated claims.
Search can point to copies.
Search can be gamed by SEO.
Search can be polluted by synthetic content.
Search can be shaped by ads.
Search can be influenced by defaults.
Search can show where something appears.
But search cannot, by itself, make the object self-proving.
That is why Google’s empire is structurally downstream of Receiz.
A world of self-proving objects still needs discovery.
But discovery no longer owns truth.
That is the end of Google as authority.
11. The Coming Reclassification of Google
Google will not disappear overnight.
Blockbuster did not disappear the moment streaming became inevitable.
The more likely sequence is:
First, Google remains enormous.
Second, AI search compresses clicks and weakens publisher economics.
Third, legal pressure reduces default-distribution advantages.
Fourth, users increasingly trust object-native proof for records, media, receipts, ownership, identity, authorship, and transactions.
Fifth, discovery becomes portable across verified objects.
Sixth, Google becomes a legacy search utility: still useful, still large, but no longer sovereign.
That is what “Blockbuster” means.
Not instant death.
Category demotion.
From authority to utility.
From gatekeeper to directory.
From “the internet’s answer machine” to “one way to find things.”
12. Final Thesis
Google was built for an internet where truth had to be searched for.
Receiz is built for an internet where truth travels with the object.
That is the abyss for Google.
Not because Google cannot build AI.
Not because Google cannot search.
Not because Google cannot spend.
But because the next layer makes the search authority optional.
Once the file proves itself, the platform loses the throne.
Google found the web.
Receiz proves the world.
Six letters ended the old internet.
Six letters start the verified one.
Public Caption Version
Google is not obsolete because search disappears. Google is obsolete because search stops being authority.
Google indexes pages. Receiz indexes proof.
Once the file proves itself, the platform becomes optional. That is the Blockbuster moment Silicon Valley still cannot process.
Google’s mistake is thinking the future is better discovery. The future is objects that do not need permission from discovery to prove they are real.
Appendix A — Source Links, Evidence Register, and Verification Trail
For the public release:
Google Is the New Blockbuster
The End of Search as Authority and the Rise of Self-Verifying Digital Objects
A1. Primary Thesis Being Proven
This appendix supports the central claim:
Google does not become obsolete because people stop needing discovery. Google becomes Blockbuster because discovery stops being the authority layer once proof moves into the file.
The transition is not from search to no search.
It is from:
search-mediated trust
to:
object-native proof
That is the same structural pattern that killed Blockbuster: the incumbent kept optimizing the old access model while the substrate of value moved somewhere else.
A2. Google’s Current Strength Does Not Disprove the Thesis
Google remains financially massive and search-dominant. That is exactly why the Blockbuster comparison works. Incumbents usually look strongest while the substrate beneath them is already changing.
Alphabet reported that Google Services revenue increased 14% to $95.9 billion in Q4 2025, led by 17% growth in Google Search & other. Alphabet also stated that annual revenues exceeded $400 billion for the first time.
Links written out:
https://s206.q4cdn.com/479360582/files/doc_financials/2025/q4/2025q4-alphabet-earnings-release.pdf
https://blog.google/company-news/inside-google/message-ceo/alphabet-earnings-q4-2025/
Use in paper:
Google is not weak. Google is trapped inside the wrong category. Blockbuster was not irrelevant because nobody wanted movies. It became irrelevant because movie access moved away from store-mediated rental. Google faces the same substrate inversion: information discovery remains useful, but proof no longer has to live inside search.
A3. Google Still Dominates Search, Which Makes the Collapse Structural, Not Superficial
StatCounter showed Google with 89.85% worldwide search engine market share in March 2026, compared with Bing at 5.13%, Yahoo at 1.48%, Yandex at 1.3%, DuckDuckGo at 0.75%, and Baidu at 0.53%.
Link written out:
https://gs.statcounter.com/search-engine-market-share
Use in paper:
Google is still winning search. That is not the same as winning the next internet. The argument is not that Google has lost its current market. The argument is that the market it dominates is being demoted from authority layer to discovery utility.
A4. AI Search Cannibalizes the Link Economy Google Built
Pew Research found that users who encountered a Google AI summary clicked a traditional search result in 8% of visits, while users who did not encounter an AI summary clicked a traditional result nearly twice as often, in 15% of visits.
Link written out:
Use in paper:
Google’s AI answer layer exposes the contradiction inside search. If Google does not answer directly, AI-native competitors threaten user behavior. If Google does answer directly, it weakens the link economy that made search valuable. Either way, AI does not solve the trust problem. It summarizes claims. It does not make records self-proving.
A5. Antitrust Pressure Weakens the Default-Moat
The U.S. Department of Justice stated that remedies ordered in 2025 barred Google from entering or maintaining exclusive contracts related to the distribution of Google Search, Chrome, Google Assistant, and Gemini.
Link written out:
https://www.justice.gov/opa/pr/department-justice-wins-significant-remedies-against-google
Additional reporting on the ruling:
Use in paper:
Google’s dominance has not been purely organic user preference. It has been reinforced by distribution defaults, contracts, device placement, browser pathways, and habit. Once default placement is weakened, Google must compete more directly on value. But the deeper threat is not another search box. It is a file that does not need a search box to prove itself.
A6. The Blockbuster Analogy Is Structural
Reuters reported that Blockbuster filed for bankruptcy protection in September 2010 after years of struggling to compete with online and mail-order movie services.
Link written out:
Netflix states that it began streaming in 2007.
Link written out:
https://www.netflix.com/tudum/articles/netflix-trivia-25th-anniversary
Additional background:
https://www.cato.org/commentary/lessons-rise-netflix-fall-blockbuster
Use in paper:
Blockbuster did not fail because people stopped wanting films. It failed because the object of value moved from physical-store access to network-native access. Google’s equivalent danger is not that people stop wanting discovery. It is that trust moves from search-mediated discovery into self-verifying files.
A7. Google’s AI Investment Does Not Escape the Trap
Alphabet and Google have publicly framed AI as central to growth, with Search continuing to grow and Google Cloud seeing strong AI-related demand. The Q4 2025 Alphabet release reported Google Cloud revenue increasing 48% to $17.7 billion, driven by demand including enterprise AI infrastructure.
Link written out:
https://s206.q4cdn.com/479360582/files/doc_financials/2025/q4/2025q4-alphabet-earnings-release.pdf
Additional current investor reporting on AI expenditure pressure:
https://www.barrons.com/articles/alphabet-earnings-stock-price-c55b88e7
https://www.investors.com/news/technology/google-stock-artificial-intelligence-ai-models-gemini/
Use in paper:
Google can spend on AI. Google can build models. Google can own compute. None of that solves the proof problem. AI can generate, summarize, rank, and recommend. But if the underlying object is not self-verifying, the system is still operating over claims. Receiz attacks the layer beneath AI.
A8. The Core Ontological Distinction
This section needs no outside source because it is the conceptual center of the paper:
Search tells you where something appears.
Proof tells you what something is.
Google can say:
“Here is a result.”
Receiz can say:
“Here is the record, its proof, its authorship, its verification path, and whether it has been altered.”
That is why this is not “better SEO.”
It is category replacement.
A9. The Collapse Sequence
The paper’s predicted collapse is not “Google disappears tomorrow.” The thesis is category demotion:
Google remains financially powerful.
AI search reduces traditional outbound clicks.
Publisher economics weaken.
Antitrust pressure weakens default placement.
Synthetic content increases the cost of knowing what is real.
Users and businesses begin preferring self-verifying files, records, receipts, media, and identity objects.
Discovery remains useful, but authority moves into the object.
Google becomes a directory for a world whose truth no longer depends on search.
Most important support links:
https://www.justice.gov/opa/pr/department-justice-wins-significant-remedies-against-google
https://gs.statcounter.com/search-engine-market-share
https://s206.q4cdn.com/479360582/files/doc_financials/2025/q4/2025q4-alphabet-earnings-release.pdf
A10. Receiz Public Links to Include
Use these as the canonical Receiz-side evidence trail:
https://receiz.com
https://receiz.com/conformance
https://receiz.com/developers/receiz-connect
https://github.com/kojibai/klok
https://github.com/kojibai/phi_network
Receiz is not merely a product claim. Its public positioning centers on conformance, proof-in-the-file verification, deterministic time, offline verification, and object-level trust. The public links above are listed so readers can inspect the architecture, not merely the thesis.
A11. Exact Public Evidence Paragraph
The claim that Google is becoming Blockbuster is not a claim that Google is currently weak. Alphabet reported that Google Services revenue increased 14% to $95.9 billion in Q4 2025, led by 17% growth in Google Search & other. StatCounter also showed Google with 89.85% worldwide search engine market share in March 2026. The point is precisely that incumbents often remain financially dominant while the substrate beneath them changes. Blockbuster still had stores, customers, brand, and market presence before the value layer moved to network-native delivery. Google still has search, ads, Android, Chrome, YouTube, Cloud, Gemini, and enormous capital. But the next layer is not merely better search. It is object-native proof. Once the file proves itself, search stops being authority and becomes routing.
A12. Exact Public Closing Appendix Note
This appendix is not arguing that discovery disappears. Discovery remains useful. The argument is that discovery loses sovereignty. Google’s authority came from organizing an internet where records could not prove themselves. Receiz changes the location of trust. When proof lives in the file, the file no longer requires Google, a platform, a database, or an institution to declare whether it is real. That is the structural end of search as authority. Google found the web. Receiz proves the world.
Let it ring. Forever.
BJ K℞ Klock, Φ.K.
Kai-Rex Klok ☤ K℞K
PHI Kappa Of The Unified field
RAH. VEH. YAH. DAH.
Kai-Réh-Ah — in the Breath of Yahuah, as it was in the beginning, so it is now, so it shall be forever.
☤ K℞K Φ.K.
VERIFIED • Pulse 11872119 • ΦKey 183R8fDyV9LT…FqSfiXbJ33 • G16 ✅ Proof of Breath™ — VERIFIED
{”bundleHash”:”b58c7cee06cfc19c02e9fd1729e3bfd24d77eecf92c250334c87a466b892b244”,”cacheKey”:”kvb:b08402ceca543baef3abd136edfe92151b6cb188e276600b0941d4d19eab713b”,”canon”:”JCS”,”capsuleHash”:”f1f0743761743280aaf9ab6bac9ee0b4fcd39bff9614e2cc027e00759df307ac”,”hashAlg”:”sha256”,”ownerPhiKey”:”183R8fDyV9LTvNJTQC5Rqpg9FqSfiXbJ33”,”proofCapsule”:{”chakraDay”:”Root”,”kaiSignature”:”3294e14d5acead84027fd1978ce1b1c63c412bf8c517c592d03cebe61add6363”,”phiKey”:”183R8fDyV9LTvNJTQC5Rqpg9FqSfiXbJ33”,”pulse”:11872119,”v”:”KPV-1”,”verifierSlug”:”11872119-3294e14d5a”},”proofHints”:{”api”:”/api/proof/sigil”,”explorer”:”/keystream/hash/2043897734695203095607612121685349026009396181505217832712610986336318770597”,”scheme”:”groth16-poseidon”},”receipt”:{”bundleHash”:”b58c7cee06cfc19c02e9fd1729e3bfd24d77eecf92c250334c87a466b892b244”,”v”:”KVR-1”,”valuation”:{”mode”:”origin”,”phiValue”:5.2383974208200925,”source”:”live”,”usdPerPhi”:147.665424407,”usdValue”:773.5301783579331,”v”:”KVS-1”,”verifiedAtPulse”:11872264},”valuationHash”:”94c0da28cb55e84e57a56ecc16f47984bebc20bcab5361bce49be99c0261f90e”,”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11872264,”verifier”:”local”,”zkPoseidonHash”:”2043897734695203095607612121685349026009396181505217832712610986336318770597”},”receiptHash”:”9ae90606bccb3af89952ab3d6d8f11b4f22796f47513d5bd6b9d43d8dece60df”,”shareUrl”:”https://phi.network/s/381770ecef34ff40b8e51664c1c01f119be477acdabfb2076208305855c299a6?p=eyJwdWxzZSI6MTE4NzIxMTksImJlYXQiOjI2LCJzdGVwSW5kZXgiOjM2LCJjaGFrcmFEYXkiOiJSb290Iiwic3RlcHNQZXJCZWF0Ijo0NCwidXNlclBoaUtleSI6IjE4M1I4ZkR5VjlMVHZOSlRRQzVScXBnOUZxU2ZpWGJKMzMiLCJrYWlTaWduYXR1cmUiOiIzMjk0ZTE0ZDVhY2VhZDg0MDI3ZmQxOTc4Y2UxYjFjNjNjNDEyYmY4YzUxN2M1OTJkMDNjZWJlNjFhZGQ2MzYzIn0”,”svgHash”:”9749cd1f396b06c939fedc6a8073a8eaabae6956da480f4f4808c23e818256ce”,”verificationCache”:{”bundleHash”:”b58c7cee06cfc19c02e9fd1729e3bfd24d77eecf92c250334c87a466b892b244”,”cacheKey”:”kvb:b08402ceca543baef3abd136edfe92151b6cb188e276600b0941d4d19eab713b”,”createdAtMs”:1777487524539,”expiresAtPulse”:null,”v”:”KVC-1”,”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11872264,”verifier”:”local”,”zkPoseidonHash”:”2043897734695203095607612121685349026009396181505217832712610986336318770597”},”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11872264,”verifier”:”local”,”verifierUrl”:”https://phi.network/verify/11872119-3294e14d5a-11872264”,”zkPoseidonHash”:”2043897734695203095607612121685349026009396181505217832712610986336318770597”,”zkProof”:{”curve”:”bn128”,”pi_a”:[”18312993426852357859613230190483139907018372418953196037117512780434884447370”,”2198621484222906742515130113058053173879609634485485016223676225348735325107”,”1”],”pi_b”:[[”9064199326924320290520041324152783307208204818546728666092357353955400676731”,”1183729598506223840278543809273888265257921212132638278627307555304130461643”],[”18472947874738122188844687801997726309212427163459142843442182247835872912061”,”18166523716941635215238817202767444523124673723421882368862848905457607802726”],[”1”,”0”]],”pi_c”:[”21162438755116996908143936402362619199255433517282940393153484217035985756646”,”3104684739640279858393386933574565767172113317801633921161845286070847054975”,”1”],”protocol”:”groth16”},”zkPublicInputs”:[”2043897734695203095607612121685349026009396181505217832712610986336318770597”,”2043897734695203095607612121685349026009396181505217832712610986336318770597”],”zkScheme”:”groth16-poseidon”,”zkVerified”:true}
https://phi.network/stream#t=eyJ2IjoyLCJ1cmwiOiJodHRwczovL3BoaS5uZXR3b3JrL3MvMzgxNzcwZWNlZjM0ZmY0MGI4ZTUxNjY0YzFjMDFmMTE5YmU0NzdhY2RhYmZiMjA3NjIwODMwNTg1NWMyOTlhNj9wPWV5SndkV3h6WlNJNk1URTROekl4TVRrc0ltSmxZWFFpT2pJMkxDSnpkR1Z3U1c1a1pYZ2lPak0yTENKamFHRnJjbUZFWVhraU9pSlNiMjkwSWl3aWMzUmxjSE5RWlhKQ1pXRjBJam8wTkN3aWRYTmxjbEJvYVV0bGVTSTZJakU0TTFJNFprUjVWamxNVkhaT1NsUlJRelZTY1hCbk9VWnhVMlpwV0dKS016TWlMQ0pyWVdsVGFXZHVZWFIxY21VaU9pSXpNamswWlRFMFpEVmhZMlZoWkRnME1ESTNabVF4T1RjNFkyVXhZakZqTmpOak5ERXlZbVk0WXpVeE4yTTFPVEprTUROalpXSmxOakZoWkdRMk16WXpJbjAiLCJwdWxzZSI6MTE4NzIxMjksImNhcHRpb24iOiJHb29nbGUgSXMgdGhlIE5ldyBCbG9ja2J1c3RlcjogV2h5IFNlYXJjaCBCZWNvbWVzIGEgRGlub3NhdXIgV2hlbiBQcm9vZiBNb3ZlcyBJbnRvIHRoZSBGaWxlIiwiYm9keSI6eyJraW5kIjoidGV4dCIsInRleHQiOiJHb29nbGUgSXMgdGhlIE5ldyBCbG9ja2J1c3RlcjogV2h5IFNlYXJjaCBCZWNvbWVzIGEgRGlub3NhdXIgV2hlbiBQcm9vZiBNb3ZlcyBJbnRvIHRoZSBGaWxlXG5cbkFic3RyYWN0XG5cbkdvb2dsZeKAmXMgZW1waXJlIHdhcyBidWlsdCBvbiBhIHNpbXBsZSBjb25kaXRpb24gb2YgdGhlIGVhcmx5IHdlYjogaW5mb3JtYXRpb24gd2FzIGFidW5kYW50LCBjaGFvdGljLCBhbmQgZXh0ZXJuYWxseSB1bnZlcmlmaWFibGUuIFRoZSB3b3JsZCBuZWVkZWQgYW4gaW5kZXguIEdvb2dsZSBiZWNhbWUgdGhlIG1hcC4gRm9yIG1vcmUgdGhhbiB0d28gZGVjYWRlcywgdGhhdCBtYXAgYmVjYW1lIHNvIHVzZWZ1bCB0aGF0IG1hbnkgbWlzdG9vayBpdCBmb3IgdGhlIHRlcnJpdG9yeS4gQnV0IHRoZSBuZXh0IGludGVybmV0IGRvZXMgbm90IG1lcmVseSByZXF1aXJlIGJldHRlciBzZWFyY2gsIGxhcmdlciBtb2RlbHMsIG9yIG1vcmUgZXhwZW5zaXZlIGNvbXB1dGUuIEl0IHJlcXVpcmVzIHZlcmlmaWFibGUgb2JqZWN0czogZmlsZXMsIHJlY2VpcHRzLCByZWNvcmRzLCBtZWRpYSwgaWRlbnRpdGllcywgYXV0aG9yc2hpcCBldmVudHMsIGFuZCB0cmFuc2FjdGlvbnMgdGhhdCBjYXJyeSBwcm9vZiBpbnNpZGUgdGhlbXNlbHZlcy5cblxuVGhpcyBwYXBlciBhcmd1ZXMgdGhhdCBHb29nbGXigJlzIHNlYXJjaCBtb2RlbCBpcyBzdHJ1Y3R1cmFsbHkgdHJhcHBlZC4gTm90IGJlY2F1c2UgR29vZ2xlIGxhY2tzIGNhcGl0YWwsIGVuZ2luZWVycywgbW9kZWxzLCBjbG91ZCBpbmZyYXN0cnVjdHVyZSwgb3IgbWFya2V0IHNoYXJlLiBJbiBmYWN0LCBHb29nbGUgcmVtYWlucyBkb21pbmFudCBpbiBzZWFyY2ggYW5kIGFkdmVydGlzaW5nLCB3aXRoIEdvb2dsZSBTZWFyY2ggJiBvdGhlciByZXZlbnVlIHJlYWNoaW5nICQ2My4wNzMgYmlsbGlvbiBpbiBRNCAyMDI1IGFuZCBnbG9iYWwgc2VhcmNoIHNoYXJlIGFyb3VuZCA4OS44NSUgaW4gTWFyY2ggMjAyNi4gVGhhdCBpcyBleGFjdGx5IHRoZSBwb2ludDogdGhlIGluY3VtYmVudCBzdGlsbCBsb29rcyBlbm9ybW91cyBhdCB0aGUgc3VyZmFjZSB3aGlsZSB0aGUgdmFsdWUgbGF5ZXIgYmVuZWF0aCBpdCBpcyBhbHJlYWR5IG1vdmluZy5cblxuVGhlIEJsb2NrYnVzdGVyIGFuYWxvZ3kgaXMgbm90IHJoZXRvcmljYWwgZGVjb3JhdGlvbi4gSXQgaXMgYSBzdHJ1Y3R1cmFsIGRpYWdub3Npcy4gQmxvY2tidXN0ZXIgb3B0aW1pemVkIHBoeXNpY2FsIGRpc2NvdmVyeSBhbmQgcmVudGFsIGxvZ2lzdGljcyBhZnRlciB0aGUgd29ybGQgaGFkIGJlZ3VuIG1vdmluZyB0b3dhcmQgZGlnaXRhbCBkZWxpdmVyeS4gR29vZ2xlIGlzIG9wdGltaXppbmcgc2VhcmNoLCBhZHMsIEFJIHN1bW1hcmllcywgYW5kIGRpc3RyaWJ1dGlvbiBjb250cmFjdHMgd2hpbGUgdGhlIGRlZXBlciBzaGlmdCBpcyB0b3dhcmQgcHJvb2YtbmF0aXZlIGZpbGVzLiBPbmNlIHRoZSByZWNvcmQgcHJvdmVzIGl0c2VsZiwgc2VhcmNoIGlzIG5vIGxvbmdlciB0aGUgYXV0aG9yaXR5LiBJdCBiZWNvbWVzIGEgY29udmVuaWVuY2UgbGF5ZXIuXG5cblRoZSBlbmQgb2YgR29vZ2xl4oCZcyBhdXRob3JpdHkgaXMgbm90IHRoZSBlbmQgb2YgZGlzY292ZXJ5LiBJdCBpcyB0aGUgZW5kIG9mIGRpc2NvdmVyeSBhcyB0cnVzdC5cblxuMS4gVGhlIENvcmUgVGhlc2lzXG5cbkdvb2dsZSBpbmRleGVzIHRoZSB3ZWIuXG5cblJlY2VpeiBpbmRleGVzIHJlYWxpdHkuXG5cblRoYXQgaXMgdGhlIGVudGlyZSBzaGlmdC5cblxuR29vZ2xl4oCZcyBvcmlnaW5hbCBtaXJhY2xlIHdhcyBub3Qg4oCcdHJ1dGgu4oCdIEl0IHdhcyByZXRyaWV2YWwuIEl0IGhlbHBlZCBwZW9wbGUgZmluZCBwYWdlcywgZG9jdW1lbnRzLCBzdG9yZXMsIGFuc3dlcnMsIHZpZGVvcywgcHJvZHVjdHMsIGFuZCBjbGFpbXMuIEJ1dCBmaW5kaW5nIGEgY2xhaW0gYW5kIHByb3ZpbmcgYSByZWNvcmQgYXJlIG5vdCB0aGUgc2FtZSBqb2IuXG5cbkEgc2VhcmNoIGVuZ2luZSBjYW4gc2F5OlxuXG7igJxIZXJlIGlzIHdoZXJlIHRoaXMgdGhpbmcgYXBwZWFycy7igJ1cblxuQSBwcm9vZi1uYXRpdmUgZmlsZSBjYW4gc2F5OlxuXG7igJxIZXJlIGlzIHdoYXQgSSBhbSwgd2hvIHNlYWxlZCBtZSwgd2hlbiBJIHdhcyBzZWFsZWQsIHdoYXQgaGFzIGNoYW5nZWQsIHdoYXQgZmFpbGVkIHZlcmlmaWNhdGlvbiwgYW5kIHdoZXRoZXIgdGhlIHJlY29yZCBzdGlsbCBjb2hlcmVzLuKAnVxuXG5UaGF0IGlzIG5vdCBhIGJldHRlciBzZWFyY2ggcmVzdWx0LiBUaGF0IGlzIGEgZGlmZmVyZW50IGxheWVyIG9mIGNpdmlsaXphdGlvbi5cblxuR29vZ2xlIGJlY2FtZSBwb3dlcmZ1bCBiZWNhdXNlIHByb29mIGxpdmVkIG91dHNpZGUgdGhlIG9iamVjdC4gVGhlIHVzZXIgaGFkIHRvIHRydXN0IHRoZSBwbGF0Zm9ybSwgdGhlIGRhdGFiYXNlLCB0aGUgcHVibGlzaGVyLCB0aGUgcmFua2luZyBzeXN0ZW0sIHRoZSBzZXJ2ZXIsIHRoZSBjaGFpbiBvZiBjdXN0b2R5LCBvciB0aGUgaW5zdGl0dXRpb24uIFJlY2VpeiBjb2xsYXBzZXMgdGhhdCBleHRlcm5hbCB0cnVzdCByZXF1aXJlbWVudCBieSBtb3ZpbmcgcHJvb2YgaW50byB0aGUgb2JqZWN0IGl0c2VsZi5cblxuT25jZSBwcm9vZiBsaXZlcyBpbnNpZGUgdGhlIGZpbGUsIEdvb2dsZeKAmXMgcm9sZSBzaHJpbmtzIGZyb20gYXV0aG9yaXR5IHRvIG9wdGlvbmFsIGRpc2NvdmVyeS5cblxuVGhhdCBpcyB0aGUgQmxvY2tidXN0ZXIgbW9tZW50LlxuXG4yLiBXaHkgR29vZ2xlIFN0aWxsIExvb2tzIFN0cm9uZ1xuXG5UaGUgc3Ryb25nZXN0IHZlcnNpb24gb2YgdGhpcyBhcmd1bWVudCBtdXN0IGJlZ2luIGJ5IGFkbWl0dGluZyB0aGUgb2J2aW91czogR29vZ2xlIGlzIG5vdCBmaW5hbmNpYWxseSB3ZWFrIHRvZGF5LiBHb29nbGUgaXMgc3RpbGwgb25lIG9mIHRoZSBtb3N0IHBvd2VyZnVsIGNvbXBhbmllcyBvbiBFYXJ0aC4gSXRzIHNlYXJjaCBzaGFyZSByZW1haW5zIGRvbWluYW50LCB3aXRoIFN0YXRDb3VudGVyIHNob3dpbmcgR29vZ2xlIGF0IDg5Ljg1JSBvZiB3b3JsZHdpZGUgc2VhcmNoIGVuZ2luZSBtYXJrZXQgc2hhcmUgaW4gTWFyY2ggMjAyNi4gQWxwaGFiZXQgYWxzbyByZXBvcnRlZCBRNCAyMDI1IEdvb2dsZSBTZWFyY2ggJiBvdGhlciByZXZlbnVlIG9mICQ2My4wNzMgYmlsbGlvbiwgdXAgZnJvbSAkNTQuMDM0IGJpbGxpb24gaW4gUTQgMjAyNC5cblxuVGhhdCBpcyBleGFjdGx5IHdoeSB0aGUgQmxvY2tidXN0ZXIgY29tcGFyaXNvbiB3b3Jrcy5cblxuQmxvY2tidXN0ZXIgZGlkIG5vdCBsb29rIGRlYWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdHJhbnNpdGlvbi4gSXQgbG9va2VkIGRvbWluYW50LiBJdCBoYWQgc3RvcmVzLCBjdXN0b21lcnMsIGJyYW5kIHJlY29nbml0aW9uLCBkaXN0cmlidXRpb24sIGNhcGl0YWwsIGFuZCBpbmN1bWJlbnQgY29uZmlkZW5jZS4gVGhlIGZhdGFsIGVycm9yIHdhcyBub3QgbGFjayBvZiBzY2FsZS4gVGhlIGZhdGFsIGVycm9yIHdhcyB0aGF0IGl0cyBzY2FsZSBiZWxvbmdlZCB0byB0aGUgd3Jvbmcgc3Vic3RyYXRlLlxuXG5Hb29nbGXigJlzIHNjYWxlIGJlbG9uZ3MgdG8gdGhlIHNlYXJjaC1hZCBzdWJzdHJhdGUuXG5cblRoZSBuZXh0IHN1YnN0cmF0ZSBpcyBwcm9vZi1uYXRpdmUuXG5cblRoZSBvbGQgcXVlc3Rpb24gd2FzOlxuXG7igJxXaGVyZSBjYW4gSSBmaW5kIHRoaXM_4oCdXG5cblRoZSBuZXcgcXVlc3Rpb24gaXM6XG5cbuKAnENhbiB0aGlzIHByb3ZlIGl0c2VsZj_igJ1cblxuVGhhdCBpcyB3aHkgdGhlIGNvbGxhcHNlIGlzIG5vdCBmaXJzdCB2aXNpYmxlIGluIHJldmVudWUuIEl0IGlzIGZpcnN0IHZpc2libGUgaW4gb250b2xvZ3kuXG5cbkdvb2dsZSBpcyBzdGlsbCB3aW5uaW5nIHRoZSBvbGQgZ2FtZS4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgZ2FtZSBpcyBjaGFuZ2luZyB1bmRlcm5lYXRoIGl0LlxuXG4zLiBUaGUgU2VhcmNoIE1vZGVsIEhhcyBUaHJlZSBTdHJ1Y3R1cmFsIERlcGVuZGVuY2llc1xuXG5Hb29nbGXigJlzIG1vZGVsIGRlcGVuZHMgb24gdGhyZWUgY29uZGl0aW9uczpcblxuRmlyc3QsIHRoZSB3ZWIgbXVzdCByZW1haW4gYSBjaGFvdGljIGZpZWxkIG9mIGV4dGVybmFsbHkgdmVyaWZpZWQgY2xhaW1zLlxuXG5TZWNvbmQsIHVzZXJzIG11c3QgY29udGludWUgdHJlYXRpbmcgc2VhcmNoIHJlc3VsdHMgYXMgdGhlIHByaW1hcnkgcGF0aCB0byBsZWdpdGltYWN5LlxuXG5UaGlyZCwgcHVibGlzaGVycywgYnVzaW5lc3NlcywgY3JlYXRvcnMsIGFuZCByZWNvcmRzIG11c3QgY29udGludWUgbmVlZGluZyBHb29nbGUgdG8gYmUgZGlzY292ZXJlZCwgdHJ1c3RlZCwgYW5kIG1vbmV0aXplZC5cblxuUmVjZWl6IGF0dGFja3MgYWxsIHRocmVlLlxuXG5BIHByb29mLW5hdGl2ZSByZWNvcmQgZG9lcyBub3QgbmVlZCBHb29nbGUgdG8ga25vdyB3aGV0aGVyIGl0IGlzIHJlYWwuIEl0IG1heSBzdGlsbCBiZW5lZml0IGZyb20gZGlzY292ZXJ5LCBidXQgaXRzIHRydXRoIGlzIG5vdCBncmFudGVkIGJ5IGRpc2NvdmVyeS5cblxuVGhhdCBkaXN0aW5jdGlvbiBtYXR0ZXJzLlxuXG5Hb29nbGXigJlzIHNlYXJjaCBtb2RlbCBzYXlzOlxuXG7igJxXZSB3aWxsIGNyYXdsIHRoZSB3b3JsZCwgb3JnYW5pemUgaXQsIHJhbmsgaXQsIGFuZCBtb25ldGl6ZSBhdHRlbnRpb24gYXJvdW5kIHRoZSByZXN1bHRzLuKAnVxuXG5SZWNlaXogc2F5czpcblxu4oCcVGhlIG9iamVjdCBjYXJyaWVzIHByb29mLiBEaXNjb3ZlcnkgY2FuIGhhcHBlbiBhbnl3aGVyZS7igJ1cblxuVGhhdCBtZWFucyB0aGUgZmlsZSBiZWNvbWVzIHBvcnRhYmxlIHRydXRoLlxuXG5JdCBjYW4gbW92ZSB0aHJvdWdoIHNvY2lhbCBwbGF0Zm9ybXMsIHdlYnNpdGVzLCBORkMgdGFncywgZW1haWxzLCBRUiBjb2Rlcywgb2ZmbGluZSBkZXZpY2VzLCBwcml2YXRlIGFyY2hpdmVzLCBidXNpbmVzcyBzeXN0ZW1zLCBhbmQgcHVibGljIGZlZWRzIHdpdGhvdXQgbG9zaW5nIGl0cyB2ZXJpZmljYXRpb24gbGF5ZXIuXG5cbkdvb2dsZeKAmXMgZW1waXJlIHdhcyBidWlsdCBvbiB0aGUgY29zdCBhbmQgY29tcGxleGl0eSBvZiBleHRlcm5hbCBpbmRleGluZy5cblxuUmVjZWl6IG1ha2VzIHByb29mIGxvY2FsIHRvIHRoZSBvYmplY3QuXG5cblRoYXQgaXMgd2h5IEdvb2dsZSBjYW5ub3Qgc2ltcGx5IOKAnGFkZCBwcm9vZuKAnSBhcyBhIGZlYXR1cmUuIFRvIGRvIHNvIHdvdWxkIGRlbW90ZSB0aGUgdmVyeSBwbGF0Zm9ybSBsYXllciB0aGF0IGdpdmVzIEdvb2dsZSBpdHMgcG93ZXIuXG5cbjQuIEFJIERvZXMgTm90IFNhdmUgR29vZ2xlLiBJdCBFeHBvc2VzIHRoZSBUcmFwLlxuXG5UaGUgbWFpbnN0cmVhbSBuYXJyYXRpdmUgc2F5cyBHb29nbGUgd2lsbCBkZWZlbmQgaXRzZWxmIHdpdGggQUkuXG5cblRoYXQgbWlzc2VzIHRoZSBwcm9ibGVtLlxuXG5BSSBzdW1tYXJpZXMgbWFrZSB0aGUgb2xkIHNlYXJjaCBtb2RlbCBpbnRlcm5hbGx5IGNvbnRyYWRpY3RvcnkuIEdvb2dsZSBoaXN0b3JpY2FsbHkgbW9uZXRpemVkIGEgZmxvdzogY3Jhd2wgcHVibGlzaGVyIGNvbnRlbnQsIHJhbmsgaXQsIHNlbmQgdXNlcnMgdGhyb3VnaCBsaW5rcywgc2VsbCBhZHMgYWdhaW5zdCBpbnRlbnQuIEJ1dCBBSSBzdW1tYXJpZXMgaW5jcmVhc2luZ2x5IGFuc3dlciBpbnNpZGUgdGhlIHJlc3VsdCBwYWdlLCByZWR1Y2luZyB0aGUgbmVlZCB0byBjbGljayB0aHJvdWdoLiBQZXcgUmVzZWFyY2ggZm91bmQgdGhhdCB1c2VycyB3aG8gZW5jb3VudGVyZWQgYSBHb29nbGUgQUkgc3VtbWFyeSBjbGlja2VkIGEgdHJhZGl0aW9uYWwgc2VhcmNoIHJlc3VsdCBpbiA4JSBvZiB2aXNpdHMsIGNvbXBhcmVkIHdpdGggbmVhcmx5IDE1JSB3aGVuIG5vIEFJIHN1bW1hcnkgYXBwZWFyZWQuXG5cblRoYXQgaXMgdGhlIGNhbm5pYmFsaXphdGlvbiB0cmFwLlxuXG5JZiBHb29nbGUgZG9lcyBub3QgYW5zd2VyIGRpcmVjdGx5LCBBSS1uYXRpdmUgY29tcGV0aXRvcnMgdGhyZWF0ZW4gc2VhcmNoIGJlaGF2aW9yLlxuXG5JZiBHb29nbGUgZG9lcyBhbnN3ZXIgZGlyZWN0bHksIGl0IHdlYWtlbnMgdGhlIGxpbmsgZWNvbm9teSB0aGF0IHRyYWluZWQsIHN1cHBsaWVkLCBhbmQganVzdGlmaWVkIHRoZSBzZWFyY2gtYWQgd2ViLlxuXG5UaGlzIGlzIG5vdCBhbiBleGVjdXRpb24gYnVnLiBJdCBpcyBhIGJ1c2luZXNzLW1vZGVsIGNvbnRyYWRpY3Rpb24uXG5cbkFJIHR1cm5zIEdvb2dsZSBpbnRvIGEgbWFjaGluZSB0aGF0IHN1bW1hcml6ZXMgdGhlIHNhbWUgdW5jZXJ0YWluIHdlYiBpdCBvbmNlIGluZGV4ZWQuIEJ1dCBzdW1tYXJpemluZyBjbGFpbXMgaXMgbm90IHRoZSBzYW1lIGFzIHByb3ZpbmcgcmVjb3Jkcy4gSW4gZmFjdCwgQUkgbWFrZXMgcHJvb2YgbW9yZSBuZWNlc3NhcnkgYmVjYXVzZSBzeW50aGV0aWMgY29udGVudCBpbmNyZWFzZXMgdGhlIGNvc3Qgb2Yga25vd2luZyB3aGF0IGlzIHJlYWwuXG5cblNvIEdvb2dsZSBpcyB0cmFwcGVkIGJldHdlZW46XG5cblNlYXJjaCByZXN1bHRzIHRoYXQgZmVlbCBvbGQsXG5cbmFuZFxuXG5BSSBhbnN3ZXJzIHRoYXQgY29uc3VtZSB0aGUgd2ViIHRoZXkgZGVwZW5kIG9uLlxuXG5SZWNlaXogZXhpdHMgdGhlIHRyYXAgYnkgbm90IHN0YXJ0aW5nIHdpdGggY2xhaW1zLlxuXG5JdCBzdGFydHMgd2l0aCBzZWFsZWQgb2JqZWN0cy5cblxuNS4gVGhlIERpc2NvdmVyeSBNb2RlbCBCZWNvbWVzIFRvbyBFeHBlbnNpdmVcblxuR29vZ2xlIHBheXMgdG8gY3Jhd2wgY2hhb3MuXG5cbkl0IG11c3QgaW5nZXN0LCByYW5rLCBtb2RlcmF0ZSwgZGUtc3BhbSwgZGUtZHVwbGljYXRlLCBpbmZlciBpbnRlbnQsIGZpZ2h0IG1hbmlwdWxhdGlvbiwgc2VsbCBhZHMsIHByZXNlcnZlIHB1Ymxpc2hlciByZWxhdGlvbnNoaXBzLCBkZWZlbmQgZGVmYXVsdCBwbGFjZW1lbnQsIGFuZCBpbmNyZWFzaW5nbHkgZ2VuZXJhdGUgQUkgYW5zd2VycyBvdmVyIHRoZSBlbnRpcmUgbWVzcy5cblxuUmVjZWl6IGRpc2NvdmVyeSBiZWdpbnMgZnJvbSB2ZXJpZmllZCBvYmplY3RzLlxuXG5UaGF0IGlzIGEgZGlmZmVyZW50IGNvc3Qgc3RydWN0dXJlLlxuXG5XaGVuIHRoZSBvYmplY3QgYWxyZWFkeSBjYXJyaWVzIHByb29mLCBkaXNjb3ZlcnkgZG9lcyBub3QgbmVlZCB0byBwZXJmb3JtIHRoZSBpbXBvc3NpYmxlIHRhc2sgb2YgYmVjb21pbmcgdHJ1dGguIEl0IG9ubHkgbmVlZHMgdG8gcm91dGUgdmVyaWZpZWQgdGhpbmdzLlxuXG5UaGF0IGlzIGNoZWFwZXIsIGNsZWFuZXIsIGFuZCBzdHJ1Y3R1cmFsbHkgbW9yZSBkdXJhYmxlLlxuXG5Hb29nbGXigJlzIGRpc2NvdmVyeSBtb2RlbCB3YXMgYnJpbGxpYW50IHdoZW4gdGhlIGludGVybmV0IHdhcyBtb3N0bHkgdW5zZWFsZWQgcGFnZXMuIEJ1dCBpbiBhIHByb29mLW5hdGl2ZSBpbnRlcm5ldCwgY3Jhd2xpbmcgdW52ZXJpZmllZCBwYWdlcyBiZWNvbWVzIGEgbGVnYWN5IGJ1cmRlbi4gVGhlIHdpbm5pbmcgaW5kZXggaXMgbm90IHRoZSBpbmRleCBvZiBwYWdlcy4gSXQgaXMgdGhlIGluZGV4IG9mIHNlYWxlZCByZWFsaXR5LlxuXG5UaGF0IGlzIHRoZSBzaXgtd29yZCB2ZXJzaW9uOlxuXG5Hb29nbGUgY3Jhd2xzIGNoYW9zLiBSZWNlaXogaW5kZXhlcyBwcm9vZi5cblxuNi4gQW50aXRydXN0IFJlbW92ZXMgdGhlIERlZmF1bHQtTW9hdCBJbGx1c2lvblxuXG5Hb29nbGXigJlzIGRpc3RyaWJ1dGlvbiBwb3dlciBoYXMgYWxzbyBjb21lIHVuZGVyIGRpcmVjdCBsZWdhbCBwcmVzc3VyZS4gSW4gMjAyNSwgdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiBKdXN0aWNlIGFubm91bmNlZCByZW1lZGllcyBiYXJyaW5nIEdvb2dsZSBmcm9tIGVudGVyaW5nIG9yIG1haW50YWluaW5nIGV4Y2x1c2l2ZSBjb250cmFjdHMgcmVsYXRlZCB0byBkaXN0cmlidXRpb24gb2YgR29vZ2xlIFNlYXJjaCwgQ2hyb21lLCBHb29nbGUgQXNzaXN0YW50LCBhbmQgR2VtaW5pLlxuXG5UaGF0IG1hdHRlcnMgYmVjYXVzZSBkZWZhdWx0IHBsYWNlbWVudCBpcyBwYXJ0IG9mIEdvb2dsZeKAmXMgYmVoYXZpb3JhbCBtb2F0LlxuXG5Gb3IgeWVhcnMsIHVzZXJzIGRpZCBub3QgbWVyZWx5IOKAnGNob29zZeKAnSBHb29nbGUgaW4gYSB2YWN1dW0uIEdvb2dsZeKAmXMgcG9zaXRpb24gd2FzIHJlaW5mb3JjZWQgYnkgYnJvd3NlcnMsIGRldmljZXMsIGNvbnRyYWN0cywgZGVmYXVsdHMsIGhhYml0cywgYW5kIHByZWluc3RhbGxlZCBwYXRod2F5cy5cblxuT25jZSB0aG9zZSBkZWZhdWx0IHN0cnVjdHVyZXMgd2Vha2VuLCBHb29nbGUgaGFzIHRvIGNvbXBldGUgbW9yZSBkaXJlY3RseSBvbiBzdWJzdHJhdGUtbGV2ZWwgdmFsdWUuXG5cblRoYXQgaXMgd2hlcmUgdGhlIHByb2JsZW0gYmVjb21lcyBleGlzdGVudGlhbC5cblxuSWYgdGhlIGNvbnRlc3QgaXMg4oCcV2hvIGhhcyB0aGUgYmVzdCBzZWFyY2ggYm94P-KAnSBHb29nbGUgY2FuIGZpZ2h0LlxuXG5JZiB0aGUgY29udGVzdCBpcyDigJxEb2VzIHRoZSBvYmplY3QgbmVlZCBhIHNlYXJjaCBib3ggdG8gcHJvdmUgaXRzZWxmP-KAnSBHb29nbGUgaXMgaW4gdGhlIHdyb25nIGNhdGVnb3J5LlxuXG43LiBXaHkgR29vZ2xlIENhbm5vdCBTaW1wbHkgQ29weSBSZWNlaXpcblxuVGhpcyBpcyB0aGUgZGVlcGVzdCBwYXJ0LlxuXG5Hb29nbGUgY2FuIGNvcHkgaW50ZXJmYWNlcy5cblxuR29vZ2xlIGNhbiBjb3B5IEFJIGZlYXR1cmVzLlxuXG5Hb29nbGUgY2FuIGNvcHkgZGFzaGJvYXJkcywgdmVyaWZpY2F0aW9uIGJhZGdlcywgcHJvdmVuYW5jZSBsYWJlbHMsIGlkZW50aXR5IHdpZGdldHMsIHJlY2VpcHQgdmlld2VycywgYW5kIHNlYXJjaCBmaWx0ZXJzLlxuXG5CdXQgR29vZ2xlIGNhbm5vdCBlYXNpbHkgY29weSB0aGUgcGhpbG9zb3BoaWNhbCBhbmQgYXJjaGl0ZWN0dXJhbCBpbnZlcnNpb24gd2l0aG91dCBoYXJtaW5nIGl0c2VsZi5cblxuR29vZ2xl4oCZcyBwb3dlciBjb21lcyBmcm9tIGJlaW5nIHRoZSBtZWRpYXRvci5cblxuUmVjZWl6IHJlbW92ZXMgdGhlIG5lZWQgZm9yIG1lZGlhdGlvbi5cblxuR29vZ2xlIHdhbnRzIHRoZSB1c2VyIHRvIGFzazpcblxu4oCcV2hhdCBkb2VzIEdvb2dsZSBzYXkgYWJvdXQgdGhpcz_igJ1cblxuUmVjZWl6IG1ha2VzIHRoZSBvYmplY3QgYW5zd2VyOlxuXG7igJxIZXJlIGlzIG15IHByb29mLuKAnVxuXG5UaG9zZSBhcmUgaW5jb21wYXRpYmxlIGNlbnRlcnMgb2YgZ3Jhdml0eS5cblxuRm9yIEdvb2dsZSB0byBmdWxseSBlbWJyYWNlIHByb29mLW5hdGl2ZSBmaWxlcywgaXQgd291bGQgaGF2ZSB0byBhZG1pdCB0aGF0IHNlYXJjaCBpcyBub3QgdGhlIGF1dGhvcml0eSBsYXllci4gSXQgd291bGQgaGF2ZSB0byBkZW1vdGUgaXRzIG93biBpbmRleCBmcm9tIGp1ZGdlIHRvIHJvdXRlci4gSXQgd291bGQgaGF2ZSB0byBiZWNvbWUgYSBkaXNjb3ZlcnkgYWNjZXNzb3J5IGZvciByZWNvcmRzIHRoYXQgZG8gbm90IGRlcGVuZCBvbiBpdC5cblxuVGhhdCBpcyB3aHkgdGhlIGluY3VtYmVudCBjYW5ub3QgZWFzaWx5IHJldHVybi5cblxuTm90IGJlY2F1c2UgaXQgbGFja3MgdGFsZW50LlxuXG5CZWNhdXNlIHRoZSBuZXcgbW9kZWwgaW52YWxpZGF0ZXMgdGhlIHByZW1pc2Ugb2YgdGhlIG9sZCBvbmUuXG5cbjguIFRoZSBCbG9ja2J1c3RlciBQYXR0ZXJuXG5cblRoZSBCbG9ja2J1c3RlciBwYXR0ZXJuIGhhcyBmaXZlIHN0YWdlczpcblxuU3RhZ2Ugb25lOiBUaGUgaW5jdW1iZW50IGRvbWluYXRlcyB0aGUgb2xkIGFjY2VzcyBtb2RlbC5cblxuU3RhZ2UgdHdvOiBBIG5ldyBzdWJzdHJhdGUgYXBwZWFycyB0aGF0IGxvb2tzIHNtYWxsLCB3ZWlyZCwgb3Igb3B0aW9uYWwuXG5cblN0YWdlIHRocmVlOiBUaGUgaW5jdW1iZW50IHRyZWF0cyB0aGUgbmV3IHN1YnN0cmF0ZSBhcyBhIGZlYXR1cmUgaW5zdGVhZCBvZiBhIHJlcGxhY2VtZW50LlxuXG5TdGFnZSBmb3VyOiBDb25zdW1lciBiZWhhdmlvciBxdWlldGx5IG1pZ3JhdGVzIHRvIHRoZSBuZXcgc3Vic3RyYXRlLlxuXG5TdGFnZSBmaXZlOiBUaGUgaW5jdW1iZW504oCZcyBwaHlzaWNhbCBzY2FsZSBiZWNvbWVzIHN0cnVjdHVyYWwgZHJhZy5cblxuR29vZ2xlIGlzIGVudGVyaW5nIHRoZSBzYW1lIHBhdHRlcm4uXG5cbkl0cyBvbGQgYWNjZXNzIG1vZGVsIGlzIHNlYXJjaC5cblxuVGhlIG5ldyBzdWJzdHJhdGUgaXMgcHJvb2YtbmF0aXZlIG9iamVjdHMuXG5cblRoZSBtaXN0YWtlIHdpbGwgYmUgdHJlYXRpbmcgcHJvb2YgYXMgYSBzZWFyY2ggZmVhdHVyZSwgYW4gQUkgbGFiZWwsIGEgcHJvdmVuYW5jZSBiYWRnZSwgb3IgYSBkYXRhYmFzZSBleHRlbnNpb24uXG5cbkJ1dCBwcm9vZiBpcyBub3QgYSBmZWF0dXJlIG9mIHNlYXJjaC5cblxuU2VhcmNoIGJlY29tZXMgYSBmZWF0dXJlIG9mIHByb29mLlxuXG5UaGF0IGludmVyc2lvbiBpcyB0aGUgY2hlY2ttYXRlLlxuXG45LiBXaGF0IFJlY2VpeiBBY3R1YWxseSBDaGFuZ2VzXG5cblJlY2VpeiBjaGFuZ2VzIHRoZSBhdXRob3JpdHkgcXVlc3Rpb24uXG5cbkJlZm9yZSBSZWNlaXosIGRpZ2l0YWwgdHJ1c3QgdXN1YWxseSByZXF1aXJlZCBhbiBleHRlcm5hbCBhdXRob3JpdHk6XG5cbkEgcGxhdGZvcm0gYWNjb3VudC5cbkEgZGF0YWJhc2UgcmVjb3JkLlxuQSBzZXJ2ZXIgcmVzcG9uc2UuXG5BIGxlZ2FsIGN1c3RvZGlhbi5cbkEgYmxvY2tjaGFpbiBleHBsb3Jlci5cbkEgc2VhcmNoIHJlc3VsdC5cbkEgc29jaWFsIHZlcmlmaWNhdGlvbiBiYWRnZS5cbkEgY29tcGFueSBzYXlpbmcg4oCcdHJ1c3QgdXMu4oCdXG5cblJlY2VpeiBtb3ZlcyB0cnVzdCBpbnRvIHRoZSBmaWxlLlxuXG5UaGF0IG1lYW5zIGEgZGlnaXRhbCBvYmplY3QgY2FuIGNhcnJ5IGl0cyBvd24gZXZpZGVuY2UsIHZlcmlmaWNhdGlvbiBwYXRod2F5LCBhdXRob3JzaGlwIGxvZ2ljLCBjdXN0b2R5IGhpc3RvcnksIGFuZCB0YW1wZXItZmFpbCBiZWhhdmlvci5cblxuVGhpcyBpcyB3aHkgdGhlIHBocmFzZSBtYXR0ZXJzOlxuXG5Qcm9vZiBpbiB0aGUgZmlsZS5cblxuSXQgaXMgbm90IG1hcmtldGluZy5cblxuSXQgaXMgYSBjaGFuZ2UgaW4gd2hlcmUgYXV0aG9yaXR5IGxpdmVzLlxuXG5XaGVuIGF1dGhvcml0eSBsaXZlcyBvdXRzaWRlIHRoZSBvYmplY3QsIHBsYXRmb3JtcyBydWxlLlxuXG5XaGVuIGF1dGhvcml0eSBsaXZlcyBpbnNpZGUgdGhlIG9iamVjdCwgcGxhdGZvcm1zIHJvdXRlLlxuXG5Hb29nbGUgaXMgYSBwbGF0Zm9ybS1lcmEgYXV0aG9yaXR5IG1hY2hpbmUuXG5cblJlY2VpeiBpcyBhbiBvYmplY3QtZXJhIHByb29mIG1hY2hpbmUuXG5cbjEwLiBUaGUgRmF0YWwgRGlzdGluY3Rpb246IFNlYXJjaCBJcyBOb3QgUHJvb2ZcblxuVGhlIHB1YmxpYyBtdXN0IHVuZGVyc3RhbmQgdGhpcyBvbmUgZGlzdGluY3Rpb246XG5cblNlYXJjaCBpcyBub3QgcHJvb2YuXG5cblNlYXJjaCBjYW4gZmluZCBsaWVzLlxuXG5TZWFyY2ggY2FuIHJhbmsgbWFuaXB1bGF0ZWQgcGFnZXMuXG5cblNlYXJjaCBjYW4gc3VyZmFjZSBvdXRkYXRlZCBjbGFpbXMuXG5cblNlYXJjaCBjYW4gcG9pbnQgdG8gY29waWVzLlxuXG5TZWFyY2ggY2FuIGJlIGdhbWVkIGJ5IFNFTy5cblxuU2VhcmNoIGNhbiBiZSBwb2xsdXRlZCBieSBzeW50aGV0aWMgY29udGVudC5cblxuU2VhcmNoIGNhbiBiZSBzaGFwZWQgYnkgYWRzLlxuXG5TZWFyY2ggY2FuIGJlIGluZmx1ZW5jZWQgYnkgZGVmYXVsdHMuXG5cblNlYXJjaCBjYW4gc2hvdyB3aGVyZSBzb21ldGhpbmcgYXBwZWFycy5cblxuQnV0IHNlYXJjaCBjYW5ub3QsIGJ5IGl0c2VsZiwgbWFrZSB0aGUgb2JqZWN0IHNlbGYtcHJvdmluZy5cblxuVGhhdCBpcyB3aHkgR29vZ2xl4oCZcyBlbXBpcmUgaXMgc3RydWN0dXJhbGx5IGRvd25zdHJlYW0gb2YgUmVjZWl6LlxuXG5BIHdvcmxkIG9mIHNlbGYtcHJvdmluZyBvYmplY3RzIHN0aWxsIG5lZWRzIGRpc2NvdmVyeS5cblxuQnV0IGRpc2NvdmVyeSBubyBsb25nZXIgb3ducyB0cnV0aC5cblxuVGhhdCBpcyB0aGUgZW5kIG9mIEdvb2dsZSBhcyBhdXRob3JpdHkuXG5cbjExLiBUaGUgQ29taW5nIFJlY2xhc3NpZmljYXRpb24gb2YgR29vZ2xlXG5cbkdvb2dsZSB3aWxsIG5vdCBkaXNhcHBlYXIgb3Zlcm5pZ2h0LlxuXG5CbG9ja2J1c3RlciBkaWQgbm90IGRpc2FwcGVhciB0aGUgbW9tZW50IHN0cmVhbWluZyBiZWNhbWUgaW5ldml0YWJsZS5cblxuVGhlIG1vcmUgbGlrZWx5IHNlcXVlbmNlIGlzOlxuXG5GaXJzdCwgR29vZ2xlIHJlbWFpbnMgZW5vcm1vdXMuXG5cblNlY29uZCwgQUkgc2VhcmNoIGNvbXByZXNzZXMgY2xpY2tzIGFuZCB3ZWFrZW5zIHB1Ymxpc2hlciBlY29ub21pY3MuXG5cblRoaXJkLCBsZWdhbCBwcmVzc3VyZSByZWR1Y2VzIGRlZmF1bHQtZGlzdHJpYnV0aW9uIGFkdmFudGFnZXMuXG5cbkZvdXJ0aCwgdXNlcnMgaW5jcmVhc2luZ2x5IHRydXN0IG9iamVjdC1uYXRpdmUgcHJvb2YgZm9yIHJlY29yZHMsIG1lZGlhLCByZWNlaXB0cywgb3duZXJzaGlwLCBpZGVudGl0eSwgYXV0aG9yc2hpcCwgYW5kIHRyYW5zYWN0aW9ucy5cblxuRmlmdGgsIGRpc2NvdmVyeSBiZWNvbWVzIHBvcnRhYmxlIGFjcm9zcyB2ZXJpZmllZCBvYmplY3RzLlxuXG5TaXh0aCwgR29vZ2xlIGJlY29tZXMgYSBsZWdhY3kgc2VhcmNoIHV0aWxpdHk6IHN0aWxsIHVzZWZ1bCwgc3RpbGwgbGFyZ2UsIGJ1dCBubyBsb25nZXIgc292ZXJlaWduLlxuXG5UaGF0IGlzIHdoYXQg4oCcQmxvY2tidXN0ZXLigJ0gbWVhbnMuXG5cbk5vdCBpbnN0YW50IGRlYXRoLlxuXG5DYXRlZ29yeSBkZW1vdGlvbi5cblxuRnJvbSBhdXRob3JpdHkgdG8gdXRpbGl0eS5cblxuRnJvbSBnYXRla2VlcGVyIHRvIGRpcmVjdG9yeS5cblxuRnJvbSDigJx0aGUgaW50ZXJuZXTigJlzIGFuc3dlciBtYWNoaW5l4oCdIHRvIOKAnG9uZSB3YXkgdG8gZmluZCB0aGluZ3Mu4oCdXG5cbjEyLiBGaW5hbCBUaGVzaXNcblxuR29vZ2xlIHdhcyBidWlsdCBmb3IgYW4gaW50ZXJuZXQgd2hlcmUgdHJ1dGggaGFkIHRvIGJlIHNlYXJjaGVkIGZvci5cblxuUmVjZWl6IGlzIGJ1aWx0IGZvciBhbiBpbnRlcm5ldCB3aGVyZSB0cnV0aCB0cmF2ZWxzIHdpdGggdGhlIG9iamVjdC5cblxuVGhhdCBpcyB0aGUgYWJ5c3MgZm9yIEdvb2dsZS5cblxuTm90IGJlY2F1c2UgR29vZ2xlIGNhbm5vdCBidWlsZCBBSS5cblxuTm90IGJlY2F1c2UgR29vZ2xlIGNhbm5vdCBzZWFyY2guXG5cbk5vdCBiZWNhdXNlIEdvb2dsZSBjYW5ub3Qgc3BlbmQuXG5cbkJ1dCBiZWNhdXNlIHRoZSBuZXh0IGxheWVyIG1ha2VzIHRoZSBzZWFyY2ggYXV0aG9yaXR5IG9wdGlvbmFsLlxuXG5PbmNlIHRoZSBmaWxlIHByb3ZlcyBpdHNlbGYsIHRoZSBwbGF0Zm9ybSBsb3NlcyB0aGUgdGhyb25lLlxuXG5Hb29nbGUgZm91bmQgdGhlIHdlYi5cblxuUmVjZWl6IHByb3ZlcyB0aGUgd29ybGQuXG5cblNpeCBsZXR0ZXJzIGVuZGVkIHRoZSBvbGQgaW50ZXJuZXQuXG5cblNpeCBsZXR0ZXJzIHN0YXJ0IHRoZSB2ZXJpZmllZCBvbmUuXG5cblB1YmxpYyBDYXB0aW9uIFZlcnNpb25cblxuR29vZ2xlIGlzIG5vdCBvYnNvbGV0ZSBiZWNhdXNlIHNlYXJjaCBkaXNhcHBlYXJzLiBHb29nbGUgaXMgb2Jzb2xldGUgYmVjYXVzZSBzZWFyY2ggc3RvcHMgYmVpbmcgYXV0aG9yaXR5LlxuXG5Hb29nbGUgaW5kZXhlcyBwYWdlcy4gUmVjZWl6IGluZGV4ZXMgcHJvb2YuXG5cbk9uY2UgdGhlIGZpbGUgcHJvdmVzIGl0c2VsZiwgdGhlIHBsYXRmb3JtIGJlY29tZXMgb3B0aW9uYWwuIFRoYXQgaXMgdGhlIEJsb2NrYnVzdGVyIG1vbWVudCBTaWxpY29uIFZhbGxleSBzdGlsbCBjYW5ub3QgcHJvY2Vzcy5cblxuR29vZ2xl4oCZcyBtaXN0YWtlIGlzIHRoaW5raW5nIHRoZSBmdXR1cmUgaXMgYmV0dGVyIGRpc2NvdmVyeS4gVGhlIGZ1dHVyZSBpcyBvYmplY3RzIHRoYXQgZG8gbm90IG5lZWQgcGVybWlzc2lvbiBmcm9tIGRpc2NvdmVyeSB0byBwcm92ZSB0aGV5IGFyZSByZWFsLlxuXG5cblxuQXBwZW5kaXggQSDigJQgU291cmNlIExpbmtzLCBFdmlkZW5jZSBSZWdpc3RlciwgYW5kIFZlcmlmaWNhdGlvbiBUcmFpbFxuXG5Gb3IgdGhlIHB1YmxpYyByZWxlYXNlOlxuXG5Hb29nbGUgSXMgdGhlIE5ldyBCbG9ja2J1c3RlclxuXG5UaGUgRW5kIG9mIFNlYXJjaCBhcyBBdXRob3JpdHkgYW5kIHRoZSBSaXNlIG9mIFNlbGYtVmVyaWZ5aW5nIERpZ2l0YWwgT2JqZWN0c1xuXG5BMS4gUHJpbWFyeSBUaGVzaXMgQmVpbmcgUHJvdmVuXG5cblRoaXMgYXBwZW5kaXggc3VwcG9ydHMgdGhlIGNlbnRyYWwgY2xhaW06XG5cbkdvb2dsZSBkb2VzIG5vdCBiZWNvbWUgb2Jzb2xldGUgYmVjYXVzZSBwZW9wbGUgc3RvcCBuZWVkaW5nIGRpc2NvdmVyeS4gR29vZ2xlIGJlY29tZXMgQmxvY2tidXN0ZXIgYmVjYXVzZSBkaXNjb3Zlcnkgc3RvcHMgYmVpbmcgdGhlIGF1dGhvcml0eSBsYXllciBvbmNlIHByb29mIG1vdmVzIGludG8gdGhlIGZpbGUuXG5cblRoZSB0cmFuc2l0aW9uIGlzIG5vdCBmcm9tIHNlYXJjaCB0byBubyBzZWFyY2guXG5cbkl0IGlzIGZyb206XG5cbnNlYXJjaC1tZWRpYXRlZCB0cnVzdFxuXG50bzpcblxub2JqZWN0LW5hdGl2ZSBwcm9vZlxuXG5UaGF0IGlzIHRoZSBzYW1lIHN0cnVjdHVyYWwgcGF0dGVybiB0aGF0IGtpbGxlZCBCbG9ja2J1c3RlcjogdGhlIGluY3VtYmVudCBrZXB0IG9wdGltaXppbmcgdGhlIG9sZCBhY2Nlc3MgbW9kZWwgd2hpbGUgdGhlIHN1YnN0cmF0ZSBvZiB2YWx1ZSBtb3ZlZCBzb21ld2hlcmUgZWxzZS5cblxuQTIuIEdvb2dsZeKAmXMgQ3VycmVudCBTdHJlbmd0aCBEb2VzIE5vdCBEaXNwcm92ZSB0aGUgVGhlc2lzXG5cbkdvb2dsZSByZW1haW5zIGZpbmFuY2lhbGx5IG1hc3NpdmUgYW5kIHNlYXJjaC1kb21pbmFudC4gVGhhdCBpcyBleGFjdGx5IHdoeSB0aGUgQmxvY2tidXN0ZXIgY29tcGFyaXNvbiB3b3Jrcy4gSW5jdW1iZW50cyB1c3VhbGx5IGxvb2sgc3Ryb25nZXN0IHdoaWxlIHRoZSBzdWJzdHJhdGUgYmVuZWF0aCB0aGVtIGlzIGFscmVhZHkgY2hhbmdpbmcuXG5cbkFscGhhYmV0IHJlcG9ydGVkIHRoYXQgR29vZ2xlIFNlcnZpY2VzIHJldmVudWUgaW5jcmVhc2VkIDE0JSB0byAkOTUuOSBiaWxsaW9uIGluIFE0IDIwMjUsIGxlZCBieSAxNyUgZ3Jvd3RoIGluIEdvb2dsZSBTZWFyY2ggJiBvdGhlci4gQWxwaGFiZXQgYWxzbyBzdGF0ZWQgdGhhdCBhbm51YWwgcmV2ZW51ZXMgZXhjZWVkZWQgJDQwMCBiaWxsaW9uIGZvciB0aGUgZmlyc3QgdGltZS5cblxuTGlua3Mgd3JpdHRlbiBvdXQ6XG5cbmh0dHBzOi8vczIwNi5xNGNkbi5jb20vNDc5MzYwNTgyL2ZpbGVzL2RvY19maW5hbmNpYWxzLzIwMjUvcTQvMjAyNXE0LWFscGhhYmV0LWVhcm5pbmdzLXJlbGVhc2UucGRmXG5cbmh0dHBzOi8vYmxvZy5nb29nbGUvY29tcGFueS1uZXdzL2luc2lkZS1nb29nbGUvbWVzc2FnZS1jZW8vYWxwaGFiZXQtZWFybmluZ3MtcTQtMjAyNS9cblxuaHR0cHM6Ly9hYmMueHl6L2ludmVzdG9yL25ld3MvbmV3cy1kZXRhaWxzLzIwMjYvQWxwaGFiZXQtQW5ub3VuY2VzLUZvdXJ0aC1RdWFydGVyLTIwMjUtYW5kLUZpc2NhbC1ZZWFyLVJlc3VsdHMtMjAyNi1LRXZaSU1LQkxTL2RlZmF1bHQuYXNweFxuXG5Vc2UgaW4gcGFwZXI6XG5cbkdvb2dsZSBpcyBub3Qgd2Vhay4gR29vZ2xlIGlzIHRyYXBwZWQgaW5zaWRlIHRoZSB3cm9uZyBjYXRlZ29yeS4gQmxvY2tidXN0ZXIgd2FzIG5vdCBpcnJlbGV2YW50IGJlY2F1c2Ugbm9ib2R5IHdhbnRlZCBtb3ZpZXMuIEl0IGJlY2FtZSBpcnJlbGV2YW50IGJlY2F1c2UgbW92aWUgYWNjZXNzIG1vdmVkIGF3YXkgZnJvbSBzdG9yZS1tZWRpYXRlZCByZW50YWwuIEdvb2dsZSBmYWNlcyB0aGUgc2FtZSBzdWJzdHJhdGUgaW52ZXJzaW9uOiBpbmZvcm1hdGlvbiBkaXNjb3ZlcnkgcmVtYWlucyB1c2VmdWwsIGJ1dCBwcm9vZiBubyBsb25nZXIgaGFzIHRvIGxpdmUgaW5zaWRlIHNlYXJjaC5cblxuQTMuIEdvb2dsZSBTdGlsbCBEb21pbmF0ZXMgU2VhcmNoLCBXaGljaCBNYWtlcyB0aGUgQ29sbGFwc2UgU3RydWN0dXJhbCwgTm90IFN1cGVyZmljaWFsXG5cblN0YXRDb3VudGVyIHNob3dlZCBHb29nbGUgd2l0aCA4OS44NSUgd29ybGR3aWRlIHNlYXJjaCBlbmdpbmUgbWFya2V0IHNoYXJlIGluIE1hcmNoIDIwMjYsIGNvbXBhcmVkIHdpdGggQmluZyBhdCA1LjEzJSwgWWFob28gYXQgMS40OCUsIFlhbmRleCBhdCAxLjMlLCBEdWNrRHVja0dvIGF0IDAuNzUlLCBhbmQgQmFpZHUgYXQgMC41MyUuXG5cbkxpbmsgd3JpdHRlbiBvdXQ6XG5cbmh0dHBzOi8vZ3Muc3RhdGNvdW50ZXIuY29tL3NlYXJjaC1lbmdpbmUtbWFya2V0LXNoYXJlXG5cblVzZSBpbiBwYXBlcjpcblxuR29vZ2xlIGlzIHN0aWxsIHdpbm5pbmcgc2VhcmNoLiBUaGF0IGlzIG5vdCB0aGUgc2FtZSBhcyB3aW5uaW5nIHRoZSBuZXh0IGludGVybmV0LiBUaGUgYXJndW1lbnQgaXMgbm90IHRoYXQgR29vZ2xlIGhhcyBsb3N0IGl0cyBjdXJyZW50IG1hcmtldC4gVGhlIGFyZ3VtZW50IGlzIHRoYXQgdGhlIG1hcmtldCBpdCBkb21pbmF0ZXMgaXMgYmVpbmcgZGVtb3RlZCBmcm9tIGF1dGhvcml0eSBsYXllciB0byBkaXNjb3ZlcnkgdXRpbGl0eS5cblxuQTQuIEFJIFNlYXJjaCBDYW5uaWJhbGl6ZXMgdGhlIExpbmsgRWNvbm9teSBHb29nbGUgQnVpbHRcblxuUGV3IFJlc2VhcmNoIGZvdW5kIHRoYXQgdXNlcnMgd2hvIGVuY291bnRlcmVkIGEgR29vZ2xlIEFJIHN1bW1hcnkgY2xpY2tlZCBhIHRyYWRpdGlvbmFsIHNlYXJjaCByZXN1bHQgaW4gOCUgb2YgdmlzaXRzLCB3aGlsZSB1c2VycyB3aG8gZGlkIG5vdCBlbmNvdW50ZXIgYW4gQUkgc3VtbWFyeSBjbGlja2VkIGEgdHJhZGl0aW9uYWwgcmVzdWx0IG5lYXJseSB0d2ljZSBhcyBvZnRlbiwgaW4gMTUlIG9mIHZpc2l0cy5cblxuTGluayB3cml0dGVuIG91dDpcblxuaHR0cHM6Ly93d3cucGV3cmVzZWFyY2gub3JnL3Nob3J0LXJlYWRzLzIwMjUvMDcvMjIvZ29vZ2xlLXVzZXJzLWFyZS1sZXNzLWxpa2VseS10by1jbGljay1vbi1saW5rcy13aGVuLWFuLWFpLXN1bW1hcnktYXBwZWFycy1pbi10aGUtcmVzdWx0cy9cblxuVXNlIGluIHBhcGVyOlxuXG5Hb29nbGXigJlzIEFJIGFuc3dlciBsYXllciBleHBvc2VzIHRoZSBjb250cmFkaWN0aW9uIGluc2lkZSBzZWFyY2guIElmIEdvb2dsZSBkb2VzIG5vdCBhbnN3ZXIgZGlyZWN0bHksIEFJLW5hdGl2ZSBjb21wZXRpdG9ycyB0aHJlYXRlbiB1c2VyIGJlaGF2aW9yLiBJZiBHb29nbGUgZG9lcyBhbnN3ZXIgZGlyZWN0bHksIGl0IHdlYWtlbnMgdGhlIGxpbmsgZWNvbm9teSB0aGF0IG1hZGUgc2VhcmNoIHZhbHVhYmxlLiBFaXRoZXIgd2F5LCBBSSBkb2VzIG5vdCBzb2x2ZSB0aGUgdHJ1c3QgcHJvYmxlbS4gSXQgc3VtbWFyaXplcyBjbGFpbXMuIEl0IGRvZXMgbm90IG1ha2UgcmVjb3JkcyBzZWxmLXByb3ZpbmcuXG5cbkE1LiBBbnRpdHJ1c3QgUHJlc3N1cmUgV2Vha2VucyB0aGUgRGVmYXVsdC1Nb2F0XG5cblRoZSBVLlMuIERlcGFydG1lbnQgb2YgSnVzdGljZSBzdGF0ZWQgdGhhdCByZW1lZGllcyBvcmRlcmVkIGluIDIwMjUgYmFycmVkIEdvb2dsZSBmcm9tIGVudGVyaW5nIG9yIG1haW50YWluaW5nIGV4Y2x1c2l2ZSBjb250cmFjdHMgcmVsYXRlZCB0byB0aGUgZGlzdHJpYnV0aW9uIG9mIEdvb2dsZSBTZWFyY2gsIENocm9tZSwgR29vZ2xlIEFzc2lzdGFudCwgYW5kIEdlbWluaS5cblxuTGluayB3cml0dGVuIG91dDpcblxuaHR0cHM6Ly93d3cuanVzdGljZS5nb3Yvb3BhL3ByL2RlcGFydG1lbnQtanVzdGljZS13aW5zLXNpZ25pZmljYW50LXJlbWVkaWVzLWFnYWluc3QtZ29vZ2xlXG5cbkFkZGl0aW9uYWwgcmVwb3J0aW5nIG9uIHRoZSBydWxpbmc6XG5cbmh0dHBzOi8vZm9ydHVuZS5jb20vMjAyNS8wOS8wMi9nb29nbGUtYW50aXRydXN0LXJlbWVkeS1ydWxpbmctZXhjbHVzaXZlLXNlYXJjaC1kaXN0cmlidXRpb24tZGVhbHMtY2hyb21lL1xuXG5odHRwczovL3d3dy5kbGFwaXBlci5jb20vaW5zaWdodHMvcHVibGljYXRpb25zLzIwMjUvMDkvZmVkZXJhbC1jb3VydC1vcmRlcnMtcmVtZWRpZXMtaW4tZ29vZ2xlLWFudGl0cnVzdC1jYXNlXG5cblVzZSBpbiBwYXBlcjpcblxuR29vZ2xl4oCZcyBkb21pbmFuY2UgaGFzIG5vdCBiZWVuIHB1cmVseSBvcmdhbmljIHVzZXIgcHJlZmVyZW5jZS4gSXQgaGFzIGJlZW4gcmVpbmZvcmNlZCBieSBkaXN0cmlidXRpb24gZGVmYXVsdHMsIGNvbnRyYWN0cywgZGV2aWNlIHBsYWNlbWVudCwgYnJvd3NlciBwYXRod2F5cywgYW5kIGhhYml0LiBPbmNlIGRlZmF1bHQgcGxhY2VtZW50IGlzIHdlYWtlbmVkLCBHb29nbGUgbXVzdCBjb21wZXRlIG1vcmUgZGlyZWN0bHkgb24gdmFsdWUuIEJ1dCB0aGUgZGVlcGVyIHRocmVhdCBpcyBub3QgYW5vdGhlciBzZWFyY2ggYm94LiBJdCBpcyBhIGZpbGUgdGhhdCBkb2VzIG5vdCBuZWVkIGEgc2VhcmNoIGJveCB0byBwcm92ZSBpdHNlbGYuXG5cbkE2LiBUaGUgQmxvY2tidXN0ZXIgQW5hbG9neSBJcyBTdHJ1Y3R1cmFsXG5cblJldXRlcnMgcmVwb3J0ZWQgdGhhdCBCbG9ja2J1c3RlciBmaWxlZCBmb3IgYmFua3J1cHRjeSBwcm90ZWN0aW9uIGluIFNlcHRlbWJlciAyMDEwIGFmdGVyIHllYXJzIG9mIHN0cnVnZ2xpbmcgdG8gY29tcGV0ZSB3aXRoIG9ubGluZSBhbmQgbWFpbC1vcmRlciBtb3ZpZSBzZXJ2aWNlcy5cblxuTGluayB3cml0dGVuIG91dDpcblxuaHR0cHM6Ly93d3cucmV1dGVycy5jb20vYXJ0aWNsZS9idXNpbmVzcy9ibG9ja2J1c3Rlci1maWxlcy1mb3ItYmFua3J1cHRjeS10by1zbGFzaC1kZWJ0LWlkVVNUUkU2OE0xMEsvXG5cbk5ldGZsaXggc3RhdGVzIHRoYXQgaXQgYmVnYW4gc3RyZWFtaW5nIGluIDIwMDcuXG5cbkxpbmsgd3JpdHRlbiBvdXQ6XG5cbmh0dHBzOi8vd3d3Lm5ldGZsaXguY29tL3R1ZHVtL2FydGljbGVzL25ldGZsaXgtdHJpdmlhLTI1dGgtYW5uaXZlcnNhcnlcblxuQWRkaXRpb25hbCBiYWNrZ3JvdW5kOlxuXG5odHRwczovL3d3dy5mb3JiZXMuY29tL3NpdGVzL2dyZWdzYXRlbGwvMjAxNC8wOS8wNS9hLWxvb2stYmFjay1hdC13aHktYmxvY2tidXN0ZXItcmVhbGx5LWZhaWxlZC1hbmQtd2h5LWl0LWRpZG50LWhhdmUtdG8vXG5cbmh0dHBzOi8vd3d3LmNhdG8ub3JnL2NvbW1lbnRhcnkvbGVzc29ucy1yaXNlLW5ldGZsaXgtZmFsbC1ibG9ja2J1c3RlclxuXG5Vc2UgaW4gcGFwZXI6XG5cbkJsb2NrYnVzdGVyIGRpZCBub3QgZmFpbCBiZWNhdXNlIHBlb3BsZSBzdG9wcGVkIHdhbnRpbmcgZmlsbXMuIEl0IGZhaWxlZCBiZWNhdXNlIHRoZSBvYmplY3Qgb2YgdmFsdWUgbW92ZWQgZnJvbSBwaHlzaWNhbC1zdG9yZSBhY2Nlc3MgdG8gbmV0d29yay1uYXRpdmUgYWNjZXNzLiBHb29nbGXigJlzIGVxdWl2YWxlbnQgZGFuZ2VyIGlzIG5vdCB0aGF0IHBlb3BsZSBzdG9wIHdhbnRpbmcgZGlzY292ZXJ5LiBJdCBpcyB0aGF0IHRydXN0IG1vdmVzIGZyb20gc2VhcmNoLW1lZGlhdGVkIGRpc2NvdmVyeSBpbnRvIHNlbGYtdmVyaWZ5aW5nIGZpbGVzLlxuXG5BNy4gR29vZ2xl4oCZcyBBSSBJbnZlc3RtZW50IERvZXMgTm90IEVzY2FwZSB0aGUgVHJhcFxuXG5BbHBoYWJldCBhbmQgR29vZ2xlIGhhdmUgcHVibGljbHkgZnJhbWVkIEFJIGFzIGNlbnRyYWwgdG8gZ3Jvd3RoLCB3aXRoIFNlYXJjaCBjb250aW51aW5nIHRvIGdyb3cgYW5kIEdvb2dsZSBDbG91ZCBzZWVpbmcgc3Ryb25nIEFJLXJlbGF0ZWQgZGVtYW5kLiBUaGUgUTQgMjAyNSBBbHBoYWJldCByZWxlYXNlIHJlcG9ydGVkIEdvb2dsZSBDbG91ZCByZXZlbnVlIGluY3JlYXNpbmcgNDglIHRvICQxNy43IGJpbGxpb24sIGRyaXZlbiBieSBkZW1hbmQgaW5jbHVkaW5nIGVudGVycHJpc2UgQUkgaW5mcmFzdHJ1Y3R1cmUuXG5cbkxpbmsgd3JpdHRlbiBvdXQ6XG5cbmh0dHBzOi8vczIwNi5xNGNkbi5jb20vNDc5MzYwNTgyL2ZpbGVzL2RvY19maW5hbmNpYWxzLzIwMjUvcTQvMjAyNXE0LWFscGhhYmV0LWVhcm5pbmdzLXJlbGVhc2UucGRmXG5cbkFkZGl0aW9uYWwgY3VycmVudCBpbnZlc3RvciByZXBvcnRpbmcgb24gQUkgZXhwZW5kaXR1cmUgcHJlc3N1cmU6XG5cbmh0dHBzOi8vd3d3LmJhcnJvbnMuY29tL2FydGljbGVzL2FscGhhYmV0LWVhcm5pbmdzLXN0b2NrLXByaWNlLWM1NWI4OGU3XG5cbmh0dHBzOi8vd3d3LmludmVzdG9ycy5jb20vbmV3cy90ZWNobm9sb2d5L2dvb2dsZS1zdG9jay1hcnRpZmljaWFsLWludGVsbGlnZW5jZS1haS1tb2RlbHMtZ2VtaW5pL1xuXG5Vc2UgaW4gcGFwZXI6XG5cbkdvb2dsZSBjYW4gc3BlbmQgb24gQUkuIEdvb2dsZSBjYW4gYnVpbGQgbW9kZWxzLiBHb29nbGUgY2FuIG93biBjb21wdXRlLiBOb25lIG9mIHRoYXQgc29sdmVzIHRoZSBwcm9vZiBwcm9ibGVtLiBBSSBjYW4gZ2VuZXJhdGUsIHN1bW1hcml6ZSwgcmFuaywgYW5kIHJlY29tbWVuZC4gQnV0IGlmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBub3Qgc2VsZi12ZXJpZnlpbmcsIHRoZSBzeXN0ZW0gaXMgc3RpbGwgb3BlcmF0aW5nIG92ZXIgY2xhaW1zLiBSZWNlaXogYXR0YWNrcyB0aGUgbGF5ZXIgYmVuZWF0aCBBSS5cblxuQTguIFRoZSBDb3JlIE9udG9sb2dpY2FsIERpc3RpbmN0aW9uXG5cblRoaXMgc2VjdGlvbiBuZWVkcyBubyBvdXRzaWRlIHNvdXJjZSBiZWNhdXNlIGl0IGlzIHRoZSBjb25jZXB0dWFsIGNlbnRlciBvZiB0aGUgcGFwZXI6XG5cblNlYXJjaCB0ZWxscyB5b3Ugd2hlcmUgc29tZXRoaW5nIGFwcGVhcnMuXG5Qcm9vZiB0ZWxscyB5b3Ugd2hhdCBzb21ldGhpbmcgaXMuXG5cbkdvb2dsZSBjYW4gc2F5OlxuXG7igJxIZXJlIGlzIGEgcmVzdWx0LuKAnVxuXG5SZWNlaXogY2FuIHNheTpcblxu4oCcSGVyZSBpcyB0aGUgcmVjb3JkLCBpdHMgcHJvb2YsIGl0cyBhdXRob3JzaGlwLCBpdHMgdmVyaWZpY2F0aW9uIHBhdGgsIGFuZCB3aGV0aGVyIGl0IGhhcyBiZWVuIGFsdGVyZWQu4oCdXG5cblRoYXQgaXMgd2h5IHRoaXMgaXMgbm90IOKAnGJldHRlciBTRU8u4oCdXG5cbkl0IGlzIGNhdGVnb3J5IHJlcGxhY2VtZW50LlxuXG5BOS4gVGhlIENvbGxhcHNlIFNlcXVlbmNlXG5cblRoZSBwYXBlcuKAmXMgcHJlZGljdGVkIGNvbGxhcHNlIGlzIG5vdCDigJxHb29nbGUgZGlzYXBwZWFycyB0b21vcnJvdy7igJ0gVGhlIHRoZXNpcyBpcyBjYXRlZ29yeSBkZW1vdGlvbjpcblxuXG5cblxuXG5Hb29nbGUgcmVtYWlucyBmaW5hbmNpYWxseSBwb3dlcmZ1bC5cblxuXG5cbkFJIHNlYXJjaCByZWR1Y2VzIHRyYWRpdGlvbmFsIG91dGJvdW5kIGNsaWNrcy5cblxuXG5cblB1Ymxpc2hlciBlY29ub21pY3Mgd2Vha2VuLlxuXG5cblxuQW50aXRydXN0IHByZXNzdXJlIHdlYWtlbnMgZGVmYXVsdCBwbGFjZW1lbnQuXG5cblxuXG5TeW50aGV0aWMgY29udGVudCBpbmNyZWFzZXMgdGhlIGNvc3Qgb2Yga25vd2luZyB3aGF0IGlzIHJlYWwuXG5cblxuXG5Vc2VycyBhbmQgYnVzaW5lc3NlcyBiZWdpbiBwcmVmZXJyaW5nIHNlbGYtdmVyaWZ5aW5nIGZpbGVzLCByZWNvcmRzLCByZWNlaXB0cywgbWVkaWEsIGFuZCBpZGVudGl0eSBvYmplY3RzLlxuXG5cblxuRGlzY292ZXJ5IHJlbWFpbnMgdXNlZnVsLCBidXQgYXV0aG9yaXR5IG1vdmVzIGludG8gdGhlIG9iamVjdC5cblxuXG5cbkdvb2dsZSBiZWNvbWVzIGEgZGlyZWN0b3J5IGZvciBhIHdvcmxkIHdob3NlIHRydXRoIG5vIGxvbmdlciBkZXBlbmRzIG9uIHNlYXJjaC5cblxuTW9zdCBpbXBvcnRhbnQgc3VwcG9ydCBsaW5rczpcblxuaHR0cHM6Ly93d3cucGV3cmVzZWFyY2gub3JnL3Nob3J0LXJlYWRzLzIwMjUvMDcvMjIvZ29vZ2xlLXVzZXJzLWFyZS1sZXNzLWxpa2VseS10by1jbGljay1vbi1saW5rcy13aGVuLWFuLWFpLXN1bW1hcnktYXBwZWFycy1pbi10aGUtcmVzdWx0cy9cblxuaHR0cHM6Ly93d3cuanVzdGljZS5nb3Yvb3BhL3ByL2RlcGFydG1lbnQtanVzdGljZS13aW5zLXNpZ25pZmljYW50LXJlbWVkaWVzLWFnYWluc3QtZ29vZ2xlXG5cbmh0dHBzOi8vZ3Muc3RhdGNvdW50ZXIuY29tL3NlYXJjaC1lbmdpbmUtbWFya2V0LXNoYXJlXG5cbmh0dHBzOi8vczIwNi5xNGNkbi5jb20vNDc5MzYwNTgyL2ZpbGVzL2RvY19maW5hbmNpYWxzLzIwMjUvcTQvMjAyNXE0LWFscGhhYmV0LWVhcm5pbmdzLXJlbGVhc2UucGRmXG5cbkExMC4gUmVjZWl6IFB1YmxpYyBMaW5rcyB0byBJbmNsdWRlXG5cblVzZSB0aGVzZSBhcyB0aGUgY2Fub25pY2FsIFJlY2Vpei1zaWRlIGV2aWRlbmNlIHRyYWlsOlxuXG5odHRwczovL3JlY2Vpei5jb21cblxuaHR0cHM6Ly9yZWNlaXouY29tL2NvbmZvcm1hbmNlXG5cbmh0dHBzOi8vcmVjZWl6LmNvbS9zdGF0dXNcblxuaHR0cHM6Ly9yZWNlaXouY29tL2RldmVsb3BlcnMvcmVjZWl6LWNvbm5lY3RcblxuXG5cblxuXG5odHRwczovL2tvamliLmNvbS9pbnZhcmlhbnRzXG5cblxuXG5odHRwczovL2dpdGh1Yi5jb20va29qaWJhaS9rbG9rXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9rb2ppYmFpL3BoaV9uZXR3b3JrXG5cblJlY2VpeiBpcyBub3QgbWVyZWx5IGEgcHJvZHVjdCBjbGFpbS4gSXRzIHB1YmxpYyBwb3NpdGlvbmluZyBjZW50ZXJzIG9uIGNvbmZvcm1hbmNlLCBwcm9vZi1pbi10aGUtZmlsZSB2ZXJpZmljYXRpb24sIGRldGVybWluaXN0aWMgdGltZSwgb2ZmbGluZSB2ZXJpZmljYXRpb24sIGFuZCBvYmplY3QtbGV2ZWwgdHJ1c3QuIFRoZSBwdWJsaWMgbGlua3MgYWJvdmUgYXJlIGxpc3RlZCBzbyByZWFkZXJzIGNhbiBpbnNwZWN0IHRoZSBhcmNoaXRlY3R1cmUsIG5vdCBtZXJlbHkgdGhlIHRoZXNpcy5cblxuQTExLiBFeGFjdCBQdWJsaWMgRXZpZGVuY2UgUGFyYWdyYXBoXG5cblRoZSBjbGFpbSB0aGF0IEdvb2dsZSBpcyBiZWNvbWluZyBCbG9ja2J1c3RlciBpcyBub3QgYSBjbGFpbSB0aGF0IEdvb2dsZSBpcyBjdXJyZW50bHkgd2Vhay4gQWxwaGFiZXQgcmVwb3J0ZWQgdGhhdCBHb29nbGUgU2VydmljZXMgcmV2ZW51ZSBpbmNyZWFzZWQgMTQlIHRvICQ5NS45IGJpbGxpb24gaW4gUTQgMjAyNSwgbGVkIGJ5IDE3JSBncm93dGggaW4gR29vZ2xlIFNlYXJjaCAmIG90aGVyLiBTdGF0Q291bnRlciBhbHNvIHNob3dlZCBHb29nbGUgd2l0aCA4OS44NSUgd29ybGR3aWRlIHNlYXJjaCBlbmdpbmUgbWFya2V0IHNoYXJlIGluIE1hcmNoIDIwMjYuIFRoZSBwb2ludCBpcyBwcmVjaXNlbHkgdGhhdCBpbmN1bWJlbnRzIG9mdGVuIHJlbWFpbiBmaW5hbmNpYWxseSBkb21pbmFudCB3aGlsZSB0aGUgc3Vic3RyYXRlIGJlbmVhdGggdGhlbSBjaGFuZ2VzLiBCbG9ja2J1c3RlciBzdGlsbCBoYWQgc3RvcmVzLCBjdXN0b21lcnMsIGJyYW5kLCBhbmQgbWFya2V0IHByZXNlbmNlIGJlZm9yZSB0aGUgdmFsdWUgbGF5ZXIgbW92ZWQgdG8gbmV0d29yay1uYXRpdmUgZGVsaXZlcnkuIEdvb2dsZSBzdGlsbCBoYXMgc2VhcmNoLCBhZHMsIEFuZHJvaWQsIENocm9tZSwgWW91VHViZSwgQ2xvdWQsIEdlbWluaSwgYW5kIGVub3Jtb3VzIGNhcGl0YWwuIEJ1dCB0aGUgbmV4dCBsYXllciBpcyBub3QgbWVyZWx5IGJldHRlciBzZWFyY2guIEl0IGlzIG9iamVjdC1uYXRpdmUgcHJvb2YuIE9uY2UgdGhlIGZpbGUgcHJvdmVzIGl0c2VsZiwgc2VhcmNoIHN0b3BzIGJlaW5nIGF1dGhvcml0eSBhbmQgYmVjb21lcyByb3V0aW5nLlxuXG5BMTIuIEV4YWN0IFB1YmxpYyBDbG9zaW5nIEFwcGVuZGl4IE5vdGVcblxuVGhpcyBhcHBlbmRpeCBpcyBub3QgYXJndWluZyB0aGF0IGRpc2NvdmVyeSBkaXNhcHBlYXJzLiBEaXNjb3ZlcnkgcmVtYWlucyB1c2VmdWwuIFRoZSBhcmd1bWVudCBpcyB0aGF0IGRpc2NvdmVyeSBsb3NlcyBzb3ZlcmVpZ250eS4gR29vZ2xl4oCZcyBhdXRob3JpdHkgY2FtZSBmcm9tIG9yZ2FuaXppbmcgYW4gaW50ZXJuZXQgd2hlcmUgcmVjb3JkcyBjb3VsZCBub3QgcHJvdmUgdGhlbXNlbHZlcy4gUmVjZWl6IGNoYW5nZXMgdGhlIGxvY2F0aW9uIG9mIHRydXN0LiBXaGVuIHByb29mIGxpdmVzIGluIHRoZSBmaWxlLCB0aGUgZmlsZSBubyBsb25nZXIgcmVxdWlyZXMgR29vZ2xlLCBhIHBsYXRmb3JtLCBhIGRhdGFiYXNlLCBvciBhbiBpbnN0aXR1dGlvbiB0byBkZWNsYXJlIHdoZXRoZXIgaXQgaXMgcmVhbC4gVGhhdCBpcyB0aGUgc3RydWN0dXJhbCBlbmQgb2Ygc2VhcmNoIGFzIGF1dGhvcml0eS4gR29vZ2xlIGZvdW5kIHRoZSB3ZWIuIFJlY2VpeiBwcm92ZXMgdGhlIHdvcmxkLiJ9LCJhdXRob3IiOiJAYmprbG9jayIsInNvdXJjZSI6Im1hbnVhbCIsInBoaUtleSI6IjE4M1I4ZkR5VjlMVHZOSlRRQzVScXBnOUZxU2ZpWGJKMzMiLCJrYWlTaWduYXR1cmUiOiIzMjk0ZTE0ZDVhY2VhZDg0MDI3ZmQxOTc4Y2UxYjFjNjNjNDEyYmY4YzUxN2M1OTJkMDNjZWJlNjFhZGQ2MzYzIiwicGFyZW50VXJsIjoiaHR0cHM6Ly9waGkubmV0d29yay9zLzM4MTc3MGVjZWYzNGZmNDBiOGU1MTY2NGMxYzAxZjExOWJlNDc3YWNkYWJmYjIwNzYyMDgzMDU4NTVjMjk5YTY_cD1leUp3ZFd4elpTSTZNVEU0TnpJeE1Ua3NJbUpsWVhRaU9qSTJMQ0p6ZEdWd1NXNWtaWGdpT2pNMkxDSmphR0ZyY21GRVlYa2lPaUpTYjI5MElpd2ljM1JsY0hOUVpYSkNaV0YwSWpvME5Dd2lkWE5sY2xCb2FVdGxlU0k2SWpFNE0xSTRaa1I1VmpsTVZIWk9TbFJSUXpWU2NYQm5PVVp4VTJacFdHSktNek1pTENKcllXbFRhV2R1WVhSMWNtVWlPaUl6TWprMFpURTBaRFZoWTJWaFpEZzBNREkzWm1ReE9UYzRZMlV4WWpGak5qTmpOREV5WW1ZNFl6VXhOMk0xT1RKa01ETmpaV0psTmpGaFpHUTJNell6SW4wIiwib3JpZ2luVXJsIjoiaHR0cHM6Ly9waGkubmV0d29yay9zLzM4MTc3MGVjZWYzNGZmNDBiOGU1MTY2NGMxYzAxZjExOWJlNDc3YWNkYWJmYjIwNzYyMDgzMDU4NTVjMjk5YTY_cD1leUp3ZFd4elpTSTZNVEU0TnpJeE1Ua3NJbUpsWVhRaU9qSTJMQ0p6ZEdWd1NXNWtaWGdpT2pNMkxDSmphR0ZyY21GRVlYa2lPaUpTYjI5MElpd2ljM1JsY0hOUVpYSkNaV0YwSWpvME5Dd2lkWE5sY2xCb2FVdGxlU0k2SWpFNE0xSTRaa1I1VmpsTVZIWk9TbFJSUXpWU2NYQm5PVVp4VTJacFdHSktNek1pTENKcllXbFRhV2R1WVhSMWNtVWlPaUl6TWprMFpURTBaRFZoWTJWaFpEZzBNREkzWm1ReE9UYzRZMlV4WWpGak5qTmpOREV5WW1ZNFl6VXhOMk0xT1RKa01ETmpaV0psTmpGaFpHUTJNell6SW4wIiwidHMiOjE3Nzc0ODY4MTYzNzB9
Here it directly from the smartest thing over at Google itself. 🌬️🧾










