From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id E465C1391DB for ; Mon, 24 Mar 2014 01:26:16 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 39116E0B28; Mon, 24 Mar 2014 01:26:11 +0000 (UTC) Received: from mail-ee0-f48.google.com (mail-ee0-f48.google.com [74.125.83.48]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id CAFF1E0B1F for ; Mon, 24 Mar 2014 01:26:09 +0000 (UTC) Received: by mail-ee0-f48.google.com with SMTP id b57so3862921eek.35 for ; Sun, 23 Mar 2014 18:26:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=DK0J6HTKg/c3IYmolYxTyqOKRsUImyS6T2oZTa8zaKQ=; b=Ix0sY1bMGbISwNr3rwfxpmwnCGAahSWvQ4UastgJxjUhZb1nYdBFY293lj21QW6esU vj/zC5k1nZIw4ur10CKohj6fLyCByCF31u7igjuQJzwtxaP8nU3sM7k97Ga4SAhQ6A95 Hs8hd1SvifJCCPJloa9EVBom2qQZBfKhQHROtbz5gp9sE0mjq5oFWYXSO1xkAjzx+aP7 WASJ07QLioXMPo6mObt426Gq5FInJikZ+pN+DsSuCYCCOZrtrE/2+P8kBbxeA3xSVMaB yTRuP5Nx2sa4A8+kXOQqwRpeBtLvm7PTaoHXHA7+RAFGcAKDUgtwW4XmVWy85ep7jFqp SiCQ== X-Received: by 10.15.43.132 with SMTP id x4mr2407113eev.59.1395624368203; Sun, 23 Mar 2014 18:26:08 -0700 (PDT) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 Received: by 10.15.49.5 with HTTP; Sun, 23 Mar 2014 18:25:48 -0700 (PDT) In-Reply-To: References: From: Wyatt Epp Date: Sun, 23 Mar 2014 21:25:48 -0400 Message-ID: Subject: Re: [gentoo-dev] RFC GLEP 1005: Package Tags To: gentoo-dev@lists.gentoo.org Content-Type: multipart/mixed; boundary=089e0160c21cb4ff9d04f5501ec2 X-Archives-Salt: 8b0203a0-3a1f-49ef-a5a1-fcdd559bb4a3 X-Archives-Hash: 85bfe2cfc7ce6a79fdffdcf3197ffaa5 --089e0160c21cb4ff9d04f5501ec2 Content-Type: text/plain; charset=UTF-8 On Sat, Mar 22, 2014 at 6:33 PM, Alec Warner wrote: > https://wiki.gentoo.org/wiki/Package_Tags > Ack, this had to happen on a weekend when I wasn't paying attention! And you beat me to it, too-- I was working on something in this vein, but wasn't quite satisfied with the design yet. Oh well. You're sort of on the right track, but there are some very important aspects missing that will make the whole thing collapse with their absence. (This thread has been in various places, but I frankly don't feel like finding the relevant snippets, so you get a text dump. Sorry about that.) The first thing missing is aliasing (most proposals for this sort of system miss this at first; don't feel too bad). There are many, many, many cases where you want more than one single tag query to resolve to the same canonical tag. The ability to define aliases that take care of this automatically is critical. In my notes on this, I had a global alias file, and users can have an /etc/portage/tag.alias. It's just text -- nothing special -- that defines antecedent = consequent relationships. This means the antecedent is _replaced_ by the consequent. As a quick example, cpp = c++ This also allows for simple changes to the canonical name. Second, implication is important for decreasing maintenance burden. An implication is an antecedent -> consequent relationship where the consequent is automatically added if the antecedent is present. Unlike aliasing, the consequent doesn't _replace_ the antecedent. An example of this is acpi -> power_management, because acpi is a distinct aspect of power management, and has value on its own. Over time, this significantly lowers the maintenance burden of an expanding vocabulary and tree. With that in place, I want to make something clear: consistency in the vocabulary is absolutely critical. I cannot overemphasise how important this is. Adding tags without any sort of discipline leads to an unmaintainable vocabulary, which makes the whole thing as worthless as some people think. So there needs some sort of basic canonical list of tags with their descriptions, and yes people should be expected to be rigourous in how they approach this. I've attached a rough draft of descriptions and aliases that I pulled together a while ago (analogous to /etc/portage/profiles/use.desc). This is where aliasing becomes essential, because it allows us to guarantee some amount of consistency. We're only human and can't be expected to cover every situation, but there's plenty of low-hanging fruit in this area. e.g.: app = application # Alias abbreviation to full tag editors = editor # Make plural -> singular aliases standard where sensible. # Rule of thumb 1: "This is a(n)..." admin = administration # Rule of thumb 2: "This is a(n)... ...tool" backup = back-up # Can use hyphenated forms benchmark = benchmarking # As with admin, only gerund form. cdr = disk_authoring # Spaces replaced with underscores at word boundaries i18n = internationalisation # Will need to come to a consensus on the s/z spelling and make some aliases. cpp = c++ # Valid tags should be restricted to basic ASCII minus spaces (replaced with underscores) for our own sanity .net = dotnet # This could go either way, but the leading period makes my Unix blood distrust it. gamedev = game_development # "games" becomes ambiguous with "game" so prefer a more-clear form. lang = language = programming_language # Not to be confused with the i18n language support. Avoid confusion with clear naming version_control = source_control = vcs # Well known abbreviations can be used in place of their expansions mail = email # No sense not being clear mail_server = mail_transfer_agent = mta # Multiple aliases to the same thing are acceptable nntp = {{newsreader usenet}} # The braced notation denotes an intersection of two tags. Need to decide if this sort of alias is legal. I'm thinking no, honestly. sys = system # BUT it's in conflict with @system! Don't do that. www = web # These are all things that deal with the web specifically. apache = apache_module # classes of packages that have their own categories is exactly why this is a good idea. The above is just an excerpt copied directly from my notes on aliasing. Some other stuff: - Query syntax and semantics can be addressed in greater detail later. There's some nice sugar to be had here. - Likewise, tools. Something along the lines of quse and equery would be handy in support of this. - Aliases for reasonable search terms are not a bad idea. - I've stated at various points in the past, but categories are already tags after a fashion. They're not very good ones, but they're a good place to start. Moreover, current metapackages and sets are somewhat like tags in their own right. - USEs might also be considered as a source of inspiration. That said, I don't think anything like conditional tags based on the profile's selected USE is a good idea. Don't make this more complex than it is. - Succinctly, strongly hierarchical tags are a mistake and will cause you more grief than you can imagine. Ontologically, aim for "mostly flat". - Limiting the number of tags allowed on a package is a horrible idea; seriously, don't even consider that-- you would absolutely regret it. The whole point of this is to allow useful semantic description. - Crowdsourcing is something that _can_ work, but needs to be moderated in some way. It could work well to deputise some trusted users for this task, similar to arch testing, and they have mandate to do responsible tag gardening. - A good maxim for additions is "tag what you see". If it provides a library with a lua bindings, then that's probably a good thing to tag. - Maintainers can be awfully possessive of their packages, but on this subject I think it would benefit them to unclench a little. Most additions should be relatively obvious. - Per-$PV tagging is honestly probably not necessary. Sticking it in metadata.xml seems reasonable for now. Regards, Wyatt --089e0160c21cb4ff9d04f5501ec2 Content-Type: application/octet-stream; name="alias.desc" Content-Disposition: attachment; filename="alias.desc" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ht513wsb0 IyBDb3B5cmlnaHQgMjAxNCBHZW50b28gRm91bmRhdGlvbgojIERpc3RyaWJ1dGVkIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIgb3IgZ3JlYXRlcgoK YWRtaW4gPSBhZG1pbmlzdHJhdGlvbiAjIFJ1bGUgb2YgdGh1bWIgMjogIlRoaXMgaXMgYShuKS4u LiAuLi50b29sIiAjIE1heWJlIGltcGxpZXMgYXBwbGljYXRpb24/CmFwYWNoZSA9IGFwYWNoZV9t b2R1bGUgIyBjbGFzc2VzIG9mIHBhY2thZ2VzIHRoYXQgaGF2ZSB0aGVpciBvd24gY2F0ZWdvcmll cyBpcyBleGFjdGx5IHdoeSB0aGlzIGlzIGEgZ29vZCBpZGVhLgphcHAgPSBhcHBsaWNhdGlvbiAj IEFsaWFzIGFiYnJldmlhdGlvbiB0byBmdWxsIHRhZwphcHBzID0gYXBwbGljYXRpb24KYXJjaCA9 IGFyY2hpdmluZwphcmNoaXZlID0gYXJjaGl2aW5nCmF1dGggPSBhdXRoZW50aWNhdGlvbgpiYWNr dXAgPSBiYWNrLXVwICMgQ2FuIHVzZSBoeXBoZW5hdGVkIGZvcm1zCmJlbmNobWFyayA9IGJlbmNo bWFya2luZyAjIE11bHRpcGxlIGFsaWFzZXMgdG8gdGhlIHNhbWUgdGhpbmcKYmVuY2htYXJrcyA9 IGJlbmNobWFya2luZwpjZHIgPSBkaXNrX2F1dGhvcmluZyAjIFNwYWNlcyByZXBsYWNlZCB3aXRo IHVuZGVyc2NvcmVzIGF0IHdvcmQgYm91bmRhcmllcyAjIE5vdCB0aGUgc2FtZSBhcyBpbWFnZSBt YW5nbGluZyBhcHBzCmNsaWVudCA9IGJyb3dzZXIgIyBjbGllbnQgaXMgYSB3ZWlyZCB3YXkgb2Yg cmVmZXJyaW5nIHRvIHRoZW0uICBJJ2QgY2FsbCB0aGUgcmVzdCBvZiB0aGVtIHV0aWxpdGllcwpj bHVzdGVyID0gY2x1c3RlcmluZwpjb3JlID0gYmFzZSAjIEJlY2F1c2UgdGhleSdyZSB0aGUgc2Ft ZSB0aGluZywgcHJldHR5IG11Y2guICBUaGUgb3RoZXIgdGhpbmdzIGFyZSBtb2R1bGVzOyB3aHkg ZG9lcyB0aGlzIGNhdGVnb3J5IGV2ZW4gZXhpc3Q/CmNwcCA9IGMrKyAjIFZhbGlkIHRhZ3Mgc2hv dWxkIGJlIHJlc3RyaWN0ZWQgdG8gYmFzaWMgQVNDSUkgbWludXMgc3BhY2VzIChyZXBsYWNlZCB3 aXRoIHVuZGVyc2NvcmVzKQpjcnlwdCA9IGNyeXB0b2dyYXBoeQpkYiA9IGRhdGFiYXNlCmRldmVs ID0gZGV2ZWxvcG1lbnQgIyBMb3Qgb2YgY29tcGlsZXJzOyBzaG91bGQgZ2V0IHRoZWlyIG93biB0 YWcKZGlhbHVwID0gZGlhbC11cCAjIE5vdCBTVFJJQ1RMWSBuZWNlc3NhcnkuLi4KZGljdHMgPSBk aWN0aW9uYXJ5CmRvYyA9IGRvY3VtZW50YXRpb24KZG9tYWluX25hbWVfc3lzdGVtID0gZG5zCmRy aXZlcnMgPSBkcml2ZXIgIyBwbHVyYWwgPiBzaW5ndWxhcgplZGl0b3JzID0gZWRpdG9yICMgTWFr ZSBwbHVyYWwgLT4gc2luZ3VsYXIgYWxpYXNlcyBzdGFuZGFyZCB3aGVyZSBzZW5zaWJsZS4gIFJ1 bGUgb2YgdGh1bWIgMTogIlRoaXMgaXMgYShuKS4uLiIgIyBNYXliZSA+IGFwcGxpY2F0aW9uPwpl bXVsYXRpb24gPSBlbXVsYXRvcgpmaXJzdC1wZXJzb25fc2hvb3RlciA9IGZwcwpmb250cyA9IGZv bnQKZnMgPSBmaWxlc3lzdGVtID0gZmlsZV9zeXN0ZW0KZ2FtZWRldiA9IGdhbWVfZGV2ZWxvcG1l bnQgIyAiZ2FtZXMiIGJlY29tZXMgYW1iaWd1b3VzIHdpdGggImdhbWUiIHNvIHByZWZlciBhIG1v cmUtY2xlYXIgZm9ybS4KZ2Z4ID0gZ3JhcGhpY3MKaTE4biA9IGludGVybmF0aW9uYWxpc2F0aW9u ICMgV2lsbCBuZWVkIHRvIGNvbWUgdG8gYSBjb25zZW5zdXMgb24gdGhlIHMveiBzcGVsbGluZyBh bmQgbWFrZSBzb21lIGFsaWFzZXMuCmxhbmcgPSBsYW5ndWFnZSA9IHByb2dyYW1taW5nX2xhbmd1 YWdlICMgTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdGhlIGkxOG4gbGFuZ3VhZ2Ugc3VwcG9ydAps aWJzID0gbGlicmFyaWVzICMgV2FpdCwgc2hvdWxkIHRoaXMgYmUgbGVmdCBwbHVyYWw/ICBTaG91 bGQgc3RhbmRhcmRpc2UgdGhpcwptYWlsID0gZW1haWwgI25vIHNlbnNlIG5vdCBiZWluZyBjbGVh cgptYWlsX3NlcnZlciA9IG1haWxfdHJhbnNmZXJfYWdlbnQgPSBtdGEgIyBBbHNvLCB7e21haWwg c2VydmVyfX0KbWlzYyA9IG1pc2NlbGxhbmVvdXMKbW9iaWxlcGhvbmUgPSBtb2JpbGVfcGhvbmUg Cm11bHRpLXVzZXJfZHVuZ2VvbiA9IG11ZAoubmV0ID0gZG90bmV0ICMgVGhpcyBjb3VsZCBnbyBl aXRoZXIgd2F5LCBidXQgdGhlIGxlYWRpbmcgcGVyaW9kIGhpZGVzIGl0IGluIFVuaXggd2hpY2gg aXMgaW5jb252ZW5pZW50LgpuZXdzID0gbmV3c3JlYWRlciA9IG5ld3NfcmVhZGVyID0gZmVlZF9y ZWFkZXIgIyBzb21ld2hhdApubnRwID0ge3tuZXdzcmVhZGVyIHVzZW5ldH19ICNwcmV0dHkgbXVj aC4gIEFuZCBpbm4gaXMgYSBzZXJ2ZXIuIG56YiBtaWdodCBiZSBhIHNlcGFyYXRlIHRhZwpwZWVy LXRvLXBlZXIgPSBwMnAKcGhwNSA9IHBocCAjIFdlIG9ubHkgaGF2ZSA+PXBocDo1IGluIHRoZSB0 cmVlLiAgSXMgdGhpcyBuZWNlc3NhcnkgdG8ga2VlcCBzZXBhcmF0ZT8KcGx1Z2lucyA9IHBsdWdp bgpwb3dlciA9IHBvd2VyX21hbmFnZW1lbnQgICMgYWNwaSBpbXBsaWVzIHRoaXMuICBBbHNvIGFw bSwgZm9yIHRoZSB0d28gcGVvcGxlIHdobyBjYXJlCnByaW50ID0gcHJpbnRpbmcKcHJvdG8gPSBw cm90b2NvbApyYWRpbzogVG9vbHMgYW5kIGFwcGxpY2F0aW9ucyBmb3Igd29ya2luZyB3aXRoIHN0 cmVhbWluZyBvciBGTSByYWRpbyAjc3BsaXQgb2ZmIEhhbSByYWRpbyB0byBoYW1fcmFkaW8gPSBh bWF0ZXVyX3JhZGlvCnJvbGVfcGxheWluZ19nYW1lID0gcnBnCnNjaSA9IHNjaWVuY2UgPSBzY2ll bnRpZmljCnNlYyA9IHNlY3VyaXR5ICMgTE9UUyBtb3JlIHRoYW4ganVzdCBzZWxpbnV4IHN0dWZm LiAgVGhhdCBzaG91bGQgZ2V0IGl0cyBvd24gdGFnLiAgQWxzbyBncmFkbSBuZWVkcyB0aGlzLgpz ZXJ2ZXJzID0gc2VydmVyICMgcGx1cmFsID4gc2luZ3VsYXIKc2hlbGxzID0gc2hlbGwKc291bmQg PSBhdWRpbwpzeXMgPSBzeXN0ZW0gIyBDb25mbGljdCB3aXRoIEBzeXN0ZW0uLi4gV2hhdCdzIHRo ZSB0aGVtZSBoZXJlIGFueWhvdz8gc3lzdGVtX2FkbWluaXN0cmF0aW9uPwp0ZWxldmlzaW9uID0g dHYKdGVybXMgPSB0ZXJtaW5hbAp0ZXhsaXZlID0gdGV4ID0gbGF0ZXggIyBkZXYtdGV4bGl2ZSBt b3N0bHkgc2VlbXMgcmVkdW5kYW50IGJlY2F1c2Ugb2YgdGhlIG5hbWluZyBzY2hlbWUuCnRoZW1l cyA9IHRoZW1lICMgV2VsbCwgSSBHVUVTUyBpdCdzIHJvdWdobHkgYWNjdXJhdGUsIGJ1dCBzdGls bCBhIHdlaXJkIGNhdGVnb3J5Lgp1dGlsID0gdXRpbGl0eQp2ZXJzaW9uX2NvbnRyb2wgPSBzb3Vy Y2VfY29udHJvbCA9IHZjcyAjIHdlbGwga25vd24gYWJicmV2aWF0aW9ucyBjYW4gYmUgdXNlZCBp biBwbGFjZSBvZiB0aGVpciBleHBhbnNpb25zCnZpc3VhbGl6YXRpb24gPSB2aXN1YWxpc2F0aW9u ICMgQ29tbW9ud2VhbHRoCnZvaWNlX292ZXJfaXAgPSB2b2lwCndpZmkgPSB3aXJlbGVzcwp3bSA9 IHdpbmRvd19tYW5hZ2VyCnd3dyA9IHdlYiAjIFRoZXNlIGFyZSBhbGwgdGhpbmdzIHRoYXQgZGVh bCB3aXRoIHRoZSB3ZWIgc3BlY2lmaWNhbGx5Lgp4ID0geG9yZyA9IHgxMSAjIHBlb3BsZSBjb21t b25seSBqdXN0IGNhbGwgaXQgWC4gIEFjY29tbW9kYXRlIHRoaXMgaW5jcmVkaWJseSBjb21tb24g Y2FzZS4K --089e0160c21cb4ff9d04f5501ec2 Content-Type: application/octet-stream; name="tags.desc" Content-Disposition: attachment; filename="tags.desc" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ht513wsn1 IyBDb3B5cmlnaHQgMjAxNCBHZW50b28gRm91bmRhdGlvbgojIERpc3RyaWJ1dGVkIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIgb3IgZ3JlYXRlcgoK IyBLZWVwIHRoZW0gc29ydGVkCmFjY2Vzc2liaWxpdHk6IFJlbGF0ZWQgdG8gaGFuZGljYXBwZWQg dXNlcnMgKGUuZy4gYmxpbmQsIGRlYWYsIGV0YykKYWN0aW9uX2dhbWU6IEFjdGlvbiBnYW1lcyAo ZS5nLiBEZXNjZW50KQphZGE6IFJlbGF0ZWQgdG8gdGhlIEFkYSBwcm9ncmFtbWluZyBsYW5ndWFn ZQphZG1pbmlzdHJhdGlvbjogUmVsYXRlZCB0byBzeXN0ZW0gYWRtaW5pc3RyYXRpb24KYW5hbHl6 ZXI6IE5ldHdvcmsgZGlhZ25vc3RpYywgc3RhdGlzdGljcywgYW5kIHJvdXRpbmcgc29mdHdhcmUK YW50aXZpcnVzOiBWaXJ1cyBhbmQgbWFsd2FyZSBkZXRlY3Rpb24vaXNvbGF0aW9uCmFwYWNoZV9t b2R1bGU6IFBsdWdpbnMgZm9yIHRoZSBBcGFjaGUgSFRUUCBzZXJ2ZXIKYXBwbGljYXRpb246IFBh Y2thZ2VzIHRoYXQgcHJvdmlkZSBhIHVzZXJzcGFjZSBhcHBsaWNhdGlvbgphcmNhZGVfZ2FtZTog QXJjYWRlIGdhbWVzIChlLmcuIFR5cmlhbikKYXJjaGl2aW5nOiBDb21wcmVzc2lvbiBhbmQgZGVj b21wcmVzc2lvbiB0b29scyBhbmQgbGlicmFyaWVzCmFzdHJvbm9teTogUGFja2FnZXMgdGhhdCBk ZWFsIHdpdGggbWFwcGluZyBhbmQgZXhwbG9yaW5nIHRoZSBjb3Ntb3MgYW5kIHRoZSBib2RpZXMg dGhhdCBtYWtlIGl0IHVwCmF1ZGlvOiBUb29scyBhbmQgYXBwbGljYXRpb25zIGZvciBwbGF5aW5n LCBtYWtpbmcsIG9yIHdvcmtpbmcgd2l0aCByZWNvcmRlZCBhdWRpbwphdXRoZW50aWNhdGlvbjog UGFja2FnZXMgZGVhbGluZyB3aXRoIHVzZXIgY3JlZGVudGlhbHMgYW5kIHNldHRpbmcgdXAgdmFs aWQgc2Vzc2lvbnMKYmFjay11cDogRm9yIHByb2Nlc3NpbmcsIG1ha2luZywgYW5kIHJlc3Rvcmlu ZyBiYWNrdXBzCmJhc2VfYXBwbGljYXRpb25zOiBUaGUgbWFpbiBERSBwYWNrYWdlIHNldCwgaW5j bHVkaW5nIGFsbCBwcm9qZWN0LXNwZWNpZmljIHJlcXVpcmVkIHBhY2thZ2VzICNTZWUgd2hhdCdz IGluIEBrZGViYXNlLXN0YXJ0a2RlIGFzIGFuIGV4YW1wbGUgb2Ygd2hhdCBnb2VzIGhlcmUKYmVu Y2htYXJraW5nOiBGb3IgdGVzdGluZyBwZXJmb3JtYW5jZSBvZiBzdWJzeXRlbXMKYmlvbG9neTog UGFja2FnZXMgdGhhdCBkZWFsIHdpdGggZXhwbG9yaW5nIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBw aHlzaWNhbCBtYWtldXAgb2YgbGl2aW5nIHRoaW5ncwpibG9jazogVG9vbHMgZm9yIG1hbmFnaW5n IHBhcnRpdGlvbnMgYW5kIHN0b3JhZ2UgaGFyZHdhcmUKYm9hcmRfZ2FtZTogQm9hcmQgZ2FtZXMg KGUuZy4gQ2hlc3MpCmJvb3Q6IFRvb2xzIGZvciBib290aW5nIGEgc3lzdGVtIGZyb20gdGhlIEJJ T1MKYnJvd3NlcjogQXBwbGljYXRpb25zIHdoaWNoIGFjY2VzcyBXV1cgcGFnZXMgYW5kIGRpc3Bs YXkgdGhlbSBmb3IgdGhlIHVzZXIKY2FsY3VsYXRvcnM6IEFwcGxpY2F0aW9ucyBmb3IgYXNzaXN0 aW5nIHdpdGggdGhlIGdydW50IHdvcmsgb2YgbG93ZXItbGV2ZWwgbWF0aGVtYXRpY3MgIyBpbXBs aWVzIG1hdGhlbWF0aWNzPwpjaGVtaXN0cnk6IFBhY2FrZ2VzIHRoYXQgZGVhbCB3aXRoIGV4cGxv cmluZyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29tcG9zaXRpb24gb2Ygbm9uLWxpdmluZyBtb2xl Y3VsZXMKY2xpZW50OiBDbGFzcyBvZiBhcHBsaWNhdGlvbnMgdGhhdCBhdXRoZW50aWNhdGVzIHdp dGggYSBzZXJ2ZXIKY2x1c3RlcmluZzogVG9vbHMgZm9yIGNyZWF0aW5nIGFuZCBtYWludGFpbmlu ZyBpbnRlcmNvbm5lY3RlZCBjb29wZXJhdGl2ZSBwYXJhbGxlbCBjb21wdXRlIGVudmlyb25tZW50 cy4KY29tbXVuaWNhdGlvbjogV2hvIGtub3dzPyAjVW1icmVsbGEgZm9yIG5ldHdvcmsgdGV4dCBj b21tdW5pY2F0aW9uPyBNYXkgZW5kIHVwIHVzZWZ1bApjKys6IFJlbGF0ZWQgdG8gdGhlIEMrKyBw cm9ncmFtbWluZyBsYW5ndWFnZS4KY3J5cHRvZ3JhcGh5OiBSZWxhdGVkIHRvIGVuY3J5cHRpb24g YW5kIGRlY3J5cHRpb24KZGF0YWJhc2U6IERhdGFiYXNlIGltcGxlbWVudGF0aW9ucyBhbmQgdGhl aXIgdG9vbCBlY29zeXN0ZW0KZGVza3RvcF9hcHBsaWNhdGlvbnM6IEdlbmVyYWwgR1VJIGFwcGxp Y2F0aW9ucyBmb3IgYW4gb3JkaW5hcnkgZGVza3RvcCBzeXN0ZW0uICNnbm9tZV90ZXJtaW5hbCwg bmF1dGlsdXMsIGV0Yy4KZGV2ZWxvcG1lbnQ6IFJlbGF0ZWQgdG8gc29mdHdhcmUgZGV2ZWxvcG1l bnQgI0FtYmlndW91cwpkaWFsLXVwOiBPZiBvciByZWxhdGVkIHRvIHRlbGVwaG9ueSBtb2RlbXMK ZGljdGlvbmFyeTogTGV4aWNvbi1yZWxhdGVkIHRoaW5ncwpkaXNrX2F1dGhvcmluZzogRm9yIGhh bmRsaW5nIENEL0RWRC9CRCBjb21wb3NpdGlvbiBhbmQgd3JpdGluZwpkbnM6IFNlcnZlciBzb2Z0 d2FyZSBhbmQgdG9vbHMgcmVsYXRlZCB0byBhY2Nlc3Npbmcgb3IgZXhwb3NpbmcgdGhlIGdsb2Jh bCBEb21haW4gTmFtZSBTeXN0ZW0KZG9jdW1lbnRhdGlvbjogU3R1ZmYgdGhhdCB0ZWxscyB5b3Ug aG93IG90aGVyIHN0dWZmIHdvcmtzCmRvdG5ldDogUmVsYXRlZCB0byB0aGUgLk5FVC9Nb25vIHBy b2dyYW1taW5nIGxhbmd1YWdlLgpkcml2ZXI6IEFueSBwYWNrYWdlIHRoYXQgaW5zdGFsbHMgc29m dHdhcmUgdG8gYWxsb3cgY29ycmVjdCBpbnRlcmFjdGlvbiB3aXRoIGEgc3BlY2lmaWMgZGV2aWNl IG9yIGZhbWlseSBvZiBkZXZpY2VzCmVkaXRvcjogQXBwbGljYXRpb25zIGZvciBlZGl0aW5nIHRl eHQgaW4gZmlsZXMKZWxlY3Ryb25pY3M6IFBhY2thZ2VzIHRoYXQgZGVhbCB3aXRoIGVsZWN0cm9u aWMgbGF5b3V0LCBkZXNpZ24sIGFuZCB0ZXN0aW5nCmVtYWNzOiBSZWxhdGVkIHRvIHRoZSBlbWFj cyBlZGl0b3IKZW1haWw6IEFwcGxpY2F0aW9ucyBhbmQgbGlicmFyaWVzIHRoYXQgaGFuZGxlLCBy ZWFkLCBvciBwcm9jZXNzIG1haWwKZW1iZWRkZWQ6IFBhY2thZ2VzIGZvciBlbWJlZGRlZCBhbmQg bG93LXNwZWMgaGFyZHdhcmUuCmVtdWxhdGlvbl90b29sczogY29uZmlndXJhdGlvbiB0b29scyBh bmQgZnJvbnRlbmRzIGZvciBlbXVsYXRvcnMuICNOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCBlbXVs YXRvcnMgdGhlbXNlbHZlcwplbXVsYXRvcjogVmlydHVhbGlzYXRpb24gb2Ygb3RoZXIgc3lzdGVt cyBhbmQgdGhlaXIgaGFyZHdhcmUKZXh0cmFzOiBTZWNvbmRhcnkgYW5kIHRlcnRpYXJ5IGFwcGxp Y2F0aW9ucyBvZiBhIGRlc2t0b3AgZW52aXJvbm1lbnQgI0tERSBhbHJlYWR5IGhhcyB0aGlzIGFz IGEgY2F0ZWdvcnksIGJ1dCBub3Qge3tnbm9tZX19LiAgQmV0dGVyIG5hbWUgbWF5IGJlIHBydWRl bnQuCmZlZWRfcmVhZGVyOiBBcHBsaWNhdGlvbiBmb3IgYWdncmVnYXRpbmcgbmV3cyBmZWVkcwpm aWxlX3N5c3RlbTogUGFja2FnZXMgcmVsYXRlZCB0byBmaWxlc3lzdGVtIGNyZWF0aW9uIGFuZCBt YWludGVuYW5jZSAjIEEgZnVzZSB0YWcgc2hvdWxkIHByb2JhYmx5IGJlIGEgdGhpbmcKZmlsdGVy OiBUb29scyBhbmQgbGlicmFyaWVzIHJlbGF0ZWQgdG8gZmlsdGVyaW5nIGluY29taW5nIG9yIG91 dGdvaW5nIGRhdGEgIyBlbWFpbCBpc24ndCB0aGUgb25seSB0aGluZyB0aGF0IGZpbHRlcnMsIHlh PyBHZW5lcmFsaXNlIGFuZCByZWNvbWJpbmUhCmZpcmV3YWxsOiBUb29scyBhbmQgYXBwbGljYXRp b25zIHJlbGF0ZWQgdG8gcmVzdHJpY3RpbmcgdW5hdXRob3Jpc2VkIG5ldHdvcmsgYWNjZXNzIGZy b20gaW50ZXJuYWwgYW5kIGV4dGVybmFsIHRocmVhdHMKZm9udDogUGFja2FnZXMgb2YgY29tcHV0 ZXIgdHlwZWZhY2VzICMgdGFncyBmb3IgdHJ1ZXR5cGUgYW5kIGJpdG1hcCB3b3VsZCBiZSBoZWxw ZnVsCmZvcmVuc2ljczogRGF0YSBvYmZ1c2NhdGlvbiwgZGF0YSByZWNvdmVyeSwgYW5kIG1hbHdh cmUgZGV0ZWN0aW9uCmZwczogRmlyc3QtcGVyc29uIHNob290ZXJzIHN1Y2ggYXMgVW5yZWFsIGFu ZCBRdWFrZSBhbmQgdGhlaXIgbW9kcwpmcmVlYnNkOiBQYWNrYWdlcyBmb3IgdGhlIEZyZWVCU0Qg dXNlcmxhbmQgIyBJcyB0aGVyZSBhIGNvbXBlbGxpbmcgcmVhc29uIHRvIG5vdCBqdXN0IHNob3J0 ZW4gaXQgdG8gYnNkPwpmdHA6IFRvb2xzIGFuZCBhcHBsaWNhdGlvbnMgcmVsYXRlZCB0byB0aGUg dmVuZXJhYmxlIEZpbGUgVHJhbnNmZXIgUHJvdG9jb2wKZ2FtZTogQW55IHBhY2thZ2UgdGhhdCBp bnN0YWxscyBhIGdhbWUgZXhlY3V0YWJsZSB0aGF0IGNhbiBiZSBwbGF5ZWQuICNVbWJyZWxsYSwg YW1iaWd1b3VzCmdhbWVfY29uZmlnOiBVdGlsaXRpZXMgZm9yIGNvbmZpZ3VyYXRpb24gb2YgZ2Ft ZXMuICNqb3lwYWQvc3RpY2sgY29uZmlnLCBrZXliaW5kZXJzLCBtaW5pbWlzZXJzLCB4Z2FtZSBh bmQgZnJpZW5kcy4gIE1vc3Qgb2YgdGhlIG9sZCBnYW1lcy11dGlsCmdhbWVlX2RldmVsb3BtZW50 OiBFbmdpbmVzIGFuZCB0b29scyBmb3IgZ2FtZSBhdXRob3JpbmcKZ2FtZV9lbmdpbmU6IFNvZnR3 YXJlIGxpYnJhcmllcyB0aGF0IHN1cHBvcnQgdGhlIGNyZWF0aW9uIG9mIGdhbWVzCmdhbWVfcGFk OiBQYWNrYWdlcyBmb3IgZGVhbGluZyB3aXRoIGdhbWUgcGFkcyBhbmQgZ2FtZXMgdGhhdCBzdXBw b3J0IHRoZW0KZ2FtZV9zZXJ2ZXI6IERlZGljYXRlZCBnYW1lIHNlcnZlciBhcHBsaWNhdGlvbnMg Zm9yIGNlbnRyYWxpc2VkIG11bHRpcGxheWVyCmdhbWVfdXRpbGl0aWVzOiBNaXNjZWxsYW5lb3Vz IHN1cHBvcnQgYXBwbGljYXRpb25zIGZvciBnYW1lcy4gICNUaGUgcmVhbCBjYXRjaGFsbC4gIFdl aXJkIHN0dWZmIGxpa2UgdGhlIGZsaWdodGdlYXIgYXRsYXMgCmdlb3NjaWVuY2VzOiBQYWNrYWdl cyB0aGF0IGRlYWwgd2l0aCBHUFMgYW5kIG90aGVyIGRhdGEgc2V0cyByZWxhdGVkIHRvIHRoZSBz eXN0ZW1pYyB1bmRlcnN0YW5kaW5nIG9mIG91ciBwbGFuZXQKZ25vbWU6IFBhY2thZ2VzIHJlbGF0 ZWQgdG8gdGhlIEdOT01FIERlc2t0b3AgRW52aXJvbm1lbnQgIyBEZXNrdG9wIGVudmlyb25tZW50 cyB3aWxsIGhhdmUgc29tZSBjb21tb24gdGFncy4KZ251c3RlcDogUGFja2FnZXMgcmVsYXRlZCB0 byB0aGUgR05Vc3RlcCBkZXNrdG9wIGVudmlyb25tZW50CmdwZTogUGFja2FnZXMgcmVsYXRlZCB0 byBHUEUsIHRoZSBoYW5kaGVsZCBjb21wdXRlciBERQpncmFwaGljczogVG9vbHMgYW5kIGFwcGxp Y2F0aW9ucyBmb3IgaGFuZGxpbmcgc3RpbGwgaW1hZ2UgZGF0YQpoYXNrZWxsOiBSZWxhdGVkIHRv IHRoZSBIYXNrZWxsIHByb2dyYW1taW5nIGxhbmd1YWdlCmltOiBSZWxhdGVkIHRvIGluc3RhbnQg bWVzc2FnZXJzIGFuZCB0aGVpciBwcm90b2NvbHMKaW5wdXQ6IFBhY2thZ2VzIGRlYWxpbmcgd2l0 aCBpbnB1dCAjcmVsYXRlZCB0byB0aGUgYWJvdmUuICBSZWFzb25hYmxlIHNlYXJjaCB0ZXJtcy4K aW50ZXJuYXRpb25hbGlzYXRpb246IExhbmd1YWdlIGlucHV0IG1ldGhvZCBhbmQgcmVnaW9uIHN1 cHBvcnQgcGFja2FnZXMgZm9yIHBhcnRpYWxseSBvciBmdWxseSBub25sYXRpbiBzeXN0ZW1zLgpp cmM6IFJlbGF0ZWQgdG8gSW50ZXJuZXQgUmVsYXkgQ2hhdApqYXZhOiBSZWxhdGVkIHRvIHRoZSBK YXZhIHByb2dyYW1taW5nIGxhbmd1YWdlCmpveXN0aWNrOiBQYWNrYWdlcyBmb3IgZGVhbGluZyB3 aXRoIGpveXN0aWNrcyBhbmQgZ2FtZXMgdGhhdCBzdXBwb3J0IHRoZW0Ka2RlOiBUaGUgSyBEZXNr dG9wIEVudmlyb25tZW50IHdpdGggZXh0cmEgcG90YXNzaXVtCmtlcm5lbDogVmFyaW91cyBrZXJu ZWwgc291cmNlIHRhcmJhbGxzIHdpdGggZGlmZmVyZW50IHBhdGNoc2V0cyAKa2lkc19nYW1lOiBH YW1lcyBzdWl0YWJsZSBmb3IgeW91bmcgY2hpbGRyZW4KbGFwdG9wOiBMYXB0b3AgYW5kIHBvd2Vy LW1hbmFnZW1lbnQgdG9vbHMgYW5kIGxpYnJhcmllcwpsYXRleDogUGFja2FnZXMgc3VwcG9ydGlu ZyB0aGUgb3BlbiBwcm9mZXNzaW9uYWwtZ3JhZGUgdHlwZXNldHRpbmcgZW5naW5lLCBMYVRlWAps aWJyYXJpZXM6IFBhY2thZ2VzIHRoYXQgaW5zdGFsbCBzeXN0ZW0td2lkZSBzb2Z0d2FyZSBsaWJy YXJpZXMKbGlzcDogUmVsYXRlZCB0byB0aGUgbGlzcCBwcm9ncmFtbWluZyBsYW5ndWFnZQpsdWE6 IFJlbGF0ZWQgdG8gdGhlIEx1YSBwcm9ncmFtbWluZyBsYW5ndWFnZQpseGRlOiBUaGUgTGlnaHR3 ZWlnaHQgWCBEZXNrdG9wIEVudmlyb25tZW50Cm1hcmt1cDogUmVsYXRlZCB0byBtYXJrdXAgbGFu Z3VhZ2VzICNJdCBjb3VsZCBoYXZlIGJlZW4ge3ttbH19LCBidXQgdGhhdCBjb3VsZCBjb25mbGlj dCB3aXRoIHRoZSBTdGFuZGFyZCBNTCBmYW1pbHk/ICBEbyB3ZSBjYXJlPwptYXRoZW1hdGljczog UGFja2FnZXMgdGhhdCBkZWFsIHdpdGggaGlnaGVyLWxldmVsIG1hdGhlbWF0aWNzIGFuZCByZWxh dGVkIHJlc2VhcmNoCm1lZGlhOiBUb29scywgYXBwbGljYXRpb25zLCBhbmQgbGlicmFyaWVzIGZv ciB0aGUgcmVhZGluZywgd3JpdGluZywgYW5kIG1hbmlwdWxhdGlvbiBvZiBhdWRpbyBhbmQgdmlz dWFsIG9iamVjdHMuICNTT09PTyBNQU5ZIFRISU5HUyEgQnV0IHVzZWZ1bCBpZiB5b3Ugd2FudCB0 byBzcGVjaWZ5IGNlcnRhaW4gb3B0aW9ucyBmb3IgYWxsIG1lZGlhIChsaWtlIFVTRXMpCm1pc2Nl bGxhbmVvdXM6IFRoZSBoZWxsIGlzIGFsbCB0aGlzLCB0aGVuPwptb2JpbGVfcGhvbmU6IFRvb2xz IHRvIHJ1biBvbiBvciBpbiBzdXBwb3J0IG9mIHlvdXIgbW9iaWxlCm10YTogTWVzc2FnZSBUcmFu c2ZlciBBZ2VudC0tIHNpbXBseSwgYW4gZW1haWwgc2VydmVyCm11ZDogTXVsdGktdXNlciBkdW5n ZW9ucyBhbmQgb3RoZXIgbmV0d29ya2VkIHRleHQgZ2FtZSBlc290ZXJpY2EKbXVsdGlwbGF5ZXI6 IEdhbWVzIHRoYXQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIHBsYXllciAjQ291bGRuJ3QgaGF2ZSB0 aGlzIGJlZm9yZS4gI2ltcGx5IGdhbWUKbmRzOiBMREFQIHRvb2xzIGFuZCBhcHBsaWNhdGlvbnMg I1doYXQgaXMgdGhpcyBhY3R1bGx5PwpuZXR3b3JrOiBQYWNrYWdlIHJlbGF0ZWQgdG8gb3IgaGFz IG5ldHdvcmsgZnVuY3Rpb25hbGl0eQpvZmZpY2U6IE9mZmljZS1wcm9kdWN0aXZpdHkgYXBwbGlj YXRpb25zCnAycDogUGFja2FnZXMgdGhhdCBkZWFsIHdpdGggZmlsZSBzaGFyaW5nIHByb3RvY29s cyBhbmQgbmV0d29ya3MKcGRhOiBVdGlsaXRpZXMgZm9yIHJ1bm5pbmcgb24gb3Igd2l0aCBhIHBl cnNvbmFsIGRpZ2l0YWwgYXNzaXN0YW50LgpwZXJsOiBSZWxhdGVkIHRvIHRoZSBQZXJsIHByb2dy YW1taW5nIGxhbmd1YWdlCnBocDUgPSBwaHAgIyBXZSBvbmx5IGhhdmUgPj1waHA6NSBpbiB0aGUg dHJlZS4gIElzIHRoaXMgbmVjZXNzYXJ5IHRvIGtlZXAgc2VwYXJhdGU/CnBocDogUmVsYXRlZCB0 byB0aGUgUEhQIG5vbnByb2dyYW1taW5nIGxhbmd1YWdlCnBoeXNpY3M6IFBhY2thZ2VzIGZvciBz aW11bGF0aW5nIHBoeXNpY2FsIHNwYWNlcyBhbmQgZXhhbWluaW5nIHRoZSBpbnRlcmFjdGlvbnMg b2YgdGhpbmdzIGluIHRoZW0KcGx1Z2luOiBQYWNrYWdlcyB0aGF0IGluc3RhbGwgaGVscGVyIGFw cGxpY2F0aW9ucyB0aGF0IGludGVncmF0ZSBkaXJlY3RseSBpbnRvIGFub3RoZXIgYXBwbGljYXRp b24KcG9saWN5OiBQYWNha2dlcyB0aGF0IGluc3RhbGwgc2VjdXJpdHkgcG9saWN5IGZpbGVzCnBv cnRhZ2U6IEdlbnRvbyBwYWNrYWdlIG1hbmFnZW1lbnQgdG9vbHMKcG93ZXJfbWFuYWdlbWVudDog VG9vbHMgZm9yIG1vbml0b3JpbmcgYW5kIG1hbmFnaW5nIHN5c3RlbSBwb3dlciBjb25zdW1wdGlv bgpwcmludGluZzogUGFja2FlcyBkZWFsaW5nIHdpdGggcHJpbnRlcnMgYW5kIHRoZWlyIGRyaXZl cnMKcHJvY2VzczogQ2xlYW51cCBsYXRlciAjIFR3byBtYWluIGNhdGVnb3JpZXM6IHRoaW5ncyB0 aGF0IG1vbml0b3IgKCp0b3A7IHBzKSBhbmQgdGhpbmdzIHRoYXQgcnVuIG90aGVyIHRoaW5ncyAo KmNyb247IHNjZWhkdWxpbmcpCnByb3RvY29sOiBQYWNrYWdlcyB3aGljaCBpbnN0YWxsIGhlYWRl cnMgZm9yIHZhcmlvdXMgY29tbXVuaWNhdGlvbiBtZXRob2RzCnByb3h5OiBUb29scyBhbmQgYXBw bGljYXRpb25zIGZvciBydW5uaW5nIG9yIHVzaW5nIHZhcmlvdXMgc29ydHMgb2YgaW50ZXJtZWRp YXJ5IHNlcnZlcnMKcHV6emxlX2dhbWU6IFB1enpsZSBnYW1lcyAoZS5nLiBXb3JsZCBvZiBHb28p CnB5dGhvbjogUmVsYXRlZCB0byB0aGUgcHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlCnJhZGlv OiBUb29scyBhbmQgYXBwbGljYXRpb25zIGZvciB3b3JraW5nIHdpdGggc3RyZWFtaW5nIG9yIEZN IHJhZGlvICNzcGxpdCBvZmYgSGFtIHJhZGlvIHRvIGhhbV9yYWRpbyA9IGFtYXRldXJfcmFkaW8K cm9ndWVsaWtlOiBHYW1lcyB3aGVyZSB5b3UgZGllIGEgbG90Lgpyb3g6IFRoZSBsaWdod2VpZ2h0 IFJveCBEZXNrdG9wIEVudmlyb25tZW50ICMgREUKcnBnOiBSb2xlLXBsYXlpbmcgR2FtZXMgKGUu Zy4gTmV2ZXJ3aW50ZXIgTmlnaHRzKQpydWJ5OiBSZWxhdGVkIHRvIHRoZSBSdWJ5IHByb2dyYW1t aW5nIGxhbmd1YWdlCnNjaGVtZTogUmVsYXRlZCB0byB0aGUgU2NoZW1lIHByb2dyYW1taW5nIGxh bmd1Z2UKc2NpZW50aWZpYzogVW1icmVsbGEgZm9yIGFsbCBzY2llbnRpZmljLCByZXNlYXJjaCwg YW5kIGluc3RydW1lbnRhdGlvbiBwYWNrYWdlcwpzZWN1cml0eTogUGFja2FnZXMgdGhhdCBkZWFs IHdpdGggc3lzdGVtIHNlY3VyaXR5CnNlcnZlcjogQXBwbGljYXRpb25zIHdoaWNoIGV4cG9zZSBj b250ZW50IHRvIHRoZSBuZXR3b3JrIGF0IGxhcmdlOyBlc3NlbnRpYWwgZm9yIHJ1bm5pbmcgd2Vi IHNpdGVzCnNoZWxsOiBDb21tYW5kIGxpbmUgY29uc29sZSBpbXBsZW1lbnRhdGlvbnMKc2ltdWxh dGlvbjogQXBwbGljYXRpb25zIHRoYXQgYXR0ZW1wdCB0byByZWFsaXN0aWNhbGx5IG1vZGVsIHRo aW5ncyBsaWtlIHBsYW5lcyBhbmQgY2FycyAjTm90IHVzdWFsbHkgImdhbWVzIiBhcyBmYXIgYXMg bWFueSBhcmUgY29uY2VybmVkICNOZWVkcyBjbGVhbmVkIG9mIHRoZSBlY29ub21pYyB0aGluZ3MK c3BvcnRzX2dhbWU6IFJlcGxpY2F0aW5nIHNwb3J0cyBpbiBkaWdpdGFsIGZvcm0gI01vdG9yc3Bv cnRzIHNob3VsZCBiZSBpbiByYWNpbmcsIHRob3VnaC4Kc3RyYXRlZ3lfZ2FtZTogR2FtZXMgaW52 b2x2aW5nIG1hbmFnZW1lbnQgb2YgZWNvbm9taWVzLCBtaWxpdGFyaWVzLCBhbmQgZGlwbG9tYWN5 LiAoZS5nLiBUb3RhbCBBbm5paGlsYXRpb24pICNWZXJ5IGJyb2FkLiBQb3NzaWJsZSBzaWJsaW5n cyBpbmNsdWRlIHJ0cywgNHgsIHJlYWwtdGltZV90YWN0aWNzLCB0dXJuLWJhc2VkLCBldCBhbCkK c3lzdGVtX2NvcmU6IFZlcnkgYmFzaWMsIHZlcnkgVW5peHkgc3lzdGVtIHRvb2xzLiAKdGNsOiBS ZWxhdGVkIHRvIHRoZSBUb29sIENvbW1hbmQgTGFuZ3VhZ2UKdGVybWluYWw6IEFwcGxpY2F0aW9u cyB3aGljaCBhbGxvdyBhIHVzZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtIHRocm91Z2gg YSBzaGVsbAp0ZXh0OiBBcHBsaWNhdGlvbnMgZm9yIHZpZXdpbmcgb3IgbWFuaXB1bGF0aW5nIHRl eHQgaW4gc29tZSBmYXNob24gIyBOZWVkcyBzZXJpb3VzIGNsZWFudXAKdGhlbWU6IFRoZW1lIGVu Z2luZXMsIGljb24gc2V0cywgY29sb3VyIHNjaGVtZXMsIGFuZCBjdXJzb3JzIGZvciBYCnRrOiBS ZWxhdGVkIHRvIHRoZSB0ayBHVUkgdG9vbGtpdAp0b3k6IFNtYWxsIHNvZnR3YXJlIGFtdXNlbWVu dHMgYW5kIGRpdmVyc2lvbnMgbGlrZSBmb3J0dW5lCnR2OiBNZWRpYSBjZW50cmUgYXBwbGljYXRp b25zIGFuZCBvdGhlciB0b29scyBmb3Igd29ya2luZyB3aXRoIFRWIHR1bmVycwp1c2VuZXQ6IFBh Y2thZ2VzIHRoYXQgZGVhbCB3aXRoIFVzZW5ldAp1dGlsaXR5OiBSYW5kb20gY3JhcCAjTmVlZHMg YSBsb3Qgb2Ygd29yawp2Y3M6IFJldmlzaW9uIGNvbnRyb2wgc3lzdGVtcyBhbmQgdGhlaXIgc3Vw cG9ydGluZyB0b29scyBhbmQgbGlicmFyaWVzCnZpZGVvOiBUb29scyBhbmQgYXBwbGljYXRpb25z IGZvciB3b3JraW5nIHdpdGggbW92aW5nIGltYWdlcyAoYS5rLmEuIHZpZGVvKQp2aW06IFJlbGF0 ZWQgdG8gdGhlIFZpbSBlZGl0b3IKdmlydHVhbDogIkZha2UiIHBhY2thZ2VzIHRoYXQgcHVsbCBp biBvbmUgb2YgYW55IG51bWJlciBvZiBvcHRpb25zIGRlcGVuZGluZyBvbiB0aGUgdXNlcidzIGNv bmZpZ3VyYXRpb24gICMgVGhpcyBpcyB3aGF0IGl0IGlzLgp2aXN1YWxpc2F0aW9uOiBUb29scyBh bmQgYXBwbGljYXRpb25zIGZvciBmb3JtYXR0aW5nIGFuZCBkaXNwbGF5aW5nIGRhdGEgZm9yIGNv bnN1bXB0aW9uIGJ5IGh1bWFucwp2b2lwOiBQYWNrYWdlcyBkZWFsaW5nIHdpdGggcmVhbC10aW1l IHNwZWVjaCBjb252ZXJzYXRpb25zIG92ZXIgbmV0d29ya3MKd2ViOiBQYWNrYWdlcyB0aGF0IGRl YWwgd2l0aCB0aGUgV29ybGQgV2lkZSBXZWIKd2luZG93X21hbmFnZXI6IEhlbHBlciBhcHBsaWNh dGlvbnMgd2hpY2ggZGVmaW5lIGFuZCBlbmZvcmNlIHJ1bGVzIGZvciB3aW5kb3cgZm9jdXMgYW5k IGFjdGl2YXRpb24gaW4gWDExCndpcmVsZXNzOiBUb29scywgYXBwbGljYXRpb25zLCBhbmQgZHJp dmVycyBmb3IgZGVhbGluZyB3aXRoIDgwMi4xMSB3aWZpCngxMTogVG9vbHMgYW5kIGFwcGxpY2F0 aW9ucyByZWxhdGVkIHRvIGNvbmZpZ3VyYXRpb24gYW5kIHJ1bm5pbmcgb2YgYW4gWCBzZXJ2ZXIK eGVtYWNzOiBSZWxhdGVkIHRvIHRoZSBYIHZhcmlhbnQgb2YgdGhlIGVtYWNzIGVkaXRvcgp4ZmNl OiBUaGUgWEZDRSBEZXNrdG9wIEVudmlyb25tZW50Cg== --089e0160c21cb4ff9d04f5501ec2--