From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Mauro Aranda Newsgroups: gmane.emacs.devel Subject: Editions to the Widget Manual Date: Sun, 20 Aug 2023 07:31:46 -0300 Message-ID: <4776bb96-16d4-6d77-d7a8-4fc949070bf5@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4aLYnQF8f6esIUhojLytHBk0" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7187"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Cc: Drew Adams , Bryce Carson To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Aug 20 12:33:04 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qXfjz-0001ZE-TV for ged-emacs-devel@m.gmane-mx.org; Sun, 20 Aug 2023 12:33:04 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qXfj0-0001O7-Kn; Sun, 20 Aug 2023 06:32:02 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXfiy-0001Nf-Bb for emacs-devel@gnu.org; Sun, 20 Aug 2023 06:32:00 -0400 Original-Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qXfis-00012E-Ej for emacs-devel@gnu.org; Sun, 20 Aug 2023 06:32:00 -0400 Original-Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-1c8e9d75ce1so1175219fac.3 for ; Sun, 20 Aug 2023 03:31:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692527512; x=1693132312; h=cc:subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=vnAJxZkqK25WW0o0fyYSjxoW9+OooURi0EDjkLEGECQ=; b=NmDDuxZLk7kdKbJzbP2QyuPuZ26/pHoxOcA6SH/UHU8p6H54tNYwYRRDPGSabrfB5q reP+Az76Ie/+xboGlWI9oJZWN2IQrxIqEuZa6TG6pQrZIfJQ775nToSJ1klMzWXBXq2R UwW7gNv5wX5GXzL4h1itNuzFcSudIX9vOVLsmrtH0wTEJTBIVVbMoLg6KSU2dohgBzv7 ZnUAKjaiviPXLXyEQ6F2OOjH/qqh8dLeLGVFl7EZbX9/Ia6jOAHBfrpAOSe9T+P07Nzp lPdVPhGuMqMi6/MFrmkxZeAWSLpZy6NpvUOsX6BqdtuR3OLXhVYGcS+mmqtBQIeLR6ON eaUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692527512; x=1693132312; h=cc:subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vnAJxZkqK25WW0o0fyYSjxoW9+OooURi0EDjkLEGECQ=; b=UqJr3+VjTLho5u374lgvDalo2XwsNrKjuPZluIQK3aZkDY0SN/BdSmH05rMW6a/YE6 WbQAbNMBPwGqI78S1pd/Y9LAjVAYbWjjBpJRlgefFc8gfrpLsDy888IvTgsEUcGzGRVs eSBqVniMrCsZInFaf9X8p1Yjm0jNd0EvkZwEJ4kKvXIdu1sZbfNsHvXy40awnfhRc7cf MvP1SOLBlqcqovQCjheklEbua2WokrA33JTUc9MrHeqxfU/QVlzhEKC/TqbJN5l4hSQx cknmg71DlvI8F1Z/IhZeCo8rTbpii1JlQuwGYOJ9fI8/eWDeDVOgYZI6ENnLSpyutbi6 YRow== X-Gm-Message-State: AOJu0YxKPQWl6au9WhhUvb+K6JZIGtbCp/Yhvqy9SILtRKOmhyFBluCs 9X2jXpyhH9LE5+PMXXoEDA10wDehEZk= X-Google-Smtp-Source: AGHT+IH7EL+NLWVnj5sIwl9KW2eufOmSCdJmlUT+8AnVyebqXRFjs1Ve7KDMMDViCP9vzufZkJEaog== X-Received: by 2002:a05:6870:f153:b0:1ba:3ff0:4934 with SMTP id l19-20020a056870f15300b001ba3ff04934mr3865194oac.12.1692527511890; Sun, 20 Aug 2023 03:31:51 -0700 (PDT) Original-Received: from [192.168.0.234] ([186.127.128.249]) by smtp.gmail.com with ESMTPSA id c7-20020a9d6c87000000b006b8a2cd44adsm2479297otr.72.2023.08.20.03.31.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 20 Aug 2023 03:31:50 -0700 (PDT) Content-Language: en-US Received-SPF: pass client-ip=2001:4860:4864:20::33; envelope-from=maurooaranda@gmail.com; helo=mail-oa1-x33.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:308957 Archived-At: This is a multi-part message in MIME format. --------------4aLYnQF8f6esIUhojLytHBk0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi everyone, Prompted by [1], I started to work (slowly!) on a revision to the Widget Manual. My goals were to make it descriptive, well-organized, comprehensive, and up-to date.  I also tried to preserve as much text as I could, although I have the feeling that from the diff it might not look like that. I added descriptions for the widget creation mechanism and added mentions to the inheritance mechanism and completion mechanism, for example.  I couldn't find the words to describe the :inline widgets (there's a FIXME there). I felt like it wasn't well-organized, so I rearranged some chapters. Previously, commands and user options were described in various places, and I tried to put them under common chapters.  I moved the default widget description to be the very first one documented, so all properties and default behavior can be described up-front. To be comprehensive, I tried to cover all the properties that I felt made sense, and with those descriptions I feel like the programmer reading the library can acquire a better sense of how to use the library.  I would like to add examples for the creation of widgets, and my plan is to do that eventually. And well, to be up-to-date it doesn't need much description from me.  I added a lot of widgets that were previously undocumented, although I did left out some that didn't seem to me like important enough (like the insert-button, delete-button).  I did add mentions to those widgets, so I think the curious reader can go on and inspect those widgets with the Widget Browser. At this point, I feel comfortable to share what I've done so far, so that I can get some feedback.  Please help me by fixing my English, recommending some cross-references, and of course, reviewing in general. I hope this version is good enough for a first draft, and I'll appreciate any comments I receive. TIA, Mauro. [1]: https://lists.gnu.org/archive/html/emacs-devel/2023-07/msg00306.html --------------4aLYnQF8f6esIUhojLytHBk0 Content-Type: text/x-patch; charset=UTF-8; name="0001-A-revision-to-the-Widget-manual.patch" Content-Disposition: attachment; filename="0001-A-revision-to-the-Widget-manual.patch" Content-Transfer-Encoding: base64 RnJvbSAxOTY5ZGNjY2I0YzliMjg4MmNkMmZlZGZmMzMxMmNhYjcwMGU0ZDViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXVybyBBcmFuZGEgPG1hdXJvb2FyYW5kYUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMTYgQXVnIDIwMjMgMjA6MjU6MjIgLTAzMDAKU3ViamVjdDog W1BBVENIXSBBIHJldmlzaW9uIHRvIHRoZSBXaWRnZXQgbWFudWFsCgoqIGRvYy9taXNjL3dp ZGdldC50ZXhpIChXaWRnZXRzIEJhc2ljcywgV29ya2luZyB3aXRoIFdpZGdldHMpCihXaWRn ZXRzIGFuZCB0aGUgQnVmZmVyLCBXaWRnZXQgR2FsbGVyeSwgQ3VzdG9taXphdGlvbik6IE5l dyBjaGFwdGVycy4KKEJhc2ljIFR5cGVzLCBTZXhwIFR5cGVzKTogRGVtb3RlIHRvIHN1YnNl Y3Rpb25zLgooV2lkZ2V0IEJyb3dzZXIpOiBSZW5hbWUgdG8gSW5zcGVjdGluZyBXaWRnZXRz LgooV2lkZ2V0IFByb3BlcnRpZXMpOiBSZW1vdmUuCgooVG9wKTogQWRhcHQgbWVudSB0byBj aGFuZ2VzLgooSW50cm9kdWN0aW9uKTogUmVhcnJhbmdlIHRleHQuICBNb3ZlIHdhcm5pbmdz IHRvIGEgYmV0dGVyIHBsYWNlLCBhbmQKdXNlciBvcHRpb25zIHRvIHRoZSBDdXN0b21pemF0 aW9uIGNoYXB0ZXIuCihVc2VyIEludGVyZmFjZSk6IERvbid0IGZ1bGx5IGRlc2NyaWJlIGNv bW1hbmRzIGFuZCBjdXN0b21pemF0aW9uCm9wdGlvbnMgaGVyZS4KKFNldHRpbmcgVXAgdGhl IEJ1ZmZlcik6IEV4cGFuZCBvbiB3aWRnZXQgY3JlYXRpb24gcHJvY2VzcyBhbmQgYWRkCmRv Y3VtZW50YXRpb24gZm9yIHVzZWZ1bCBmdW5jdGlvbnMgd2hpY2ggZGVhbCB3aXRoCmNyZWF0 aW9uL2NvbnZlcnNpb24uCihEZWZpbmluZyBOZXcgV2lkZ2V0cyk6IEV4cGFuZCB0aGUgZG9j dW1lbnRhdGlvbiBvbiBkZWZpbmUtd2lkZ2V0LgpBbGwgcmVsZXZhbnQgcHJvcGVydGllcyBt b3ZlZCB0byB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGRlZmF1bHQKd2lkZ2V0LCBpbiBXaWRn ZXQgR2FsbGVyeS4KKFV0aWxpdGllcyk6IEFkZCBzb21lIG1vcmUgdXNlZnVsIGZ1bmN0aW9u cyBub3QgcHJldmlvdXNseSBkb2N1bWVudGVkLgooV2lzaGxpc3QpOiBSZW1vdmUgb3V0LW9m LWRhdGUgaXRlbXMuCi0tLQogZG9jL21pc2Mvd2lkZ2V0LnRleGkgfCAyNzMwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIw NDMgaW5zZXJ0aW9ucygrKSwgNjg3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9t aXNjL3dpZGdldC50ZXhpIGIvZG9jL21pc2Mvd2lkZ2V0LnRleGkKaW5kZXggMTNiMzdhYjVi NTQuLjQxODgxMzc4YWIwIDEwMDY0NAotLS0gYS9kb2MvbWlzYy93aWRnZXQudGV4aQorKysg Yi9kb2MvbWlzYy93aWRnZXQudGV4aQpAQCAtNDksMTQgKzQ5LDE2IEBAIFRvcAogKiBJbnRy b2R1Y3Rpb246OgogKiBVc2VyIEludGVyZmFjZTo6CiAqIFByb2dyYW1taW5nIEV4YW1wbGU6 OgorKiBXaWRnZXRzIEJhc2ljczo6CiAqIFNldHRpbmcgVXAgdGhlIEJ1ZmZlcjo6Ci0qIEJh c2ljIFR5cGVzOjoKLSogU2V4cCBUeXBlczo6Ci0qIFdpZGdldCBQcm9wZXJ0aWVzOjoKKyog V29ya2luZyB3aXRoIFdpZGdldHM6OgorKiBXaWRnZXRzIGFuZCB0aGUgQnVmZmVyOjoKKyog V2lkZ2V0IEdhbGxlcnk6OgogKiBEZWZpbmluZyBOZXcgV2lkZ2V0czo6Ci0qIFdpZGdldCBC cm93c2VyOjoKKyogSW5zcGVjdGluZyBXaWRnZXRzOjoKICogV2lkZ2V0IE1pbm9yIE1vZGU6 OgogKiBVdGlsaXRpZXM6OgorKiBDdXN0b21pemF0aW9uOjoKICogV2lkZ2V0IFdpc2hsaXN0 OjoKICogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlOjoKICogSW5kZXg6OgpAQCAt NjgsNyArNzAsNyBAQCBJbnRyb2R1Y3Rpb24KIE1vc3QgZ3JhcGhpY2FsIHVzZXIgaW50ZXJm YWNlIHRvb2xraXRzIHByb3ZpZGUgYSBudW1iZXIgb2Ygc3RhbmRhcmQKIHVzZXIgaW50ZXJm YWNlIGNvbnRyb2xzIChzb21ldGltZXMga25vd24gYXMgYGB3aWRnZXRzJycgb3IgYGBnYWRn ZXRzJycpLgogRW1hY3MgZG9lc24ndCByZWFsbHkgc3VwcG9ydCBhbnl0aGluZyBsaWtlIHRo aXMsIGV4Y2VwdCBmb3IgYW4KLWluY3JlZGlibHkgcG93ZXJmdWwgdGV4dCBgYHdpZGdldC4n JyAgT24gdGhlIG90aGVyIGhhbmQsIEVtYWNzIGRvZXMKK2luY3JlZGlibHkgcG93ZXJmdWwg dGV4dCBgYHdpZGdldCcnLiAgT24gdGhlIG90aGVyIGhhbmQsIEVtYWNzIGRvZXMKIHByb3Zp ZGUgdGhlIG5lY2Vzc2FyeSBwcmltaXRpdmVzIHRvIGltcGxlbWVudCBtYW55IG90aGVyIHdp ZGdldHMKIHdpdGhpbiBhIHRleHQgYnVmZmVyLiAgVGhlIEBjb2Rle3dpZGdldH0gcGFja2Fn ZSBzaW1wbGlmaWVzIHRoaXMgdGFzay4KIApAQCAtODUsMTMgKzg3LDEzIEBAIEludHJvZHVj dGlvbgogQGl0ZW0gZWRpdGFibGUtZmllbGQKIEFuIGVkaXRhYmxlIHRleHQgZmllbGQuICBJ dCBjYW4gYmUgZWl0aGVyIHZhcmlhYmxlIG9yIGZpeGVkIGxlbmd0aC4KIEBpdGVtIG1lbnUt Y2hvaWNlCi1BbGxvd3MgdGhlIHVzZXIgdG8gY2hvb3NlIG9uZSBvZiBtdWx0aXBsZSBvcHRp b25zIGZyb20gYSBtZW51LCBlYWNoCi1vcHRpb24gaXMgaXRzZWxmIGEgd2lkZ2V0LiAgT25s eSB0aGUgc2VsZWN0ZWQgb3B0aW9uIHdpbGwgYmUgdmlzaWJsZSBpbgotdGhlIGJ1ZmZlci4K K0FsbG93cyB0aGUgdXNlciB0byBjaG9vc2Ugb25lIG9mIG11bHRpcGxlIG9wdGlvbnMgZnJv bSBhIG1lbnUsIHdoZXJlCitlYWNoIG9wdGlvbiBpcyBpdHNlbGYgYSB3aWRnZXQuICBPbmx5 IHRoZSBzZWxlY3RlZCBvcHRpb24gaXMgdmlzaWJsZQoraW4gdGhlIGJ1ZmZlci4KIEBpdGVt IHJhZGlvLWJ1dHRvbi1jaG9pY2UKIEFsbG93cyB0aGUgdXNlciB0byBjaG9vc2Ugb25lIG9m IG11bHRpcGxlIG9wdGlvbnMgYnkgYWN0aXZhdGluZyByYWRpbwotYnV0dG9ucy4gIFRoZSBv cHRpb25zIGFyZSBpbXBsZW1lbnRlZCBhcyB3aWRnZXRzLiAgQWxsIG9wdGlvbnMgd2lsbCBi ZQotdmlzaWJsZSBpbiB0aGUgYnVmZmVyLgorYnV0dG9ucy4gIFRoZSBvcHRpb25zIGFyZSBp bXBsZW1lbnRlZCBhcyB3aWRnZXRzLiAgQWxsIG9wdGlvbnMgYXJlCit2aXNpYmxlIGluIHRo ZSBidWZmZXIsIHdpdGggdGhlIHNlbGVjdGVkIG9uZSBtYXJrZWQgYXMgY2hvc2VuLgogQGl0 ZW0gaXRlbQogQSBzaW1wbGUgY29uc3RhbnQgd2lkZ2V0IGludGVuZGVkIHRvIGJlIHVzZWQg aW4gdGhlIEBjb2Rle21lbnUtY2hvaWNlfSBhbmQKIEBjb2Rle3JhZGlvLWJ1dHRvbi1jaG9p Y2V9IHdpZGdldHMuCkBAIC0yMDEsMTIgKzIwMyw2IEBAIFVzZXIgSW50ZXJmYWNlCiAKIEVk aXRhYmxlIHRleHQgZmllbGRzIGFyZSBjcmVhdGVkIGJ5IHRoZSBAY29kZXtlZGl0YWJsZS1m aWVsZH0gd2lkZ2V0LgogCi1Ac3Ryb25ne1dhcm5pbmc6fSBJbiBhbiBAY29kZXtlZGl0YWJs ZS1maWVsZH0gd2lkZ2V0LCB0aGUgZWRpdGFibGUKLWZpZWxkIG11c3Qgbm90IGJlIGFkamFj ZW50IHRvIGFub3RoZXIgd2lkZ2V0LS0tdGhhdCB3b24ndCB3b3JrLgotWW91IG11c3QgcHV0 IHNvbWUgdGV4dCBpbiBiZXR3ZWVuLiAgRWl0aGVyIG1ha2UgdGhpcyB0ZXh0IHBhcnQgb2YK LXRoZSBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0IGl0c2VsZiwgb3IgaW5zZXJ0IGl0 IHdpdGgKLUBjb2Rle3dpZGdldC1pbnNlcnR9LgotCiBUaGUgQGNvZGV7OmZvcm1hdH0ga2V5 d29yZCBpcyB1c2VmdWwgZm9yIGdlbmVyYXRpbmcgdGhlIG5lY2Vzc2FyeQogdGV4dDsgZm9y IGluc3RhbmNlLCBpZiB5b3UgZ2l2ZSBpdCBhIHZhbHVlIG9mIEBjb2RleyJOYW1lOiAldiAi fSwKIHRoZSBAc2FtcHtOYW1lOiB9IHBhcnQgd2lsbCBwcm92aWRlIHRoZSBuZWNlc3Nhcnkg c2VwYXJhdGluZyB0ZXh0CkBAIC0yMTUsMTcgKzIxMSw5IEBAIFVzZXIgSW50ZXJmYWNlCiBA Y29kZXs6c2l6ZX0ga2V5d29yZCwgdGhlIGZpZWxkIHdpbGwgZXh0ZW5kIHRvIHRoZSBlbmQg b2YgdGhlCiBsaW5lLCBhbmQgdGhlIHRlcm1pbmF0aW5nIG5ld2xpbmUgd2lsbCBwcm92aWRl IHNlcGFyYXRpb24gYWZ0ZXIuCiAKLUBzdHJvbmd7V2FybmluZzp9IEluIGFuIEBjb2Rle2Vk aXRhYmxlLWZpZWxkfSB3aWRnZXQsIHRoZSBAc2FtcHsldn0gZXNjYXBlCi1tdXN0IGJlIHBy ZWNlZGVkIGJ5IHNvbWUgb3RoZXIgdGV4dCBpbiB0aGUgQGNvZGV7OmZvcm1hdH0gc3RyaW5n Ci0oaWYgc3BlY2lmaWVkKS4KLQogVGhlIGVkaXRpbmcgdGV4dCBmaWVsZHMgYXJlIGhpZ2hs aWdodGVkIHdpdGggdGhlCiBAY29kZXt3aWRnZXQtZmllbGQtZmFjZX0gZmFjZSwgbWFraW5n IHRoZW0gZWFzeSB0byBmaW5kLgogCi1AZGVmZm4gRmFjZSB3aWRnZXQtZmllbGQtZmFjZQot RmFjZSB1c2VkIGZvciBvdGhlciBlZGl0aW5nIGZpZWxkcy4KLUBlbmQgZGVmZm4KLQogQHNl Y3Rpb24gQnV0dG9ucwogCiBAY2luZGV4IHdpZGdldCBidXR0b25zCkBAIC0yMzMsMjQgKzIy MSw5IEBAIFVzZXIgSW50ZXJmYWNlCiBTb21lIHBvcnRpb25zIG9mIHRoZSBidWZmZXIgaGF2 ZSBhbiBhc3NvY2lhdGVkIEBkZm57YWN0aW9ufSwgd2hpY2ggY2FuCiBiZSBAZGZue2ludm9r ZWR9IGJ5IGEgc3RhbmRhcmQga2V5IG9yIG1vdXNlIGNvbW1hbmQuICBUaGVzZSBwb3J0aW9u cwogYXJlIGNhbGxlZCBAZGZue2J1dHRvbnN9LiAgVGhlIGRlZmF1bHQgY29tbWFuZHMgZm9y IGFjdGl2YXRpbmcgYSBidXR0b24KLWFyZToKLQotQHRhYmxlIEBrYmQKLUBpdGVtIEBrZXl7 UkVUfQotQGRlZmZuIENvbW1hbmQgd2lkZ2V0LWJ1dHRvbi1wcmVzcyBAdmFye3Bvc30gJm9w dGlvbmFsIEB2YXJ7ZXZlbnR9Ci1JbnZva2UgdGhlIGJ1dHRvbiBhdCBAdmFye3Bvc30sIGRl ZmF1bHRpbmcgdG8gcG9pbnQuCi1JZiBwb2ludCBpcyBub3QgbG9jYXRlZCBvbiBhIGJ1dHRv biwgaW52b2tlIHRoZSBiaW5kaW5nIGluCi1AY29kZXt3aWRnZXQtZ2xvYmFsLW1hcH0gKGJ5 IGRlZmF1bHQgdGhlIGdsb2JhbCBtYXApLgotQGVuZCBkZWZmbgotCi1Aa2luZGV4IG1vdXNl LTIgQHJ7KG9uIGJ1dHRvbiB3aWRnZXRzfSkKLUBpdGVtIG1vdXNlLTIKLUBkZWZmbiBDb21t YW5kIHdpZGdldC1idXR0b24tY2xpY2sgQHZhcntldmVudH0KLUludm9rZSB0aGUgYnV0dG9u IGF0IHRoZSBsb2NhdGlvbiBvZiB0aGUgbW91c2UgcG9pbnRlci4gIElmIHRoZSBtb3VzZQot cG9pbnRlciBpcyBsb2NhdGVkIGluIGFuIGVkaXRhYmxlIHRleHQgZmllbGQsIGludm9rZSB0 aGUgYmluZGluZyBpbgotQGNvZGV7d2lkZ2V0LWdsb2JhbC1tYXB9IChieSBkZWZhdWx0IHRo ZSBnbG9iYWwgbWFwKS4KLUBlbmQgZGVmZm4KLUBlbmQgdGFibGUKK2FyZSBAY29kZXt3aWRn ZXQtYnV0dG9uLXByZXNzfSBhbmQgQGNvZGV7d2lkZ2V0LWJ1dHRvbi1jbGlja30uICBUaGUK K3VzZXIgdHlwaWNhbGx5IGludGVyYWN0cyB3aXRoIHRoZSBidXR0b25zIHdpdGggYSBrZXks IGxpa2UgQGtleXtSRVR9LAorb3Igd2l0aCB0aGUgbW91c2UgYnV0dG9ucy4KIAogVGhlcmUg YXJlIHNldmVyYWwgZGlmZmVyZW50IGtpbmQgb2YgYnV0dG9ucywgYWxsIG9mIHdoaWNoIGFy ZSBwcmVzZW50IGluCiB0aGUgZXhhbXBsZToKQEAgLTI4NiwzMyArMjU5LDE1IEBAIFVzZXIg SW50ZXJmYWNlCiBkaXNwbGF5ZWQgYXMgR1VJIGJ1dHRvbnMgd2hlbiBwb3NzaWJsZS4KIEBl bmQgdGFibGUKIAotVG8gbWFrZSB0aGVtIGVhc2llciB0byBsb2NhdGUsIGJ1dHRvbnMgYXJl IGVtcGhhc2l6ZWQgaW4gdGhlIGJ1ZmZlci4KLQotQGRlZmZuIEZhY2Ugd2lkZ2V0LWJ1dHRv bi1mYWNlCi1GYWNlIHVzZWQgZm9yIGJ1dHRvbnMuCi1AZW5kIGRlZmZuCi0KLUBkZWZvcHQg d2lkZ2V0LW1vdXNlLWZhY2UKLUZhY2UgdXNlZCBmb3IgaGlnaGxpZ2h0aW5nIGEgYnV0dG9u IHdoZW4gdGhlIG1vdXNlIHBvaW50ZXIgbW92ZXMgYWNyb3NzCi1pdC4KLUBlbmQgZGVmb3B0 CitUbyBtYWtlIHRoZW0gZWFzaWVyIHRvIGxvY2F0ZSwgYnV0dG9ucyBhcmUgZW1waGFzaXpl ZCBpbiB0aGUgYnVmZmVyCit3aXRoIGEgZGlzdGluY3RpdmUgZmFjZSwgbGlrZSBAY29kZXt3 aWRnZXQtYnV0dG9uLWZhY2V9IG9yCitAY29kZXt3aWRnZXQtbW91c2UtZmFjZX0uCiAKIEBz ZWN0aW9uIE5hdmlnYXRpb24KIAogWW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgRW1hY3Mg Y29tbWFuZHMgdG8gbW92ZSBhcm91bmQgaW4gYSBmb3JtCi1idWZmZXIsIHBsdXMgeW91IHdp bGwgaGF2ZSB0aGVzZSBhZGRpdGlvbmFsIGNvbW1hbmRzOgotCi1AdGFibGUgQGtiZAotQGl0 ZW0gQGtleXtUQUJ9Ci1AZGVmZm4gQ29tbWFuZCB3aWRnZXQtZm9yd2FyZCAmb3B0aW9uYWwg Y291bnQKLU1vdmUgcG9pbnQgQHZhcntjb3VudH0gYnV0dG9ucyBvciBlZGl0aW5nIGZpZWxk cyBmb3J3YXJkLgotQGVuZCBkZWZmbgotQGl0ZW0gQGtiZHtNLUBrZXl7VEFCfX0KLUBpdGVt eCBAa2Jke1MtQGtleXtUQUJ9fQotQGRlZmZuIENvbW1hbmQgd2lkZ2V0LWJhY2t3YXJkICZv cHRpb25hbCBjb3VudAotTW92ZSBwb2ludCBAdmFye2NvdW50fSBidXR0b25zIG9yIGVkaXRp bmcgZmllbGRzIGJhY2t3YXJkLgotQGVuZCBkZWZmbgotQGVuZCB0YWJsZQorYnVmZmVyLCBw bHVzIHlvdSB3aWxsIGhhdmUgdGhlc2UgYWRkaXRpb25hbCBjb21tYW5kcyB0byBuYXZpZ2F0 ZSBmcm9tCit3aWRnZXQgdG8gd2lkZ2V0OiBAY29kZXt3aWRnZXQtZm9yd2FyZH0gYW5kIEBj b2Rle3dpZGdldC1iYWNrd2FyZH0uCiAKIEBub2RlIFByb2dyYW1taW5nIEV4YW1wbGUKIEBj aGFwdGVyIFByb2dyYW1taW5nIEV4YW1wbGUKQEAgLTQxNCwyNjcgKzM2OSw3OTQgQEAgUHJv Z3JhbW1pbmcgRXhhbXBsZQogICAod2lkZ2V0LXNldHVwKSkKIEBlbmQgbGlzcAogCitAbm9k ZSBXaWRnZXRzIEJhc2ljcworQGNoYXB0ZXIgV2lkZ2V0cyBCYXNpY3MKK0BjaW5kZXggd2lk Z2V0IG9iamVjdAorVGhlIFdpZGdldCBMaWJyYXJ5IGRlYWxzIHdpdGggd2lkZ2V0cyBvYmpl Y3RzLiAgQSB3aWRnZXQgb2JqZWN0IGhhcworcHJvcGVydGllcyB3aG9zZSB2YWx1ZSBtYXkg YmUgYW55dGhpbmcsIGJlIGl0IG51bWJlcnMsIHN0cmluZ3MsCitzeW1ib2xzLCBmdW5jdGlv bnMsIGV0Yy4gIFRob3NlIHByb3BlcnRpZXMgYXJlIHJlZmVycmVkIHRvIGFzIGtleXdvcmRz CithbmQgYXJlIHJlc3BvbnNpYmxlIGZvciB0aGUgd2F5IGEgd2lkZ2V0IGlzIHJlcHJlc2Vu dGVkIGluIGEgYnVmZmVyLAorYW5kIGNvbnRyb2wgdGhlIHdheSBhIHVzZXIgb3IgYSBwcm9n cmFtIGNhbiBpbnRlcmFjdCB3aXRoIGl0LgorCitAY2luZGV4IHdpZGdldCBpbmhlcml0YW5j ZQorVGhlIGxpYnJhcnkgZGVmaW5lcyBzZXZlcmFsIHdpZGdldCB0eXBlcywgYW5kIGdpdmVz IHlvdSBhIHdheSB0bworZGVmaW5lIG5ldyB0eXBlcyBhcyB3ZWxsLiAgSW4gYWRkaXRpb24s IHdpZGdldHMgY2FuIGRlcml2ZSBmcm9tIG90aGVyCit0eXBlcywgY3JlYXRpbmcgYSBzb3J0 IG9mIHdpZGdldCBpbmhlcml0YW5jZS4gIEluIGZhY3QsIGFsbCB3aWRnZXRzCitkZWZpbmVk IGluIHRoZSBXaWRnZXQgTGlicmFyeSBzaGFyZSBhIGNvbW1vbiBwYXJlbnQsIHRoZSBAZGZu e2RlZmF1bHR9Cit3aWRnZXQuICBJbiB0aGlzIG1hbnVhbCwgd2hlbiB3ZSB0YWxrIGFib3V0 IGEgZGVmYXVsdCBiZWhhdmlvciwgd2UKK3VzdWFsbHkgbWVhbiB0aGUgYmVoYXZpb3IgYXMg ZGVmaW5lZCBieSB0aGlzIEBjb2Rle2RlZmF1bHR9IHdpZGdldC4KK0B4cmVme1dpZGdldCBH YWxsZXJ5fSwgZm9yIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBkZWZpbmVkIHdpZGdldC4KKwor RGVmaW5pbmcgYSBuZXcgdHlwZSB0aGF0IGRlcml2ZXMgZnJvbSBhIHByZXZpb3VzIG9uZSBp cyBub3QgbWFuZGF0b3J5Cit0byBjcmVhdGUgd2lkZ2V0cyB0aGF0IHdvcmsgdmVyeSBkaWZm ZXJlbnQgZnJvbSBhIHNwZWNpZmllZCB0eXBlLgorV2hlbiBjcmVhdGluZyBhIHdpZGdldCwg eW91IGNhbiBvdmVycmlkZSBhbnkgZGVmYXVsdCBwcm9wZXJ0eSwKK2luY2x1ZGluZyBmdW5j dGlvbnMsIHRoYXQgY29udHJvbCB0aGUgd2lkZ2V0LiAgVGhhdCBpcywgeW91IGNhbgorc3Bl Y2lhbGl6ZSBhIHdpZGdldCBvbiBjcmVhdGlvbiwgd2l0aG91dCBoYXZpbmcgdG8gZGVmaW5l IGl0IGFzIGEgbmV3Cit0eXBlIG9mIHdpZGdldC4KKworSW4gYWRkaXRpb24gdG8gdGhlIGZ1 bmN0aW9uIGZvciBkZWZpbmluZyBhIHdpZGdldCwgdGhpcyBsaWJyYXJ5Citwcm92aWRlcyBm dW5jdGlvbnMgdG8gY3JlYXRlIHdpZGdldHMsIHF1ZXJ5IGFuZCBjaGFuZ2UgaXRzIHByb3Bl cnRpZXMsCityZXNwb25kIHRvIHVzZXIgZXZlbnRzIGFuZCBkZXN0cm95IHRoZW0uICBUaGUg Zm9sbG93aW5nIHNlY3Rpb25zCitkZXNjcmliZSB0aGVtLgorCitAY2luZGV4IHdpZGdldCB2 YWx1ZQorT25lIGltcG9ydGFudCBwcm9wZXJ0eSBvZiBhIHdpZGdldCBpcyBpdHMgQGRmbnt2 YWx1ZX0uICBBbGwgd2lkZ2V0cworbWF5IGhhdmUgYSB2YWx1ZSwgIHdoaWNoIGlzIHN0b3Jl ZCBpbiBhIHNvLWNhbGxlZCBAZGZue2ludGVybmFsIGZvcm1hdH0uCitGb3IgdGhlIHJlc3Qg b2YgRW1hY3MsIHRoZSB3aWRnZXQgcHJlc2VudHMgaXRzIHZhbHVlIGluIGEgc28tY2FsbGVk CitAZGZue2V4dGVybmFsIGZvcm1hdH0uICBCb3RoIGZvcm1hdHMgY2FuIGJlIGVxdWFsIG9y IGRpZmZlcmVudCwgYW5kCitlYWNoIHdpZGdldCBpcyByZXNwb25zaWJsZSBmb3IgZGVmaW5p bmcgaG93IHRoZSBjb252ZXJzaW9uIGJldHdlZW4KK2VhY2ggZm9ybWF0IHNob3VsZCBoYXBw ZW4uCisKK0BjIEZJWE1FOiBCcmllZmx5IGRlc2NyaWJlIGlubGluZSB3aWRnZXRzPworQGMg VGhlIGlubGluZSBjb25jZXB0IGlzIGRlc2NyaWJlZCBlbHNld2hlcmUsIGFuZCBpdCdzIGRp ZmZpY3VsdCB0bworQGMgZGVzY3JpYmUuCisKK1RoZSB2YWx1ZSBwcm9wZXJ0eSBpcyBhbiBp bXBvcnRhbnQgcHJvcGVydHkgZm9yIGFsbW9zdCBhbGwgd2lkZ2V0cywKK2FuZCBwZXJoYXBz IG1vcmUgaW1wb3J0YW50IGZvciBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0cy4gIFRo aXMKK3R5cGUgb2Ygd2lkZ2V0cyBhbGxvdyB0aGUgdXNlciB0byBlZGl0IHRoZW0gdmlhIHRo ZSB1c3VhbCBlZGl0aW5nCitjb21tYW5kcyBpbiBFbWFjcy4gIFRoZXkgY2FuIGFsc28gYmUg ZWRpdGVkIHByb2dyYW1tYXRpY2FsbHkuCitAc3Ryb25ne0ltcG9ydGFudDp9IFlvdSBAZW1w aHttdXN0fSBjYWxsIEBjb2Rle3dpZGdldC1zZXR1cH0gYWZ0ZXIKK21vZGlmeWluZyB0aGUg dmFsdWUgb2YgYSB3aWRnZXQgYmVmb3JlIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gZWRpdCB0 aGUKK3dpZGdldCBhZ2Fpbi4gIEl0IGlzIGVub3VnaCB0byBjYWxsIEBjb2Rle3dpZGdldC1z ZXR1cH0gb25jZSBpZiB5b3UKK21vZGlmeSBtdWx0aXBsZSB3aWRnZXRzLiAgVGhpcyBpcyBj dXJyZW50bHkgb25seSBuZWNlc3NhcnkgaWYgdGhlIHdpZGdldAorY29udGFpbnMgYW4gZWRp dGluZyBmaWVsZCwgYnV0IG1heSBiZSBuZWNlc3NhcnkgZm9yIG90aGVyIHdpZGdldHMgaW4g dGhlCitmdXR1cmUuCisKK0BjaW5kZXggd2lkZ2V0IHByb3BlcnRpZXMKK0lmIHlvdXIgYXBw bGljYXRpb24gbmVlZHMgdG8gYXNzb2NpYXRlIHNvbWUgaW5mb3JtYXRpb24gd2l0aCB0aGUg d2lkZ2V0CitvYmplY3RzLCBmb3IgZXhhbXBsZSBhIHJlZmVyZW5jZSB0byB0aGUgaXRlbSBi ZWluZyBlZGl0ZWQsIGl0IGNhbiBiZQorZG9uZSB3aXRoIHRoZSBAY29kZXt3aWRnZXQtcHV0 fSBhbmQgQGNvZGV7d2lkZ2V0LWdldH0gZnVuY3Rpb25zLiAgVGhlCitwcm9wZXJ0eSBuYW1l cywgYXMgc2hvd24sIGFyZSBrZXl3b3Jkcywgc28gdGhleSBtdXN0IGJlZ2luIHdpdGggYQor QHNhbXB7On0uCisKIEBub2RlIFNldHRpbmcgVXAgdGhlIEJ1ZmZlcgogQGNoYXB0ZXIgU2V0 dGluZyBVcCB0aGUgQnVmZmVyCitAY2luZGV4IHdpZGdldCBjcmVhdGlvbiwgd2lkZ2V0IGNv bnZlcnNpb24KK1RvIHNob3cgdGhlIHdpZGdldHMgaW4gYSBidWZmZXIsIHlvdSBoYXZlIHRv IGNyZWF0ZSB0aGVtLiAgV2lkZ2V0CitjcmVhdGlvbiBpcyBhY3R1YWxseSBhIHR3by1zdGVw IHByb2Nlc3M6IGNvbnZlcnNpb24gYW5kIGNyZWF0aW9uIHBlcgorc2UuICBXaXRoIHNpbXBs ZSBwcm9qZWN0cywgdXN1YWxseSB0aGUgY29udmVyc2lvbiBzdGVwIGlzbid0IHJlYWxseQor aW1wb3J0YW50LCBhbmQgeW91IG9ubHkgY2FyZSBhYm91dCB3aWRnZXQgY3JlYXRpb24sIHNv IGZlZWwgZnJlZSB0bworc2tpcCB0aGUgY29udmVyc2lvbiBkZXNjcmlwdGlvbiB1bnRpbCB5 b3UgcmVhbGx5IG5lZWQgdG8ga25vdyBpdC4KKworV2lkZ2V0IGNvbnZlcnNpb24gaXMgdGhl IHByb2Nlc3MgdGhhdCBpbnZvbHZlcyB0YWtpbmcgYSB3aWRnZXQKK3NwZWNpZmljYXRpb24g YW5kIHRyYW5zZm9ybWluZyBpdCBpbnRvIGEgQGRmbnt3aWRnZXR9IG9iamVjdCwgc3VpdGFi bGUKK3RvIGJlIGNyZWF0ZWQsIHF1ZXJpZWQgYW5kIG1hbmlwdWxhdGVkIHdpdGggb3RoZXIg d2lkZ2V0IGZ1bmN0aW9ucy4KK1dpZGdldCBjcmVhdGlvbiBpcyB0aGUgcHJvY2VzcyB0aGF0 IHRha2VzIGEgd2lkZ2V0IG9iamVjdCBhbmQgYWN0dWFsbHkKK2luc2VydHMgaXQgaW4gdGhl IGJ1ZmZlci4KKworVGhlIHNpbXBsZXN0IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHdpZGdldCBp cyBAY29kZXt3aWRnZXQtY3JlYXRlfSwgd2hpY2gKK2dldHMgYSB3aWRnZXQgc3BlY2lmaWNh dGlvbiBhbmQgcmV0dXJucyBhIHdpZGdldCBvYmplY3QuCisKK0BkZWZ1biB3aWRnZXQtY3Jl YXRlIHR5cGUgWyBrZXl3b3JkIGFyZ3VtZW50IF1AZG90c3t9IGFyZ3MKK0NyZWF0ZSBhbmQg cmV0dXJuIGEgd2lkZ2V0IG9mIHR5cGUgQHZhcnt0eXBlfSwgY29udmVydGluZyBpdC4KKwor QHZhcnt0eXBlfSBpcyBhIHN5bWJvbCB0aGF0IHNwZWNpZmllcyBhIHdpZGdldCB0eXBlLiAg QHZhcntrZXl3b3JkfQorbWF5IGJlIG9uZSBvZiB0aGUgcHJvcGVydGllcyBzdXBwb3J0ZWQg YnkgdGhlIHdpZGdldCB0eXBlLCBhbmQKK0B2YXJ7YXJndW1lbnR9IHNwZWNpZnkgdGhlIHZh bHVlIGZvciB0aGF0IHByb3BlcnR5LiAgVGhlc2Uga2V5d29yZAorYXJndW1lbnRzIGNhbiBi ZSB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFy dAorb2YgQHZhcnt0eXBlfSBieSBkZWZhdWx0LCBhcyB3ZWxsIGFzIHRvIHByb3ZpZGUgb3Ro ZXIgcHJvcGVydGllcyBub3QKK3ByZXNlbnQgaW4gQHZhcnt0eXBlfSBieSBkZWZhdWx0LiAg QHZhcnthcmdzfSBob2xkcyBhZGRpdGlvbmFsCitpbmZvcm1hdGlvbiBmb3IgdGhlIGNyZWF0 aW9uIG9mIEB2YXJ7dHlwZX0gYW5kIGVhY2ggd2lkZ2V0IHR5cGUgaXMKK3Jlc3BvbnNpYmxl IGZvciBoYW5kbGluZyB0aGF0IGluZm9ybWF0aW9uIGluIGEgc3BlY2lmaWMgd2F5LgorCitU aGUgc3ludGF4IGZvciB0aGUgQHZhcnt0eXBlfSBhcmd1bWVudCBpcyBkZXNjcmliZWQgaW4g QHJlZntXaWRnZXQKK0dhbGxlcnl9LCBhbmQgaW4gbW9yZSBkZXRhaWwgaW4gZXZlcnkgd2lk Z2V0IHdoZXJlIGl0J3MgcmVsZXZhbnQuCitAZW5kIGRlZnVuCisKK1RoZXJlIGFyZSBvdGhl ciBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIHdpZGdldHMsIHVzZWZ1bCB3aGVuIHlvdSB3b3Jr Cit3aXRoIGNvbXBvc2l0ZSB3aWRnZXRzLiAgVGhhdCBpcywgd2lkZ2V0cyB0aGF0IGFyZSBw YXJ0IG9mIG90aGVyCit3aWRnZXRzLgogCi1XaWRnZXRzIGFyZSBjcmVhdGVkIHdpdGggQGNv ZGV7d2lkZ2V0LWNyZWF0ZX0sIHdoaWNoIHJldHVybnMgYQotQGRmbnt3aWRnZXR9IG9iamVj dC4gIFRoaXMgb2JqZWN0IGNhbiBiZSBxdWVyaWVkIGFuZCBtYW5pcHVsYXRlZCBieQotb3Ro ZXIgd2lkZ2V0IGZ1bmN0aW9ucywgdW50aWwgaXQgaXMgZGVsZXRlZCB3aXRoIEBjb2Rle3dp ZGdldC1kZWxldGV9LgotQWZ0ZXIgdGhlIHdpZGdldHMgaGF2ZSBiZWVuIGNyZWF0ZWQsIEBj b2Rle3dpZGdldC1zZXR1cH0gbXVzdCBiZSBjYWxsZWQKLXRvIGVuYWJsZSB0aGVtLgorQGRl ZnVuIHdpZGdldC1jcmVhdGUtY2hpbGQtYW5kLWNvbnZlcnQgcGFyZW50IHR5cGUgJnJlc3Qg YXJncworQ3JlYXRlIGEgd2lkZ2V0IG9mIHR5cGUgQHZhcnt0eXBlfSBhcyBhIGNoaWxkIG9m IEB2YXJ7cGFyZW50fS4KIAotQGRlZnVuIHdpZGdldC1jcmVhdGUgdHlwZSBbIGtleXdvcmQg YXJndW1lbnQgXUBkb3Rze30KLUNyZWF0ZSBhbmQgcmV0dXJuIGEgd2lkZ2V0IG9mIHR5cGUg QHZhcnt0eXBlfS4KLVRoZSBzeW50YXggZm9yIHRoZSBAdmFye3R5cGV9IGFyZ3VtZW50IGlz IGRlc2NyaWJlZCBpbiBAcmVme0Jhc2ljIFR5cGVzfS4KK0JlZm9yZSBjcmVhdGluZyBpdCwg Y29udmVydHMgQHZhcnt0eXBlfSB1c2luZyB0aGUga2V5d29yZCBhcmd1bWVudHMKK3Byb3Zp ZGVkIGluIEB2YXJ7YXJnc30uCitAYyBGSVhNRTogSXMgdGhpcyBkZXNjcmlwdGlvbiB1c2Vm dWw/CitBZGRzIHRoZSBAY29kZXs6aW5kZW50fSBwcm9wZXJ0eSwgdW5sZXNzIGl0IGlzIGFs cmVhZHkgcHJlc2VudCwgYW5kCitzZXRzIGl0IHRvIHRoZSBzdW0gb2YgdGhlIHZhbHVlcyBv ZjogQGNvZGV7OmluZGVudH0gYW5kIEBjb2RlezpvZmZzZXR9Citmcm9tIEB2YXJ7cGFyZW50 fSBhbmQgQGNvZGV7OmV4dHJhLW9mZnNldH0gZnJvbSBAdmFye3R5cGV9LgogCi1UaGUga2V5 d29yZCBhcmd1bWVudHMgY2FuIGJlIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBrZXl3b3JkIGFy Z3VtZW50cwotdGhhdCBhcmUgcGFydCBvZiBAdmFye3R5cGV9LgorUmV0dXJucyBhIHdpZGdl dCBvYmplY3QsIHdpdGggdGhlIHByb3BlcnR5IEBjb2RlezpwYXJlbnR9IHNldCB0bworQHZh cntQQVJFTlR9LgogQGVuZCBkZWZ1bgogCi1AZGVmdW4gd2lkZ2V0LWRlbGV0ZSB3aWRnZXQK LURlbGV0ZSBAdmFye3dpZGdldH0gYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBidWZmZXIuCitA ZGVmdW4gd2lkZ2V0LWNyZWF0ZS1jaGlsZCBwYXJlbnQgdHlwZQorQ3JlYXRlIGEgd2lkZ2V0 IG9mIHR5cGUgQHZhcnt0eXBlfSBhcyBhIGNoaWxkIG9mIEB2YXJ7cGFyZW50fS4KKworVGhp cyBmdW5jdGlvbiBpcyBsaWtlIEBjb2Rle3dpZGdldC1jcmVhdGUtY2hpbGQtYW5kLWNvbnZl cnR9IGJ1dCBpdAorZG9lc24ndCBjb252ZXJ0IEB2YXJ7dHlwZX0sIHNvIGl0IGV4cGVjdHMg YW4gYWxyZWFkeSBjb252ZXJ0ZWQgd2lkZ2V0LgogQGVuZCBkZWZ1bgogCitAZGVmdW4gd2lk Z2V0LWNyZWF0ZS1jaGlsZC12YWx1ZSBwYXJlbnQgdHlwZSB2YWx1ZQorQ3JlYXRlIGEgd2lk Z2V0IG9mIHR5cGUgQHZhcnt0eXBlfSBhcyBhIGNoaWxkIG9mIEB2YXJ7cGFyZW50fSB3aXRo Cit2YWx1ZSBAdmFye3ZhbHVlfS4KKworVGhpcyBmdW5jdGlvbiBpcyBsaWtlIEBjb2Rle3dp ZGdldC1jcmVhdGUtY2hpbGR9LCBidXQgaXQgbGV0cyB5b3UKK3NwZWNpZnkgYSB2YWx1ZSBm b3IgdGhlIHdpZGdldC4KKworQ29udmVydHMgQHZhcnt2YWx1ZX0gdG8gdGhlIGludGVybmFs IGZvcm1hdCwgYXMgc3BlY2lmaWVkIGJ5CitAdmFye3R5cGV9LCBhbmQgc3RvcmVzIGl0IGlu dG8gdGhlIEBjb2Rlezp2YWx1ZX0gcHJvcGVydHkgb2YgQHZhcnt0eXBlfS4KK1RoYXQgbWVh bnMsIEB2YXJ7dmFsdWV9IHNob3VsZCBiZSBpbiB0aGUgZXh0ZXJuYWwgZm9ybWF0LCBhcwor c3BlY2lmaWVkIGJ5IEB2YXJ7dHlwZX0uCitAZW5kIGRlZnVuCisKK0FsbCB0aGVzZSBjcmVh dGluZyBmdW5jdGlvbnMgZGVzY3JpYmVkIGhlcmUgdXNlIHRoZSBmdW5jdGlvbiBzdG9yZWQg aW4KK3RoZSBAY29kZXs6Y3JlYXRlfSBwcm9wZXJ0eS4gIFNvLCB0byBtb2RpZnkgdGhlIGNy ZWF0aW9uIGxvZ2ljIGZvciBhCit3aWRnZXQsIHlvdSBjYW4gcHJvdmlkZSBhIGRpZmZlcmVu dCBAY29kZXs6Y3JlYXRlfSBmdW5jdGlvbi4KKworV2hlbiB5b3UncmUgZG9uZSBjcmVhdGlu ZyB3aWRnZXRzIGFuZCB5b3UncmUgcmVhZHkgZm9yIHRoZSB1c2VyIHRvCitpbnRlcmFjdCB3 aXRoIHRoZSBidWZmZXIsIHVzZSB0aGUgZnVuY3Rpb24gQGNvZGV7d2lkZ2V0LXNldHVwfS4K KwogQGRlZnVuIHdpZGdldC1zZXR1cAotU2V0IHVwIGEgYnVmZmVyIHRvIHN1cHBvcnQgd2lk Z2V0cy4KK1NldHVwIHRoZSBjdXJyZW50IGJ1ZmZlciwgc28gdGhhdCBlZGl0YWJsZSB3aWRn ZXRzIGNhbiBiZSBlZGl0ZWQuCiAKIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBjcmVh dGluZyBhbGwgdGhlIHdpZGdldHMgYW5kIGJlZm9yZSBhbGxvd2luZwogdGhlIHVzZXIgdG8g ZWRpdCB0aGVtLgogQGVuZCBkZWZ1bgogCi1JZiB5b3Ugd2FudCB0byBpbnNlcnQgdGV4dCBv dXRzaWRlIHRoZSB3aWRnZXRzIGluIHRoZSBmb3JtLCB0aGUKLXJlY29tbWVuZGVkIHdheSB0 byBkbyB0aGF0IGlzIHdpdGggQGNvZGV7d2lkZ2V0LWluc2VydH0uCitBcyBtZW50aW9uZWQs IGFsbCB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuIGEgd2lkZ2V0IG9iamVjdC4gIFRoYXQgd2lk Z2V0CitvYmplY3QgY2FuIGJlIHF1ZXJpZWQgYW5kIG1hbmlwdWxhdGVkIHdpdGggd2lkZ2V0 IGZ1bmN0aW9ucyB0aGF0Cit0YWtlIHdpZGdldHMgYXMgYXJndW1lbnRzLCB1bnRpbCBkZWxl dGluZyBpdCB3aXRoIHRoZSB3aWRnZXRzCitmdW5jdGlvbnMgYXZhaWxhYmxlIHRvIGRlbGV0 ZSB3aWRnZXRzLiAgRXZlbiBpZiB5b3UgZG9uJ3Qgc2F2ZSB0aGUKK3JldHVybmVkIHdpZGdl dCBvYmplY3QsIHlvdSBzdGlsbCBjYW4gaW50ZXJhY3QgcHJvZ3JhbW1hdGljYWxseSB3aXRo Cit0aGUgd2lkZ2V0LiAgQHhyZWZ7V29ya2luZyB3aXRoIFdpZGdldHN9LgogCi1AZGVmdW4g d2lkZ2V0LWluc2VydAotSW5zZXJ0IHRoZSBhcmd1bWVudHMsIGVpdGhlciBzdHJpbmdzIG9y IGNoYXJhY3RlcnMsIGF0IHBvaW50LgotVGhlIGluc2VydGVkIHRleHQgd2lsbCBiZSByZWFk LW9ubHkuCitAZGVmdW4gd2lkZ2V0LWRlbGV0ZSB3aWRnZXQKK0RlbGV0ZSB0aGUgd2lkZ2V0 IEB2YXJ7d2lkZ2V0fSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIGJ1ZmZlci4KIEBlbmQgZGVm dW4KIAotVGhlcmUgaXMgYSBzdGFuZGFyZCB3aWRnZXQga2V5bWFwIHdoaWNoIHlvdSBtaWdo dCBmaW5kIHVzZWZ1bC4KK0BkZWZ1biB3aWRnZXQtY2hpbGRyZW4tdmFsdWUtZGVsZXRlIHdp ZGdldAorRGVsZXRlIGFsbCBjaGlsZHJlbiBhbmQgYnV0dG9ucyBpbiB3aWRnZXQgQHZhcnt3 aWRnZXR9LgogCi1AZmluZGV4IHdpZGdldC1idXR0b24tcHJlc3MKLUBmaW5kZXggd2lkZ2V0 LWJ1dHRvbi1jbGljawotQGRlZnZyIENvbnN0IHdpZGdldC1rZXltYXAKLUBrZXl7VEFCfSBh bmQgQGtiZHtDLUBrZXl7VEFCfX0gYXJlIGJvdW5kIHRvIEBjb2Rle3dpZGdldC1mb3J3YXJk fSBhbmQKLUBjb2Rle3dpZGdldC1iYWNrd2FyZH0sIHJlc3BlY3RpdmVseS4gIEBrZXl7UkVU fSBhbmQgQGtiZHttb3VzZS0yfQotYXJlIGJvdW5kIHRvIEBjb2Rle3dpZGdldC1idXR0b24t cHJlc3N9IGFuZAotQGNvZGV7d2lkZ2V0LWJ1dHRvbi1jbGlja30uCi1AZW5kIGRlZnZyCitU aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGRlbGV0ZSBAdmFye3dpZGdldH0gaXRzZWxmLCBvbmx5 IHRoZSB3aWRnZXRzCitzdG9yZWQgaW4gdGhlIEBjb2RlezpjaGlsZHJlbn0gYW5kIEBjb2Rl ezpidXR0b25zfSBwcm9wZXJ0aWVzLiAgSXQKK2Fsc28gc2V0cyB0aG9zZSBwcm9wZXJ0aWVz IHRvIEBjb2Rle25pbH0uCitAZW5kIGRlZnVuCiAKLUBkZWZ2YXIgd2lkZ2V0LWdsb2JhbC1t YXAKLUtleW1hcCB1c2VkIGJ5IEBjb2Rle3dpZGdldC1idXR0b24tcHJlc3N9IGFuZCBAY29k ZXt3aWRnZXQtYnV0dG9uLWNsaWNrfQotd2hlbiBub3Qgb24gYSBidXR0b24uICBCeSBkZWZh dWx0IHRoaXMgaXMgQGNvZGV7Z2xvYmFsLW1hcH0uCi1AZW5kIGRlZnZhcgorQXMgd2l0aCB0 aGUgY3JlYXRpb24gbWVjaGFuaXNtLCB0aGUgZnVuY3Rpb24gc3RvcmVkIGluIEBjb2Rlezpk ZWxldGV9Citjb250cm9scyB0aGUgZGVsZXRpb24gbWVjaGFuaXNtIGZvciBhIHdpZGdldC4K IAotQG5vZGUgQmFzaWMgVHlwZXMKLUBjaGFwdGVyIEJhc2ljIFR5cGVzCitBZGRpdGlvbmFs bHksIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIGEgd2F5IHRvIG1ha2UgYSBjb3B5IG9mIGEgd2lk Z2V0LgogCi1UaGlzIGlzIHRoZSBnZW5lcmFsIHN5bnRheCBvZiBhIHR5cGUgc3BlY2lmaWNh dGlvbjoKK0BkZWZ1biB3aWRnZXQtY29weSB3aWRnZXQKK01ha2VzIGEgY29weSBvZiB3aWRn ZXQgQHZhcnt3aWRnZXR9IGFuZCByZXR1cm5zIGl0LgogCi1AZXhhbXBsZQotQHZhcntuYW1l fSA6Oj0gKEB2YXJ7bmFtZX0gW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uIEB2 YXJ7YXJnc30pCi0gICAgIHwgICBAdmFye25hbWV9Ci1AZW5kIGV4YW1wbGUKK0l0IHVzZXMg dGhlIGZ1bmN0aW9uIHN0b3JlZCBpbiB0aGUgQGNvZGV7OmNvcHl9IHByb3BlcnR5IG9mIEB2 YXJ7d2lkZ2V0fQorYW5kIHJldHVybnMgdGhlIHdpZGdldCB0aGF0IHRoYXQgZnVuY3Rpb24g cmV0dXJucy4KK0BlbmQgZGVmdW4KIAotV2hlcmUsIEB2YXJ7bmFtZX0gaXMgYSB3aWRnZXQg bmFtZSwgQHZhcntrZXl3b3JkfSBpcyB0aGUgbmFtZSBvZiBhCi1wcm9wZXJ0eSwgQHZhcnth cmd1bWVudH0gaXMgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSwgYW5kIEB2YXJ7YXJnc30K LWFyZSBpbnRlcnByZXRlZCBpbiBhIHdpZGdldCBzcGVjaWZpYyB3YXkuCitBcyBkaXNjdXNz ZWQsIHRoZXJlIGlzIGEgY29udmVyc2lvbiBzdGVwIHdoZW4gY3JlYXRpbmcgYSB3aWRnZXQu ICBUbworZG8gdGhlIGNvbnZlcnNpb24gd2l0aG91dCBhY3R1YWxseSBjcmVhdGluZyB0aGUg d2lkZ2V0LCB5b3UgY2FuIHVzZQordGhlIEBjb2Rle3dpZGdldC1jb252ZXJ0fSBmdW5jdGlv bi4KIAotQGNpbmRleCBrZXl3b3JkIGFyZ3VtZW50cwotVGhlIGZvbGxvd2luZyBrZXl3b3Jk IGFyZ3VtZW50cyBhcHBseSB0byBhbGwgd2lkZ2V0czoKK0BkZWZ1biB3aWRnZXQtY29udmVy dCB0eXBlICZyZXN0IGFyZ3MKK0NvbnZlcnQgQHZhcnt0eXBlfSB0byBhIHdpZGdldCBvYmpl Y3QsIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzIEB2YXJ7YXJnc30uCiAKLUB0YWJsZSBAY29k ZQotQGNpbmRleCBpbnRlcm5hbCBmb3JtYXQKLUBjaW5kZXggZXh0ZXJuYWwgZm9ybWF0Ci1A dmluZGV4IHZhbHVlQHJ7IGtleXdvcmR9Ci1AaXRlbSA6dmFsdWUKLVRoZSBpbml0aWFsIHZh bHVlIGZvciB3aWRnZXRzIG9mIHRoaXMgdHlwZS4gIFR5cGljYWxseSwgYSB3aWRnZXQKLXJl cHJlc2VudHMgaXRzIHZhbHVlIGluIHR3byBmb3JtYXRzOiBleHRlcm5hbCBhbmQgaW50ZXJu YWwuICBUaGUKLWV4dGVybmFsIGZvcm1hdCBpcyB0aGUgdmFsdWUgYXMgdGhlIHJlc3Qgb2Yg RW1hY3Mgc2VlcyBpdCwgYW5kIHRoZQotaW50ZXJuYWwgZm9ybWF0IGlzIGEgcmVwcmVzZW50 YXRpb24gdGhhdCB0aGUgd2lkZ2V0IGRlZmluZXMgYW5kIHVzZXMKLWluIGEgd2lkZ2V0IHNw ZWNpZmljIHdheS4KK1JldHVybnMgYSB3aWRnZXQgb2JqZWN0LCBzdWl0YWJsZSBmb3IgY3Jl YXRpb24uICBJdCBjYWxscyB0aGUgZnVuY3Rpb24KK3N0b3JlZCBpbiB0aGUgQGNvZGV7OmNv bnZlcnQtd2lkZ2V0fSBwcm9wZXJ0eSwgYWZ0ZXIgcHV0dGluZyBpbnRvIHRoZQorQGNvZGV7 OmFyZ3N9IHByb3BlcnR5IHRoZSBhcmd1bWVudHMgdGhhdCB0aGUgd2lkZ2V0IGluIHF1ZXN0 aW9uIG5lZWRzLgorSWYgQHZhcnt0eXBlfSBoYXMgYSBAY29kZXs6dmFsdWV9IHByb3BlcnR5 LCBlaXRoZXIgb3JpZ2luYWxseSBvciBhZnRlcgorZG9pbmcgdGhlIGNvbnZlcnNpb24sIHRo aXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHZhbHVlIHN0b3JlZCBpbgorQGNvZGV7OnZhbHVl fSB0byB0aGUgaW50ZXJuYWwgZm9ybWF0LCBhbmQgc3RvcmVzIGl0IGludG8gQGNvZGV7OnZh bHVlfS4KK0BlbmQgZGVmdW4KIAotQm90aCBmb3JtYXRzIG1pZ2h0IGJlIHRoZSBzYW1lIGZv ciBjZXJ0YWluIHdpZGdldHMgYW5kIG1pZ2h0IGRpZmZlcgotZm9yIG90aGVycywgYW5kIHRo ZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB3aGljaCBmb3JtYXQgdGhlIHZhbHVlCi1zdG9y ZWQgaW4gdGhlIEBjb2Rlezp2YWx1ZX0gcHJvcGVydHkgaGFzLiAgSG93ZXZlciwgd2hlbiBj cmVhdGluZyBhCi13aWRnZXQgb3IgZGVmaW5pbmcgYSBuZXcgb25lIChAcHhyZWZ7RGVmaW5p bmcgTmV3IFdpZGdldHN9KSwgdGhlCi1AY29kZXs6dmFsdWV9IHNob3VsZCBiZSBpbiB0aGUg ZXh0ZXJuYWwgZm9ybWF0LgorQXBhcnQgZnJvbSBvbmx5IGNyZWF0aW5nIHdpZGdldHMgaW4g dGhlIGJ1ZmZlciwgSXQncyB1c2VmdWwgdG8gaGF2ZQorcGxhaW4gdGV4dC4gIEZvciBpbnNl cnRpbmcgdGV4dCwgdGhlIHJlY29tbWVuZGVkIHdheSBpcyB3aXRoIHRoZQorQGNvZGV7d2lk Z2V0LWluc2VydH0gZnVuY3Rpb24uCiAKLUB2aW5kZXggZm9ybWF0QHJ7IGtleXdvcmR9Ci1A aXRlbSA6Zm9ybWF0Ci1UaGlzIHN0cmluZyB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBidWZm ZXIgd2hlbiB5b3UgY3JlYXRlIGEgd2lkZ2V0LgotVGhlIGZvbGxvd2luZyBAc2FtcHslfSBl c2NhcGVzIGFyZSBhdmFpbGFibGU6CitAZGVmdW4gd2lkZ2V0LWluc2VydCAmcmVzdCBhcmdz CitJbnNlcnQgQHZhcnthcmdzfSwgZWl0aGVyIHN0cmluZ3Mgb3IgY2hhcmFjdGVycywgYXQg cG9pbnQuCiAKLUB0YWJsZSBAc2FtcAotQGl0ZW0gJVsKLUBpdGVteCAlXQotVGhlIHRleHQg aW5zaWRlIHdpbGwgYmUgbWFya2VkIGFzIGEgYnV0dG9uLgorVXNlcyBAY29kZXtpbnNlcnR9 IHRvIHBlcmZvcm0gdGhlIGluc2VydGlvbiwgcGFzc2luZyBAdmFye2FyZ3N9IGFzCithcmd1 bWVudC4gIEB4cmVme0luc2VydGlvbiwsLGVsaXNwLCB0aGUgRW1hY3MgTGlzcCBSZWZlcmVu Y2UgTWFudWFsfSwKK2ZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEB2YXJ7YXJnc30uCiAK LUJ5IGRlZmF1bHQsIHRoZSB0ZXh0IHdpbGwgYmUgc2hvd24gaW4gQGNvZGV7d2lkZ2V0LWJ1 dHRvbi1mYWNlfSwgYW5kCi1zdXJyb3VuZGVkIGJ5IGJyYWNrZXRzLgorVGhlIHJlc3VsdGlu ZyB0ZXh0IHdpbGwgYmUgcmVhZC1vbmx5LgorQGVuZCBkZWZ1bgogCi1AZGVmb3B0IHdpZGdl dC1idXR0b24tcHJlZml4Ci1TdHJpbmcgdG8gcHJlZml4IGJ1dHRvbnMuCi1AZW5kIGRlZm9w dAorQG5vZGUgV29ya2luZyB3aXRoIFdpZGdldHMKK0BjaGFwdGVyIFdvcmtpbmcgd2l0aCBX aWRnZXRzCitUaGlzIHNlY3Rpb24gY292ZXJzIHRoZSBtb3JlIGltcG9ydGFudCBmdW5jdGlv bnMgbmVlZGVkIHRvIHF1ZXJ5IGFuZAorbWFuaXB1bGF0ZSB3aWRnZXRzIGluIGEgZ2VuZXJp YyB3YXkuICBXaWRnZXRzIG1heSBoYXZlIGFkZGl0aW9uYWwKK2Z1bmN0aW9ucyBmb3IgaW50 ZXJhY3Rpbmcgd2l0aCB0aGVtLCB0aG9zZSBhcmUgZGVzY3JpYmVkIGluIHRoZQorZGVzY3Jp cHRpb24gZm9yIGVhY2ggd2lkZ2V0LiAgQHhyZWZ7V2lkZ2V0IEdhbGxlcnl9LgogCi1AZGVm b3B0IHdpZGdldC1idXR0b24tc3VmZml4Ci1TdHJpbmcgdG8gc3VmZml4IGJ1dHRvbnMuCi1A ZW5kIGRlZm9wdAorQGRlZnVuIHdpZGdldHAgd2lkZ2V0CitOb24tQGNvZGV7bmlsfSBpZiBA dmFye3dpZGdldH0gaXMgYSB3aWRnZXQuCitAZW5kIGRlZnVuCiAKLUBpdGVtICVAewotQGl0 ZW14ICVAfQotVGhlIHRleHQgaW5zaWRlIHdpbGwgYmUgZGlzcGxheWVkIHdpdGggdGhlIGZh Y2Ugc3BlY2lmaWVkIGJ5Ci1AY29kZXs6c2FtcGxlLWZhY2V9LgorQGRlZnVuIHdpZGdldC10 eXBlIHdpZGdldAorUmV0dXJuIHRoZSB0eXBlIG9mIHdpZGdldCBAdmFye3dpZGdldH0sIGEg c3ltYm9sLgogCi1AaXRlbSAldgotVGhpcyB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGJ1 ZmZlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgd2lkZ2V0J3MKLXZhbHVlLiAgV2hhdCB0aGlz IGlzIGRlcGVuZHMgb24gdGhlIHdpZGdldCB0eXBlLgorVGhpcyBmdW5jdGlvbiBpcyB1c2Vm dWwgdG8gZmluZCBvdXQgd2hpY2gga2luZCBvZiB3aWRnZXQgQHZhcnt3aWRnZXR9CityZXBy ZXNlbnRzLCBpLmUuLCB0aGUgbmFtZSBvZiB0aGUgd2lkZ2V0IHR5cGUgd2hlbiB0aGUgd2lk Z2V0Cit3YXMgY3JlYXRlZC4KK0BlbmQgZGVmdW4KIAotQHN0cm9uZ3tXYXJuaW5nOn0gSW4g YW4gQGNvZGV7ZWRpdGFibGUtZmllbGR9IHdpZGdldCwgdGhlIEBzYW1weyV2fSBlc2NhcGUK LW11c3QgYmUgcHJlY2VkZWQgYnkgc29tZSBvdGhlciB0ZXh0IGluIHRoZSBmb3JtYXQgc3Ry aW5nIChpZiBzcGVjaWZpZWQpLgorQGRlZnVuIHdpZGdldC1tZW1iZXIgd2lkZ2V0IHByb3Bl cnR5CitOb24tQGNvZGV7bmlsfSBpZiB3aWRnZXQgQHZhcnt3aWRnZXR9IGhhcyBhIHZhbHVl IChldmVuIEBjb2Rle25pbH0pIGZvcgorcHJvcGVydHkgQHZhcntwcm9wZXJ0eX0uCitAZW5k IGRlZnVuCiAKLUBpdGVtICVkCi1JbnNlcnQgdGhlIHN0cmluZyBzcGVjaWZpZWQgYnkgQGNv ZGV7OmRvY30gaGVyZS4KK0BkZWZ1biB3aWRnZXQtZ2V0IHdpZGdldCBwcm9wZXJ0eQorRm9y IHdpZGdldCBAdmFye3dpZGdldH0sIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5 IEB2YXJ7cHJvcGVydHl9LgogCi1AaXRlbSAlaAotTGlrZSBAc2FtcHslZH0sIHdpdGggdGhl IGZvbGxvd2luZyBtb2RpZmljYXRpb25zOiBJZiB0aGUgZG9jdW1lbnRhdGlvbgotc3RyaW5n IGlzIG1vcmUgdGhhbiBvbmUgbGluZSwgaXQgd2lsbCBhZGQgYSBidXR0b24gd2hpY2ggd2ls bCB0b2dnbGUKLWJldHdlZW4gc2hvd2luZyBvbmx5IHRoZSBmaXJzdCBsaW5lLCBhbmQgc2hv d2luZyB0aGUgZnVsbCB0ZXh0LgotRnVydGhlcm1vcmUsIGlmIHRoZXJlIGlzIG5vIEBjb2Rl ezpkb2N9IHByb3BlcnR5IGluIHRoZSB3aWRnZXQsIGl0IHdpbGwKLWluc3RlYWQgZXhhbWlu ZSB0aGUgQGNvZGV7OmRvY3VtZW50YXRpb24tcHJvcGVydHl9IHByb3BlcnR5LiAgSWYgaXQg aXMgYQotbGFtYmRhIGV4cHJlc3Npb24sIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHdp ZGdldCdzIHZhbHVlIGFzIGFuCi1hcmd1bWVudCwgYW5kIHRoZSByZXN1bHQgd2lsbCBiZSB1 c2VkIGFzIHRoZSBkb2N1bWVudGF0aW9uIHRleHQuCitAdmFye3Byb3BlcnR5fSBzaG91bGQg YmUgYSBrZXl3b3JkLCBhbmQgdGhlIHZhbHVlIGlzIHdoYXQgd2FzIGxhc3Qgc2V0IGJ5CitA Y29kZXt3aWRnZXQtcHV0fSBmb3IgQHZhcntwcm9wZXJ0eX0uCitAZW5kIGRlZnVuCiAKLUBp dGVtICV0Ci1JbnNlcnQgdGhlIHN0cmluZyBzcGVjaWZpZWQgYnkgQGNvZGV7OnRhZ30gaGVy ZSwgb3IgdGhlIEBjb2Rle3ByaW5jfQotcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIGlm IHRoZXJlIGlzIG5vIHRhZy4KK0BkZWZ1biB3aWRnZXQtcHV0IHdpZGdldCBwcm9wZXJ0eSB2 YWx1ZQorRm9yIHdpZGdldCBAdmFye3dpZGdldH0sIHNldCB0aGUgcHJvcGVydHkgQHZhcntw cm9wZXJ0eX0gdG8gQHZhcnt2YWx1ZX0uCitAdmFye3Byb3BlcnR5fSBzaG91bGQgYmUgYSBr ZXl3b3JkLCB3aGlsZSBAdmFye3ZhbHVlfSBjYW4gYmUgYW55dGhpbmcuCitAZW5kIGRlZnVu CiAKLUBpdGVtICUlCi1JbnNlcnQgYSBsaXRlcmFsIEBzYW1weyV9LgotQGVuZCB0YWJsZQor QGRlZnVuIHdpZGdldC1hdCAmb3B0aW9uYWwgcG9zCitSZXR1cm4gdGhlIHdpZGdldCBhdCBw b3NpdGlvbiBAdmFye3Bvc30sIG9yIGF0IHBvaW50IGlmIEB2YXJ7cG9zfSBpcyBAY29kZXtu aWx9LgorQGVuZCBkZWZ1bgogCi1AdmluZGV4IGJ1dHRvbi1mYWNlQHJ7IGtleXdvcmR9Ci1A aXRlbSA6YnV0dG9uLWZhY2UKLUZhY2UgdXNlZCB0byBoaWdobGlnaHQgdGV4dCBpbnNpZGUg JVsgJV0gaW4gdGhlIGZvcm1hdC4KK0BkZWZ1biB3aWRnZXQtZmllbGQtYXQgcG9zCitSZXR1 cm4gdGhlIHdpZGdldCBmaWVsZCBhdCBwb3NpdGlvbiBQT1MsIG9yIEBjb2Rle25pbH0gaWYg dGhlcmUgaXMgbm9uZS4KK0BlbmQgZGVmdW4KIAotQHZpbmRleCBidXR0b24tcHJlZml4QHJ7 IGtleXdvcmR9Ci1AdmluZGV4IGJ1dHRvbi1zdWZmaXhAcnsga2V5d29yZH0KLUBpdGVtIDpi dXR0b24tcHJlZml4Ci1AaXRlbXggOmJ1dHRvbi1zdWZmaXgKLVRleHQgYXJvdW5kICVbICVd IGluIHRoZSBmb3JtYXQuCitAZGVmdW4gd2lkZ2V0LWFwcGx5IHdpZGdldCBwcm9wZXJ0eSAm cmVzdCBhcmdzCitBcHBseSB0aGUgZnVuY3Rpb24gc3RvcmVkIGluIEB2YXJ7cHJvcGVydHl9 IHRvIEB2YXJ7d2lkZ2V0fSwgcGFzc2luZyBAdmFye2FyZ3N9CithcyBhZGRpdGlvbmFsIGFy Z3VtZW50cyB0byB0aGUgZnVuY3Rpb24uCiAKLVRoZXNlIGNhbiBiZQotQHRhYmxlIEBlbXBo Ci1AaXRlbSBuaWwKLU5vIHRleHQgaXMgaW5zZXJ0ZWQuCitSZXR1cm5zIHRoZSByZXN1bHQg b2YgdGhhdCBmdW5jdGlvbiBjYWxsLgorQGVuZCBkZWZ1bgogCi1AaXRlbSBhIHN0cmluZwot VGhlIHN0cmluZyBpcyBpbnNlcnRlZCBsaXRlcmFsbHkuCitAZGVmdW4gd2lkZ2V0LXZhbHVl IHdpZGdldAorUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIGNvbnRhaW5lZCBpbiBAdmFye3dp ZGdldH0uCiAKLUBpdGVtIGEgc3ltYm9sCi1UaGUgdmFsdWUgb2YgdGhlIHN5bWJvbCBpcyBl eHBhbmRlZCBhY2NvcmRpbmcgdG8gdGhpcyB0YWJsZS4KLUBlbmQgdGFibGUKK05vdGUgdGhh dCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBtaWdodCBkaWZmZXIgZnJv bSB3aGF0J3MKK3N0b3JlZCBpbiB0aGUgQGNvZGV7OnZhbHVlfSBwcm9wZXJ0eSBvZiBAdmFy e3dpZGdldH0uICBUaGlzIGlzIGJlY2F1c2UKK3RoaXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhl IGN1cnJlbnQgdmFsdWUgb2YgQHZhcnt3aWRnZXR9IGZyb20gdGhlCitidWZmZXIsIHRha2lu ZyBlZGl0aW9ucyBpbnRvIGFjY291bnQuCiAKLUB2aW5kZXggZG9jQHJ7IGtleXdvcmR9Ci1A aXRlbSA6ZG9jCi1UaGUgc3RyaW5nIGluc2VydGVkIGJ5IHRoZSBAc2FtcHslZH0gZXNjYXBl IGluIHRoZSBmb3JtYXQKLXN0cmluZy4KK1RoZSB2YWx1ZSByZXR1cm5lZCBpcyBpbiB0aGUg ZXh0ZXJuYWwgZm9ybWF0LCBhZnRlciBnZXR0aW5nIGl0IHdpdGgKK3RoZSBAY29kZXs6dmFs dWUtZ2V0fSBmdW5jdGlvbi4KIAotQHZpbmRleCB0YWdAcnsga2V5d29yZH0KLUBpdGVtIDp0 YWcKLVRoZSBzdHJpbmcgaW5zZXJ0ZWQgYnkgdGhlIEBzYW1weyV0fSBlc2NhcGUgaW4gdGhl IGZvcm1hdAotc3RyaW5nLgorSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9u IG9uIGFuIHVuaW5pdGlhbGl6ZWQgd2lkZ2V0LgorQGVuZCBkZWZ1bgogCi1AdmluZGV4IHRh Zy1nbHlwaEByeyBrZXl3b3JkfQotQGl0ZW0gOnRhZy1nbHlwaAotTmFtZSBvZiBpbWFnZSB0 byB1c2UgaW5zdGVhZCBvZiB0aGUgc3RyaW5nIHNwZWNpZmllZCBieSBAY29kZXs6dGFnfSBv bgotRW1hY3NlbiB0aGF0IHN1cHBvcnRzIGl0LgorQGRlZnVuIHdpZGdldC12YWx1ZS1zZXQg d2lkZ2V0IHZhbHVlCitTZXQgdGhlIHZhbHVlIGNvbnRhaW5lZCBpbiBAdmFye3dpZGdldH0g dG8gQHZhcnt2YWx1ZX0uCiAKLUB2aW5kZXggaGVscC1lY2hvQHJ7IGtleXdvcmR9Ci1AaXRl bSA6aGVscC1lY2hvCi1TcGVjaWZpZXMgaG93IHRvIGRpc3BsYXkgYSBtZXNzYWdlIHdoZW5l dmVyIHlvdSBtb3ZlIHRvIHRoZSB3aWRnZXQgd2l0aAotZWl0aGVyIEBjb2Rle3dpZGdldC1m b3J3YXJkfSBvciBAY29kZXt3aWRnZXQtYmFja3dhcmR9IG9yIG1vdmUgdGhlIG1vdXNlCi1v dmVyIGl0ICh1c2luZyB0aGUgc3RhbmRhcmQgQGNvZGV7aGVscC1lY2hvfSBtZWNoYW5pc20p LiAgVGhlIGFyZ3VtZW50Ci1pcyBlaXRoZXIgYSBzdHJpbmcgdG8gZGlzcGxheSwgYSBmdW5j dGlvbiBvZiBvbmUgYXJndW1lbnQsIHRoZSB3aWRnZXQsCi13aGljaCBzaG91bGQgcmV0dXJu IGEgc3RyaW5nIHRvIGRpc3BsYXksIG9yIGEgZm9ybSB0aGF0IGV2YWx1YXRlcyB0bwotc3Vj aCBhIHN0cmluZy4KK0NvbnZlcnRzIEB2YXJ7dmFsdWV9IHRvIHRoZSBpbnRlcm5hbCBmb3Jt YXQsIGFuZCB0aGVuIHNldHMgaXQgYnkKK2FwcGx5aW5nIHRoZSBAY29kZXs6dmFsdWUtc2V0 fSBmdW5jdGlvbi4KIAotQHZpbmRleCBmb2xsb3ctbGlua0ByeyBrZXl3b3JkfQotQGl0ZW0g OmZvbGxvdy1saW5rCi1TcGVjaWZpZXMgaG93IHRvIGludGVycHJldCBhIEBrZXl7bW91c2Ut MX0gY2xpY2sgb24gdGhlIHdpZGdldC4KLUB4cmVme0NsaWNrYWJsZSBUZXh0LCwgRGVmaW5p bmcgQ2xpY2thYmxlIFRleHQsIGVsaXNwLCB0aGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFu dWFsfS4KK0l0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIGFuIGlu dmFsaWQgQHZhcnt2YWx1ZX0sIHRoYXQKK2lzLCBhIHZhbHVlIHRoYXQgQHZhcnt3aWRnZXR9 IGNhbm5vdCByZXByZXNlbnQuCitAZW5kIGRlZnVuCiAKLUB2aW5kZXggaW5kZW50QHJ7IGtl eXdvcmR9Ci1AaXRlbSA6aW5kZW50Ci1BbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGFic29s dXRlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IGNoaWxkcmVuCi1vZiB0aGlzIHdpZGdl dC4KK0BkZWZ1biB3aWRnZXQtZGVmYXVsdC1nZXQgd2lkZ2V0CitSZXR1cm4gdGhlIGRlZmF1 bHQgZXh0ZXJuYWwgdmFsdWUgb2Ygd2lkZ2V0IEB2YXJ7d2lkZ2V0fS4KIAotQHZpbmRleCBv ZmZzZXRAcnsga2V5d29yZH0KLUBpdGVtIDpvZmZzZXQKLUFuIGludGVnZXIgaW5kaWNhdGlu ZyBob3cgbWFueSBleHRyYSBzcGFjZXMgdG8gYWRkIHRvIHRoZSB3aWRnZXQncwotZ3JhbmRj aGlsZHJlbiBjb21wYXJlZCB0byB0aGlzIHdpZGdldC4KK1RoZSBkZWZhdWx0IHZhbHVlIGlz IHRoZSBvbmUgc3RvcmVkIGluIEBjb2Rlezp2YWx1ZX0gb3IgdGhlIHJlc3VsdCBvZgorYXBw bHlpbmcgdGhlIEBjb2RlezpkZWZhdWx0LWdldH0gZnVuY3Rpb24gdG8gdGhlIGFyZ3VtZW50 cyBvZgorQHZhcnt3aWRnZXR9LCBhcyBzdG9yZWQgaW4gQGNvZGV7OmFyZ3N9LiAgQSB2YWx1 ZSBvZiBAY29kZXtuaWx9IGlzCitpZ25vcmVkIGJ5IGRlZmF1bHQsIHNvIGluIG9yZGVyIGZv ciBhIHdpZGdldCB0byByZXNwZWN0IEBjb2Rle25pbH0gYXMKK2EgdmFsdWUsIGl0IGhhcyB0 byBvdmVycmlkZSB0aGUgQGNvZGV7OmRlZmF1bHQtZ2V0fSBmdW5jdGlvbi4KK0BlbmQgZGVm dW4KIAotQHZpbmRleCBleHRyYS1vZmZzZXRAcnsga2V5d29yZH0KLUBpdGVtIDpleHRyYS1v ZmZzZXQKLUFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBleHRyYSBzcGFjZXMgdG8g YWRkIHRvIHRoZSB3aWRnZXQncwotY2hpbGRyZW4gY29tcGFyZWQgdG8gdGhpcyB3aWRnZXQu CitAZGVmdW4gd2lkZ2V0LXR5cGUtZGVmYXVsdC1nZXQgd2lkZ2V0CitDb252ZXJ0IHRoZSBA Y29kZXs6dHlwZX0gYXR0cmlidXRlIGluIEB2YXJ7d2lkZ2V0fSBhbmQgcmV0dXJuIGl0cwor ZGVmYXVsdCB2YWx1ZS4KK0BlbmQgZGVmdW4KIAotQHZpbmRleCBub3RpZnlAcnsga2V5d29y ZH0KLUBpdGVtIDpub3RpZnkKLUEgZnVuY3Rpb24gY2FsbGVkIGVhY2ggdGltZSB0aGUgd2lk Z2V0IG9yIGEgbmVzdGVkIHdpZGdldCBpcyBjaGFuZ2VkLgotVGhlIGZ1bmN0aW9uIGlzIGNh bGxlZCB3aXRoIHR3byBvciB0aHJlZSBhcmd1bWVudHMuICBUaGUgZmlyc3QgYXJndW1lbnQK LWlzIHRoZSB3aWRnZXQgaXRzZWxmLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSB3aWRn ZXQgdGhhdCB3YXMKLWNoYW5nZWQsIGFuZCB0aGUgdGhpcmQgYXJndW1lbnQgaXMgdGhlIGV2 ZW50IGxlYWRpbmcgdG8gdGhlIGNoYW5nZSwgaWYKLWFueS4KK0BkZWZ1biB3aWRnZXQtY2hp bGQtdmFsdWUtZ2V0IHdpZGdldAorUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgbWVt YmVyIG9mIEBjb2RlezpjaGlsZHJlbn0gaW4KK0B2YXJ7d2lkZ2V0fS4KK0BlbmQgZGVmdW4K IAotQHZpbmRleCBtZW51LXRhZ0ByeyBrZXl3b3JkfQotQGl0ZW0gOm1lbnUtdGFnCi1UYWcg dXNlZCBpbiB0aGUgbWVudSB3aGVuIHRoZSB3aWRnZXQgaXMgdXNlZCBhcyBhbiBvcHRpb24g aW4gYQotQGNvZGV7bWVudS1jaG9pY2V9IHdpZGdldC4KK0BkZWZ1biB3aWRnZXQtY2hpbGQt dmFsdWUtaW5saW5lIHdpZGdldAorUmV0dXJuIHRoZSBpbmxpbmUgdmFsdWUgb2YgdGhlIGZp cnN0IG1lbWJlciBvZiBAY29kZXs6Y2hpbGRyZW59IGluCitAdmFye3dpZGdldH0uCiAKLUB2 aW5kZXggbWVudS10YWctZ2V0QHJ7IGtleXdvcmR9Ci1AaXRlbSA6bWVudS10YWctZ2V0Ci1G dW5jdGlvbiB1c2VkIGZvciBmaW5kaW5nIHRoZSB0YWcgd2hlbiB0aGUgd2lkZ2V0IGlzIHVz ZWQgYXMgYW4gb3B0aW9uCi1pbiBhIEBjb2Rle21lbnUtY2hvaWNlfSB3aWRnZXQuICBCeSBk ZWZhdWx0LCB0aGUgdGFnIHVzZWQgd2lsbCBiZSBlaXRoZXIgdGhlCi1AY29kZXs6bWVudS10 YWd9IG9yIEBjb2Rlezp0YWd9IHByb3BlcnR5IGlmIHByZXNlbnQsIG9yIHRoZSBAY29kZXtw cmluY30KLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBAY29kZXs6dmFsdWV9IHByb3BlcnR5IGlm IG5vdC4KK1RoZSBpbmxpbmUgdmFsdWUgaXMgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIHN0b3Jl ZCBpbgorQGNvZGV7OnZhbHVlLWlubGluZX0gcmV0dXJucy4KK0BlbmQgZGVmdW4KIAotQHZp bmRleCBtYXRjaEByeyBrZXl3b3JkfQotQGl0ZW0gOm1hdGNoCi1TaG91bGQgYmUgYSBmdW5j dGlvbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLCB0aGUgd2lkZ2V0IGFuZCBhbgotZXh0 ZXJuYWwgdmFsdWUsIGFuZCBzaG91bGQgcmV0dXJuIG5vbi1AY29kZXtuaWx9IGlmIHRoZSB3 aWRnZXQgY2FuCi1yZXByZXNlbnQgdGhlIHNwZWNpZmllZCB2YWx1ZS4KK0BkZWZ1biB3aWRn ZXQtdHlwZS12YWx1ZS1jcmVhdGUgd2lkZ2V0CitDcmVhdGUgYSBjaGlsZCB3aWRnZXQgZm9y IEB2YXJ7d2lkZ2V0fSwgb2YgdHlwZSBzdG9yZWQgaW4KK0Bjb2Rlezp0eXBlfS4KIAotQHZp bmRleCB2YWxpZGF0ZUByeyBrZXl3b3JkfQotQGl0ZW0gOnZhbGlkYXRlCi1BIGZ1bmN0aW9u IHdoaWNoIHRha2VzIGEgd2lkZ2V0IGFzIGFuIGFyZ3VtZW50LCBhbmQgcmV0dXJucyBAY29k ZXtuaWx9Ci1pZiB0aGUgd2lkZ2V0J3MgY3VycmVudCB2YWx1ZSBpcyB2YWxpZCBmb3IgdGhl IHdpZGdldC4gIE90aGVyd2lzZSBpdAotc2hvdWxkIHJldHVybiB0aGUgd2lkZ2V0IGNvbnRh aW5pbmcgdGhlIGludmFsaWQgZGF0YSwgYW5kIHNldCB0aGF0Ci13aWRnZXQncyBAY29kZXs6 ZXJyb3J9IHByb3BlcnR5IHRvIGEgc3RyaW5nIGV4cGxhaW5pbmcgdGhlIGVycm9yLgorQ3Jl YXRlcyB0aGUgY2hpbGQgd2lkZ2V0IHRha2luZyB0aGUgdmFsdWUgZnJvbSB0aGUgQGNvZGV7 OnZhbHVlfQorcHJvcGVydHkgYW5kIHN0b3JlcyB0aGUgbmV3bHkgY3JlYXRlZCB3aWRnZXQg aW4gdGhlIEBjb2RlezpjaGlsZHJlbn0KK3Byb3BlcnR5IG9mIEB2YXJ7d2lkZ2V0fS4KKwor VGhlIHZhbHVlIHN0b3JlZCBpbiBAY29kZXs6dHlwZX0gc2hvdWxkIGJlIGFuIHVuY29udmVy dGVkIHdpZGdldAordHlwZS4KK0BlbmQgZGVmdW4KIAotVGhlIGZvbGxvd2luZyBwcmVkZWZp bmVkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkOgorQGRlZnVuIHdpZGdldC12YWx1ZS1jb252ZXJ0 LXdpZGdldCB3aWRnZXQKK0luaXRpYWxpemVzIHRoZSBAY29kZXs6dmFsdWV9IHByb3BlcnR5 IG9mIEB2YXJ7d2lkZ2V0fSBmcm9tCitAY29kZXs6YXJnc30uCiAKLUBkZWZ1biB3aWRnZXQt Y2hpbGRyZW4tdmFsaWRhdGUgd2lkZ2V0Ci1BbGwgdGhlIEBjb2RlezpjaGlsZHJlbn0gb2Yg QHZhcnt3aWRnZXR9IG11c3QgYmUgdmFsaWQuCitTZXRzIEBjb2RlezphcmdzfSB0byBAY29k ZXtuaWx9IGFuZCByZXR1cm5zIHRoZSBtb2RpZmllZCB3aWRnZXQKK0B2YXJ7d2lkZ2V0fS4K IEBlbmQgZGVmdW4KIAotQHZpbmRleCB0YWItb3JkZXJAcnsga2V5d29yZH0KLUBpdGVtIDp0 YWItb3JkZXIKLVNwZWNpZnkgdGhlIG9yZGVyIGluIHdoaWNoIHdpZGdldHMgYXJlIHRyYXZl cnNlZCB3aXRoCi1AY29kZXt3aWRnZXQtZm9yd2FyZH0gb3IgQGNvZGV7d2lkZ2V0LWJhY2t3 YXJkfS4gIFRoaXMgaXMgb25seSBwYXJ0aWFsbHkKLWltcGxlbWVudGVkLgorQGRlZnVuIHdp ZGdldC12YWx1ZS12YWx1ZS1nZXQgd2lkZ2V0CitSZXR1cm4gdGhlIHZhbHVlIHN0b3JlZCBp biBAY29kZXs6dmFsdWV9IGZvciB3aWRnZXQgQHZhcnt3aWRnZXR9LgogCi1AZW51bWVyYXRl IGEKLUBpdGVtCi1XaWRnZXRzIHdpdGggdGFiYmluZyBvcmRlciBAY29kZXstMX0gYXJlIGln bm9yZWQuCitUaGlzIGlzIGRpZmZlcmVudCB0byBnZXR0aW5nIHRoZSBjdXJyZW50IHZhbHVl IGZvciBAdmFye3dpZGdldH0gd2l0aAorQGNvZGV7d2lkZ2V0LXZhbHVlfSwgc2luY2UgdGhh dCBmdW5jdGlvbiBleHRyYWN0cyB0aGUgdmFsdWUgZnJvbSB0aGUKK2J1ZmZlci4KK0BlbmQg ZGVmdW4KIAotQGl0ZW0KLShVbmltcGxlbWVudGVkKSBXaGVuIG9uIGEgd2lkZ2V0IHdpdGgg dGFiYmluZyBvcmRlciBAdmFye259LCBnbyB0byB0aGUKLW5leHQgd2lkZ2V0IGluIHRoZSBi dWZmZXIgd2l0aCB0YWJiaW5nIG9yZGVyIEB2YXJ7bisxfSBvciBAY29kZXtuaWx9LAotd2hp Y2hldmVyIGNvbWVzIGZpcnN0LgorQGRlZnVuIHdpZGdldC1hcHBseS1hY3Rpb24gd2lkZ2V0 ICZvcHRpb25hbCBldmVudAorQXBwbHkgdGhlIGZ1bmN0aW9uIHN0b3JlZCBpbiBAY29kZXs6 YWN0aW9ufSB0byBAdmFye3dpZGdldH0sIGluCityZXNwb25zZSB0byBAdmFye2V2ZW50fS4K IAotQGl0ZW0KLVdoZW4gb24gYSB3aWRnZXQgd2l0aCBubyB0YWJiaW5nIG9yZGVyIHNwZWNp ZmllZCwgZ28gdG8gdGhlIG5leHQgd2lkZ2V0CitJdCBpcyBhbiBlcnJvciB0byBjYWxsIHRo aXMgZnVuY3Rpb24gd2l0aCBhbiBpbmFjdGl2ZSB3aWRnZXQuCitAZW5kIGRlZnVuCisKK0Bk ZWZ1biB3aWRnZXQtcGFyZW50LWFjdGlvbiB3aWRnZXQgJm9wdGlvbmFsIGV2ZW50CitUZWxs IEBjb2RlezpwYXJlbnR9IG9mIEB2YXJ7d2lkZ2V0fSB0byBoYW5kbGUgQHZhcntldmVudH0u CisKK09wdGlvbmFsIEB2YXJ7ZXZlbnR9IGlzIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0 aGUgYWN0aW9uLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gd2lkZ2V0LWNoaWxkLXZhbGlkYXRl IHdpZGdldAorQ2hlY2sgdGhhdCB0aGUgZmlyc3QgbWVtYmVyIG9mIEBjb2RlezpjaGlsZHJl bn0gaW4gQHZhcnt3aWRnZXR9IGlzIHZhbGlkLgorCitUbyBiZSB2YWxpZCBtZWFucyB0aGF0 IHRoZSB3aWRnZXQgdmFsdWUgcGFzc2VzIHRoZSBjaGVja3MgdGhhdCB0aGUKK2Z1bmN0aW9u IHN0b3JlZCBpbiBAY29kZXs6dmFsaWRhdGV9IG1ha2VzLgorQGVuZCBkZWZ1bgorCitAZGVm dW4gd2lkZ2V0LWNoaWxkcmVuLXZhbGlkYXRlIHdpZGdldAorQ2hlY2sgdGhhdCBhbGwgQGNv ZGV7OmNoaWxkcmVufSBpbiBAdmFye3dpZGdldH0gYXJlIHZhbGlkLgorCitSZXR1cm5zIEBj b2Rle25pbH0gb24gc3VjY2Vzcywgb3IgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXNuJ3QgdmFs aWQuCitAZW5kIGRlZnVuCisKK0BkZWZ1biB3aWRnZXQtdHlwZS1tYXRjaCB3aWRnZXQgdmFs dWUKK1JldHVybiBub24tQGNvZGV7bmlsfSBpZiBAdmFye1ZBTFVFfSBtYXRjaGVzIHRoZSB2 YWx1ZSBmb3IgdGhlCitAY29kZXs6dHlwZX0gd2lkZ2V0LgorCitBcyB3aXRoIHRoZSBvdGhl ciB0eXBlIGZ1bmN0aW9ucywgdGhlIHdpZGdldCBzdG9yZWQgaW4gQGNvZGV7OnR5cGV9Citz aG91bGQgYmUgYW4gdW5jb252ZXJ0ZWQgd2lkZ2V0LgorQGVuZCBkZWZ1bgorCitAZGVmdW4g d2lkZ2V0LXR5cGVzLWNvcHkgd2lkZ2V0CitDb3B5IHRoZSBAY29kZXs6YXJnc30gdmFsdWUg aW4gQHZhcnt3aWRnZXR9IGFuZCBzdG9yZSB0aGVtIGluIEBjb2RlezphcmdzfS4KKworTWFr ZXMgdGhlIGNvcGllcyBieSBjYWxsaW5nIEBjb2Rle3dpZGdldC1jb3B5fSBvbiBlYWNoIGVs ZW1lbnQgcHJlc2VudAoraW4gQGNvZGV7OmFyZ3N9LiAgUmV0dXJucyB0aGUgbW9kaWZpZWQg d2lkZ2V0IEB2YXJ7d2lkZ2V0fS4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHdpZGdldC10eXBl cy1jb252ZXJ0LXdpZGdldCB3aWRnZXQKK0NvbnZlcnQgdGhlIEBjb2RlezphcmdzfSB2YWx1 ZSBpbiBAdmFye3dpZGdldH0gYW5kIHN0b3JlIHRoZW0gaW4KK0Bjb2Rle2FyZ3N9LgorCitS ZXR1cm5zIHRoZSBtb2RpZmllZCB3aWRnZXQgQHZhcnt3aWRnZXR9LgorQGVuZCBkZWZ1bgor CitAbm9kZSBXaWRnZXRzIGFuZCB0aGUgQnVmZmVyCitAY2hhcHRlciBXaWRnZXRzIGFuZCB0 aGUgQnVmZmVyCitUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGNvbW1hbmRzIHRoYXQgYXJlIHNw ZWNpZmljIHRvIGJ1ZmZlcnMgdGhhdAorY29udGFpbiB3aWRnZXRzLgorCitAZGVmdnIgQ29u c3Qgd2lkZ2V0LWtleW1hcAorS2V5bWFwIGNvbnRhaW5pbmcgdXNlZnVsIGJpbmRpbmdzIGZv ciBidWZmZXJzIGNvbnRhaW5pbmcgd2lkZ2V0cy4KKworQmluZHMgQGtleXtUQUJ9IGFuZCBA a2Jke0MtQGtleXtUQUJ9fSB0byBAY29kZXt3aWRnZXQtZm9yd2FyZH0gYW5kCitAY29kZXt3 aWRnZXQtYmFja3dhcmR9LCByZXNwZWN0aXZlbHkuICBJdCBhbHNvIGJpbmRzIEBrZXl7UkVU fSB0bworQGNvZGV7d2lkZ2V0LWJ1dHRvbi1wcmVzc30gYW5kIEBrYmR7ZG93bi1tb3VzZS0x fSBhbmQKK0BrYmR7ZG93bi1tb3VzZS0yfSB0byBAY29kZXt3aWRnZXQtYnV0dG9uLWNsaWNr fS4KK0BlbmQgZGVmdnIKKworVGhlcmUncyBhbHNvIGEga2V5bWFwIGZvciBldmVudHMgdGhh dCB0aGUgd2lkZ2V0IGxpYnJhcnkgZG9lc24ndCBuZWVkCit0byBoYW5kbGUuCisKK0BkZWZ2 YXIgd2lkZ2V0LWdsb2JhbC1tYXAKK0tleW1hcCB1c2VkIGJ5IEBjb2Rle3dpZGdldC1idXR0 b24tcHJlc3N9IGFuZCBAY29kZXt3aWRnZXQtYnV0dG9uLWNsaWNrfQord2hlbiBub3Qgb24g YSBidXR0b24uICBCeSBkZWZhdWx0IHRoaXMgaXMgQGNvZGV7Z2xvYmFsLW1hcH0uCitAZW5k IGRlZnZhcgorCitJbiBhZGRpdGlvbiB0byB0aGVzZSB0d28ga2V5bWFwcywgZWFjaCB3aWRn ZXQgbWlnaHQgZGVmaW5lIGEga2V5bWFwIG9mCitpdHMgb3duLCBhY3RpdmUgd2hlbiBldmVu dHMgaGFwcGVuIGF0IHRoYXQgd2lkZ2V0LgorCisKK1RoZSBmb2xsb3dpbmcgbmF2aWdhdGlv biBjb21tYW5kcyBhcmUgYXZhaWxhYmxlOgorCitAdGFibGUgQGtiZAorQGl0ZW0gQGtleXtU QUJ9CitAZGVmZm4gQ29tbWFuZCB3aWRnZXQtZm9yd2FyZCAmb3B0aW9uYWwgY291bnQKK01v dmUgcG9pbnQgQHZhcntjb3VudH0gYnV0dG9ucyBvciBlZGl0aW5nIGZpZWxkcyBmb3J3YXJk LgorQGVuZCBkZWZmbgorQGl0ZW0gQGtiZHtNLUBrZXl7VEFCfX0KK0BpdGVteCBAa2Jke1Mt QGtleXtUQUJ9fQorQGRlZmZuIENvbW1hbmQgd2lkZ2V0LWJhY2t3YXJkICZvcHRpb25hbCBj b3VudAorTW92ZSBwb2ludCBAdmFye2NvdW50fSBidXR0b25zIG9yIGVkaXRpbmcgZmllbGRz IGJhY2t3YXJkLgorQGVuZCBkZWZmbgorQGVuZCB0YWJsZQorCisKK1doZW4gZWRpdGluZyBh biBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0LCB0aGUgZm9sbG93aW5nIGNvbW1hbmRz CithcmUgYXZhaWxhYmxlOgorCitAdGFibGUgQGtiZAorQGl0ZW0gQGtleXtDLWV9CitAZGVm Zm4gQ29tbWFuZCB3aWRnZXQtZW5kLW9mLWxpbmUKK01vdmUgcG9pbnQgdG8gdGhlIGVuZCBv ZiBmaWVsZCBvciBlbmQgb2YgbGluZSwgd2hpY2hldmVyIGlzIGZpcnN0LgorQGVuZCBkZWZm bgorCitAaXRlbSBAa2Jke0Mta30KK0BkZWZmbiBDb21tYW5kIHdpZGdldC1raWxsLWxpbmUK K0tpbGwgdG8gZW5kIG9mIGZpZWxkIG9yIGVuZCBvZiBsaW5lLCB3aGljaGV2ZXIgaXMgZmly c3QuCitAZW5kIGRlZmZuCisKK0BpdGVtIEBrYmR7TS1UQUJ9CitAZGVmZm4gQ29tbWFuZCB3 aWRnZXQtY29tcGxldGUKK0NvbXBsZXRlIHRoZSBjb250ZW50IG9mIHRoZSBlZGl0YWJsZSBm aWVsZCBhdCBwb2ludC4KK0BlbmQgZGVmZm4KKworQGl0ZW0gQGtiZHtDLW19CitAZGVmZm4g Q29tbWFuZCB3aWRnZXQtZmllbGQtYWN0aXZhdGUKK0ludm9rZSB0aGUgZWRpdGFibGUgZmll bGQgYXQgcG9pbnQuCitAZW5kIGRlZmZuCitAZW5kIHRhYmxlCisKK1RoZSBmb2xsb3dpbmcg dHdvIGFyZSBjb21tYW5kcyB0aGF0IGNhbiBleGVjdXRlIHdpZGdldCBhY3Rpb25zLgorQHRh YmxlIEBrYmQKK0BpdGVtIEBrZXl7UkVUfQorQGZpbmRleCB3aWRnZXQtYnV0dG9uLXByZXNz CitAZGVmZm4gQ29tbWFuZCB3aWRnZXQtYnV0dG9uLXByZXNzIEB2YXJ7cG9zfSAmb3B0aW9u YWwgQHZhcntldmVudH0KK0ludm9rZSB0aGUgYnV0dG9uIGF0IEB2YXJ7cG9zfSwgZGVmYXVs dGluZyB0byBwb2ludC4KKworSW52b2NhdGlvbiBtZWFucyB0byBydW4gdGhlIGZ1bmN0aW9u IHN0b3JlZCBpbiB0aGUgQGNvZGV7OmFjdGlvbn0KK3Byb3BlcnR5LgorCitJZiBwb2ludCBp cyBub3QgbG9jYXRlZCBvbiBhIGJ1dHRvbiwgaW52b2tlIHRoZSBiaW5kaW5nIGluCitAY29k ZXt3aWRnZXQtZ2xvYmFsLW1hcH0gKGJ5IGRlZmF1bHQgdGhlIGdsb2JhbCBtYXApLgorQGVu ZCBkZWZmbgorCitAa2luZGV4IG1vdXNlLTIgQHJ7KG9uIGJ1dHRvbiB3aWRnZXRzfSkKK0Bp dGVtIG1vdXNlLTIKK0BmaW5kZXggd2lkZ2V0LWJ1dHRvbi1jbGljaworQGRlZmZuIENvbW1h bmQgd2lkZ2V0LWJ1dHRvbi1jbGljayBAdmFye2V2ZW50fQorSW52b2tlIHRoZSBidXR0b24g YXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBtb3VzZSBwb2ludGVyLgorCitJZiB0aGUgbW91c2Ug cG9pbnRlciBpcyBsb2NhdGVkIGluIGFuIGVkaXRhYmxlIHRleHQgZmllbGQsIGludm9rZSB0 aGUKK2JpbmRpbmcgaW4gQGNvZGV7d2lkZ2V0LWdsb2JhbC1tYXB9IChieSBkZWZhdWx0IHRo ZSBnbG9iYWwgbWFwKS4KKworSW4gY2FzZSB0aGUgbW91c2UtY2xpY2sgaXMgb24gYSB3aWRn ZXQsIGNhbGxzIHRoZSBmdW5jdGlvbiBzdG9yZWQgaW4KK3RoZSBAY29kZXs6bW91c2UtZG93 bi1hY3Rpb259IHByb3BlcnR5LgorQGVuZCBkZWZmbgorQGVuZCB0YWJsZQorCitAbm9kZSBX aWRnZXQgR2FsbGVyeQorQGNoYXB0ZXIgV2lkZ2V0IEdhbGxlcnkKK0BjaW5kZXggd2lkZ2V0 IHN5bnRheAorQWxsIHdpZGdldHMgY2FuIGJlIGNyZWF0ZWQgZnJvbSBhIHR5cGUgc3BlY2lm aWNhdGlvbi4gIFRoZSBnZW5lcmFsCitzeW50YXggb2YgYSB0eXBlIHNwZWNpZmljYXRpb24g aXM6CisKK0BjIEZJWE1FOiBBZGQgQk5GIHJlZmVyZW5jZSBoZXJlPyBJZiB5ZXMsIHdoYXQg cmVmZXJlbmNlPworQGV4YW1wbGUKK0B2YXJ7bmFtZX0gOjo9IChAdmFye25hbWV9IFtAdmFy e2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiBAdmFye2FyZ3N9KQorICAgICB8ICAgQHZh cntuYW1lfQorQGVuZCBleGFtcGxlCisKK1doZXJlIEB2YXJ7bmFtZX0gaXMgYSB3aWRnZXQg bmFtZSwgYXMgZGVmaW5lZCB3aXRoCitAY29kZXtkZWZpbmUtd2lkZ2V0fSwgQHZhcntrZXl3 b3JkfSBpcyB0aGUgbmFtZSBvZiBhIHByb3BlcnR5IGFuZAorQHZhcnthcmd1bWVudH0gaXMg dGhlIHZhbHVlIGZvciB0aGF0IHByb3BlcnR5LCBhbmQgQHZhcnthcmdzfSBhcmUKK2ludGVy cHJldGVkIGluIGEgd2lkZ2V0IHNwZWNpZmljIHdheS4gIEB4cmVme0RlZmluaW5nIE5ldyBX aWRnZXRzfS4KKworVGhlIG1vc3QgYmFzaWMgd2lkZ2V0IGluIHRoZSBXaWRnZXQgTGlicmFy eSBpcyB0aGUgQGRmbntkZWZhdWx0fQord2lkZ2V0LiAgSXQgcHJvdmlkZXMgdGhlIGJhc2lj IGJlaGF2aW9yIGZvciBhbGwgb3RoZXIgd2lkZ2V0cywgYW5kIGFsbAoraXRzIHByb3BlcnRp ZXMgYXJlIHByZXNlbnQgYnkgZGVmYXVsdCBpbiBkZXJpdmVkIHdpZGdldHMuICBZb3UncmUK K3NlbGRvbSAoaWYgZXZlcikgZ29pbmcgdG8gZWZmZWN0aXZlbHkgY3JlYXRlIGEgZGVmYXVs dCB3aWRnZXQsIGJ1dAoraGVyZSB3ZSBkZXNjcmliZSBpdHMgcHJvcGVydGllcyBhbmQgYmVo YXZpb3IsIHNvIHRoYXQgd2UgY2FuIGRlc2NyaWJlCitvdGhlciB3aWRnZXRzIG9ubHkgYnkg bWVudGlvbmluZyB0aGUgcHJvcGVydGllcyBhbmQgYmVoYXZpb3IgdGhvc2UKK290aGVyIHdp ZGdldHMgc3BlY2lhbGl6ZS4KKworQGRlZmZuIFdpZGdldCBkZWZhdWx0CitXaWRnZXQgdXNl ZCBhcyBhIGJhc2UgZm9yIG90aGVyIHdpZGdldHMuCisKK0l0IHByb3ZpZGVzIG1vc3Qgb2Yg dGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyByZWZlcnJlZCB0byBhcyBgYGJ5CitkZWZhdWx0 JycgaW4gdGhpcyB0ZXh0LiAgSWYgeW91IHdhbnQgdG8gZGVmaW5lIGEgbmV3IHdpZGdldCBm cm9tCitzY3JhdGNoLCB1c2UgdGhlIEBjb2Rle2RlZmF1bHR9IHdpZGdldCBhcyBpdHMgYmFz ZS4KK0BlbmQgZGVmZm4KKworQGNpbmRleCBrZXl3b3JkIGFyZ3VtZW50cworVGhlIGZvbGxv d2luZyBrZXl3b3JkIGFyZ3VtZW50cyBhcHBseSB0byBhbGwgd2lkZ2V0czoKKworQHRhYmxl IEBjb2RlCitAdmluZGV4IGNyZWF0ZUByeyBrZXl3b3JkfQorQGl0ZW0gOmNyZWF0ZQorRnVu Y3Rpb24gdG8gY3JlYXRlIGEgd2lkZ2V0IGZyb20gc2NyYXRjaC4KKworVGhlIGZ1bmN0aW9u IHRha2VzIG9uZSBhcmd1bWVudCwgYSB3aWRnZXQgdHlwZSwgYW5kIGNyZWF0ZXMgYSB3aWRn ZXQKK29mIHRoYXQgdHlwZSwgaW5zZXJ0cyBpdCBpbiB0aGUgYnVmZmVyLCBhbmQgcmV0dXJu cyBhIHdpZGdldCBvYmplY3QuCisKK0J5IGRlZmF1bHQsIGl0IGluc2VydHMgdGhlIHdpZGdl dCBhdCBwb2ludCwgdXNpbmcgdGhlIGZvcm1hdCBwcm92aWRlZAoraW4gdGhlIEBjb2Rlezpm b3JtYXR9IHByb3BlcnR5LgorCitAdmluZGV4IGRlbGV0ZUByeyBrZXl3b3JkfQorQGl0ZW0g OmRlbGV0ZQorRnVuY3Rpb24gdG8gZGVsZXRlIGEgd2lkZ2V0LgorCitUaGUgZnVuY3Rpb24g c2hvdWxkIHRha2Ugb25lIGFyZ3VtZW50LCBhIHdpZGdldCwgYW5kIHNob3VsZCByZW1vdmUg YWxsCit0cmFjZXMgb2YgdGhlIHdpZGdldCBmcm9tIHRoZSBidWZmZXIuCisKK1RoZSBkZWZh dWx0IHZhbHVlIGlzOgorCitAZGVmdW4gd2lkZ2V0LWRlZmF1bHQtZGVsZXRlIHdpZGdldAor UmVtb3ZlIEB2YXJ7d2lkZ2V0fSBmcm9tIHRoZSBidWZmZXIuCitEZWxldGUgYWxsIEBjb2Rl ezpjaGlsZHJlbn0gYW5kIEBjb2RlezpidXR0b25zfSBpbiBAdmFye3dpZGdldH0uCitAZW5k IGRlZnVuCisKK0luIG1vc3QgY2FzZXMgeW91IHNob3VsZCBub3QgY2hhbmdlIHRoaXMgdmFs dWUsIGJ1dCBpbnN0ZWFkIHVzZQorQGNvZGV7OnZhbHVlLWRlbGV0ZX0gdG8gbWFrZSBhbnkg YWRkaXRpb25hbCBjbGVhbnVwLgorCitAY2luZGV4IGludGVybmFsIGZvcm1hdAorQGNpbmRl eCBleHRlcm5hbCBmb3JtYXQKK0B2aW5kZXggdmFsdWVAcnsga2V5d29yZH0KK0BpdGVtIDp2 YWx1ZQorVGhlIGluaXRpYWwgdmFsdWUgZm9yIHdpZGdldHMgb2YgdGhpcyB0eXBlLgorCitU eXBpY2FsbHksIGEgd2lkZ2V0IHJlcHJlc2VudHMgaXRzIHZhbHVlIGluIHR3byBmb3JtYXRz OiBleHRlcm5hbCBhbmQKK2ludGVybmFsLiAgVGhlIGV4dGVybmFsIGZvcm1hdCBpcyB0aGUg dmFsdWUgYXMgdGhlIHJlc3Qgb2YgRW1hY3Mgc2VlcworaXQsIGFuZCB0aGUgaW50ZXJuYWwg Zm9ybWF0IGlzIGEgcmVwcmVzZW50YXRpb24gdGhhdCB0aGUgd2lkZ2V0CitkZWZpbmVzIGFu ZCB1c2VzIGluIGEgd2lkZ2V0IHNwZWNpZmljIHdheS4KKworQm90aCBmb3JtYXRzIG1pZ2h0 IGJlIHRoZSBzYW1lIGZvciBjZXJ0YWluIHdpZGdldHMgYW5kIG1pZ2h0IGRpZmZlcgorZm9y IG90aGVycywgYW5kIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB3aGljaCBmb3JtYXQg dGhlIHZhbHVlCitzdG9yZWQgaW4gdGhlIEBjb2Rlezp2YWx1ZX0gcHJvcGVydHkgaGFzLiAg SG93ZXZlciwgd2hlbiBjcmVhdGluZyBhCit3aWRnZXQgb3IgZGVmaW5pbmcgYSBuZXcgb25l IChAcHhyZWZ7RGVmaW5pbmcgTmV3IFdpZGdldHN9KSwgdGhlCitAY29kZXs6dmFsdWV9IHNo b3VsZCBiZSBpbiB0aGUgZXh0ZXJuYWwgZm9ybWF0LgorCitAdmluZGV4IHZhbHVlLXRvLWlu dGVybmFsQHJ7IGtleXdvcmR9CitAaXRlbSA6dmFsdWUtdG8taW50ZXJuYWwKK0Z1bmN0aW9u IHRvIGNvbnZlcnQgdGhlIHZhbHVlIHRvIHRoZSBpbnRlcm5hbCBmb3JtYXQuCisKK1RoZSBm dW5jdGlvbiB0YWtlcyB0d28gYXJndW1lbnRzLCBhIHdpZGdldCBhbmQgYW4gZXh0ZXJuYWwg dmFsdWUsIGFuZAorcmV0dXJucyB0aGUgaW50ZXJuYWwgdmFsdWUuICBUaGUgZnVuY3Rpb24g aXMgY2FsbGVkIG9uIHRoZSBwcmVzZW50CitAY29kZXs6dmFsdWV9IHdoZW4gdGhlIHdpZGdl dCBpcyBjcmVhdGVkLCBhbmQgb24gYW55IHZhbHVlIHNldCBsYXRlcgord2l0aCBAY29kZXt3 aWRnZXQtdmFsdWUtc2V0fS4KKworQHZpbmRleCB2YWx1ZS10by1leHRlcm5hbEByeyBrZXl3 b3JkfQorQGl0ZW0gOnZhbHVlLXRvLWV4dGVybmFsCitGdW5jdGlvbiB0byBjb252ZXJ0IHRo ZSB2YWx1ZSB0byB0aGUgZXh0ZXJuYWwgZm9ybWF0LgorCitUaGUgZnVuY3Rpb24gdGFrZXMg dHdvIGFyZ3VtZW50cywgYSB3aWRnZXQgYW5kIGFuIGludGVybmFsIHZhbHVlLCBhbmQKK3Jl dHVybnMgdGhlIHZhbHVlIGluIHRoZSBleHRlcm5hbCBmb3JtYXQuCisKK0B2aW5kZXggdmFs dWUtY3JlYXRlQHJ7IGtleXdvcmR9CitAaXRlbSA6dmFsdWUtY3JlYXRlCitGdW5jdGlvbiB0 byBleHBhbmQgdGhlIEBzYW1weyV2fSBlc2NhcGUgaW4gdGhlIGZvcm1hdCBzdHJpbmcuCisK K0l0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHdpZGdldCBhcyBpdHMgYXJndW1lbnQgYW5k IHNob3VsZCBpbnNlcnQgYQorcmVwcmVzZW50YXRpb24gb2YgdGhlIHdpZGdldCdzIHZhbHVl IGluIHRoZSBidWZmZXIuCisKK0B2aW5kZXggdmFsdWUtZGVsZXRlQHJ7IGtleXdvcmR9CitA aXRlbSA6dmFsdWUtZGVsZXRlCitBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHJlbW92ZSB0aGUg cmVwcmVzZW50YXRpb24gb2YgdGhlIHdpZGdldCdzIHZhbHVlCitmcm9tIHRoZSBidWZmZXIu CisKK0l0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHdpZGdldCBhcyBpdHMgYXJndW1lbnQu ICBJdCBkb2Vzbid0IGhhdmUgdG8KK3JlbW92ZSB0aGUgdGV4dCwgYnV0IGl0IHNob3VsZCBy ZWxlYXNlIG1hcmtlcnMgYW5kIGRlbGV0ZSBuZXN0ZWQgd2lkZ2V0cworaWYgdGhlc2UgYXJl IG5vdCBsaXN0ZWQgaW4gQGNvZGV7OmNoaWxkcmVufSBvciBAY29kZXs6YnV0dG9uc30uCisK K0J5IGRlZmF1bHQsIGl0J3MgYSBuby1vcC4KKworQHZpbmRleCB2YWx1ZS1nZXRAcnsga2V5 d29yZH0KK0BpdGVtIDp2YWx1ZS1nZXQKK0Z1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIHZhbHVl IG9mIGEgd2lkZ2V0LCBhcyBpdCBpcyBkaXNwbGF5ZWQgaW4gdGhlCitidWZmZXIuCisKK0B2 aW5kZXggdmFsdWUtc2V0QHJ7IGtleXdvcmR9CitAaXRlbSA6dmFsdWUtc2V0CitGdW5jdGlv biB0aGF0IHRha2VzIGEgd2lkZ2V0IGFuZCBhIHZhbHVlIGFzIGFyZ3VtZW50cywgYW5kIHJl Y3JlYXRlcworaXQuCisKK1RoZSB2YWx1ZSBtdXN0IGFscmVhZHkgYmUgaW4gdGhlIGludGVy bmFsIGZvcm1hdCBmb3Igd2lkZ2V0LiAgQnkKK2RlZmF1bHQsIGl0IGRlbGV0ZXMgdGhlIHdp ZGdldCB3aXRoIHRoZSBAY29kZXs6ZGVsZXRlfSBmdW5jdGlvbiBhbmQKK2NyZWF0ZXMgaXQg YWdhaW4gd2l0aCB0aGUgQGNvZGV7OmNyZWF0ZX0gZnVuY3Rpb24uCisKK0B2aW5kZXggdmFs dWUtaW5saW5lQHJ7IGtleXdvcmR9CitAaXRlbSA6dmFsdWUtaW5saW5lCitGdW5jdGlvbiB0 aGF0IHRha2VzIGEgd2lkZ2V0IGFuZCByZXR1cm5zIGl0cyB2YWx1ZSwgaW5saW5lZC4KKwor SW5saW5lZCBtZWFucyB0aGF0IGlmIHRoZSB3aWRnZXQgaXMgbm90IGlubGluZSAoaS5lLiwg aXRzCitAY29kZXs6aW5saW5lfSBwcm9wZXJ0eSBpcyBAY29kZXtuaWx9KSwgdGhlIHJldHVy biB2YWx1ZSBpcyB3cmFwcGVkIGluCithIGxpc3QuCisKK0B2aW5kZXggZGVmYXVsdC1nZXRA cnsga2V5d29yZH0KK0BpdGVtIDpkZWZhdWx0LWdldAorRnVuY3Rpb24gdGhhdCB0YWtlcyBh IHdpZGdldCBhbmQgcmV0dXJucyBpdHMgZGVmYXVsdCB2YWx1ZS4KKworQnkgZGVmYXVsdCwg aXQganVzdCByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgaW4gQGNvZGV7OnZhbHVlfS4KKwor QHZpbmRleCBmb3JtYXRAcnsga2V5d29yZH0KK0BpdGVtIDpmb3JtYXQKK1RoaXMgc3RyaW5n IHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlIGJ1ZmZlciB3aGVuIHlvdSBjcmVhdGUgYSB3aWRn ZXQuCitUaGUgZm9sbG93aW5nIEBzYW1weyV9IGVzY2FwZXMgYXJlIGF2YWlsYWJsZToKKwor QHRhYmxlIEBzYW1wCitAaXRlbSAlWworQGl0ZW14ICVdCitUaGUgdGV4dCBpbnNpZGUgd2ls bCBiZSBtYXJrZWQgYXMgYSBidXR0b24uCisKK0J5IGRlZmF1bHQsIHRoZSB0ZXh0IHdpbGwg YmUgc2hvd24gaW4gQGNvZGV7d2lkZ2V0LWJ1dHRvbi1mYWNlfSwgYW5kCitzdXJyb3VuZGVk IGJ5IGJyYWNrZXRzLgorCitAaXRlbSAlQHsKK0BpdGVteCAlQH0KK1RoZSB0ZXh0IGluc2lk ZSB3aWxsIGJlIGRpc3BsYXllZCB3aXRoIHRoZSBmYWNlIHNwZWNpZmllZCBieQorQGNvZGV7 OnNhbXBsZS1mYWNlfS4KKworQGl0ZW0gJXYKK1RoaXMgd2lsbCBiZSByZXBsYWNlZCB3aXRo IHRoZSBidWZmZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIHdpZGdldCdzCit2YWx1ZS4gIFdo YXQgdGhpcyBpcyBkZXBlbmRzIG9uIHRoZSB3aWRnZXQgdHlwZS4KKworQGl0ZW0gJWQKK0lu c2VydCB0aGUgc3RyaW5nIHNwZWNpZmllZCBieSBAY29kZXs6ZG9jfSBoZXJlLgorCitAaXRl bSAlaAorTGlrZSBAc2FtcHslZH0sIHdpdGggdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb25z OiBJZiB0aGUgZG9jdW1lbnRhdGlvbgorc3RyaW5nIGlzIG1vcmUgdGhhbiBvbmUgbGluZSwg aXQgd2lsbCBhZGQgYSBidXR0b24gd2hpY2ggd2lsbCB0b2dnbGUKK2JldHdlZW4gc2hvd2lu ZyBvbmx5IHRoZSBmaXJzdCBsaW5lLCBhbmQgc2hvd2luZyB0aGUgZnVsbCB0ZXh0LgorRnVy dGhlcm1vcmUsIGlmIHRoZXJlIGlzIG5vIEBjb2Rlezpkb2N9IHByb3BlcnR5IGluIHRoZSB3 aWRnZXQsIGl0IHdpbGwKK2luc3RlYWQgZXhhbWluZSB0aGUgQGNvZGV7OmRvY3VtZW50YXRp b24tcHJvcGVydHl9IHByb3BlcnR5LiAgSWYgaXQgaXMgYQorbGFtYmRhIGV4cHJlc3Npb24s IGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHdpZGdldCdzIHZhbHVlIGFzIGFuCithcmd1 bWVudCwgYW5kIHRoZSByZXN1bHQgd2lsbCBiZSB1c2VkIGFzIHRoZSBkb2N1bWVudGF0aW9u IHRleHQuCisKK0BpdGVtICV0CitJbnNlcnQgdGhlIHN0cmluZyBzcGVjaWZpZWQgYnkgQGNv ZGV7OnRhZ30gaGVyZSwgb3IgdGhlIEBjb2Rle3ByaW5jfQorcmVwcmVzZW50YXRpb24gb2Yg dGhlIHZhbHVlIGlmIHRoZXJlIGlzIG5vIHRhZy4KKworQGl0ZW0gJSUKK0luc2VydCBhIGxp dGVyYWwgQHNhbXB7JX0uCitAZW5kIHRhYmxlCisKK0B2aW5kZXggYnV0dG9uLWZhY2VAcnsg a2V5d29yZH0KK0BpdGVtIDpidXR0b24tZmFjZQorRmFjZSB1c2VkIHRvIGhpZ2hsaWdodCB0 ZXh0IGluc2lkZSAlWyAlXSBpbiB0aGUgZm9ybWF0LgorCitAdmluZGV4IGJ1dHRvbi1wcmVm aXhAcnsga2V5d29yZH0KK0B2aW5kZXggYnV0dG9uLXN1ZmZpeEByeyBrZXl3b3JkfQorQGl0 ZW0gOmJ1dHRvbi1wcmVmaXgKK0BpdGVteCA6YnV0dG9uLXN1ZmZpeAorU3RyaW5ncyB1c2Vk IGFzIHByZWZpeCBhbmQgc3VmZml4IGZvciB3aWRnZXRzIHRoYXQgYXJlIGJ1dHRvbnMuCisK K0J5IGRlZmF1bHQsIHRoZSB2YWx1ZXMgYXJlIEBjb2Rle3dpZGdldC1idXR0b24tcHJlZml4 fSBhbmQKK0Bjb2Rle3dpZGdldC1idXR0b24tc3VmZml4fS4KKworVGV4dCBhcm91bmQgJVsg JV0gaW4gdGhlIGZvcm1hdC4KKworVGhlc2UgY2FuIGJlCitAdGFibGUgQGVtcGgKK0BpdGVt IG5pbAorTm8gdGV4dCBpcyBpbnNlcnRlZC4KKworQGl0ZW0gYSBzdHJpbmcKK1RoZSBzdHJp bmcgaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LgorCitAaXRlbSBhIHN5bWJvbAorVGhlIHZhbHVl IG9mIHRoZSBzeW1ib2wgaXMgZXhwYW5kZWQgYWNjb3JkaW5nIHRvIHRoaXMgdGFibGUuCitA ZW5kIHRhYmxlCisKK0B2aW5kZXggZG9jQHJ7IGtleXdvcmR9CitAaXRlbSA6ZG9jCitUaGUg c3RyaW5nIGluc2VydGVkIGJ5IHRoZSBAc2FtcHslZH0gZXNjYXBlIGluIHRoZSBmb3JtYXQK K3N0cmluZy4KKworQHZpbmRleCB0YWdAcnsga2V5d29yZH0KK0BpdGVtIDp0YWcKK1RoZSBz dHJpbmcgaW5zZXJ0ZWQgYnkgdGhlIEBzYW1weyV0fSBlc2NhcGUgaW4gdGhlIGZvcm1hdAor c3RyaW5nLgorCitAdmluZGV4IHRhZy1nbHlwaEByeyBrZXl3b3JkfQorQGl0ZW0gOnRhZy1n bHlwaAorTmFtZSBvZiBpbWFnZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgc3RyaW5nIHNwZWNp ZmllZCBieSBAY29kZXs6dGFnfSBvbgorRW1hY3NlbiB0aGF0IHN1cHBvcnRzIGl0LgorCitA dmluZGV4IGhlbHAtZWNob0ByeyBrZXl3b3JkfQorQGl0ZW0gOmhlbHAtZWNobworU3BlY2lm aWVzIGhvdyB0byBkaXNwbGF5IGEgbWVzc2FnZSB3aGVuZXZlciB5b3UgbW92ZSB0byB0aGUg d2lkZ2V0IHdpdGgKK2VpdGhlciBAY29kZXt3aWRnZXQtZm9yd2FyZH0gb3IgQGNvZGV7d2lk Z2V0LWJhY2t3YXJkfSBvciBtb3ZlIHRoZSBtb3VzZQorb3ZlciBpdCAodXNpbmcgdGhlIHN0 YW5kYXJkIEBjb2Rle2hlbHAtZWNob30gbWVjaGFuaXNtKS4KKworVGhlIHZhbHVlIGlzIGVp dGhlciBhIHN0cmluZyB0byBkaXNwbGF5LCBvciBhIGZ1bmN0aW9uIG9mIG9uZQorYXJndW1l bnQsIHRoZSB3aWRnZXQuICBJZiBhIGZ1bmN0aW9uLCBpdCBzaG91bGQgcmV0dXJuIGEgc3Ry aW5nIHRvCitkaXNwbGF5LCBvciBhIGZvcm0gdGhhdCBldmFsdWF0ZXMgdG8gc3VjaCBhIHN0 cmluZy4KKworQHZpbmRleCBmb2xsb3ctbGlua0ByeyBrZXl3b3JkfQorQGl0ZW0gOmZvbGxv dy1saW5rCitTcGVjaWZpZXMgaG93IHRvIGludGVycHJldCBhIEBrZXl7bW91c2UtMX0gY2xp Y2sgb24gdGhlIHdpZGdldC4KK0B4cmVme0NsaWNrYWJsZSBUZXh0LCwgRGVmaW5pbmcgQ2xp Y2thYmxlIFRleHQsIGVsaXNwLCB0aGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfS4K KworQHZpbmRleCBpbmRlbnRAcnsga2V5d29yZH0KK0BpdGVtIDppbmRlbnQKK0FuIGludGVn ZXIgaW5kaWNhdGluZyB0aGUgYWJzb2x1dGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQg Y2hpbGRyZW4KK29mIHRoaXMgd2lkZ2V0LiAgSXRzIHZhbHVlIG1pZ2h0IGJlIEBjb2Rle25p bH0gdG9vLCB3aGljaCBjb3JyZXNwb25kcwordG8gYSB2YWx1ZSBvZiAwLgorCitUaGUgZGVm YXVsdCBAY29kZXs6Y3JlYXRlfSBmdW5jdGlvbnMgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBj cmVhdGUgdGhlCit2YWx1ZSBwZXIgc2UgdXNlIHRoaXMgcHJvcGVydHkgYXMgYSBydWRpbWVu dGFyeSBsYXlvdXQgbWVjaGFuaXNtIGZvcgordGhlIHdpZGdldHMuCisKK0B2aW5kZXggb2Zm c2V0QHJ7IGtleXdvcmR9CitAaXRlbSA6b2Zmc2V0CitBbiBpbnRlZ2VyIGluZGljYXRpbmcg aG93IG1hbnkgZXh0cmEgc3BhY2VzIHRvIGFkZCB0byB0aGUgd2lkZ2V0J3MKK2dyYW5kY2hp bGRyZW4gY29tcGFyZWQgdG8gdGhpcyB3aWRnZXQuCisKK0B2aW5kZXggZXh0cmEtb2Zmc2V0 QHJ7IGtleXdvcmR9CitAaXRlbSA6ZXh0cmEtb2Zmc2V0CitBbiBpbnRlZ2VyIGluZGljYXRp bmcgaG93IG1hbnkgZXh0cmEgc3BhY2VzIHRvIGFkZCB0byB0aGUgd2lkZ2V0J3MKK2NoaWxk cmVuIGNvbXBhcmVkIHRvIHRoaXMgd2lkZ2V0LgorCitAdmluZGV4IG1lbnUtdGFnQHJ7IGtl eXdvcmR9CitAaXRlbSA6bWVudS10YWcKK1RhZyB1c2VkIGluIHRoZSBtZW51IHdoZW4gdGhl IHdpZGdldCBpcyB1c2VkIGFzIGFuIG9wdGlvbiBpbiBhCitAY29kZXttZW51LWNob2ljZX0g d2lkZ2V0LgorCitAdmluZGV4IG1lbnUtdGFnLWdldEByeyBrZXl3b3JkfQorQGl0ZW0gOm1l bnUtdGFnLWdldAorRnVuY3Rpb24gdGhhdCB0YWtlcyBhIHdpZGdldCBhbmQgcmV0dXJucyB0 aGUgdGFnIHdoZW4gdGhlIHdpZGdldCBpcwordXNlZCBhcyBhbiBvcHRpb24gaW4gYSBAY29k ZXttZW51LWNob2ljZX0gd2lkZ2V0LgorCitCeSBkZWZhdWx0LCB0aGUgdGFnIHVzZWQgd2ls bCBiZSBlaXRoZXIgdGhlIEBjb2RlezptZW51LXRhZ30gb3IKK0Bjb2Rlezp0YWd9IHByb3Bl cnR5IGlmIHByZXNlbnQsIG9yIHRoZSBAY29kZXtwcmluY30gcmVwcmVzZW50YXRpb24gb2YK K3RoZSBAY29kZXs6dmFsdWV9IHByb3BlcnR5IGlmIG5vdC4KKworQHZpbmRleCBtYXRjaEBy eyBrZXl3b3JkfQorQGl0ZW0gOm1hdGNoCitTaG91bGQgYmUgYSBmdW5jdGlvbiBjYWxsZWQg d2l0aCB0d28gYXJndW1lbnRzLCB0aGUgd2lkZ2V0IGFuZCBhbgorZXh0ZXJuYWwgdmFsdWUs IGFuZCBzaG91bGQgcmV0dXJuIG5vbi1AY29kZXtuaWx9IGlmIHRoZSB3aWRnZXQgY2FuCity ZXByZXNlbnQgdGhlIHNwZWNpZmllZCB2YWx1ZS4KKworQHZpbmRleCB2YWxpZGF0ZUByeyBr ZXl3b3JkfQorQGl0ZW0gOnZhbGlkYXRlCitBIGZ1bmN0aW9uIHdoaWNoIHRha2VzIGEgd2lk Z2V0IGFzIGFuIGFyZ3VtZW50LCBhbmQgcmV0dXJucyBAY29kZXtuaWx9CitpZiB0aGUgd2lk Z2V0J3MgY3VycmVudCB2YWx1ZSBpcyB2YWxpZCBmb3IgdGhlIHdpZGdldC4KKworT3RoZXJ3 aXNlLCBpdCBzaG91bGQgcmV0dXJuIHRoZSB3aWRnZXQgY29udGFpbmluZyB0aGUgaW52YWxp ZCBkYXRhLAorYW5kIHNldCB0aGF0IHdpZGdldCdzIEBjb2RlezplcnJvcn0gcHJvcGVydHkg dG8gYSBzdHJpbmcgZXhwbGFpbmluZwordGhlIGVycm9yLgorCitCeSBkZWZhdWx0LCBpdCBh bHdheXMgcmV0dXJucyBAY29kZXtuaWx9LgorCitAdmluZGV4IHRhYi1vcmRlckByeyBrZXl3 b3JkfQorQGl0ZW0gOnRhYi1vcmRlcgorU3BlY2lmeSB0aGUgb3JkZXIgaW4gd2hpY2ggd2lk Z2V0cyBhcmUgdHJhdmVyc2VkIHdpdGgKK0Bjb2Rle3dpZGdldC1mb3J3YXJkfSBvciBAY29k ZXt3aWRnZXQtYmFja3dhcmR9LiAgVGhpcyBpcyBvbmx5IHBhcnRpYWxseQoraW1wbGVtZW50 ZWQuCitAZW51bWVyYXRlIGEKK0BpdGVtCitXaWRnZXRzIHdpdGggdGFiYmluZyBvcmRlciBA Y29kZXstMX0gYXJlIGlnbm9yZWQuCisKK0BpdGVtCisoVW5pbXBsZW1lbnRlZCkgV2hlbiBv biBhIHdpZGdldCB3aXRoIHRhYmJpbmcgb3JkZXIgQHZhcntufSwgZ28gdG8gdGhlCituZXh0 IHdpZGdldCBpbiB0aGUgYnVmZmVyIHdpdGggdGFiYmluZyBvcmRlciBAdmFye24rMX0gb3Ig QGNvZGV7bmlsfSwKK3doaWNoZXZlciBjb21lcyBmaXJzdC4KKworQGl0ZW0KK1doZW4gb24g YSB3aWRnZXQgd2l0aCBubyB0YWJiaW5nIG9yZGVyIHNwZWNpZmllZCwgZ28gdG8gdGhlIG5l eHQgd2lkZ2V0CiBpbiB0aGUgYnVmZmVyIHdpdGggYSBwb3NpdGl2ZSB0YWJiaW5nIG9yZGVy LCBvciBAY29kZXtuaWx9CiBAZW5kIGVudW1lcmF0ZQogCkBAIC02ODMsNDYgKzExNjUsMjQ5 IEBAIEJhc2ljIFR5cGVzCiBUaGUgcGFyZW50IG9mIGEgbmVzdGVkIHdpZGdldCAoZS5nLiwg YSBAY29kZXttZW51LWNob2ljZX0gaXRlbSBvciBhbgogZWxlbWVudCBvZiBhIEBjb2Rle2Vk aXRhYmxlLWxpc3R9IHdpZGdldCkuCiAKLUB2aW5kZXggc2libGluZy1hcmdzQHJ7IGtleXdv cmR9Ci1AaXRlbSA6c2libGluZy1hcmdzCi1UaGlzIGtleXdvcmQgaXMgb25seSB1c2VkIGZv ciBtZW1iZXJzIG9mIGEgQGNvZGV7cmFkaW8tYnV0dG9uLWNob2ljZX0gb3IKLUBjb2Rle2No ZWNrbGlzdH0uICBUaGUgdmFsdWUgc2hvdWxkIGJlIGEgbGlzdCBvZiBleHRyYSBrZXl3b3Jk Ci1hcmd1bWVudHMsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBAY29k ZXtyYWRpby1idXR0b259IG9yCi1AY29kZXtjaGVja2JveH0gYXNzb2NpYXRlZCB3aXRoIHRo aXMgaXRlbS4KK0B2aW5kZXggc2libGluZy1hcmdzQHJ7IGtleXdvcmR9CitAaXRlbSA6c2li bGluZy1hcmdzCitUaGlzIGtleXdvcmQgaXMgb25seSB1c2VkIGZvciBtZW1iZXJzIG9mIGEg QGNvZGV7cmFkaW8tYnV0dG9uLWNob2ljZX0gb3IKK0Bjb2Rle2NoZWNrbGlzdH0uICBUaGUg dmFsdWUgc2hvdWxkIGJlIGEgbGlzdCBvZiBleHRyYSBrZXl3b3JkCithcmd1bWVudHMsIHdo aWNoIHdpbGwgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBAY29kZXtyYWRpby1idXR0b259 IG9yCitAY29kZXtjaGVja2JveH0gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4KKworQHZp bmRleCBjb21wbGV0aW9ucy1mdW5jdGlvbkByeyBrZXl3b3JkfQorQGl0ZW0gOmNvbXBsZXRp b25zLWZ1bmN0aW9uCitGdW5jdGlvbiB0aGF0IHRha2VzIGEgd2lkZ2V0IGFuZCByZXR1cm5z IGNvbXBsZXRpb24gZGF0YSBmb3IgdGhhdAord2lkZ2V0LCBsaWtlIEBjb2Rle2NvbXBsZXRp b24tYXQtcG9pbnQtZnVuY3Rpb25zfSB3b3VsZC4KK0B4cmVme0NvbXBsZXRpb24sLCxlbGlz cCwgdGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbH0uICBJdCdzCit1c2VkIGJ5IEBj b2Rle2VkaXRhYmxlLWZpZWxkfSB3aWRnZXRzIHRvIHByb3ZpZGUgY29tcGxldGlvbnMuCisK K0J5IGRlZmF1bHQsIGl0IGxvb2tzIGludG8gdGhlIHByb3BlcnR5IEBjb2Rlezpjb21wbGV0 aW9uc30sIHdoaWNoCitzaG91bGQgYmUgYSBjb21wbGV0aW9uIHRhYmxlLiAgSWYgQGNvZGV7 OmNvbXBsZXRpb25zfSBpcyBAY29kZXtuaWx9LAordGhlbiBpdCBjYWxscyB0aGUgZnVuY3Rp b24gc3RvcmVkIGVpdGhlciBpbiB0aGUgQGNvZGV7OmNvbXBsZXRlfSBvcgorQGNvZGV7OmNv bXBsZXRlLWZ1bmN0aW9ufSBwcm9wZXJ0eS4KKworQHZpbmRleCBmb3JtYXQtaGFuZGxlckBy eyBrZXl3b3JkfQorQGl0ZW0gOmZvcm1hdC1oYW5kbGVyCitGdW5jdGlvbiB0byBoYW5kbGUg dW5rbm93biBAc2FtcHslfSBlc2NhcGVzIGluIHRoZSBmb3JtYXQgc3RyaW5nLgorCitJdCB0 YWtlcyBhIHdpZGdldCBhbmQgdGhlIGNoYXJhY3RlciB0aGF0IGZvbGxvd3MgdGhlIEBzYW1w eyV9IGFzCithcmd1bWVudHMuICBZb3UgY2FuIHNldCB0aGlzIHRvIGFsbG93IHlvdXIgd2lk Z2V0IHRvIGhhbmRsZQorbm9uLXN0YW5kYXJkIGVzY2FwZXMgaW4geW91ciBvd24gc3BlY2lh bGl6ZWQgd2lkZ2V0cy4KKworQGZpbmRleCB3aWRnZXQtZGVmYXVsdC1mb3JtYXQtaGFuZGxl cgorWW91IHNob3VsZCBlbmQgdXAgY2FsbGluZyBAY29kZXt3aWRnZXQtZGVmYXVsdC1mb3Jt YXQtaGFuZGxlcn0gdG8gaGFuZGxlCit1bmtub3duIGVzY2FwZSBzZXF1ZW5jZXMsIHdoaWNo IHdpbGwgaGFuZGxlIHRoZSBAc2FtcHslaH0gYW5kIGFueSBmdXR1cmUKK2VzY2FwZSBzZXF1 ZW5jZXMsIGFzIHdlbGwgYXMgZ2l2ZSBhbiBlcnJvciBmb3IgdW5rbm93biBlc2NhcGVzLgor CitAdmluZGV4IGJ1dHRvbi1mYWNlLWdldEByeyBrZXl3b3JkfQorQGl0ZW0gOmJ1dHRvbi1m YWNlLWdldAorRnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBmYWNlIHVzZWQgdG8gZm9udGlmeSBh IHdpZGdldCBidXR0b24uCisKK1Rha2VzIGEgd2lkZ2V0IGFuZCByZXR1cm5zIGFuIGFwcHJv cHJpYXRlIGZhY2UgZm9yIHRoZSB3aWRnZXQuICBCeQorZGVmYXVsdCwgaXQgZWl0aGVyIHJl dHVybnMgdGhlIGZhY2Ugc3RvcmVkIGluIHRoZSBAY29kZXs6YnV0dG9uLWZhY2V9Citwcm9w ZXJ0eSwgb3IgY2FsbHMgdGhlIEBjb2RlezpidXR0b24tZmFjZS1nZXR9IGZ1bmN0aW9uIGZy b20gdGhlCitwYXJlbnQgb2YgdGhlIHdpZGdldCwgaWYgaXQgaGFzIG9uZS4KKworQHZpbmRl eCBtb3VzZS1mYWNlLWdldEByeyBrZXl3b3JkfQorQGl0ZW0gOm1vdXNlLWZhY2UtZ2V0CitG dW5jdGlvbiB0byByZXR1cm4gdGhlIGZhY2UgdXNlZCB0byBmb250aWZ5IGEgd2lkZ2V0IHdo ZW4gdGhlIG1vdXNlCitwb2ludGVyIGhvdmVycyBvdmVyIGl0LgorCitUYWtlcyBhIHdpZGdl dCBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBmYWNlLiAgQnkgZGVmYXVsdCwgaXQgZWl0 aGVyCityZXR1cm5zIHRoZSBmYWNlIHN0b3JlZCBpbiB0aGUgQGNvZGV7Om1vdXNlLWZhY2V9 IHByb3BlcnR5LCBvciBjYWxscwordGhlIEBjb2RlezpidXR0b24tZmFjZS1nZXR9IGZ1bmN0 aW9uIGZyb20gdGhlIHBhcmVudCBvZiB0aGUgd2lkZ2V0LCBpZgoraXQgaGFzIG9uZS4KKwor QHZpbmRleCBjb3B5QHJ7IGtleXdvcmR9CitAaXRlbSA6Y29weQorRnVuY3Rpb24gdG8gZGVl cCBjb3B5IGEgd2lkZ2V0IHR5cGUuCisKK0l0IHRha2VzIGEgc2hhbGxvdyBjb3B5IG9mIHRo ZSB3aWRnZXQgdHlwZSBhcyBhbiBhcmd1bWVudCAobWFkZSBieQorQGNvZGV7Y29weS1zZXF1 ZW5jZX0pLCBhbmQgcmV0dXJucyBhIGRlZXAgY29weS4gIFRoZSBwdXJwb3NlIG9mIHRoaXMK K2lzIHRvIGF2b2lkIGhhdmluZyBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIGNvbWJpbmVkIHdp ZGdldHMgc2hhcmUKK25lc3RlZCBhdHRyaWJ1dGVzLgorCitJdHMgdmFsdWUgYnkgZGVmYXVs dCBpcyBAY29kZXtpZGVudGl0eX0uCisKK0B2aW5kZXggYWN0aXZlQHJ7IGtleXdvcmR9CitA aXRlbSA6YWN0aXZlCitGdW5jdGlvbiB0aGF0IHRha2VzIGEgd2lkZ2V0IGFuZCByZXR1cm5z IEBjb2Rle3R9IGlmIGl0IGlzIGFjdGl2ZS4KKworQSB3aWRnZXQgbWlnaHQgYmUgZWZmZWN0 aXZlbHkgYWx3YXlzIGFjdGl2ZSwgaWYgaXRzCitAY29kZXs6YWx3YXlzLWFjdGl2ZX0gcHJv cGVydHkgaXMgQGNvZGV7dH0uCisKK0BjaW5kZXggYWN0aXZlIHdpZGdldAorQGNpbmRleCBp bmFjdGl2ZSB3aWRnZXQKK0BjaW5kZXggYWN0aXZhdGUgYSB3aWRnZXQKK0BjaW5kZXggZGVh Y3RpdmF0ZSBhIHdpZGdldAorV2lkZ2V0cyBjYW4gYmUgaW4gdHdvIHN0YXRlczogYWN0aXZl LCB3aGljaCBtZWFucyB0aGV5IGFyZSBtb2RpZmlhYmxlIGJ5Cit0aGUgdXNlciwgb3IgaW5h Y3RpdmUsIHdoaWNoIG1lYW5zIHRoZXkgY2Fubm90IGJlIG1vZGlmaWVkIGJ5IHRoZSB1c2Vy LgorWW91IGNhbiBxdWVyeSBvciBzZXQgdGhlIHN0YXRlIHdpdGggdGhlIGZvbGxvd2luZyBj b2RlOgorCitAbGlzcAorOzsgRXhhbWluZSBpZiBAdmFye3dpZGdldH0gaXMgYWN0aXZlIG9y IG5vdC4KKyhpZiAod2lkZ2V0LWFwcGx5IEB2YXJ7d2lkZ2V0fSA6YWN0aXZlKQorICAgICht ZXNzYWdlICJXaWRnZXQgaXMgYWN0aXZlLiIpCisgIChtZXNzYWdlICJXaWRnZXQgaXMgaW5h Y3RpdmUuIikKKworOzsgTWFrZSBAdmFye3dpZGdldH0gaW5hY3RpdmUuCisod2lkZ2V0LWFw cGx5IEB2YXJ7d2lkZ2V0fSA6ZGVhY3RpdmF0ZSkKKworOzsgTWFrZSBAdmFye3dpZGdldH0g YWN0aXZlLgorKHdpZGdldC1hcHBseSBAdmFye3dpZGdldH0gOmFjdGl2YXRlKQorQGVuZCBs aXNwCisKK0Egd2lkZ2V0IGlzIGluYWN0aXZlIGlmIGl0LCBvciBhbnkgb2YgaXRzIGFuY2Vz dG9ycyAoZm91bmQgYnkKK2ZvbGxvd2luZyB0aGUgQGNvZGV7OnBhcmVudH0gbGluayksIGhh dmUgYmVlbiBkZWFjdGl2YXRlZC4gIFRvIG1ha2Ugc3VyZQorYSB3aWRnZXQgaXMgcmVhbGx5 IGFjdGl2ZSwgeW91IG11c3QgdGhlcmVmb3JlIGFjdGl2YXRlIGJvdGggaXQgYW5kCithbGwg aXRzIGFuY2VzdG9ycy4KKworQGxpc3AKKyh3aGlsZSB3aWRnZXQKKyAgKHdpZGdldC1hcHBs eSB3aWRnZXQgOmFjdGl2YXRlKQorICAoc2V0cSB3aWRnZXQgKHdpZGdldC1nZXQgd2lkZ2V0 IDpwYXJlbnQpKSkKK0BlbmQgbGlzcAorCitZb3UgY2FuIGNoZWNrIGlmIGEgd2lkZ2V0IGhh cyBiZWVuIG1hZGUgaW5hY3RpdmUgYnkgZXhhbWluaW5nIHRoZSB2YWx1ZQorb2YgdGhlIEBj b2RlezppbmFjdGl2ZX0ga2V5d29yZC4gIElmIHRoaXMgaXMgbm9uLUBjb2Rle25pbH0sIHRo ZSB3aWRnZXQgaXRzZWxmCitoYXMgYmVlbiBkZWFjdGl2YXRlZC4gIFRoaXMgaXMgZGlmZmVy ZW50IGZyb20gdXNpbmcgdGhlIEBjb2RlezphY3RpdmV9CitrZXl3b3JkLCBpbiB0aGF0IHRo ZSBsYXR0ZXIgdGVsbHMgeW91IGlmIHRoZSB3aWRnZXQgQHN0cm9uZ3tvcn0gYW55IG9mCitp dHMgYW5jZXN0b3JzIGhhdmUgYmVlbiBkZWFjdGl2YXRlZC4gIERvIG5vdCBhdHRlbXB0IHRv IHNldCB0aGUKK0Bjb2RlezppbmFjdGl2ZX0ga2V5d29yZCBkaXJlY3RseS4gIFVzZSB0aGUg QGNvZGV7OmFjdGl2YXRlfQorQGNvZGV7OmRlYWN0aXZhdGV9IGZ1bmN0aW9ucyBpbnN0ZWFk LgorCitAdmluZGV4IGFjdGl2YXRlQHJ7IGtleXdvcmR9CitAaXRlbSA6YWN0aXZhdGUKK0Z1 bmN0aW9uIHRoYXQgdGFrZXMgYSB3aWRnZXQgYW5kIG1ha2VzIGl0IGFjdGl2ZSBmb3IgdXNl cgorbW9kaWZpY2F0aW9ucy4KKworQHZpbmRleCBkZWFjdGl2YXRlQHJ7IGtleXdvcmR9CitA aXRlbSA6ZGVhY3RpdmF0ZQorRnVuY3Rpb24gdGhhdCB0YWtlcyBhIHdpZGdldCBhbmQgbWFr ZXMgaXQgaW5hY3RpdmUgZm9yIHVzZXIKK21vZGlmaWNhdGlvbnMuCisKK0B2aW5kZXggYWN0 aW9uQHJ7IGtleXdvcmR9CitAaXRlbSA6YWN0aW9uCitGdW5jdGlvbiB0aGF0IHRha2VzIGEg d2lkZ2V0IGFuZCBvcHRpb25hbGx5IGFuIGV2ZW50LCBhbmQgaGFuZGxlcyBhCit1c2VyIGlu aXRpYXRlZCBldmVudC4KKworQnkgZGVmYXVsdCwgdXNlcyB0aGUgQGNvZGV7Om5vdGlmeX0g ZnVuY3Rpb24gdG8gbm90aWZ5IHRoZSB3aWRnZXQncworcGFyZW50IGFib3V0IHRoZSBldmVu dC4KKworQHZpbmRleCBtb3VzZS1kb3duLWFjdGlvbkByeyBrZXl3b3JkfQorQGl0ZW0gOm1v dXNlLWRvd24tYWN0aW9uCitGdW5jdGlvbiB0aGF0IHRha2VzIGEgd2lkZ2V0IGFuZCBvcHRp b25hbGx5IGFuIGV2ZW50LCBhbmQgaGFuZGxlcyBhCittb3VzZSBjbGljayBvbiB0aGUgd2lk Z2V0LgorCitCeSBkZWZhdWx0LCBpdCBkb2VzIG5vdGhpbmcuCisKK0B2aW5kZXggbm90aWZ5 QHJ7IGtleXdvcmR9CitAaXRlbSA6bm90aWZ5CitBIGZ1bmN0aW9uIGNhbGxlZCBlYWNoIHRp bWUgdGhlIHdpZGdldCBvciBhIG5lc3RlZCB3aWRnZXQgaXMgY2hhbmdlZC4KKworVGhlIGZ1 bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHR3byBvciB0aHJlZSBhcmd1bWVudHMuICBUaGUgZmly c3QgYXJndW1lbnQKK2lzIHRoZSB3aWRnZXQgaXRzZWxmLCB0aGUgc2Vjb25kIGFyZ3VtZW50 IGlzIHRoZSB3aWRnZXQgdGhhdCB3YXMKK2NoYW5nZWQsIGFuZCB0aGUgdGhpcmQgYXJndW1l bnQgaXMgdGhlIGV2ZW50IGxlYWRpbmcgdG8gdGhlIGNoYW5nZSwgaWYKK2FueS4KKworQnkg ZGVmYXVsdCwgaXQgcGFzc2VzIHRoZSBub3RpZmljYXRpb24gdG8gdGhlIHdpZGdldCdzIHBh cmVudC4KKworQHZpbmRleCBwcm9tcHQtdmFsdWVAcnsga2V5d29yZH0KK0BpdGVtIDpwcm9t cHQtdmFsdWUKK0Z1bmN0aW9uIHRvIHByb21wdCBmb3IgYSB2YWx1ZSBpbiB0aGUgbWluaWJ1 ZmZlci4KKworVGhlIGZ1bmN0aW9uIHNob3VsZCB0YWtlIGZvdXIgYXJndW1lbnRzLCBhIHdp ZGdldCwgYSBwcm9tcHQgKGEKK3N0cmluZyksIGEgdmFsdWUgYW5kIGEgYm9vbGVhbiwgYW5k IHNob3VsZCByZXR1cm4gYSB2YWx1ZSBmb3IgdGhlCit3aWRnZXQsIGVudGVyZWQgYnkgdGhl IHVzZXIuCiAKLUBlbmQgdGFibGUKK1RoZSBwcm9tcHQgaXMgdGhlIHByb21wdCB0byB1c2Uu ICBUaGUgdmFsdWUgaXMgdGhlIGRlZmF1bHQgdmFsdWUgdG8KK3VzZSwgdW5sZXNzIHRoZSBm b3VydGhhIGFyZ3VtZW50IGlzIG5vbi1AY29kZXtuaWx9LCBpbiB3aGljaCBjYXNlCit0aGVy ZSBpcyBubyBkZWZhdWx0IHZhbHVlLgogCi1AZGVmZm4ge1VzZXIgT3B0aW9ufSB3aWRnZXQt aW1hZ2UtZGlyZWN0b3J5Ci1EaXJlY3Rvcnkgd2hlcmUgV2lkZ2V0IHNob3VsZCBsb29rIGZv ciBpbWFnZXMuCi1XaWRnZXQgd2lsbCBsb29rIGhlcmUgZm9yIGEgZmlsZSB3aXRoIHRoZSBz YW1lIG5hbWUgYXMgc3BlY2lmaWVkIGZvciB0aGUKLWltYWdlLCB3aXRoIGVpdGhlciBhIEBm aWxley54cG19IChpZiBzdXBwb3J0ZWQpIG9yIEBmaWxley54Ym19IGV4dGVuc2lvbi4KLUBl bmQgZGVmZm4KK1RoZSBmdW5jdGlvbiBzaG91bGQgcmVhZCB0aGUgdmFsdWUgdXNpbmcgdGhl IG1ldGhvZCBtb3N0IG5hdHVyYWwgZm9yCit0aGlzIHdpZGdldCwgYW5kIGRvZXMgbm90IGhh dmUgdG8gY2hlY2sgdGhhdCBpdCBtYXRjaGVzLgorQGVuZCB0YWJsZQogCi1AZGVmZm57VXNl ciBPcHRpb259IHdpZGdldC1pbWFnZS1lbmFibGUKLUlmIG5vbi1AY29kZXtuaWx9LCBhbGxv dyBpbWFnZXMgdG8gYXBwZWFyIG9uIGRpc3BsYXlzIHdoZXJlIHRoZXkgYXJlIHN1cHBvcnRl ZC4KLUBlbmQgZGVmZm4KK0BtZW51CisqIEJhc2ljIFR5cGVzOjoKKyogU2V4cCBUeXBlczo6 CitAZW5kIG1lbnUKIAorQG5vZGUgQmFzaWMgVHlwZXMKK0BzZWN0aW9uIEJhc2ljIFR5cGVz CiAKIEBtZW51CisqIGl0ZW06OgogKiBsaW5rOjoKICogdXJsLWxpbms6OgogKiBpbmZvLWxp bms6OgorKiBmdW5jdGlvbi1saW5rOjoKKyogdmFyaWFibGUtbGluazo6CisqIGZhY2UtbGlu azo6CisqIGZpbGUtbGluazo6CisqIGVtYWNzLWxpYnJhcnktbGluazo6CisqIGVtYWNzLWNv bW1lbnRhcnktbGluazo6CiAqIHB1c2gtYnV0dG9uOjoKICogZWRpdGFibGUtZmllbGQ6Ogog KiB0ZXh0OjoKICogbWVudS1jaG9pY2U6OgogKiByYWRpby1idXR0b24tY2hvaWNlOjoKLSog aXRlbTo6CiAqIGNob2ljZS1pdGVtOjoKICogdG9nZ2xlOjoKKyogcmFkaW8tYnV0dG9uLXRv Z2dsZTo6CiAqIGNoZWNrYm94OjoKICogY2hlY2tsaXN0OjoKICogZWRpdGFibGUtbGlzdDo6 CiAqIGdyb3VwOjoKKyogZG9jdW1lbnRhdGlvbi1zdHJpbmc6OgogQGVuZCBtZW51CiAKK0Bu b2RlIGl0ZW0KK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtpdGVtfSBXaWRnZXQKK0BmaW5kZXgg aXRlbUByeyB3aWRnZXR9CisKK1N5bnRheDoKKworQGV4YW1wbGUKK0B2YXJ7dHlwZX0gOjo9 IChpdGVtIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiBAdmFye3ZhbHVlfSkK K0BlbmQgZXhhbXBsZQorCitBIHVzZWZ1bCB3aWRnZXQgdGhhdCBob2xkcyBhIGNvbnN0YW50 IHZhbHVlLCBhbmQgY2FuIGJlIGluY2x1ZGVkIGluCitvdGhlciB3aWRnZXRzLiAgSXRzIHN1 cGVyIGlzIHRoZSBAY29kZXtkZWZhdWx0fSB3aWRnZXQuCisKK0FzIGNhbiBiZSBzZWVuIGlu IHRoZSBzeW50YXgsIHRoZSBAY29kZXtpdGVtfSB3aWRnZXQgaXMgb25lIG9mIHRoZQord2lk Z2V0IHRoYXQgaGFuZGxlcyB0aGUgQHZhcnthcmdzfSBhcmd1bWVudCB0byBAY29kZXt3aWRn ZXQtY3JlYXRlfSBpbgorYSBzcGVjaWZpYyB3YXkuICBJZiBwcmVzZW50LCBAdmFye3ZhbHVl fSBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlCitAY29kZXs6dmFsdWV9IHByb3BlcnR5LiAg V2hlbiBjcmVhdGVkLCBpdCBpbnNlcnRzIHRoZSB2YWx1ZSBhcyBhCitzdHJpbmcgaW4gdGhl IGJ1ZmZlci4KKworQnkgZGVmYXVsdCwgaXQgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGll czoKKworQHRhYmxlIEBjb2RlCitAaXRlbSA6Y29udmVydC13aWRnZXQKK1RoZSBmdW5jdGlv biB0aGF0IGFsbG93cyBpdCB0byBoYW5kbGUgQHZhcnt2YWx1ZX0uCisKK0BpdGVtIDp2YWx1 ZS1jcmVhdGUKK1ByaW50cyB0aGUgcmVwcmVzZW50YXRpb24gb2YgQGNvZGV7OnZhbHVlfSBp biB0aGUgYnVmZmVyLgorCitAaXRlbSA6dmFsdWUtZ2V0CitSZXR1cm5zIHRoZSB2YWx1ZSBz dG9yZWQgaW4gQGNvZGV7OnZhbHVlfS4KKworQGl0ZW0gOm1hdGNoCitBIHZhbHVlIG1hdGNo ZXMgdGhlIEBjb2Rle2l0ZW19IHdpZGdldCBpZiBpdCdzIEBjb2Rle2VxdWFsfSB0byBpdHMK K0Bjb2Rlezp2YWx1ZX0uCisKK0BpdGVtIDptYXRjaC1pbmxpbmUKK0lubGluZSB2YWx1ZXMg bWF0Y2ggdGhlIEBjb2Rle2l0ZW19IHdpZGdldCBpZiBAY29kZXs6dmFsdWV9IGlzIGEKK3N1 Ymxpc3Qgb2YgdmFsdWVzLgorCitAaXRlbSA6YWN0aW9uCitUaGUgQGNvZGV7aXRlbX0gd2lk Z2V0IG5vdGlmaWVzIGl0c2VsZiBvZiBhbiBldmVudC4KKworQGl0ZW0gOmZvcm1hdAorQnkg ZGVmYXVsdCwgdGhlIEBjb2Rle2l0ZW19IHdpZGdldCBpbnNlcnRzIGl0cyB0YWcgaW4gdGhl IGJ1ZmZlci4KK0BlbmQgdGFibGUKKwogQG5vZGUgbGluawotQHNlY3Rpb24gVGhlIEBjb2Rl e2xpbmt9IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle2xpbmt9IFdpZGdldAogQGZp bmRleCBsaW5rQHJ7IHdpZGdldH0KIAogU3ludGF4OgpAQCAtNzMxLDIyICsxNDE2LDQyIEBA IGxpbmsKIEB2YXJ7dHlwZX0gOjo9IChsaW5rIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1l bnR9XS4uLiAgWyBAdmFye3ZhbHVlfSBdKQogQGVuZCBleGFtcGxlCiAKK0Egd2lkZ2V0IHRv IHJlcHJlc2VudCBhbiBlbWJlZGRlZCBsaW5rLiAgSXRzIHN1cGVyIGlzIHRoZSBAY29kZXtp dGVtfQord2lkZ2V0LgorCiBUaGUgQHZhcnt2YWx1ZX0sIGlmIHByZXNlbnQsIGlzIHVzZWQg dG8gaW5pdGlhbGl6ZSB0aGUgQGNvZGV7OnZhbHVlfQogcHJvcGVydHkuICBUaGUgdmFsdWUg c2hvdWxkIGJlIGEgc3RyaW5nLCB3aGljaCB3aWxsIGJlIGluc2VydGVkIGluIHRoZQogYnVm ZmVyLgogCi1CeSBkZWZhdWx0IHRoZSBsaW5rIHdpbGwgYmUgc2hvd24gaW4gYnJhY2tldHMu CitCeSBkZWZhdWx0LCBpdCBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogCi1AZGVm b3B0IHdpZGdldC1saW5rLXByZWZpeAotU3RyaW5nIHRvIHByZWZpeCBsaW5rcy4KLUBlbmQg ZGVmb3B0CitAdGFibGUgQGNvZGUKK0BpdGVtIDpidXR0b24tcHJlZml4CitUaGUgdmFsdWUg b2YgQGNvZGV7d2lkZ2V0LWxpbmstcHJlZml4fS4KIAotQGRlZm9wdCB3aWRnZXQtbGluay1z dWZmaXgKLVN0cmluZyB0byBzdWZmaXggbGlua3MuCi1AZW5kIGRlZm9wdAorQGl0ZW0gOmJ1 dHRvbi1zdWZmaXgKK1RoZSB2YWx1ZSBvZiBAY29kZXt3aWRnZXQtbGluay1zdWZmaXh9Lgor CitAaXRlbSA6a2V5bWFwCitBIGN1c3RvbSBrZXltYXAgZm9yIHRoZSBsaW5rIHdpZGdldCwg c28gdGhhdCBpdCBjYW4gcmVzcG9uZCB0byBtb3VzZSBjbGlja3MuCisKK0BpdGVtIDpmb2xs b3ctbGluaworVGhpcyBwcm9wZXJ0eSBhbGxvd3MgdGhlIGxpbmsgdG8gcmVzcGVjdCB0aGUg dmFsdWUgb2YKK0Bjb2Rle21vdXNlLTEtY2xpY2stZm9sbG93cy1saW5rfS4gIEB4cmVme0Ns aWNrYWJsZSBUZXh0LCwsZWxpc3AsIHRoZSBFbWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9 LgorCitAaXRlbSA6Zm9ybWF0CitCdXR0b25pemVzIHRoZSBsaW5rLCB0byBtYWtlIGl0IGNs aWNrYWJsZS4KKworSWYgeW91IG92ZXJyaWRlIHRoaXMgcHJvcGVydHksIHlvdSBzaG91bGQg bWFrZSBzdXJlIHRvIHByb3ZpZGUgdGhlCitAc2FtcHslW30gYW5kIEBzYW1weyVdfSBlc2Nh cGUgc2VxdWVuY2VzLCBzbyB0aGF0IHRoZSBsaW5rIGlzCitjbGlja2FibGUuCisKK0BlbmQg dGFibGUKKworQnkgZGVmYXVsdCB0aGUgbGluayB3aWxsIGJlIHNob3duIGluIGJyYWNrZXRz LgogCiBAbm9kZSB1cmwtbGluawotQHNlY3Rpb24gVGhlIEBjb2Rle3VybC1saW5rfSBXaWRn ZXQKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXt1cmwtbGlua30gV2lkZ2V0CiBAZmluZGV4IHVy bC1saW5rQHJ7IHdpZGdldH0KIAogU3ludGF4OgpAQCAtNzU1LDEyICsxNDYwLDE0IEBAIHVy bC1saW5rCiBAdmFye3R5cGV9IDo6PSAodXJsLWxpbmsgW0B2YXJ7a2V5d29yZH0gQHZhcnth cmd1bWVudH1dLi4uICBAdmFye3VybH0pCiBAZW5kIGV4YW1wbGUKIAotQGZpbmRleCBicm93 c2UtdXJsLWJyb3dzZXItZnVuY3Rpb25AcnssIGFuZCBAY29kZXt1cmwtbGlua30gd2lkZ2V0 fQotV2hlbiB0aGlzIGxpbmsgaXMgaW52b2tlZCwgdGhlIEBhY3Jvbnlte1dXV30gYnJvd3Nl ciBzcGVjaWZpZWQgYnkKLUBjb2Rle2Jyb3dzZS11cmwtYnJvd3Nlci1mdW5jdGlvbn0gd2ls bCBiZSBjYWxsZWQgd2l0aCBAdmFye3VybH0uCitBIHdpZGdldCB0byByZXByZXNlbnQgYSBs aW5rIHRvIGEgd2ViIHBhZ2UuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtsaW5rfSB3aWRn ZXQuCisKK0l0IG92ZXJyaWRlcyB0aGUgQGNvZGV7OmFjdGlvbn0gcHJvcGVydHkgdG8gb3Bl biB1cCB0aGUgQHZhcnt1cmx9CitzcGVjaWZpZWQuCiAKIEBub2RlIGluZm8tbGluawotQHNl Y3Rpb24gVGhlIEBjb2Rle2luZm8tbGlua30gV2lkZ2V0CitAc3Vic2VjdGlvbiBUaGUgQGNv ZGV7aW5mby1saW5rfSBXaWRnZXQKIEBmaW5kZXggaW5mby1saW5rQHJ7IHdpZGdldH0KIAog U3ludGF4OgpAQCAtNzY5LDExICsxNDc2LDEwNCBAQCBpbmZvLWxpbmsKIEB2YXJ7dHlwZX0g Ojo9IChpbmZvLWxpbmsgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uICBAdmFy e2FkZHJlc3N9KQogQGVuZCBleGFtcGxlCiAKLVdoZW4gdGhpcyBsaW5rIGlzIGludm9rZWQs IHRoZSBidWlsdC1pbiBJbmZvIHJlYWRlciBpcyBzdGFydGVkIG9uCi1AdmFye2FkZHJlc3N9 LgorQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgbGluayB0byBhbiBpbmZvIGZpbGUuICBJdHMg c3VwZXIgaXMgdGhlCitAY29kZXtsaW5rfSB3aWRnZXQuCisKK0l0IG92ZXJyaWRlcyB0aGUg QGNvZGV7OmFjdGlvbn0gcHJvcGVydHksIHRvIGEgZnVuY3Rpb24gdG8gc3RhcnQgdGhlCiti dWlsdC1pbiBJbmZvIHJlYWRlciBvbiBAdmFye2FkZHJlc3N9LCB3aGVuIGludm9rZWQuCisK K0Bub2RlIGZ1bmN0aW9uLWxpbmsKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtmdW5jdGlvbi1s aW5rfSBXaWRnZXQKK0BmaW5kZXggZnVuY3Rpb24tbGlua0ByeyB3aWRnZXR9CitTeW50YXg6 CisKK0BleGFtcGxlCitAdmFye3R5cGV9IDo6PSAoZnVuY3Rpb24tbGluayBbQHZhcntrZXl3 b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2YXJ7ZnVuY3Rpb259KQorQGVuZCBleGFtcGxl CisKK0Egd2lkZ2V0IHRvIHJlcHJlc2VudCBhIGxpbmsgdG8gYW4gRW1hY3MgZnVuY3Rpb24u ICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtsaW5rfSB3aWRnZXQuCisKK0l0IG92ZXJyaWRl cyB0aGUgQGNvZGV7OmFjdGlvbn0gcHJvcGVydHksIHRvIGEgZnVuY3Rpb24gdG8gZGVzY3Jp YmUKK0B2YXJ7ZnVuY3Rpb259LgorCitAbm9kZSB2YXJpYWJsZS1saW5rCitAc3Vic2VjdGlv biBUaGUgQGNvZGV7dmFyaWFibGUtbGlua30gV2lkZ2V0CitAZmluZGV4IHZhcmlhYmxlLWxp bmtAcnsgd2lkZ2V0fQorU3ludGF4OgorCitAZXhhbXBsZQorQHZhcnt0eXBlfSA6Oj0gKHZh cmlhYmxlLWxpbmsgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uICBAdmFye3Zh cn0pCitAZW5kIGV4YW1wbGUKKworQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgbGluayB0byBh biBFbWFjcyB2YXJpYWJsZS4gIEl0cyBzdXBlciBpcyB0aGUKK0Bjb2Rle2xpbmt9IHdpZGdl dC4KKworSXQgb3ZlcnJpZGVzIHRoZSBAY29kZXs6YWN0aW9ufSBwcm9wZXJ0eSwgdG8gYSBm dW5jdGlvbiB0byBkZXNjcmliZQorQHZhcnt2YXJ9LgorCitAbm9kZSBmYWNlLWxpbmsKK0Bz dWJzZWN0aW9uIFRoZSBAY29kZXtmYWNlLWxpbmt9IFdpZGdldAorQGZpbmRleCBmYWNlLWxp bmtAcnsgd2lkZ2V0fQorU3ludGF4OgorCitAZXhhbXBsZQorQHZhcnt0eXBlfSA6Oj0gKGZh Y2UtbGluayBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2YXJ7ZmFjZX0p CitAZW5kIGV4YW1wbGUKKworQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgbGluayB0byBhbiBF bWFjcyBmYWNlLiAgSXRzIHN1cGVyIGlzIHRoZQorQGNvZGV7bGlua30gd2lkZ2V0LgorCitJ dCBvdmVycmlkZXMgdGhlIEBjb2RlezphY3Rpb259IHByb3BlcnR5LCB0byBhIGZ1bmN0aW9u IHRvIGRlc2NyaWJlCitAdmFye2ZhY2V9LgorCitAbm9kZSBmaWxlLWxpbmsKK0BzdWJzZWN0 aW9uIFRoZSBAY29kZXtmaWxlLWxpbmt9IFdpZGdldAorQGZpbmRleCBmaWxlLWxpbmtAcnsg d2lkZ2V0fQorU3ludGF4OgorCitAZXhhbXBsZQorQHZhcnt0eXBlfSA6Oj0gKGZpbGUtbGlu ayBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2YXJ7ZmlsZX0pCitAZW5k IGV4YW1wbGUKKworQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgbGluayB0byBhIGZpbGUuICBJ dHMgc3VwZXIgaXMgdGhlCitAY29kZXtsaW5rfSB3aWRnZXQuCisKK0l0IG92ZXJyaWRlcyB0 aGUgQGNvZGV7OmFjdGlvbn0gcHJvcGVydHksIHRvIGEgZnVuY3Rpb24gdG8gZmluZCB0aGUg ZmlsZQorQHZhcntmaWxlfS4KKworQG5vZGUgZW1hY3MtbGlicmFyeS1saW5rCitAc3Vic2Vj dGlvbiBUaGUgQGNvZGV7ZW1hY3MtbGlicmFyeS1saW5rfSBXaWRnZXQKK0BmaW5kZXggZW1h Y3MtbGlicmFyeS1saW5rQHJ7IHdpZGdldH0KK1N5bnRheDoKKworQGV4YW1wbGUKK0B2YXJ7 dHlwZX0gOjo9IChlbWFjcy1saWJyYXJ5LWxpbmsgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1 bWVudH1dLi4uICBAdmFye2ZpbGV9KQorQGVuZCBleGFtcGxlCisKK0Egd2lkZ2V0IHRvIHJl cHJlc2VudCBhIGxpbmsgdG8gYW4gRW1hY3MgTGlzcCBmaWxlLiAgSXRzIHN1cGVyIGlzIHRo ZQorQGNvZGV7bGlua30gd2lkZ2V0LgorCitJdCBvdmVycmlkZXMgdGhlIEBjb2RlezphY3Rp b259IHByb3BlcnR5LCB0byBhIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGZpbGUKK0B2YXJ7Zmls ZX0uCisKK0Bub2RlIGVtYWNzLWNvbW1lbnRhcnktbGluaworQHN1YnNlY3Rpb24gVGhlIEBj b2Rle2VtYWNzLWNvbW1lbnRhcnktbGlua30gV2lkZ2V0CitAZmluZGV4IGVtYWNzLWNvbW1l bnRhcnktbGlua0ByeyB3aWRnZXR9CitTeW50YXg6CisKK0BleGFtcGxlCitAdmFye3R5cGV9 IDo6PSAoZW1hY3MtY29tbWVudGFyeS1saW5rIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1l bnR9XS4uLiAgQHZhcntmaWxlfSkKK0BlbmQgZXhhbXBsZQorCitBIHdpZGdldCB0byByZXBy ZXNlbnQgYSBsaW5rIHRvIHRoZSBDb21tZW50IHNlY3Rpb24gb2YgYW4gRW1hY3MgTGlzcAor ZmlsZS4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7bGlua30gd2lkZ2V0LgorCitJdCBvdmVy cmlkZXMgdGhlIEBjb2RlezphY3Rpb259IHByb3BlcnR5LCB0byBhIGZ1bmN0aW9uIHRvIGZp bmQgdGhlIGZpbGUKK0B2YXJ7ZmlsZX0gYW5kIHB1dCBwb2ludCBpbiB0aGUgQ29tbWVudCBz ZWN0aW9uLgogCiBAbm9kZSAgcHVzaC1idXR0b24KLUBzZWN0aW9uIFRoZSBAY29kZXtwdXNo LWJ1dHRvbn0gV2lkZ2V0CitAc3Vic2VjdGlvbiBUaGUgQGNvZGV7cHVzaC1idXR0b259IFdp ZGdldAogQGZpbmRleCBwdXNoLWJ1dHRvbkByeyB3aWRnZXR9CiAKIFN5bnRheDoKQEAgLTc4 MiwyMiArMTU4MiwzNyBAQCBwdXNoLWJ1dHRvbgogQHZhcnt0eXBlfSA6Oj0gKHB1c2gtYnV0 dG9uIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgWyBAdmFye3ZhbHVlfSBd KQogQGVuZCBleGFtcGxlCiAKK0Egd2lkZ2V0IHRoYXQgYWN0cyBhcyBhIHB1c2hhYmxlIGJ1 dHRvbi4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7aXRlbX0KK3dpZGdldC4KKwogVGhlIEB2 YXJ7dmFsdWV9LCBpZiBwcmVzZW50LCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIEBjb2Rl ezp2YWx1ZX0KIHByb3BlcnR5LiAgVGhlIHZhbHVlIHNob3VsZCBiZSBhIHN0cmluZywgd2hp Y2ggd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUKIGJ1ZmZlci4KIAotQnkgZGVmYXVsdCB0aGUg dGFnIHdpbGwgYmUgc2hvd24gaW4gYnJhY2tldHMuCitCeSBkZWZhdWx0LCBpdCBoYXMgdGhl IGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorQHRhYmxlIEBjb2RlCitAaXRlbSA6YnV0dG9uLXBy ZWZpeAorVGhlIGVtcHR5IHN0cmluZy4KIAotQGRlZm9wdCB3aWRnZXQtcHVzaC1idXR0b24t cHJlZml4Ci1TdHJpbmcgdG8gcHJlZml4IHB1c2ggYnV0dG9ucy4KLUBlbmQgZGVmb3B0CitA aXRlbSA6YnV0dG9uLXN1ZmZpeAorVGhlIGVtcHR5IHN0cmluZy4KIAotQGRlZm9wdCB3aWRn ZXQtcHVzaC1idXR0b24tc3VmZml4Ci1TdHJpbmcgdG8gc3VmZml4IHB1c2ggYnV0dG9ucy4K LUBlbmQgZGVmb3B0CitAaXRlbSA6dmFsdWUtY3JlYXRlCitJbnNlcnRzIGEgcmVwcmVzZW50 YXRpb24gb2YgdGhlIGBgb24nJyBhbmQgYGBvZmYnJyBzdGF0ZXMgZm9yIHRoZSBwdXNoCiti dXR0b24uCisKK1RoZSByZXByZXNlbnRhdGlvbiBtaWdodCBiZSBhbiBpbWFnZSwgc3RvcmVk IGluIHRoZSBAY29kZXs6dGFnLWdseXBofQorcHJvcGVydHksIG9yIHRleHQuICBJZiBpdCBp cyB0ZXh0LCBpdCBtaWdodCBiZSB0aGUgdmFsdWUgb2YgdGhlCitAY29kZXs6dGFnfSBwcm9w ZXJ0eSwgb3IgdGhlIEBjb2Rlezp2YWx1ZX0gb2YgdGhlIHdpZGdldCwgc3Vycm91bmRlZAor d2l0aCBAY29kZXt3aWRnZXQtcHVzaC1idXR0b24tcHJlZml4fSBhbmQKK0Bjb2Rle3dpZGdl dC1wdXNoLWJ1dHRvbi1zdWZmaXh9LiAgQHhyZWZ7Q3VzdG9taXphdGlvbn0uCisKK0BpdGVt IDpmb3JtYXQKK0J1dHRvbml6ZXMgdGhlIHdpZGdldCwgdG8gbWFrZSBpdCBjbGlja2FibGUu CitAZW5kIHRhYmxlCiAKIEBub2RlIGVkaXRhYmxlLWZpZWxkCi1Ac2VjdGlvbiBUaGUgQGNv ZGV7ZWRpdGFibGUtZmllbGR9IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle2VkaXRh YmxlLWZpZWxkfSBXaWRnZXQKIEBmaW5kZXggZWRpdGFibGUtZmllbGRAcnsgd2lkZ2V0fQog CiBTeW50YXg6CkBAIC04MDYsNTYgKzE2MjEsMTM3IEBAIGVkaXRhYmxlLWZpZWxkCiBAdmFy e3R5cGV9IDo6PSAoZWRpdGFibGUtZmllbGQgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVu dH1dLi4uIFsgQHZhcnt2YWx1ZX0gXSkKIEBlbmQgZXhhbXBsZQogCitBIHdpZGdldCB0aGF0 IGNhbiBiZSBlZGl0ZWQgYnkgdGhlIHVzZXIuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtk ZWZhdWx0fSB3aWRnZXQuCisKIFRoZSBAdmFye3ZhbHVlfSwgaWYgcHJlc2VudCwgaXMgdXNl ZCB0byBpbml0aWFsaXplIHRoZSBAY29kZXs6dmFsdWV9CiBwcm9wZXJ0eS4gIFRoZSB2YWx1 ZSBzaG91bGQgYmUgYSBzdHJpbmcsIHdoaWNoIHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlCi1m aWVsZC4gIFRoaXMgd2lkZ2V0IHdpbGwgbWF0Y2ggYWxsIHN0cmluZyB2YWx1ZXMuCitmaWVs ZC4gIElmIG5vdCBwcmVzZW50LCBAY29kZXs6dmFsdWV9IGlzIHRoZSBlbXB0eSBzdHJpbmcu CisKK0BzdHJvbmd7V2FybmluZzp9IEluIGFuIEBjb2Rle2VkaXRhYmxlLWZpZWxkfSB3aWRn ZXQsIHRoZSBlZGl0YWJsZQorZmllbGQgbXVzdCBub3QgYmUgYWRqYWNlbnQgdG8gYW5vdGhl ciB3aWRnZXQtLS10aGF0IHdvbid0IHdvcmsuCitZb3UgbXVzdCBwdXQgc29tZSB0ZXh0IGlu IGJldHdlZW4uICBFaXRoZXIgbWFrZSB0aGlzIHRleHQgcGFydCBvZgordGhlIEBjb2Rle2Vk aXRhYmxlLWZpZWxkfSB3aWRnZXQgaXRzZWxmLCBvciBpbnNlcnQgaXQgd2l0aAorQGNvZGV7 d2lkZ2V0LWluc2VydH0uCiAKLVRoZSBmb2xsb3dpbmcgZXh0cmEgcHJvcGVydGllcyBhcmUg cmVjb2duaXplZDoKK1RoaXMgd2lkZ2V0IGVpdGhlciBvdmVycmlkZXMgb3IgYWRkcyB0aGUg Zm9sbG93aW5nIHByb3BlcnRpZXM6CiAKIEB0YWJsZSBAY29kZQorQGl0ZW0gOmNvbnZlcnQt d2lkZ2V0CitKdXN0IGxpa2UgdGhlIEBjb2Rle2l0ZW19IHdpZGdldCwgdGhpcyBmdW5jdGlv biBhbGxvd3MgaXQgdG8KK2luaXRpYWxpemUgQGNvZGV7OnZhbHVlfSBmcm9tIEB2YXJ7dmFs dWV9LgorCitAdmluZGV4IGtleW1hcEByeyBrZXl3b3JkfQorQHZpbmRleCB3aWRnZXQtZmll bGQta2V5bWFwCitAaXRlbSA6a2V5bWFwCitLZXltYXAgdXNlZCBpbiB0aGUgZWRpdGFibGUg ZmllbGQuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGlzIEBjb2Rle3dpZGdldC1maWVsZC1rZXlt YXB9LCB3aGljaCBhbGxvd3MgdGhlIHVzZXIKK3RvIHVzZSBhbGwgdGhlIG5vcm1hbCBlZGl0 aW5nIGNvbW1hbmRzLCBldmVuIGlmIHRoZSBidWZmZXIncyBtYWpvcgorbW9kZSBzdXBwcmVz c2VzIHNvbWUgb2YgdGhlbS4gIFByZXNzaW5nIEBrZXl7UkVUfSBpbnZva2VzIHRoZSBmdW5j dGlvbgorc3BlY2lmaWVkIGJ5IEBjb2RlezphY3Rpb259LgorCitAaXRlbSA6Zm9ybWF0CitC eSBkZWZhdWx0LCBpdCBzcGVjaWZpZXMgdG8gaW5zZXJ0IG9ubHkgdGhlIHdpZGdldCdzIHZh bHVlLgorCitAc3Ryb25ne1dhcm5pbmc6fSBJbiBhbiBAY29kZXtlZGl0YWJsZS1maWVsZH0g d2lkZ2V0LCB0aGUgQHNhbXB7JXZ9IGVzY2FwZQorbXVzdCBiZSBwcmVjZWRlZCBieSBzb21l IG90aGVyIHRleHQgaW4gdGhlIEBjb2Rlezpmb3JtYXR9IHN0cmluZyAoaWYKK3NwZWNpZmll ZCkuCisKIEB2aW5kZXggc2l6ZUByeyBrZXl3b3JkfQogQGl0ZW0gOnNpemUKLVRoZSB3aWR0 aCBvZiB0aGUgZWRpdGFibGUgZmllbGQuQCoKK1RoZSB3aWR0aCBvZiB0aGUgZWRpdGFibGUg ZmllbGQuCisKIEJ5IGRlZmF1bHQgdGhlIGZpZWxkIHdpbGwgcmVhY2ggdG8gdGhlIGVuZCBv ZiB0aGUgbGluZS4KIAogQHZpbmRleCB2YWx1ZS1mYWNlQHJ7IGtleXdvcmR9CiBAaXRlbSA6 dmFsdWUtZmFjZQotRmFjZSB1c2VkIGZvciBoaWdobGlnaHRpbmcgdGhlIGVkaXRhYmxlIGZp ZWxkLiAgRGVmYXVsdCBpcwotQGNvZGV7d2lkZ2V0LWZpZWxkLWZhY2V9LCBzZWUgQHJlZntV c2VyIEludGVyZmFjZX0uCitGYWNlIHVzZWQgZm9yIGhpZ2hsaWdodGluZyB0aGUgZWRpdGFi bGUgZmllbGQuCisKK0RlZmF1bHQgaXMgQGNvZGV7d2lkZ2V0LWZpZWxkLWZhY2V9LCBAcHhy ZWZ7VXNlciBJbnRlcmZhY2V9LgogCiBAdmluZGV4IHNlY3JldEByeyBrZXl3b3JkfQogQGl0 ZW0gOnNlY3JldAotQ2hhcmFjdGVyIHVzZWQgdG8gZGlzcGxheSB0aGUgdmFsdWUuICBZb3Ug Y2FuIHNldCB0aGlzIHRvLCBlLmcuLCBAY29kZXs/Kn0KLWlmIHRoZSBmaWVsZCBjb250YWlu cyBhIHBhc3N3b3JkIG9yIG90aGVyIHNlY3JldCBpbmZvcm1hdGlvbi4gIEJ5Ci1kZWZhdWx0 LCB0aGlzIGlzIEBjb2Rle25pbH0sIGFuZCB0aGUgdmFsdWUgaXMgbm90IHNlY3JldC4KK0No YXJhY3RlciB1c2VkIHRvIGRpc3BsYXkgdGhlIHZhbHVlLgorCitZb3UgY2FuIHNldCB0aGlz IHRvLCBlLmcuLCBAY29kZXs/Kn0gaWYgdGhlIGZpZWxkIGNvbnRhaW5zIGEgcGFzc3dvcmQK K29yIG90aGVyIHNlY3JldCBpbmZvcm1hdGlvbi4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgQGNv ZGV7bmlsfSwgYW5kIHRoZQordmFsdWUgaXMgbm90IHNlY3JldC4KIAogQHZpbmRleCB2YWxp ZC1yZWdleHBAcnsga2V5d29yZH0KIEBpdGVtIDp2YWxpZC1yZWdleHAKIEJ5IGRlZmF1bHQg dGhlIEBjb2Rlezp2YWxpZGF0ZX0gZnVuY3Rpb24gd2lsbCBtYXRjaCB0aGUgY29udGVudCBv ZiB0aGUKLWZpZWxkIHdpdGggdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLiAgVGhlIGRl ZmF1bHQgdmFsdWUgaXMgQGNvZGV7IiJ9Ci13aGljaCBtYXRjaGVzIGV2ZXJ5dGhpbmcuCitm aWVsZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZS4KIAotQHZpbmRleCBrZXlt YXBAcnsga2V5d29yZH0KLUB2aW5kZXggd2lkZ2V0LWZpZWxkLWtleW1hcAotQGl0ZW0gOmtl eW1hcAotS2V5bWFwIHVzZWQgaW4gdGhlIGVkaXRhYmxlIGZpZWxkLiAgVGhlIGRlZmF1bHQg dmFsdWUgaXMKLUBjb2Rle3dpZGdldC1maWVsZC1rZXltYXB9LCB3aGljaCBhbGxvd3MgeW91 IHRvIHVzZSBhbGwgdGhlIG5vcm1hbAotZWRpdGluZyBjb21tYW5kcywgZXZlbiBpZiB0aGUg YnVmZmVyJ3MgbWFqb3IgbW9kZSBzdXBwcmVzc2VzIHNvbWUgb2YKLXRoZW0uICBQcmVzc2lu ZyBAa2V5e1JFVH0gaW52b2tlcyB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5Ci1AY29kZXs6 YWN0aW9ufS4KK1RoZSBkZWZhdWx0IHZhbHVlIGlzIEBjb2RleyIifSB3aGljaCBtYXRjaGVz IGV2ZXJ5dGhpbmcuCisKK0BpdGVtIDp2YWxpZGF0ZQorUmV0dXJucyBAY29kZXtuaWx9IGlm IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSB3aWRnZXQgbWF0Y2hlcyB0aGUKK0Bjb2Rlezp2 YWxpZC1yZWdleHB9IHZhbHVlLgorCitAaXRlbSA6cHJvbXB0LWludGVybmFsCitBIGZ1bmN0 aW9uIHRvIHJlYWQgYSB2YWx1ZSBmb3Igd2lkZ2V0LCB1c2VkIGJ5IHRoZQorQGNvZGV7OnBy b21wdC12YWx1ZX0gZnVuY3Rpb24uCisKK0BpdGVtIDpwcm9tcHQtaGlzdG9yeQorQSB2YXJp YWJsZSB0aGF0IGhvbGRzIHRoZSBoaXN0b3J5IG9mIGZpZWxkIG1pbmlidWZmZXIgZWRpdHMu CisKK0BpdGVtIDpwcm9tcHQtdmFsdWUKK0EgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZSBAY29k ZXs6cHJvbXB0LWludGVybmFsfSBmdW5jdGlvbiBhbmQgdGhlCitAY29kZXs6cHJvbXB0LWhp c3Rvcnl9IHZhbHVlIHRvIHByb21wdCBmb3IgYSBzdHJpbmcsIGFuZCByZXR1biB0aGUKK3Vz ZXIgcmVzcG9uc2UgaW4gdGhlIGV4dGVybmFsIGZvcm1hdC4KKworQGl0ZW0gOmFjdGlvbgor V2hlbiBpbnZva2VkLCBtb3ZlcyBwb2ludCB0byB0aGUgbmV4dCBmaWVsZC4KKworQGl0ZW0g OnZhbHVlLWNyZWF0ZQorRnVuY3Rpb24gdGhhdCB0YWtlcyBjYXJlIG9mIGNyZWF0aW5nIHRo ZSB3aWRnZXQsIHJlc3BlY3RpbmcgaXRzCitAY29kZXs6c2l6ZX0gYW5kIEBjb2Rlezp2YWx1 ZX0uCisKK0BpdGVtIDp2YWx1ZS1zZXQKK0Z1bmN0aW9uIHRvIHVzZSB0byBtb2RpZnkgcHJv Z3JhbWF0aWNhbGx5IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZQord2lkZ2V0LgorCitAaXRl bSA6dmFsdWUtZGVsZXRlCitGdW5jdGlvbiB0aGF0IHJlbW92ZXMgdGhlIHdpZGdldCBzbyBp dCBjYW5ub3QgYmUgZWRpdGVkIGFueW1vcmUuCisKK0BpdGVtIDp2YWx1ZS1nZXQKK0Z1bmN0 aW9uIHRvIHJldHVybiB0aGUgY3VycmVudCB0ZXh0IGluIHRoZSB3aWRnZXQuCisKK0l0IHRh a2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50LCBAdmFye25vLXRydW5jYXRlfS4gIElmCitAdmFy e25vLXRydW5jYXRlfSBpcyBuaWwsIHRydW5jYXRlcyB0cmFpbGluZyBzcGFjZXMuCisKK0Bp dGVtIDptYXRjaAorRnVuY3Rpb24gdGhhdCBtYWtlcyB0aGUgd2lkZ2V0IG1hdGNoIGFueSBz dHJpbmcgdmFsdWUuCiBAZW5kIHRhYmxlCiAKIEBub2RlIHRleHQKLUBzZWN0aW9uIFRoZSBA Y29kZXt0ZXh0fSBXaWRnZXQKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXt0ZXh0fSBXaWRnZXQK IEBmaW5kZXggdGV4dEByeyB3aWRnZXR9CiAKK1N5bnRheDoKKworQGV4YW1wbGUKK0B2YXJ7 dHlwZX0gOjo9ICh0ZXh0IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiBbIEB2 YXJ7dmFsdWV9IF0pCitAZW5kIGV4YW1wbGUKKworQSB3aWRnZXQganVzdCBsaWtlIHRoZSBA Y29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0LCBidXQgaW50ZW5kZWQgZm9yCittdWx0aWxp bmUgdGV4dCBmaWVsZHMuICBJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle2VkaXRhYmxlLWZpZWxk fSB3aWRnZXQuCisKK0l0IG92ZXJyaWRlcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisK K0B0YWJsZSBAY29kZQorQGl0ZW0gOmZvcm1hdAorQnkgZGVmYXVsdCwgcHJpbnRzIGEgdGFn IGFuZCB0aGUgdmFsdWUuCisKIEB2aW5kZXggd2lkZ2V0LXRleHQta2V5bWFwCi1UaGlzIGlz IGp1c3QgbGlrZSBAY29kZXtlZGl0YWJsZS1maWVsZH0sIGJ1dCBpbnRlbmRlZCBmb3IgbXVs dGlsaW5lIHRleHQKLWZpZWxkcy4gIFRoZSBkZWZhdWx0IEBjb2RlezprZXltYXB9IGlzIEBj b2Rle3dpZGdldC10ZXh0LWtleW1hcH0sIHdoaWNoCi1kb2VzIG5vdCByZWJpbmQgdGhlIEBr ZXl7UkVUfSBrZXkuCitAaXRlbSA6a2V5bWFwCitUaGUgZGVmYXVsdCBpcyBAY29kZXt3aWRn ZXQtdGV4dC1rZXltYXB9LCB3aGljaCBkb2VzIG5vdCByZWJpbmQgdGhlCitAa2V5e1JFVH0g a2V5LgorQGVuZCB0YWJsZQogCiBAbm9kZSBtZW51LWNob2ljZQotQHNlY3Rpb24gVGhlIEBj b2Rle21lbnUtY2hvaWNlfSBXaWRnZXQKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXttZW51LWNo b2ljZX0gV2lkZ2V0CiBAZmluZGV4IG1lbnUtY2hvaWNlQHJ7IHdpZGdldH0KIAogU3ludGF4 OgpAQCAtODY0LDIxICsxNzYwLDM3IEBAIG1lbnUtY2hvaWNlCiBAdmFye3R5cGV9IDo6PSAo bWVudS1jaG9pY2UgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uIEB2YXJ7dHlw ZX0gLi4uICkKIEBlbmQgZXhhbXBsZQogCitBIHdpZGdldCB0byByZXByZXNlbnQgYSBtZW51 IG9mIG9wdGlvbnMuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtkZWZhdWx0fSB3aWRnZXQu CisKIFRoZSBAdmFye3R5cGV9IGFyZ3VtZW50IHJlcHJlc2VudHMgZWFjaCBwb3NzaWJsZSBj aG9pY2UuICBUaGUgd2lkZ2V0J3MKLXZhbHVlIHdpbGwgYmUgdGhhdCBvZiB0aGUgY2hvc2Vu IEB2YXJ7dHlwZX0gYXJndW1lbnQuICBUaGlzIHdpZGdldCB3aWxsCi1tYXRjaCBhbnkgdmFs dWUgbWF0Y2hpbmcgYXQgbGVhc3Qgb25lIG9mIHRoZSBzcGVjaWZpZWQgQHZhcnt0eXBlfQot YXJndW1lbnRzLgordmFsdWUgd2lsbCBiZSB0aGF0IG9mIHRoZSBjaG9zZW4gQHZhcnt0eXBl fSBhcmd1bWVudC4KKworSXQgZWl0aGVyIG92ZXJyaWRlcyBvciBhZGRzIHRoZSBmb2xsb3dp bmcgcHJvcGVydGllczoKIAogQHRhYmxlIEBjb2RlCitAaXRlbSA6Y29udmVydC13aWRnZXQK K0EgZnVuY3Rpb24gdGhhdCB0YWtlcyBjYXJlIG9mIGNvbnZlcnRpbmcgZWFjaCBwb3NzaWJs ZSBjaG9pY2UuCisKK0BpdGVtIDpjb3B5CitBIGZ1bmN0aW9uIHRvIGNvcHkgZWFjaCBwb3Nz aWJsZSBjaG9pY2UuCisKK0BpdGVtIDpmb3JtYXQKK0J5IGRlZmF1bHQsIGJ1dHRvbml6ZSB0 aGUgdGFnIGFuZCBzaG93IHRoZSB2YWx1ZS4KKwogQHZpbmRleCB2b2lkQHJ7IGtleXdvcmR9 CiBAaXRlbSA6dm9pZAogV2lkZ2V0IHR5cGUgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gdGhl IHZhbHVlIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUKIHNwZWNpZmllZCBAdmFye3R5cGV9 IGFyZ3VtZW50cy4KIAorQnkgZGVmYXVsdCB0aGlzIGlzIGFuIEBjb2Rle2l0ZW19IHdpZGdl dC4KKwogQHZpbmRleCBjYXNlLWZvbGRAcnsga2V5d29yZH0KIEBpdGVtIDpjYXNlLWZvbGQK LVNldCB0aGlzIHRvIEBjb2Rle25pbH0gaWYgeW91IGRvbid0IHdhbnQgdG8gaWdub3JlIGNh c2Ugd2hlbiBwcm9tcHRpbmcgZm9yIGEKLWNob2ljZSB0aHJvdWdoIHRoZSBtaW5pYnVmZmVy LgorSWYgQGNvZGV7bmlsfSBkb24ndCBpZ25vcmUgY2FzZSB3aGVuIHByb21wdGluZyBmb3Ig YSBjaG9pY2UgdGhyb3VnaAordGhlIG1pbmlidWZmZXIuCisKK0J5IGRlZmF1bHQsIGl0cyB2 YWx1ZSBpcyBAY29kZXt0fS4KIAogQHZpbmRleCBjaGlsZHJlbkByeyBrZXl3b3JkfQogQGl0 ZW0gOmNoaWxkcmVuCkBAIC04OTIsMTAgKzE4MDQsNTQgQEAgbWVudS1jaG9pY2UKIEB2aW5k ZXggYXJnc0ByeyBrZXl3b3JkfQogQGl0ZW0gOmFyZ3MKIFRoZSBsaXN0IG9mIHR5cGVzLgor CitAaXRlbSA6dmFsdWUtY3JlYXRlCitUaGUgZnVuY3Rpb24gdGhhdCBpbnNlcnRzIHRoZSBj dXJyZW50IHZhbHVlIGZvciB0aGUgd2lkZ2V0LgorCitJdCBpbnNlcnRzIHRoZSBmaXJzdCBj aG9pY2UgdGhhdCBtYXRjaGVzLCBhcyB3aXRoIHRoZSBAY29kZXs6bWF0Y2h9CitmdW5jdGlv biwgdGhlIHZhbHVlIG9mIHRoZSB3aWRnZXQuCisKK0BpdGVtIDp2YWx1ZS1nZXQKK1JldHVy bnMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBjaGlsZCBmb3IgdGhlIHdpZGdldCAoc2VlIHRo ZQorZGVzY3JpcHRpb24gZm9yIEBjb2RlezpjaGlsZHJlbn0gYWJvdmUpLgorCitAaXRlbSA6 dmFsdWUtaW5saW5lCitSZXR1cm5zIHRoZSBpbmxpbmUgdmFsdWUgb2YgdGhlIGZpcnN0IGNo aWxkIGZvciB0aGUgd2lkZ2V0LgorCitAaXRlbSA6ZGVmYXVsdC1nZXQKK1RoZSBkZWZhdWx0 IHZhbHVlIGZvciB0aGlzIHdpZGdldCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGZp cnN0CitjaG9pY2UsIGluIGNhc2UgQGNvZGV7OnZhbHVlfSBpcyBtaXNzaW5nLgorCitUaGlz IG1lYW5zIHRoYXQgaWYgeW91IHdhbnQgYSBzcGVjaWZpYyBkZWZhdWx0IHZhbHVlIGZvciB0 aGUKK0Bjb2Rle21lbnUtY2hvaWNlfSB3aWRnZXQsIHlvdSBzaG91bGQgZWl0aGVyIHBhc3Mg YSBAY29kZXs6dmFsdWV9Citwcm9wZXJ0eSB3aGVuIGNyZWF0aW5nIGl0LCBvciBhcnJhbmdl IHRoZSBjaG9pY2VzIHNvIHRoYXQgdGhlIGZpcnN0CitvbmUgY2FuIGhvbGQgeW91ciBkZXNp cmVkIGRlZmF1bHQgdmFsdWUuCisKK0BpdGVtIDptb3VzZS1kb3duLWFjdGlvbgorQSBmdW5j dGlvbiB0aGF0IHRha2VzIGNhcmUgb2Ygc2hvd2luZyBhIG1lbnUsIGlmIHBvc3NpYmxlIGFu ZCBkZXNpcmVkLgorCitAaXRlbSA6YWN0aW9uCitBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgY2Fy ZSBvZiBnZXR0aW5nIGEgbmV3IGNob2ljZSBmb3IgdGhlIHdpZGdldC4KKworRGVwZW5kaW5n IG9uIHRoZSBudW1iZXIgb2YgY2hvaWNlcyBhdmFpbGFibGUsIGl0IG1heSBzaG93IGEgbWVu dSBvcgoranVzdCB0b2dnbGUgdGhlIGNob2ljZXMsIG9yIGV2ZW4gZG8gbm90aGluZyBhdCBh bGwuCisKK0FmdGVyIGdldHRpbmcgdGhlIGNob2ljZSwgaXQgcmVjcmVhdGVzIHRoZSB3aWRn ZXQgYW5kIG5vdGlmaWVzIGl0LgorCitAaXRlbSA6dmFsaWRhdGUKK1JldHVybnMgQGNvZGV7 bmlsfSBpZiB0aGUgd2lkZ2V0J3MgdmFsdWUgaXMgYSB2YWxpZCBjaG9pY2UuCisKK0BpdGVt IDptYXRjaAorVGhpcyB3aWRnZXQgd2lsbCBtYXRjaCBhbnkgdmFsdWUgbWF0Y2hpbmcgYXQg bGVhc3Qgb25lIG9mIHRoZQorc3BlY2lmaWVkIEB2YXJ7dHlwZX0gYXJndW1lbnRzLgorCitA aXRlbSA6bWF0Y2gtaW5saW5lCitBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tQGNvZGV7 bmlsfSBpZiB0aGUgdmFsdWVzIG1hdGNoIHRoZSB3aWRnZXQsCit0YWtpbmcgaW50byBhY2Nv dW50IHRoZSBAY29kZXs6aW5saW5lfSBwcm9wZXJ0eS4KIEBlbmQgdGFibGUKIAogQG5vZGUg cmFkaW8tYnV0dG9uLWNob2ljZQotQHNlY3Rpb24gVGhlIEBjb2Rle3JhZGlvLWJ1dHRvbi1j aG9pY2V9IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle3JhZGlvLWJ1dHRvbi1jaG9p Y2V9IFdpZGdldAogQGZpbmRleCByYWRpby1idXR0b24tY2hvaWNlQHJ7IHdpZGdldH0KIAog U3ludGF4OgpAQCAtOTA0LDE0ICsxODYwLDI4IEBAIHJhZGlvLWJ1dHRvbi1jaG9pY2UKIEB2 YXJ7dHlwZX0gOjo9IChyYWRpby1idXR0b24tY2hvaWNlIFtAdmFye2tleXdvcmR9IEB2YXJ7 YXJndW1lbnR9XS4uLiAgQHZhcnt0eXBlfSAuLi4gKQogQGVuZCBleGFtcGxlCiAKLVRoZSBj b21wb25lbnQgdHlwZXMgc3BlY2lmeSB0aGUgY2hvaWNlcywgd2l0aCBvbmUgcmFkaW8gYnV0 dG9uIGZvcgorQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgY2hvaWNlIGZyb20gbXVsdGlwbGUg b3B0aW9ucy4gIEl0cyBzdXBlciBpcwordGhlIEBjb2Rle2RlZmF1bHR9IHdpZGdldC4KKwor VGhlIGNvbXBvbmVudCBAdmFye3R5cGVzfSBzcGVjaWZ5IHRoZSBjaG9pY2VzLCB3aXRoIG9u ZSByYWRpbyBidXR0b24gZm9yCiBlYWNoLiAgVGhlIHdpZGdldCdzIHZhbHVlIHdpbGwgYmUg dGhhdCBvZiB0aGUgY2hvc2VuIEB2YXJ7dHlwZX0KLWFyZ3VtZW50LiAgVGhpcyB3aWRnZXQg bWF0Y2hlcyBhbnkgdmFsdWUgdGhhdCBtYXRjaGVzIGF0IGxlYXN0IG9uZSBvZgotdGhlIHNw ZWNpZmllZCBAdmFye3R5cGV9IGFyZ3VtZW50cy4KK2FyZ3VtZW50LgogCi1UaGUgZm9sbG93 aW5nIGV4dHJhIHByb3BlcnRpZXMgYXJlIHJlY29nbml6ZWQuCitJdCBvdmVycmlkZXMgdGhl IGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogCiBAdGFibGUgQGNvZGUKK0BpdGVtIDpjb252ZXJ0 LXdpZGdldAorQXMgb3RoZXIgY29tcG9zaXRlIHdpZGdldHMsIGEgZnVuY3Rpb24gdGhhdCB0 YWtlcyBjYXJlIG9mIGNvbnZlcnRpbmcKK2VhY2ggYXZhaWxhYmxlIGNob2ljZS4KKworQGl0 ZW0gOmNvcHkKK0EgZnVuY3Rpb24gdG8gY29weSBlYWNoIGF2YWlsYWJsZSBjaG9pY2UuCisK K0BpdGVtIDphY3Rpb24KK0EgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYW55IHJhZGlvIGJ1 dHRvbiB3YXMgcHJlc3NlZCBhbmQgYWN0aXZhdGVzCit0aGUgcHJlc3NlZCBvbmUsIHBvc3Np Ymx5IGRlYWN0aXZhdGluZyBhbiBvbGQgb25lLiAgVGhlbiwgaXQgbm90aWZpZXMKK2l0c2Vs Zi4KKwogQHZpbmRleCBlbnRyeS1mb3JtYXRAcnsga2V5d29yZH0KIEBpdGVtIDplbnRyeS1m b3JtYXQKIFRoaXMgc3RyaW5nIHdpbGwgYmUgaW5zZXJ0ZWQgZm9yIGVhY2ggZW50cnkgaW4g dGhlIGxpc3QuCkBAIC05MjUsNiArMTg5NSw5IEBAIHJhZGlvLWJ1dHRvbi1jaG9pY2UKIElu c2VydCBhIGxpdGVyYWwgQHNhbXB7JX0uCiBAZW5kIHRhYmxlCiAKK0BpdGVtIDpmb3JtYXQK K0J5IGRlZmF1bHQsIGl0IGluc2VydHMgaXRzIHZhbHVlLgorCiBAdmluZGV4IGJ1dHRvbi1h cmdzQHJ7IGtleXdvcmR9CiBAaXRlbSA6YnV0dG9uLWFyZ3MKIEEgbGlzdCBvZiBrZXl3b3Jk cyB0byBwYXNzIHRvIHRoZSByYWRpbyBidXR0b25zLiAgVXNlZnVsIGZvciBzZXR0aW5nLApA QCAtOTQwLDQyICsxOTEzLDU1IEBAIHJhZGlvLWJ1dHRvbi1jaG9pY2UKIAogQHZpbmRleCBj aG9pY2VAcnsga2V5d29yZH0KIEBpdGVtIDpjaG9pY2UKLVRoZSBjdXJyZW50IGNob3NlbiB0 eXBlCitUaGUgY3VycmVudCBjaG9zZW4gdHlwZS4KIAogQHZpbmRleCBhcmdzQHJ7IGtleXdv cmR9CiBAaXRlbSA6YXJncwogVGhlIGxpc3Qgb2YgdHlwZXMuCi1AZW5kIHRhYmxlCiAKLVlv dSBjYW4gYWRkIGV4dHJhIHJhZGlvIGJ1dHRvbiBpdGVtcyB0byBhIEBjb2Rle3JhZGlvLWJ1 dHRvbi1jaG9pY2V9Ci13aWRnZXQgYWZ0ZXIgaXQgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHRo ZSBmdW5jdGlvbgotQGNvZGV7d2lkZ2V0LXJhZGlvLWFkZC1pdGVtfS4KK0BpdGVtIDp2YWx1 ZS1jcmVhdGUKK0EgZnVuY3Rpb24gdG8gaW5zZXJ0IGFsbCBhdmFpbGFibGUgY2hvaWNlcy4K IAotQGRlZnVuIHdpZGdldC1yYWRpby1hZGQtaXRlbSB3aWRnZXQgdHlwZQotQWRkIHRvIEBj b2Rle3JhZGlvLWJ1dHRvbi1jaG9pY2V9IHdpZGdldCBAdmFye3dpZGdldH0gYSBuZXcgcmFk aW8gYnV0dG9uCi1pdGVtIG9mIHR5cGUgQHZhcnt0eXBlfS4KLUBlbmQgZGVmdW4KK0BpdGVt IDp2YWx1ZS1nZXQKK1JldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgY2hvc2VuIHdpZGdldC4K IAotUGxlYXNlIG5vdGUgdGhhdCBzdWNoIGl0ZW1zIGFkZGVkIGFmdGVyIHRoZSBAY29kZXty YWRpby1idXR0b24tY2hvaWNlfQotd2lkZ2V0IGhhcyBiZWVuIGNyZWF0ZWQgd2lsbCBAc3Ry b25ne25vdH0gYmUgcHJvcGVybHkgZGVzdHJ1Y3RlZCB3aGVuCi15b3UgY2FsbCBAY29kZXt3 aWRnZXQtZGVsZXRlfS4KK0BpdGVtIDp2YWx1ZS1zZXQKK0EgZnVuY3Rpb24gdG8gc2V0IHRo ZSB2YWx1ZSB0byBvbmUgb2YgaXRzIGF2YWlsYWJsZSBvcHRpb25zLgogCi1Abm9kZSBpdGVt Ci1Ac2VjdGlvbiBUaGUgQGNvZGV7aXRlbX0gV2lkZ2V0Ci1AZmluZGV4IGl0ZW1Acnsgd2lk Z2V0fQorQGl0ZW0gOnZhbHVlLWlubGluZQorQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhl IGlubGluZSB2YWx1ZSBvZiB0aGUgY2hpbGQgd2lkZ2V0LgogCi1TeW50YXg6CitAaXRlbSA6 b2Zmc2V0CitCeSBkZWZhdWx0LCB0aGlzIHdpZGdldCBoYXMgYW4gb2Zmc2V0IG9mIDQuCiAK LUBleGFtcGxlCi1AdmFye2l0ZW19IDo6PSAoaXRlbSBbQHZhcntrZXl3b3JkfSBAdmFye2Fy Z3VtZW50fV0uLi4gQHZhcnt2YWx1ZX0pCi1AZW5kIGV4YW1wbGUKK0BpdGVtIDp2YWxpZGF0 ZQorVGhlIHdpZGdldCB2YWxpZGF0ZXMgaWYgdGhlIGN1cnJlbnQgdmFsdWUgaXMgdmFsaWQg Zm9yIG9uZSBvZiBpdHMKK2NoaWxkcmVuLgorCitAaXRlbSA6bWF0Y2gKK1RoaXMgd2lkZ2V0 IG1hdGNoZXMgYW55IHZhbHVlIHRoYXQgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2YKK3RoZSBz cGVjaWZpZWQgQHZhcnt0eXBlfSBhcmd1bWVudHMuCisKK0BpdGVtIDptYXRjaC1pbmxpbmUK K0xpa2UgdGhlIEBjb2RlezptYXRjaH0gZnVuY3Rpb24sIGJ1dCB0YWtpbmcgaW50byBhY2Nv dW50IGlubGluZQordmFsdWVzLgorQGVuZCB0YWJsZQorCitZb3UgY2FuIGFkZCBleHRyYSBy YWRpbyBidXR0b24gaXRlbXMgdG8gYSBAY29kZXtyYWRpby1idXR0b24tY2hvaWNlfQord2lk Z2V0IGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24KK0Bjb2Rl e3dpZGdldC1yYWRpby1hZGQtaXRlbX0uCisKK0BkZWZ1biB3aWRnZXQtcmFkaW8tYWRkLWl0 ZW0gd2lkZ2V0IHR5cGUKK0FkZCB0byBAY29kZXtyYWRpby1idXR0b24tY2hvaWNlfSB3aWRn ZXQgQHZhcnt3aWRnZXR9IGEgbmV3IHJhZGlvIGJ1dHRvbgoraXRlbSBvZiB0eXBlIEB2YXJ7 dHlwZX0uCitAZW5kIGRlZnVuCiAKLVRoZSBAdmFye3ZhbHVlfSwgaWYgcHJlc2VudCwgaXMg dXNlZCB0byBpbml0aWFsaXplIHRoZSBAY29kZXs6dmFsdWV9Ci1wcm9wZXJ0eS4gIFRoZSB2 YWx1ZSBzaG91bGQgYmUgYSBzdHJpbmcsIHdoaWNoIHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhl Ci1idWZmZXIuICBUaGlzIHdpZGdldCB3aWxsIG9ubHkgbWF0Y2ggdGhlIHNwZWNpZmllZCB2 YWx1ZS4KK1BsZWFzZSBub3RlIHRoYXQgc3VjaCBpdGVtcyBhZGRlZCBhZnRlciB0aGUgQGNv ZGV7cmFkaW8tYnV0dG9uLWNob2ljZX0KK3dpZGdldCBoYXMgYmVlbiBjcmVhdGVkIHdpbGwg QHN0cm9uZ3tub3R9IGJlIHByb3Blcmx5IGRlc3RydWN0ZWQgd2hlbgoreW91IGNhbGwgQGNv ZGV7d2lkZ2V0LWRlbGV0ZX0uCiAKIEBub2RlIGNob2ljZS1pdGVtCi1Ac2VjdGlvbiBUaGUg QGNvZGV7Y2hvaWNlLWl0ZW19IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle2Nob2lj ZS1pdGVtfSBXaWRnZXQKIEBmaW5kZXggY2hvaWNlLWl0ZW1Acnsgd2lkZ2V0fQogCiBTeW50 YXg6CkBAIC05ODQsMTQgKzE5NzAsMjYgQEAgY2hvaWNlLWl0ZW0KIEB2YXJ7aXRlbX0gOjo9 IChjaG9pY2UtaXRlbSBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gQHZhcnt2 YWx1ZX0pCiBAZW5kIGV4YW1wbGUKIAorQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgY2hvaWNl IGluIGEgQGNvZGV7bWVudS1jaG9pY2V9IHdpZGdldC4gIEl0cworc3VwZXIgaXMgdGhlIEBj b2Rle2l0ZW19IHdpZGdldC4KKwogVGhlIEB2YXJ7dmFsdWV9LCBpZiBwcmVzZW50LCBpcyB1 c2VkIHRvIGluaXRpYWxpemUgdGhlIEBjb2Rlezp2YWx1ZX0KLXByb3BlcnR5LiAgVGhlIHZh bHVlIHNob3VsZCBiZSBhIHN0cmluZywgd2hpY2ggd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUK LWJ1ZmZlciBhcyBhIGJ1dHRvbi4gIEFjdGl2YXRpbmcgdGhlIGJ1dHRvbiBvZiBhIEBjb2Rl e2Nob2ljZS1pdGVtfSBpcwotZXF1aXZhbGVudCB0byBhY3RpdmF0aW5nIHRoZSBwYXJlbnQg d2lkZ2V0LiAgVGhpcyB3aWRnZXQgd2lsbCBvbmx5IG1hdGNoCi10aGUgc3BlY2lmaWVkIHZh bHVlLgorcHJvcGVydHkuCisKK0l0IG92ZXJyaWRlcyB0aGUgZm9sbG93aW5nIHByb3BlcnRp ZXM6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gOmFjdGlvbgorQWN0aXZhdGluZyB0aGUgYnV0 dG9uIG9mIGEgQGNvZGV7Y2hvaWNlLWl0ZW19IGlzIGVxdWl2YWxlbnQgdG8KK2FjdGl2YXRp bmcgdGhlIHBhcmVudCB3aWRnZXQuCisKK0BpdGVtIDpmb3JtYXQKK0J5IGRlZmF1bHQsIGl0 IGJ1dHRvbml6ZXMgdGhlIHRhZyAoaS5lLiwgaXRzIHZhbHVlKSBhbmQgYWRkcyBhIG5ld2xp bmUKK2NoYXJhY3RlciBhdCB0aGUgZW5kIG9mIHRoZSB3aWRnZXQuCitAZW5kIHRhYmxlCiAK IEBub2RlIHRvZ2dsZQotQHNlY3Rpb24gVGhlIEBjb2Rle3RvZ2dsZX0gV2lkZ2V0CitAc3Vi c2VjdGlvbiBUaGUgQGNvZGV7dG9nZ2xlfSBXaWRnZXQKIEBmaW5kZXggdG9nZ2xlQHJ7IHdp ZGdldH0KIAogU3ludGF4OgpAQCAtMTAwMCw0MyArMTk5OCwxMzYgQEAgdG9nZ2xlCiBAdmFy e3R5cGV9IDo6PSAodG9nZ2xlIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLikK IEBlbmQgZXhhbXBsZQogCitBIHdpZGdldCB0aGF0IGNhbiB0b2dnbGUgYmV0d2VlbiB0d28g c3RhdGVzLiAgSXRzIHN1cGVyIGlzIHRoZQorQGNvZGV7aXRlbX0gd2lkZ2V0LgorCiBUaGUg d2lkZ2V0IGhhcyB0d28gcG9zc2libGUgc3RhdGVzLCBAc2FtcHtvbn0gYW5kIEBzYW1we29m Zn0sIHdoaWNoCiBjb3JyZXNwb25kIHRvIGEgQGNvZGV7dH0gb3IgQGNvZGV7bmlsfSB2YWx1 ZSwgcmVzcGVjdGl2ZWx5LgogCi1UaGUgZm9sbG93aW5nIGV4dHJhIHByb3BlcnRpZXMgYXJl IHJlY29nbml6ZWQ6CitJdCBlaXRoZXIgb3ZlcnJpZGVzIG9yIGFkZHMgdGhlIGZvbGxvd2lu ZyBwcm9wZXJ0aWVzOgogCiBAdGFibGUgQGNvZGUKK0BpdGVtIDpmb3JtYXQKK0J5IGRlZmF1 bHQsIGl0IGJ1dHRvbml6ZXMgdGhlIHZhbHVlIGFuZCBhZGRzIGEgbmV3bGluZSBhdCB0aGUg ZW5kIG9mCit0aGUgd2lkZ2V0LgorCiBAaXRlbSA6b24KIEEgc3RyaW5nIHJlcHJlc2VudGlu ZyB0aGUgQHNhbXB7b259IHN0YXRlLiAgQnkgZGVmYXVsdCB0aGUgc3RyaW5nCiBAc2FtcHtv bn0uCisKIEBpdGVtIDpvZmYKIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQHNhbXB7b2Zm fSBzdGF0ZS4gIEJ5IGRlZmF1bHQgdGhlIHN0cmluZwogQHNhbXB7b2ZmfS4KKwogQHZpbmRl eCBvbi1nbHlwaEByeyBrZXl3b3JkfQogQGl0ZW0gOm9uLWdseXBoCiBOYW1lIG9mIGEgZ2x5 cGggdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBAc2FtcHs6b259IHRleHQgc3RyaW5nLCBv bgogZW1hY3NlbiB0aGF0IHN1cHBvcnRzIHRoaXMuCisKIEB2aW5kZXggb2ZmLWdseXBoQHJ7 IGtleXdvcmR9CiBAaXRlbSA6b2ZmLWdseXBoCiBOYW1lIG9mIGEgZ2x5cGggdG8gYmUgdXNl ZCBpbnN0ZWFkIG9mIHRoZSBAc2FtcHs6b2ZmfSB0ZXh0IHN0cmluZywgb24KIGVtYWNzZW4g dGhhdCBzdXBwb3J0cyB0aGlzLgorCitAaXRlbSA6dmFsdWUtY3JlYXRlCitBIGZ1bmN0aW9u IGZvciBjcmVhdGluZyB0aGUgd2lkZ2V0J3MgdmFsdWUsIGFjY29yZGluZyB0byBpdHMKK0Bz YW1wezpvbn0gb3IgQHNhbXB7Om9mZn0gc3RhdGUuCisKK0BpdGVtIDphY3Rpb24KK0Z1bmN0 aW9uIHRvIHRvZ2dsZSB0aGUgc3RhdGUgb2YgdGhlIHdpZGdldC4gIEFmdGVyIHRvZ2dsaW5n LCBpdAorbm90aWZpZXMgaXRzZWxmLgorCitAaXRlbSA6bWF0Y2gKK1RoaXMgd2lkZ2V0IG1h dGNoZXMgYW55dGhpbmcuCitAZW5kIHRhYmxlCisKK0Bub2RlIHJhZGlvLWJ1dHRvbi10b2dn bGUKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtyYWRpby1idXR0b24tdG9nZ2xlfSBXaWRnZXQK K0BmaW5kZXggcmFkaW8tYnV0dG9uLXRvZ2dsZUByeyB3aWRnZXR9CitTeW50YXg6CisKK0Bl eGFtcGxlCitAdmFye3R5cGV9IDo6PSAocmFkaW8tYnV0dG9uLXRvZ2dsZSBbQHZhcntrZXl3 b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4pCitAZW5kIGV4YW1wbGUKKworQSB0b2dnbGUgdG8g dXNlIGluIHRoZSBAY29kZXtyYWRpb30gd2lkZ2V0LgorCitJdCBvdmVycmlkZXMgdGhlIGZv bGxvd2luZyBwcm9wZXJ0aWVzOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIDpidXR0b24tcHJl Zml4CitUaGUgZW1wdHkgc3RyaW5nLgorCitAaXRlbSA6YnV0dG9uLXN1ZmZpeAorVGhlIGVt cHR5IHN0cmluZy4KKworQGl0ZW0gOm9uCitUaGUgc3RyaW5nIGBgKCopJycsIHRvIHJlcHJl c2VudCB0aGUgQHNhbXB7b259IHN0YXRlLgorCitAaXRlbSA6b2ZmCitUaGUgc3RyaW5nIGBg KCApJycsIHRvIHJlcHJlc2VudCB0aGUgQHNhbXB7b2ZmfSBzdGF0ZS4KKworQGl0ZW0gOm9u LWdseXBoCitUaGUgbmFtZSBvZiBhbiBpbWFnZSB0byByZXByZXNlbnQgdGhlIEBzYW1we29u fSBzdGF0ZS4KKworQGl0ZW0gOm9mZi1nbHB5aAorVGhlIG5hbWUgb2YgYW4gaW1hZ2UgdG8g cmVwcmVzZW50IHRoZSBAc2FtcHtvZmZ9IHN0YXRlLgorCitAaXRlbSA6Zm9ybWF0CitCeSBk ZWZhdWx0LCBpdCBidXR0b25pemVzIGl0cyB2YWx1ZS4KKworQGl0ZW0gOm5vdGlmeQorQSBm dW5jdGlvbiB0byBub3RpZnkgaXRzIHBhcmVudC4KIEBlbmQgdGFibGUKIAogQG5vZGUgY2hl Y2tib3gKLUBzZWN0aW9uIFRoZSBAY29kZXtjaGVja2JveH0gV2lkZ2V0CitAc3Vic2VjdGlv biBUaGUgQGNvZGV7Y2hlY2tib3h9IFdpZGdldAogQGZpbmRleCBjaGVja2JveEByeyB3aWRn ZXR9CiAKLVRoaXMgd2lkZ2V0IGhhcyB0d28gcG9zc2libGUgc3RhdGVzLCBAc2FtcHtzZWxl Y3RlZH0gYW5kCi1Ac2FtcHt1bnNlbGVjdGVkfSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gYSBA Y29kZXt0fSBvciBAY29kZXtuaWx9IHZhbHVlLgotCiBTeW50YXg6CiAKIEBleGFtcGxlCiBA dmFye3R5cGV9IDo6PSAoY2hlY2tib3ggW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1d Li4uKQogQGVuZCBleGFtcGxlCiAKK0Egd2lkZ2V0IHRvIHJlcHJlc2VudCBhIHRvZ2dsZSB3 aWRnZXQsIHdpdGggYSBjaGVja2JveC4gIEl0cyBzdXBlciBpcwordGhlIEBjb2Rle3RvZ2ds ZX0gd2lkZ2V0LgorCitUaGlzIHdpZGdldCBoYXMgdHdvIHBvc3NpYmxlIHN0YXRlcywgQHNh bXB7c2VsZWN0ZWR9IGFuZAorQHNhbXB7dW5zZWxlY3RlZH0sIHdoaWNoIGNvcnJlc3BvbmRz IHRvIGEgQGNvZGV7dH0gb3IgQGNvZGV7bmlsfQordmFsdWUsIHJlc3BlY3RpdmVseS4KKwor SXQgZWl0aGVyIG92ZXJyaWRlcyBvciBhZGRzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoK KworQHRhYmxlIEBjb2RlCitAaXRlbSA6YnV0dG9uLXByZWZpeAorVGhlIGVtcHR5IHN0cmlu Zy4KKworQGl0ZW0gOmJ1dHRvbi1zdWZmaXgKK1RoZSBlbXB0eSBzdHJpbmcuCisKK0BpdGVt IDpmb3JtYXQKK0J5IGRlZmF1bHQsIGJ1dHRvbml6ZXMgdGhlIHZhbHVlLgorCitAaXRlbSA6 b24KK0J5IGRlZmF1bHQsIHRoZSBzdHJpbmcgYGBbWF0nJy4KKworQGl0ZW0gOm9mZgorQnkg ZGVmYXVsdCwgdGhlIHN0cmluZyBgYFsgXScnLgorCitAaXRlbSA6b24tZ2x5cGgKK1RoZSBu YW1lIG9mIHRoZSBpbWFnZSB0byB1c2Ugd2hlbiB0aGUgc3RhdGUgaXMgQHNhbXB7b259Lgor CitAaXRlbSA6b2ZmLWdseXBoCitUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgdG8gdXNlIHdoZW4g dGhlIHN0YXRlIGlzIEBzYW1we29mZn0uCisKK0BpdGVtIDphY3Rpb24KK0EgZnVuY3Rpb24g dGhhdCB0b2dnbGVzIHRoZSBjaGVja2JveCwgbm90aWZpZXMgdGhlIHBhcmVudHMgYW5kIGlu IHRoZQorQHNhbXB7b259IHN0YXRlLCBhY3RpdmF0ZXMgaXRzIHNpYmxpbmdzLgorQGVuZCB0 YWJsZQorCiBAbm9kZSBjaGVja2xpc3QKLUBzZWN0aW9uIFRoZSBAY29kZXtjaGVja2xpc3R9 IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle2NoZWNrbGlzdH0gV2lkZ2V0CiBAZmlu ZGV4IGNoZWNrbGlzdEByeyB3aWRnZXR9CiAKIFN5bnRheDoKQEAgLTEwNDUsMTQgKzIxMzYs MjYgQEAgY2hlY2tsaXN0CiBAdmFye3R5cGV9IDo6PSAoY2hlY2tsaXN0IFtAdmFye2tleXdv cmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgQHZhcnt0eXBlfSAuLi4gKQogQGVuZCBleGFtcGxl CiAKK0Egd2lkZ2V0IHRvIHJlcHJlc2VudCBhIG11bHRpcGxpY2UgY2hvaWNlLiAgSXRzIHN1 cGVyIGlzIHRoZQorQGNvZGV7ZGVmYXVsdH0gd2lkZ2V0LgorCiBUaGUgQHZhcnt0eXBlfSBh cmd1bWVudHMgcmVwcmVzZW50IGVhY2ggY2hlY2tsaXN0IGl0ZW0uICBUaGUgd2lkZ2V0J3MK IHZhbHVlIHdpbGwgYmUgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIHZhbHVlcyBvZiBhbGwgY2hl Y2tlZCBAdmFye3R5cGV9Ci1hcmd1bWVudHMuICBUaGUgY2hlY2tsaXN0IHdpZGdldCB3aWxs IG1hdGNoIGEgbGlzdCB3aG9zZSBlbGVtZW50cyBhbGwKLW1hdGNoIGF0IGxlYXN0IG9uZSBv ZiB0aGUgc3BlY2lmaWVkIEB2YXJ7dHlwZX0gYXJndW1lbnRzLgorYXJndW1lbnRzLgogCi1U aGUgZm9sbG93aW5nIGV4dHJhIHByb3BlcnRpZXMgYXJlIHJlY29nbml6ZWQ6CitJdCBlaXRo ZXIgb3ZlcnJpZGVzIG9yIGFkZHMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogCiBAdGFi bGUgQGNvZGUKK0BpdGVtIDpjb252ZXJ0LXdpZGdldAorQXMgb3RoZXIgY29tcG9zaXRlIHdp ZGdldHMsIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBjYXJlIG9mIGNvbnZlcnRpbmcKK2VhY2gg Y2hlY2tsaXN0IGl0ZW0uCisKK0BpdGVtIDpjb3B5CitBIGZ1bmN0aW9uIHRvIGNvcHkgZWFj aCBjaGVja2xpc3QgaXRlbS4KKworQGl0ZW0gOmZvcm1hdAorQnkgZGVmYXVsdCwgaXQgaW5z ZXJ0cyBpdHMgdmFsdWUuCisKIEB2aW5kZXggZW50cnktZm9ybWF0QHJ7IGtleXdvcmR9CiBA aXRlbSA6ZW50cnktZm9ybWF0CiBUaGlzIHN0cmluZyB3aWxsIGJlIGluc2VydGVkIGZvciBl YWNoIGVudHJ5IGluIHRoZSBsaXN0LgpAQCAtMTA2NiwxNCArMjE2OSw2IEBAIGNoZWNrbGlz dAogSW5zZXJ0IGEgbGl0ZXJhbCBAc2FtcHslfS4KIEBlbmQgdGFibGUKIAotQHZpbmRleCBn cmVlZHlAcnsga2V5d29yZH0KLUBpdGVtIDpncmVlZHkKLVVzdWFsbHkgYSBjaGVja2xpc3Qg d2lsbCBvbmx5IG1hdGNoIGlmIHRoZSBpdGVtcyBhcmUgaW4gdGhlIGV4YWN0Ci1zZXF1ZW5j ZSBnaXZlbiBpbiB0aGUgc3BlY2lmaWNhdGlvbi4gIEJ5IHNldHRpbmcgQGNvZGV7OmdyZWVk eX0gdG8KLW5vbi1AY29kZXtuaWx9LCBpdCB3aWxsIGFsbG93IHRoZSBpdGVtcyB0byBjb21l IGluIGFueSBzZXF1ZW5jZS4KLUhvd2V2ZXIsIGlmIHlvdSBleHRyYWN0IHRoZSB2YWx1ZSB0 aGV5IHdpbGwgYmUgaW4gdGhlIHNlcXVlbmNlIGdpdmVuCi1pbiB0aGUgY2hlY2tsaXN0LCBp LmUuLCB0aGUgb3JpZ2luYWwgc2VxdWVuY2UgaXMgZm9yZ290dGVuLgotCiBAdmluZGV4IGJ1 dHRvbi1hcmdzQHJ7IGtleXdvcmR9CiBAaXRlbSA6YnV0dG9uLWFyZ3MKIEEgbGlzdCBvZiBr ZXl3b3JkcyB0byBwYXNzIHRvIHRoZSBjaGVja2JveGVzLiAgVXNlZnVsIGZvciBzZXR0aW5n LApAQCAtMTA5MCwxMCArMjE4NSwzNSBAQCBjaGVja2xpc3QKIEB2aW5kZXggYXJnc0ByeyBr ZXl3b3JkfQogQGl0ZW0gOmFyZ3MKIFRoZSBsaXN0IG9mIHR5cGVzLgorCitAaXRlbSA6dmFs dWUtY3JlYXRlCitUaGUgZnVuY3Rpb24gdGhhdCB0YWtlcyBjYXJlIG9mIGluc2VydGluZyBh bGwgdmFsdWVzLgorCitAaXRlbSA6dmFsdWUtZ2V0CitBIGZ1bmN0aW9uIHRoYXQgcmV0dXJu cyBhbGwgdmFsdWVzIG9mIHNlbGVjdGVkIGl0ZW1zLgorCitAaXRlbSA6dmFsaWRhdGUKK0Eg ZnVuY3Rpb24gdGhhdCBlbnN1cmVzIGFsbCBzZWxlY3RlZCBjaGlsZHJlbiBhcmUgdmFsaWQu CisKK0BpdGVtIDptYXRjaAorVGhlIGNoZWNrbGlzdCB3aWRnZXQgd2lsbCBtYXRjaCBhIGxp c3Qgd2hvc2UgZWxlbWVudHMgYWxsCittYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHNwZWNp ZmllZCBAdmFye3R5cGV9IGFyZ3VtZW50cy4KKworQGl0ZW0gOm1hdGNoLWlubGluZQorTGlr ZSB0aGUgQGNvZGV7Om1hdGNofSBmdW5jdGlvbiwgYnV0IHRha2luZyBpbnRvIGFjY291bnQg dGhlCitAY29kZXs6aW5saW5lfSBwcm9wZXJ0eS4KKworQHZpbmRleCBncmVlZHlAcnsga2V5 d29yZH0KK0BpdGVtIDpncmVlZHkKK1VzdWFsbHkgYSBjaGVja2xpc3Qgd2lsbCBvbmx5IG1h dGNoIGlmIHRoZSBpdGVtcyBhcmUgaW4gdGhlIGV4YWN0CitzZXF1ZW5jZSBnaXZlbiBpbiB0 aGUgc3BlY2lmaWNhdGlvbi4gIEJ5IHNldHRpbmcgQGNvZGV7OmdyZWVkeX0gdG8KK25vbi1A Y29kZXtuaWx9LCBpdCB3aWxsIGFsbG93IHRoZSBpdGVtcyB0byBjb21lIGluIGFueSBzZXF1 ZW5jZS4KK0hvd2V2ZXIsIGlmIHlvdSBleHRyYWN0IHRoZSB2YWx1ZSB0aGV5IHdpbGwgYmUg aW4gdGhlIHNlcXVlbmNlIGdpdmVuCitpbiB0aGUgY2hlY2tsaXN0LCBpLmUuLCB0aGUgb3Jp Z2luYWwgc2VxdWVuY2UgaXMgZm9yZ290dGVuLgogQGVuZCB0YWJsZQogCiBAbm9kZSBlZGl0 YWJsZS1saXN0Ci1Ac2VjdGlvbiBUaGUgQGNvZGV7ZWRpdGFibGUtbGlzdH0gV2lkZ2V0CitA c3Vic2VjdGlvbiBUaGUgQGNvZGV7ZWRpdGFibGUtbGlzdH0gV2lkZ2V0CiBAZmluZGV4IGVk aXRhYmxlLWxpc3RAcnsgd2lkZ2V0fQogCiBTeW50YXg6CkBAIC0xMTAyLDEyICsyMjIyLDE5 IEBAIGVkaXRhYmxlLWxpc3QKIEB2YXJ7dHlwZX0gOjo9IChlZGl0YWJsZS1saXN0IFtAdmFy e2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiBAdmFye3R5cGV9KQogQGVuZCBleGFtcGxl CiAKLVRoZSB2YWx1ZSBpcyBhIGxpc3QsIHdoZXJlIGVhY2ggbWVtYmVyIHJlcHJlc2VudHMg b25lIHdpZGdldCBvZiB0eXBlCi1AdmFye3R5cGV9LgorQSB3aWRnZXQgdGhhdCBjYW4gaG9s ZCBhIHZhcmlhYmxlIGxpc3Qgb2Ygd2lkZ2V0cyBvZiB0aGUgc2FtZSB0eXBlLAorcmVwcmVz ZW50ZWQgYnkgQHZhcnt0eXBlfS4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7ZGVmYXVsdH0g d2lkZ2V0LgogCi1UaGUgZm9sbG93aW5nIGV4dHJhIHByb3BlcnRpZXMgYXJlIHJlY29nbml6 ZWQ6CitJdCBlaXRoZXIgb3ZlcnJpZGVzIG9yIGFkZHMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0 aWVzOgogCiBAdGFibGUgQGNvZGUKK0BpdGVtIDpjb252ZXJ0LXdpZGdldAorQXMgb3RoZXIg Y29tcG9zaXRlIHdpZGdldHMsIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBjYXJlIG9mIGNvbnZl cnRpbmcKK2VhY2ggdHlwZSBpbiBAdmFye3R5cGV9LgorCitAaXRlbSA6Y29weQorQSBmdW5j dGlvbiB0byBjb3B5IHRoZSB0eXBlcyBnaXZlbiBpbiBAdmFye3R5cGV9LgorCiBAdmluZGV4 IGVudHJ5LWZvcm1hdEByeyBrZXl3b3JkfQogQGl0ZW0gOmVudHJ5LWZvcm1hdAogVGhpcyBz dHJpbmcgd2lsbCBiZSBpbnNlcnRlZCBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgbGlzdC4KQEAg LTExMTcsOSArMjI0NCw5IEBAIGVkaXRhYmxlLWxpc3QKIFRoaXMgd2lsbCBiZSByZXBsYWNl ZCB3aXRoIHRoZSBidWZmZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIEB2YXJ7dHlwZX0KIHdp ZGdldC4KIEBpdGVtICVpCi1JbnNlcnQgdGhlIEBie1tJTlNdfSBidXR0b24uCitJbnNlcnQg dGhlIEBie1tJTlNdfSBidXR0b24sIGEgd2lkZ2V0IG9mIHR5cGUgQGNvZGV7aW5zZXJ0LWJ1 dHRvbn0uCiBAaXRlbSAlZAotSW5zZXJ0IHRoZSBAYntbREVMXX0gYnV0dG9uLgorSW5zZXJ0 IHRoZSBAYntbREVMXX0gYnV0dG9uLCBhIHdpZGdldCBvZiB0eXBlIEBjb2Rle2RlbGV0ZS1i dXR0b259LgogQGl0ZW0gJSUKIEluc2VydCBhIGxpdGVyYWwgQHNhbXB7JX0uCiBAZW5kIHRh YmxlCkBAIC0xMTQwLDYgKzIyNjcsMTggQEAgZWRpdGFibGUtbGlzdAogQGl0ZW0gOmJ1dHRv bnMKIFRoZSB3aWRnZXRzIHJlcHJlc2VudGluZyB0aGUgaW5zZXJ0IGFuZCBkZWxldGUgYnV0 dG9ucy4KIAorQGl0ZW0gOmZvcm1hdAorQnkgZGVmYXVsdCwgaW5zZXJ0IGl0cyB2YWx1ZSBh bmQgYXQgdGhlIGFuZCBhZGRzIGFuIGluc2VydCBidXR0b24uCisKK1RoaXMgaXMgdXNlZnVs IHNvIHRoYXQgbmV3IGVsZW1lbnRzIGNhbiBiZSBhZGRlZCB0byB0aGUgbGlzdCB1cG9uIHVz ZXIKK3JlcXVlc3QuCisKK0BpdGVtIDpmb3JtYXQtaGFuZGxlcgorQSBmdW5jdGlvbiB0aGF0 IHJlY29nbml6ZSB0aGUgZXNjYXBlIGZvciBpbnNlcnRpbmcgYW4gaW5zZXJ0IGJ1dHRvbi4K KworQGl0ZW0gOm9mZnNldAorQnkgZGVmYXVsdCwgdGhpcyB3aWRnZXQgaGFzIGFuIG9mZnNl dCBvZiAxMi4KKwogQHZpbmRleCBjaGlsZHJlbkByeyBrZXl3b3JkfQogQGl0ZW0gOmNoaWxk cmVuCiBUaGUgd2lkZ2V0cyByZXByZXNlbnRpbmcgdGhlIGVsZW1lbnRzIG9mIHRoZSBsaXN0 LgpAQCAtMTE0NywyNCArMjI4NiwxMjQgQEAgZWRpdGFibGUtbGlzdAogQHZpbmRleCBhcmdz QHJ7IGtleXdvcmR9CiBAaXRlbSA6YXJncwogTGlzdCB3aG9zZSBAc2N7Y2FyfSBpcyB0aGUg dHlwZSBvZiB0aGUgbGlzdCBlbGVtZW50cy4KKworQGl0ZW0gOmluc2VydC1iZWZvcmUKK0Z1 bmN0aW9uIHRvIGluc2VydCBhIG5ldyB3aWRnZXQgYXMgYSBjaGlsZCBvZiB0aGUgQGNvZGV7 ZWRpdGFibGUtbGlzdH0KK3dpZGdldC4KKworVGhpcyBmdW5jdGlvbiBpbnNlcnRzIGEgcmVj ZW50bHkgZGVsZXRlZCBjaGlsZCwgaWYgdGhlcmUgaXMgb25lLiAgVGhhdAoraXMgdXNlZnVs LCBzbyB0aGF0IHRoZSB1c2VyIGNhbiBtb3ZlIGVsZW1lbnRzIGluIGEgbGlzdCBlYXNpbHku ICBJZgordGhlcmUgaXMgbm90IGEgcmVjZW50bHkgZGVsZXRlZCBjaGlsZCwgaXQgaW5zZXJ0 cyBhIGNoaWxkIHdpdGggaXRzCitkZWZhdWx0IHZhbHVlLgorCitAaXRlbSA6ZGVsZXRlLWF0 CitGdW5jdGlvbiB0byBkZWxldGUgYSBjaGlsZCBmcm9tIHRoZSB3aWRnZXQsIGFuZCBzdG9y ZSBpdCBpbnRvIHRoZQorQGNvZGV7Omxhc3QtZGVsZXRlZH0gbGlzdCwgc28gdGhhdCBpdCBj YW4gYmUgcmVpbnNlcnRlZCB3aGVuIHRoZQorQGNvZGV7Omluc2VydC1iZWZvcmV9IGZ1bmN0 aW9uIGV4ZWN1dGVzLgorCitAaXRlbSA6dmFsdWUtY3JlYXRlCitUaGUgZnVuY3Rpb24gdGhh dCB0YWtlcyBjYXJlIG9mIGluc2VydGluZyBhbGwgdmFsdWVzLgorCitAaXRlbSA6dmFsdWUt Z2V0CitGdW5jdGlvbiB0aGF0IHJldHVybnMgYSBsaXN0IHdpdGggdGhlIHZhbHVlIG9mIHRo ZSBjaGlsZCB3aWRnZXRzLgorCitAaXRlbSA6dmFsaWRhdGUKK1RoaXMgd2lkZ2V0IHZhbGlk YXRlcyBpZiBhbGwgY2hpbGRyZW4gdmFsaWRhdGUuCisKK0BpdGVtIDptYXRjaAorVG8gbWF0 Y2gsIHRoZSB2YWx1ZSBtdXN0IGJlIGEgbGlzdCBhbmQgYWxsIHRoZSBsaXN0IG1lbWJlcnMg bXVzdCBtYXRjaAordGhlIHNwZWNpZmllZCBAdmFye3R5cGV9LgorCitAaXRlbSA6bWF0Y2gt aW5saW5lCitMaWtlIHRoZSBAY29kZXs6bWF0Y2h9IGZ1bmN0aW9uLCBidXQgdGFraW5nIGlu dG8gYWNjb3VudCBpbmxpbmUKK3ZhbHVlcyBhbmQgd2lkZ2V0cy4KIEBlbmQgdGFibGUKIAog QG5vZGUgZ3JvdXAKLUBzZWN0aW9uIFRoZSBAY29kZXtncm91cH0gV2lkZ2V0CitAc3Vic2Vj dGlvbiBUaGUgQGNvZGV7Z3JvdXB9IFdpZGdldAogQGZpbmRleCBncm91cEByeyB3aWRnZXR9 CiAKLVRoaXMgd2lkZ2V0IHNpbXBseSBncm91cCBvdGhlciB3aWRnZXRzIHRvZ2V0aGVyLgot CiBTeW50YXg6CiAKIEBleGFtcGxlCiBAdmFye3R5cGV9IDo6PSAoZ3JvdXAgW0B2YXJ7a2V5 d29yZH0gQHZhcnthcmd1bWVudH1dLi4uIEB2YXJ7dHlwZX0uLi4pCiBAZW5kIGV4YW1wbGUK IAotVGhlIHZhbHVlIGlzIGEgbGlzdCwgd2l0aCBvbmUgbWVtYmVyIGZvciBlYWNoIEB2YXJ7 dHlwZX0uCitBIHdpZGdldCB0byBncm91cCBvdGhlciB3aWRnZXRzLiAgSXRzIHN1cGVyIGlz IHRoZSBAY29kZXtkZWZhdWx0fQord2lkZ2V0LgorCitJdHMgdmFsdWUgaXMgYSBsaXN0LCB3 aXRoIG9uZSBtZW1iZXIgZm9yIGVhY2ggQHZhcnt0eXBlfS4KKworSXQgb3ZlcnJpZGVzIHRo ZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworQHRhYmxlIEBjb2RlCitAaXRlbSA6Y29udmVy dC13aWRnZXQKK0FzIG90aGVyIGNvbXBvc2l0ZSB3aWRnZXRzLCBhIGZ1bmN0aW9uIHRoYXQg dGFrZXMgY2FyZSBvZiBjb252ZXJ0aW5nCitlYWNoIHdpZGdldCBpbiBAdmFye3R5cGV9Lgor CitAaXRlbSA6Y29weQorQSBmdW5jdGlvbiB0byBjb3B5IHRoZSB0eXBlcyBnaXZlbiBpbiBA dmFye3R5cGV9LgorCitAaXRlbSA6Zm9ybWF0CitCeSBkZWZhdWx0LCBkaXNwbGF5cyBhIG5l d2xpbmUgY2hhcmFjdGVyIGFuZCBpdHMgdmFsdWUuCisKK0BpdGVtIDp2YWx1ZS1jcmVhdGUK K0EgZnVuY3Rpb24gdG8gY3JlYXRlIGVhY2ggb2YgaXRzIGNvbXBvbmVudHMuCisKK0BpdGVt IDp2YWx1ZS1nZXQKK1RoZSBzYW1lIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIEBjb2Rle2VkaXRh YmxlLWxpc3R9IHdpZGdldC4KKworQGl0ZW0gOmRlZmF1bHQtZ2V0CitBIGZ1bmN0aW9uIHRo YXQgcmV0dXJucyBhIGxpc3Qgd2hvc2UgbWVtYmVycyBhcmUgdGhlIGRlZmF1bHQgdmFsdWVz IG9mCitlYWNoIHdpZGdldCBpdCBncm91cHMuCisKK0BpdGVtIDp2YWxpZGF0ZQorVGhpcyB3 aWRnZXQgdmFsaWRhdGVzIGlmIGFsbCBvZiBpdHMgY2hpbGRyZW4gdmFsaWRhdGUuCisKK0Bp dGVtIDptYXRjaAorVGhpcyB3aWRnZXQgbWF0Y2hlcyBhIHZhbHVlIHRoYXQgbWF0Y2hlcyBl YWNoIG9mIGl0cyBjb21wb25lbnRzLgorCitAaXRlbSA6bWF0Y2gtaW5saW5lCitBcyBAY29k ZXs6bWF0Y2h9LCBidXQgdGFraW5nIGludG8gYWNjb3VudCB3aWRnZXRzIGFuZCB2YWx1ZXMg dGhhdCBhcmUKK2lubGluZS4KK0BlbmQgdGFibGUKKworQG5vZGUgZG9jdW1lbnRhdGlvbi1z dHJpbmcKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtkb2N1bWVudGF0aW9uLXN0cmluZ30gV2lk Z2V0CitAZmluZGV4IGRvY3VtZW50YXRpb24tc3RyaW5nQHJ7IHdpZGdldH0KK1N5bnRheDoK KworQGV4YW1wbGUKK0B2YXJ7dHlwZX0gOjo9IChkb2N1bWVudGF0aW9uLXN0cmluZyBbQHZh cntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gQHZhcnt2YWx1ZX0pCitAZW5kIGV4YW1w bGUKKworQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgZG9jdW1lbnRhdGlvbiBzdHJpbmcuICBJ dHMgc3VwZXIgaXMgdGhlCitAY29kZXtpdGVtfSB3aWRnZXQuCisKK0l0IGVpdGhlciBvdmVy cmlkZXMgb3IgYWRkcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK0B0YWJsZSBAY29k ZQorQGl0ZW0gOmZvcm1hdAorQnkgZGVmYXVsdCwgaW5zZXJ0IGl0cyB2YWx1ZS4KKworQGl0 ZW0gOnZhbHVlLWNyZWF0ZQorRnVuY3Rpb24gdG8gaW5zZXJ0IGEgZG9jdW1lbnRhdGlvbiBz dHJpbmcsIHBvc3NpYmx5IGhpZGluZyBwYXJ0IG9mIHRoZQorZG9jdW1lbnRhdGlvbiBpZiBp dHMgbGFyZ2UuCisKK1RvIHNob3cgb3IgaGlkZSB0aGUgcmVzdCBvZiB0aGUgZG9jdW1lbnRh dGlvbiwgdXNlcyBhCitAY29kZXt2aXNpYmlsaXR5fSB3aWRnZXQuCisKK0BpdGVtIDphY3Rp b24KK0Z1bmN0aW9uIHRvIHRvZ2dsZSBzaG93aW5nIHRoZSBkb2N1bWVudGF0aW9uIHVwb24g YW4gZXZlbnQuCisKK0BpdGVtIDp2aXNpYmlsaXR5LXdpZGdldAorQSBzeW1ib2wsIHRoZSB0 eXBlIG9mIHRoZSB3aWRnZXQgdG8gdXNlIGZvciB0aGUgdmlzaWJpbGl0eSB3aWRnZXQuCisK K1RoaXMgaXMsIGJ5IGRlZmF1bHQsIHRoZSBzeW1ib2wgQGNvZGV7dmlzaWJpbGl0eX0uCitA ZW5kIHRhYmxlCiAKIEBub2RlIFNleHAgVHlwZXMKLUBjaGFwdGVyIFNleHAgVHlwZXMKK0Bz ZWN0aW9uIFNleHAgVHlwZXMKIEBjaW5kZXggc2V4cCB0eXBlcwogCiBBIG51bWJlciBvZiB3 aWRnZXRzIGZvciBlZGl0aW5nIEBkZm57cy1leHByZXNzaW9uc30gKExpc3AgdHlwZXMpLCBz ZXhwCkBAIC0xMTc5LDcgKzI0MTgsNyBAQCBTZXhwIFR5cGVzCiBAZW5kIG1lbnUKIAogQG5v ZGUgY29uc3RhbnRzCi1Ac2VjdGlvbiBUaGUgQ29uc3RhbnQgV2lkZ2V0cworQHN1YnNlY3Rp b24gVGhlIENvbnN0YW50IFdpZGdldHMKIEBjaW5kZXggY29uc3RhbnQgd2lkZ2V0cwogCiBU aGUgQGNvZGV7Y29uc3R9IHdpZGdldCBjYW4gY29udGFpbiBhbnkgTGlzcCBleHByZXNzaW9u LCBidXQgdGhlIHVzZXIgaXMKQEAgLTExOTIsMTkgKzI0MzEsMjYgQEAgY29uc3RhbnRzCiBA dmFye3R5cGV9IDo6PSAoY29uc3QgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4u ICBbIEB2YXJ7dmFsdWV9IF0pCiBAZW5kIGV4YW1wbGUKIAotVGhlIEB2YXJ7dmFsdWV9LCBp ZiBwcmVzZW50LCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIEBjb2Rlezp2YWx1ZX0KLXBy b3BlcnR5IGFuZCBjYW4gYmUgYW55IHMtZXhwcmVzc2lvbi4KK0l0cyBzdXBlciBpcyB0aGUg QGNvZGV7aXRlbX0gd2lkZ2V0LiAgVGhlIEB2YXJ7dmFsdWV9LCBpZiBwcmVzZW50LCBpcwor dXNlZCB0byBpbml0aWFsaXplIHRoZSBAY29kZXs6dmFsdWV9IHByb3BlcnR5IGFuZCBjYW4g YmUgYW55CitzLWV4cHJlc3Npb24uCiAKIEBkZWZmbiBXaWRnZXQgY29uc3QKIFRoaXMgd2ls bCBkaXNwbGF5IGFueSB2YWxpZCBzLWV4cHJlc3Npb24gaW4gYW4gaW1tdXRhYmxlIHBhcnQg b2YgdGhlCiBidWZmZXIuCisKK0l0IG92ZXJyaWRlcyB0aGUgQGNvZGV7OnByb21wdC12YWx1 ZX0gZnVuY3Rpb24sIHRvIGF2b2lkIHByb21wdGluZyBhbmQKK2p1c3QgcmV0dXJuIHRoZSB3 aWRnZXQncyB2YWx1ZS4KIEBlbmQgZGVmZm4KIAogVGhlcmUgYXJlIHR3byB2YXJpYXRpb25z IG9mIHRoZSBAY29kZXtjb25zdH0gd2lkZ2V0LCBuYW1lbHkKIEBjb2Rle3ZhcmlhYmxlLWl0 ZW19IGFuZCBAY29kZXtmdW5jdGlvbi1pdGVtfS4gIFRoZXNlIHNob3VsZCBjb250YWluIGEK LXN5bWJvbCB3aXRoIGEgdmFyaWFibGUgb3IgZnVuY3Rpb24gYmluZGluZy4gIFRoZSBtYWpv ciBkaWZmZXJlbmNlIGZyb20KLXRoZSBAY29kZXtjb25zdH0gd2lkZ2V0IGlzIHRoYXQgdGhl eSB3aWxsIGFsbG93IHRoZSB1c2VyIHRvIHNlZSB0aGUKLXZhcmlhYmxlIG9yIGZ1bmN0aW9u IGRvY3VtZW50YXRpb24gZm9yIHRoZSBzeW1ib2wuCitzeW1ib2wgd2l0aCBhIHZhcmlhYmxl IG9yIGZ1bmN0aW9uIGJpbmRpbmcsIHJlc3BlY3RpdmVseS4gIFRoZSBtYWpvcgorZGlmZmVy ZW5jZSBmcm9tIHRoZSBAY29kZXtjb25zdH0gd2lkZ2V0IGlzIHRoYXQgdGhleSB3aWxsIGFs bG93IHRoZQordXNlciB0byBzZWUgdGhlIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGRvY3VtZW50 YXRpb24gZm9yIHRoZSBzeW1ib2wuCisKK1RoaXMgaXMgYWNjb21wbGlzaGVkIHZpYSB1c2lu ZyB0aGUgQHNhbXB7JWh9IGZvcm1hdCBlc2NhcGUsIGFuZCBhZGRpbmcKK2FuIGFwcHJvcGlh dGUgQGNvZGV7OmRvY3VtZW50YXRpb24tcHJvcGVydHl9IGZ1bmN0aW9uIGZvciBlYWNoIHdp ZGdldC4KIAogQGRlZmZuIFdpZGdldCB2YXJpYWJsZS1pdGVtCiBBbiBpbW11dGFibGUgc3lt Ym9sIHRoYXQgaXMgYm91bmQgYXMgYSB2YXJpYWJsZS4KQEAgLTEyMTUsNyArMjQ2MSw3IEBA IGNvbnN0YW50cwogQGVuZCBkZWZmbgogCiBAbm9kZSBnZW5lcmljCi1Ac2VjdGlvbiBHZW5l cmljIFNleHAgV2lkZ2V0CitAc3Vic2VjdGlvbiBHZW5lcmljIFNleHAgV2lkZ2V0CiBAY2lu ZGV4IGdlbmVyaWMgc2V4cCB3aWRnZXQKIAogVGhlIEBjb2Rle3NleHB9IHdpZGdldCBjYW4g Y29udGFpbiBhbnkgTGlzcCBleHByZXNzaW9uLCBhbmQgYWxsb3dzIHRoZQpAQCAtMTIyOCwy MyArMjQ3NCw0MiBAQCBnZW5lcmljCiBAZW5kIGV4YW1wbGUKIAogQGRlZmZuIFdpZGdldCBz ZXhwCi1UaGlzIHdpbGwgYWxsb3cgeW91IHRvIGVkaXQgYW55IHZhbGlkIHMtZXhwcmVzc2lv biBpbiBhbiBlZGl0YWJsZSBidWZmZXIKLWZpZWxkLgorVGhpcyB3aWRnZXQgcmVwcmVzZW50 cyBhbiBlZGl0YWJsZSBmaWVsZCB0aGF0J3MgdXNlZnVsIHRvIGVkaXQgYW55Cit2YWxpZCBz LWV4cHJlc3Npb24uCiAKIFRoZSBAY29kZXtzZXhwfSB3aWRnZXQgdGFrZXMgdGhlIHNhbWUg a2V5d29yZCBhcmd1bWVudHMgYXMgdGhlCiBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0 LiAgQHhyZWZ7ZWRpdGFibGUtZmllbGR9LgorCitJdHMgZGVmYXVsdCB2YWx1ZSBpcyBAY29k ZXtuaWx9LgorQGVuZCBkZWZmbgorCitAZGVmZm4gV2lkZ2V0IHJlc3RyaWN0ZWQtc2V4cAor QSB3aWRnZXQgdG8gZWRpdCBMaXNwIGV4cHJlc3Npb25zIHJlc3RyaWN0ZWQgdG8gY2VydGFp biB2YWx1ZXMgb3IKK3R5cGVzLiAgSXRzIHN1cGVyIGlzIHRoZSBAY29kZXtzZXhwfSB3aWRn ZXQuCisKK0l0IHdvcmtzIGp1c3QgbGlrZSB0aGUgc2V4cCB3aWRnZXQsIGJ1dCBpdCBvdmVy cmlkZXMgdGhlIEBjb2RlezptYXRjaH0KK2Z1bmN0aW9uIHRvIG1hdGNoIGZvciBjZXJ0YWlu IHZhbHVlcy4gIFRvIHVzZSB0aGlzIHdpZGdldCwgZWl0aGVyIHlvdQorbXVzdCBkZWZpbmUg YSBAY29kZXs6bWF0Y2h9IGZ1bmN0aW9uIG9yIGdpdmUgYQorQGNvZGV7Om1hdGNoLWFsdGVy bmF0aXZlc30gcHJvcGVydHkuICBUaGUgQGNvZGV7Om1hdGNoLWFsdGVybmF0aXZlc30KK3By b3BlcnR5IGhvbGRzIGEgbGlzdCBvZiBwcmVkaWNhdGUgZnVuY3Rpb25zIHRvIGNhbGwgd2hl biBjaGVja2luZyBpZgorYSBnaXZlbiB2YWx1ZSBtYXRjaGVzIHRoZSB3aWRnZXQuICBFYWNo IHByZWRpY2F0ZSBmdW5jdGlvbiB3aWxsIGJlCitjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQs IHRoZSB2YWx1ZSB0byBiZSBtYXRjaGVkLCBhbmQgc2hvdWxkIHJldHVybgorbm9uLUBjb2Rl e25pbH0gb24gc3VjY2Vzcy4KKworQXMgYW4gZXhhbXBsZSwgdGhlIEBjb2Rle2ludGVnZXJ9 IHdpZGdldCBvdmVycmlkZXMKK0Bjb2RlezptYXRjaC1hbHRlcm5hdGl2ZXN9IHRvIEBjb2Rl eyhpbnRlZ2VycCl9LgogQGVuZCBkZWZmbgogCiBAbm9kZSBhdG9tcwotQHNlY3Rpb24gQXRv bWljIFNleHAgV2lkZ2V0cworQHN1YnNlY3Rpb24gQXRvbWljIFNleHAgV2lkZ2V0cwogQGNp bmRleCBhdG9taWMgc2V4cCB3aWRnZXQKIAogVGhlIGF0b21zIGFyZSBzLWV4cHJlc3Npb25z IHRoYXQgZG8gbm90IGNvbnNpc3Qgb2Ygb3RoZXIgcy1leHByZXNzaW9ucy4KIEZvciBleGFt cGxlLCBhIHN0cmluZywgYSBmaWxlIG5hbWUsIG9yIGEgc3ltYm9sIGFyZSBhdG9tcywgd2hp bGUgYSBsaXN0CiBpcyBhIGNvbXBvc2l0ZSB0eXBlLiAgWW91IGNhbiBlZGl0IHRoZSB2YWx1 ZSBvZiBhbiBhdG9tIHdpdGggdGhlCi1mb2xsb3dpbmcgd2lkZ2V0cy4KK3dpZGdldHMgZGVz Y3JpYmVkIGluIHRoaXMgc2VjdGlvbi4KIAotVGhlIHN5bnRheCBmb3IgYWxsIHRoZSBhdG9t cyBhcmU6CitUaGUgc3ludGF4IGZvciBhbGwgdGhlIGF0b21zIGlzOgogCiBAZXhhbXBsZQog QHZhcnt0eXBlfSA6Oj0gKEB2YXJ7Y29uc3RydWN0fSBbQHZhcntrZXl3b3JkfSBAdmFye2Fy Z3VtZW50fV0uLi4gIFsgQHZhcnt2YWx1ZX0gXSkKQEAgLTEyNTIsNjggKzI1MTcsMTUxIEBA IGF0b21zCiAKIFRoZSBAdmFye3ZhbHVlfSwgaWYgcHJlc2VudCwgaXMgdXNlZCB0byBpbml0 aWFsaXplIHRoZSBAY29kZXs6dmFsdWV9CiBwcm9wZXJ0eSBhbmQgbXVzdCBiZSBhbiBleHBy ZXNzaW9uIG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIHdpZGdldC4KLVRoYXQgaXMsIHRoZSBz dHJpbmcgd2lkZ2V0IGNhbiBvbmx5IGJlIGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuCitU aGF0IGlzLCBmb3IgZXhhbXBsZSwgdGhlIHN0cmluZyB3aWRnZXQgY2FuIG9ubHkgYmUgaW5p dGlhbGl6ZWQgd2l0aCBhCitzdHJpbmcuCiAKIEFsbCB0aGUgYXRvbSB3aWRnZXRzIHRha2Ug dGhlIHNhbWUga2V5d29yZCBhcmd1bWVudHMgYXMgdGhlCiBAY29kZXtlZGl0YWJsZS1maWVs ZH0gd2lkZ2V0LiAgQHhyZWZ7ZWRpdGFibGUtZmllbGR9LgogCiBAZGVmZm4gV2lkZ2V0IHN0 cmluZwotQWxsb3dzIHlvdSB0byBlZGl0IGEgc3RyaW5nIGluIGFuIGVkaXRhYmxlIGZpZWxk LgorQW4gZWRpdGFibGUgZmllbGQgd2lkZ2V0IHRoYXQgY2FuIHJlcHJlc2VudCBhbnkgTGlz cCBzdHJpbmcuCisKK0l0IG9mZmVycyBjb21wbGV0aW9uIHZpYSB0aGUgaXNwZWxsIGxpYnJh cnkgYW5kIHRoZSBAY29kZXs6Y29tcGxldGV9Citwcm9wZXJ0eS4KIEBlbmQgZGVmZm4KIAog QGRlZmZuIFdpZGdldCByZWdleHAKLUFsbG93cyB5b3UgdG8gZWRpdCBhIHJlZ3VsYXIgZXhw cmVzc2lvbiBpbiBhbiBlZGl0YWJsZSBmaWVsZC4KK0FuIGVkaXRhYmxlIGZpZWxkIHdpZGdl dCB0aGF0IGNhbiByZXByZXNlbnQgYSByZWd1bGFyIGV4cHJlc3Npb24uCisKK092ZXJyaWRl cyB0aGUgQGNvZGV7Om1hdGNofSBhbmQgdGhlIEBjb2Rlezp2YWxpZGF0ZX0gcHJvcGVydGll cyB0bworY2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZCByZWdleHAuCiBAZW5kIGRl ZmZuCiAKIEBkZWZmbiBXaWRnZXQgY2hhcmFjdGVyCi1BbGxvd3MgeW91IHRvIGVudGVyIGEg Y2hhcmFjdGVyIGluIGFuIGVkaXRhYmxlIGZpZWxkLgorQW4gZWRpdGFibGUgZmllbGQgd2lk Z2V0IHRoYXQgY2FuIHJlcHJlc2VudCBhIGNoYXJhY3Rlci4KKworVGhlIGNoYXJhY3RlciB3 aWRnZXQgcmVwcmVzZW50cyBzb21lIGNoYXJhY3RlcnMgKGxpa2UgdGhlIG5ld2xpbmUKK2No YXJhY3RlcikgaW4gYSBzcGVjaWFsIG1hbm5lciwgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHRo ZSB1c2VyIHRvIHNlZQord2hhdCdzIHRoZSBjb250ZW50IG9mIHRoZSBjaGFyYWN0ZXIgZmll bGQuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiBXaWRnZXQgZmlsZQotQWxsb3dzIHlvdSB0byBl ZGl0IGEgZmlsZSBuYW1lIGluIGFuIGVkaXRhYmxlIGZpZWxkLgorQSB3aWRnZXQgZm9yIGVk aXRpbmcgZmlsZSBuYW1lcy4KIAogS2V5d29yZHM6CiBAdGFibGUgQGNvZGUKK0BpdGVtIDpj b21wbGV0aW9ucworT2ZmZXJzIGZpbGUgbmFtZSBjb21wbGV0aW9uIHRvIHRoZSB1c2VyLgor CitAaXRlbSA6cHJvbXB0LXZhbHVlCitBIGZ1bmN0aW9uIHRvIHJlYWQgYSBmaWxlIG5hbWUg ZnJvbSB0aGUgbWluaWJ1ZmZlci4KKwogQHZpbmRleCBtdXN0LW1hdGNoQHJ7IGtleXdvcmR9 CiBAaXRlbSA6bXVzdC1tYXRjaAotSWYgdGhpcyBpcyBzZXQgdG8gbm9uLUBjb2Rle25pbH0s IG9ubHkgZXhpc3RpbmcgZmlsZSBuYW1lcyB3aWxsIGJlCi1hbGxvd2VkIGluIHRoZSBtaW5p YnVmZmVyLgorSWYgdGhpcyBpcyBzZXQgdG8gbm9uLUBjb2Rle25pbH0sIG9ubHkgZXhpc3Rp bmcgZmlsZSBuYW1lcyBhcmUgYWxsb3dlZAord2hlbiBwcm9tcHRpbmcgZm9yIGEgdmFsdWUg aW4gdGhlIG1pbmlidWZmZXIuCisKK0BpdGVtIDptYXRjaAorVGhlIHdpZGdldCBtYXRjaGVz IGlmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZywgYW5kIHRoZSBmaWxlIHdob3NlIG5hbWUKK2lz IHRoYXQgc3RyaW5nIGlzIGFuIGV4aXN0aW5nIGZpbGUsIG9yIGlmIEBjb2RlezptdXN0LW1h dGNofSBpcworQGNvZGV7bmlsfS4KKworQGl0ZW0gOnZhbGlkYXRlCitUaGUgd2lkZ2V0IGlz IHZhbGlkIGlmIGl0cyB2YWx1ZSBtYXRjaGVzLgorCiBAZW5kIHRhYmxlCiBAZW5kIGRlZmZu CiAKIEBkZWZmbiBXaWRnZXQgZGlyZWN0b3J5Ci1BbGxvd3MgeW91IHRvIGVkaXQgYSBkaXJl Y3RvcnkgbmFtZSBpbiBhbiBlZGl0YWJsZSBmaWVsZC4KLVNpbWlsYXIgdG8gdGhlIEBjb2Rl e2ZpbGV9IHdpZGdldC4KK0Egd2lkZ2V0IGZvciBlZGl0aW5nIGRpcmVjdG9yeSBuYW1lcy4K KworSXRzIHN1cGVyIGlzIHRoZSBAY29kZXtmaWxlfSB3aWRnZXQsIGFuZCBpdCBvdmVycmlk ZXMgdGhlCitAY29kZXs6Y29tcGxldGlvbnN9IHByb3BlcnR5LCB0byBvZmZlciBjb21wbGV0 aW9ucyBvbmx5IGZvcgorZGlyZWN0b3JpZXMuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiBXaWRn ZXQgc3ltYm9sCi1BbGxvd3MgeW91IHRvIGVkaXQgYSBMaXNwIHN5bWJvbCBpbiBhbiBlZGl0 YWJsZSBmaWVsZC4KK0Egd2lkZ2V0IGZvciBlZGl0aW5nIGEgTGlzcCBzeW1ib2wuCisKK0l0 cyB2YWx1ZSBieSBkZWZhdWx0IGlzIEBjb2Rle25pbH0uCiBAZW5kIGRlZmZuCiAKIEBkZWZm biBXaWRnZXQgZnVuY3Rpb24KLUFsbG93cyB5b3UgdG8gZWRpdCBhIGxhbWJkYSBleHByZXNz aW9uLCBvciBhIGZ1bmN0aW9uIG5hbWUgd2l0aCBjb21wbGV0aW9uLgorQSB3aWRnZXQgZm9y IGVkaXRpbmcgYSBsYW1iZGEgZXhwcmVzc2lvbiwgb3IgYSBmdW5jdGlvbiBuYW1lLCBvZmZl cmluZworY29tcGxldGlvbi4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7cmVzdHJpY3RlZC1z ZXhwfSB3aWRnZXQuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiBXaWRnZXQgdmFyaWFibGUKLUFs bG93cyB5b3UgdG8gZWRpdCBhIHZhcmlhYmxlIG5hbWUsIHdpdGggY29tcGxldGlvbi4KK0Eg d2lkZ2V0IGZvciBlZGl0aW5nIHZhcmlhYmxlIG5hbWVzLCBvZmZlcmluZyBjb21wbGV0aW9u LiAgSXRzIHN1cGVyCitpcyB0aGUgQGNvZGV7c3ltYm9sfSB3aWRnZXQuCiBAZW5kIGRlZmZu CiAKIEBkZWZmbiBXaWRnZXQgaW50ZWdlcgotQWxsb3dzIHlvdSB0byBlZGl0IGFuIGludGVn ZXIgaW4gYW4gZWRpdGFibGUgZmllbGQuCitBIHdpZGdldCBmb3IgZWRpdGluZyBpbnRlZ2Vy cyBpbiBhbiBlZGl0YWJsZSBmaWVsZC4gIEl0cyBzdXBlciBpcyB0aGUKK0Bjb2Rle3Jlc3Ry aWN0ZWQtc2V4cH0gd2lkZ2V0LgorCitJdCBoYXMgYSBkZWZhdWx0IEBjb2Rlezp2YWx1ZX0g b2YgMC4KK0BlbmQgZGVmZm4KKworQGRlZmZuIFdpZGdldCBuYXRudW0KK0Egd2lkZ2V0IGZv ciBlZGl0aW5nIG5vbi1uZWdhdGl2ZSBpbnRlZ2Vycy4gIEl0cyBzdXBlciBpcyB0aGUKK0Bj b2Rle3Jlc3RyaWN0ZWQtc2V4cH0gd2lkZ2V0LgorCitJdCBoYXMgYSBkZWZhdWx0IEBjb2Rl ezp2YWx1ZX0gb2YgMC4KK0BlbmQgZGVmZm4KKworQGRlZmZuIFdpZGdldCBmbG9hdAorQSB3 aWRnZXQgZm9yIGVkaXRpbmcgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuICBJdHMgc3VwZXIg aXMgdGhlCitAY29kZXtyZXN0cmljdGVkLXNleHB9IHdpZGdldC4KKworSXQgaGFzIGEgZGVm YXVsdCBAY29kZXs6dmFsdWV9IG9mIDAuMC4KIEBlbmQgZGVmZm4KIAogQGRlZmZuIFdpZGdl dCBudW1iZXIKLUFsbG93cyB5b3UgdG8gZWRpdCBhIG51bWJlciBpbiBhbiBlZGl0YWJsZSBm aWVsZC4KK0Egd2lkZ2V0IGZvciBlZGl0aW5nIGEgbnVtYmVyLCBlaXRoZXIgZmxvYXRpbmcg cG9pbnQgb3IgaW50ZWdlci4gIEl0cworc3VwZXIgaXMgdGhlIEBjb2Rle3Jlc3RyaWN0ZWQt c2V4cH0gd2lkZ2V0LgorCitJdCBoYXMgYSBkZWZhdWx0IEBjb2Rlezp2YWx1ZX0gb2YgMC4w LgogQGVuZCBkZWZmbgogCiBAZGVmZm4gV2lkZ2V0IGJvb2xlYW4KLUFsbG93cyB5b3UgdG8g ZWRpdCBhIGJvb2xlYW4uICBJbiBMaXNwIHRoaXMgbWVhbnMgYSB2YXJpYWJsZSB3aGljaCBp cwotZWl0aGVyIEBjb2Rle25pbH0gbWVhbmluZyBmYWxzZSwgb3Igbm9uLUBjb2Rle25pbH0g bWVhbmluZyB0cnVlLgorQSB3aWRnZXQgZm9yIGVkaXRpbmcgYSBib29sZWFuIHZhbHVlLiAg SXRzIHN1cGVyIGlzIHRoZSBAY29kZXt0b2dnbGV9Cit3aWRnZXQuCisKK0l0cyB2YWx1ZSBt YXkgYmUgQGNvZGV7bmlsfSwgbWVhbmluZyBmYWxzZSwgb3Igbm9uLUBjb2Rle25pbH0sIG1l YW5pbmcKK3RydWUuCitAZW5kIGRlZmZuCisKK0BkZWZmbiBXaWRnZXQgY29sb3IKK0Egd2lk Z2V0IHRvIGVkaXQgYSBjb2xvciBuYW1lLgorCitJbiBhZGRpdGlvbiwgc2hvd3MgYSBzYW1w bGUgdGhhdCBzaG93cyB0aGUgc2VsZWN0ZWQgY29sb3IsIGlmIGFueS4KIEBlbmQgZGVmZm4K IAorQGRlZmZuIFdpZGdldCBvdGhlcgorQSB3aWRnZXQgdXNlZnVsIGFzIHRoZSBsYXN0IGl0 ZW0gaW4gYSBAY29kZXtjaG9pY2V9IHdpZGdldCwgc2luY2UgaXQKK21hdGNoZXMgYW55IHZh bHVlLgorCitJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle3NleHB9IHdpZGdldCwgYW5kIGl0cyBA Y29kZXs6dmFsdWV9IGlzCitAY29kZXtvdGhlcn0sIGJ5IGRlZmF1bHQuCitAZW5kIGRlZmZu CisKK0BkZWZmbiBXaWRnZXQgY29kaW5nLXN5c3RlbQorQSB3aWRnZXQgdGhhdCBjYW4gcmVw cmVzZW50IGEgY29kaW5nIHN5c3RlbSBuYW1lLCBvZmZlcmluZworY29tcGxldGlvbnMuICBA eHJlZntDb2RpbmcgU3lzdGVtcywsLGVsaXNwLCB0aGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UK K01hbnVhbH0uICBJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle3N5bWJvbH0gd2lkZ2V0LgorCitJ dCBoYXMgYSBkZWZhdWx0IHZhbHVlIG9mIEBjb2Rle3VuZGVjaWRlZH0uCitAZW5kIGRlZmZu CisKK0BkZWZmbiBXaWRnZXQga2V5CitBIHdpZGdldCB0byByZXByZXNlbnQgYSBrZXkgc2Vx dWVuY2UuCisKK0l0IHVzZXMgYSBzcGVjaWFsIGtleW1hcCBhcyB0aGUgQGNvZGV7OmtleW1h cH0uCitAZW5kIGRlZmZuCiAKIEBub2RlIGNvbXBvc2l0ZQotQHNlY3Rpb24gQ29tcG9zaXRl IFNleHAgV2lkZ2V0cworQHN1YnNlY3Rpb24gQ29tcG9zaXRlIFNleHAgV2lkZ2V0cwogQGNp bmRleCBjb21wb3NpdGUgc2V4cCB3aWRnZXRzCiAKIFRoZSBzeW50YXggZm9yIHRoZSBjb21w b3NpdGUgd2lkZ2V0IGNvbnN0cnVjdCBpczoKQEAgLTEzMjcsNiArMjY3NSw5IEBAIGNvbXBv c2l0ZQogd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGJ1ZmZlciwgYW5kIHdpbGwgYmUgZWRp dGFibGUgYnkgdGhlIHVzZXIuCiAKIEBkZWZmbiBXaWRnZXQgY29ucworQSB3aWRnZXQgdG8g ZWRpdCBjb25zLWNlbGwgdmFsdWVzLiAgSXRzIHN1cGVyIGlzIHRoZSBAY29kZXtncm91cH0K K3dpZGdldC4KKwogVGhlIHZhbHVlIG9mIGEgQGNvZGV7Y29uc30gd2lkZ2V0IG11c3QgYmUg YSBjb25zLWNlbGwgd2hvc2UgQHNje2Nhcn0KIGFuZCBAc2N7Y2RyfSBoYXZlIHR3byBzcGVj aWZpZWQgdHlwZXMuICBJdCB1c2VzIHRoaXMgc3ludGF4OgogCkBAIC0xMzM2LDggKzI2ODcs MTAgQEAgY29tcG9zaXRlCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiBXaWRnZXQgY2hvaWNlCi1U aGUgdmFsdWUgbWF0Y2hlZCBieSBhIEBjb2Rle2Nob2ljZX0gd2lkZ2V0IG11c3QgaGF2ZSBv bmUgb2YgYSBmaXhlZAotc2V0IG9mIHR5cGVzLiAgVGhlIHdpZGdldCdzIHN5bnRheCBpcyBh cyBmb2xsb3dzOgorQSB3aWRnZXQgdG8gaG9sZCBhIHZhbHVlIG9mIG9uZSBvZiBhIGZpeGVk IHNldCBvZiB0eXBlcy4gIEl0cyBzdXBlciBpcwordGhlIEBjb2Rle21lbnUtY2hvaWNlfSB3 aWRnZXQuCisKK1RoZSB3aWRnZXQncyBzeW50YXggaXMgYXMgZm9sbG93czoKIAogQGV4YW1w bGUKIEB2YXJ7dHlwZX0gOjo9IChjaG9pY2UgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVu dH1dLi4uICBAdmFye3R5cGV9IC4uLiApCkBAIC0xMzQ1LDkgKzI2OTgsMTkgQEAgY29tcG9z aXRlCiAKIFRoZSB2YWx1ZSBvZiBhIEBjb2Rle2Nob2ljZX0gd2lkZ2V0IGNhbiBiZSBhbnl0 aGluZyB0aGF0IG1hdGNoZXMgYW55IG9mIHRoZQogQHZhcnt0eXBlc30uCisKK1RoaXMgd2lk Z2V0IG9ubHkgZGlzcGxheXMgdGhlIHdpZGdldCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBj dXJyZW50CitjaG9pY2UuCitAZW5kIGRlZmZuCisKK0BkZWZmbiBXaWRnZXQgcmFkaW8KK0Eg d2lkZ2V0IHRvIGhvbGQgYSB2YWx1ZSBvZiBvbmUgb2YgYSBmaXhlZCBzZXQgb2Ygb3B0aW9u cy4gIEl0cyBzdXBlciBpcwordGhlIEBjb2Rle3JhZGlvLWJ1dHRvbi1jaG9pY2V9IHdpZGdl dC4KIEBlbmQgZGVmZm4KIAogQGRlZmZuIFdpZGdldCBsaXN0CitBIHdpZGdldCB0byBlZGl0 IGEgbGlzdCB2YWx1ZS4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7Z3JvdXB9IHdpZGdldC4K KwogVGhlIHZhbHVlIG9mIGEgQGNvZGV7bGlzdH0gd2lkZ2V0IG11c3QgYmUgYSBsaXN0IHdo b3NlIGVsZW1lbnQgdHlwZXMKIG1hdGNoIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50IHR5cGVz OgogCkBAIC0xMzU1LDE1ICsyNzE4LDE4IEBAIGNvbXBvc2l0ZQogQHZhcnt0eXBlfSA6Oj0g KGxpc3QgW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uICBAdmFye2NvbXBvbmVu dC10eXBlfS4uLikKIEBlbmQgZXhhbXBsZQogCi1UaHVzLCBAY29kZXsobGlzdCBzdHJpbmcg bnVtYmVyKX0gbWF0Y2hlcyBsaXN0cyBvZiB0d28gZWxlbWVudHMsCi10aGUgZmlyc3QgYmVp bmcgYSBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgYmVpbmcgYSBudW1iZXIuCitUaHVzLCBmb3Ig ZXhhbXBsZSwgQGNvZGV7KGxpc3Qgc3RyaW5nIG51bWJlcil9IG1hdGNoZXMgbGlzdHMgb2Yg dHdvCitlbGVtZW50cywgdGhlIGZpcnN0IGJlaW5nIGEgc3RyaW5nIGFuZCB0aGUgc2Vjb25k IGJlaW5nIGEgbnVtYmVyLgogQGVuZCBkZWZmbgogCiBAZGVmZm4gV2lkZ2V0IHZlY3Rvcgor QSB3aWRnZXQgdG8gZWRpdCBhIHZlY3RvciB2YWx1ZS4gIEl0cyBzdXBlciBpcyB0aGUgQGNv ZGV7Z3JvdXB9Cit3aWRnZXQuCisKIFRoZSBAY29kZXt2ZWN0b3J9IHdpZGdldCBpcyBsaWtl IHRoZSBAY29kZXtsaXN0fSB3aWRnZXQgYnV0IG1hdGNoZXMKLXZlY3RvcnMgaW5zdGVhZCBv ZiBsaXN0cy4gIFRodXMsIEBjb2Rleyh2ZWN0b3Igc3RyaW5nIG51bWJlcil9IG1hdGNoZXMK LXZlY3RvcnMgb2YgdHdvIGVsZW1lbnRzLCB0aGUgZmlyc3QgYmVpbmcgYSBzdHJpbmcgYW5k IHRoZSBzZWNvbmQgYmVpbmcKLWEgbnVtYmVyLgordmVjdG9ycyBpbnN0ZWFkIG9mIGxpc3Rz LiAgVGh1cywgZm9yIGV4YW1wbGUsIEBjb2Rleyh2ZWN0b3Igc3RyaW5nCitudW1iZXIpfSBt YXRjaGVzIHZlY3RvcnMgb2YgdHdvIGVsZW1lbnRzLCB0aGUgZmlyc3QgYmVpbmcgYSBzdHJp bmcgYW5kCit0aGUgc2Vjb25kIGJlaW5nIGEgbnVtYmVyLgogQGVuZCBkZWZmbgogCiBUaGUg YWJvdmUgc3VmZmljZSBmb3Igc3BlY2lmeWluZyBmaXhlZCBzaXplIGxpc3RzIGFuZCB2ZWN0 b3JzLiAgVG8gZ2V0CkBAIC0xMzkyLDEyNiArMjc1OCw3NCBAQCBjb21wb3NpdGUKIHRyeWlu ZyB0byBleHBsYWluIGl0IGhlcmUsIEknbGwganVzdCBzdWdnZXN0IHlvdSBtZWRpdGF0ZSBv dmVyIGl0IGZvcgogYSB3aGlsZS4KIAotQGRlZmZuIFdpZGdldCBzZXQKLVNwZWNpZmllcyBh IHR5cGUgd2hvc2UgdmFsdWVzIGFyZSB0aGUgbGlzdHMgd2hvc2UgZWxlbWVudHMgYWxsIGJl bG9uZwotdG8gYSBnaXZlbiBzZXQuICBUaGUgb3JkZXIgb2YgZWxlbWVudHMgb2YgdGhlIGxp c3QgaXMgbm90IHNpZ25pZmljYW50LgotSGVyZSdzIHRoZSBzeW50YXg6Ci0KLUBleGFtcGxl Ci1AdmFye3R5cGV9IDo6PSAoc2V0IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4u LiAgQHZhcntwZXJtaXR0ZWQtZWxlbWVudH0gLi4uICkKLUBlbmQgZXhhbXBsZQotCi1Vc2Ug QGNvZGV7Y29uc3R9IHRvIHNwZWNpZnkgZWFjaCBwZXJtaXR0ZWQgZWxlbWVudCwgbGlrZSB0 aGlzOgotQGNvZGV7KHNldCAoY29uc3QgYSkgKGNvbnN0IGIpKX0uCi1AZW5kIGRlZmZuCi0K LUBkZWZmbiBXaWRnZXQgcmVwZWF0Ci1TcGVjaWZpZXMgYSBsaXN0IG9mIGFueSBudW1iZXIg b2YgZWxlbWVudHMgdGhhdCBmaXQgYSBjZXJ0YWluIHR5cGUuCi0KLUBleGFtcGxlCi1AdmFy e3R5cGV9IDo6PSAocmVwZWF0IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAg QHZhcnt0eXBlfSkKLUBlbmQgZXhhbXBsZQotQGVuZCBkZWZmbgotCi1Abm9kZSBXaWRnZXQg UHJvcGVydGllcwotQGNoYXB0ZXIgUHJvcGVydGllcwotQGNpbmRleCBwcm9wZXJ0aWVzIG9m IHdpZGdldHMKLUBjaW5kZXggd2lkZ2V0IHByb3BlcnRpZXMKLQotWW91IGNhbiBleGFtaW5l IG9yIHNldCB0aGUgdmFsdWUgb2YgYSB3aWRnZXQgYnkgdXNpbmcgdGhlIHdpZGdldCBvYmpl Y3QKLXRoYXQgd2FzIHJldHVybmVkIGJ5IEBjb2Rle3dpZGdldC1jcmVhdGV9LgotCi1AZGVm dW4gd2lkZ2V0LXZhbHVlIHdpZGdldAotUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIGNvbnRh aW5lZCBpbiBAdmFye3dpZGdldH0uCi1JdCBpcyBhbiBlcnJvciB0byBjYWxsIHRoaXMgZnVu Y3Rpb24gb24gYW4gdW5pbml0aWFsaXplZCB3aWRnZXQuCi1AZW5kIGRlZnVuCi0KLUBkZWZ1 biB3aWRnZXQtdmFsdWUtc2V0IHdpZGdldCB2YWx1ZQotU2V0IHRoZSB2YWx1ZSBjb250YWlu ZWQgaW4gQHZhcnt3aWRnZXR9IHRvIEB2YXJ7dmFsdWV9LgotSXQgaXMgYW4gZXJyb3IgdG8g Y2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggYW4gaW52YWxpZCBAdmFye3ZhbHVlfS4KLUBlbmQg ZGVmdW4KLQotQHN0cm9uZ3tJbXBvcnRhbnQ6fSBZb3UgQGVtcGh7bXVzdH0gY2FsbCBAY29k ZXt3aWRnZXQtc2V0dXB9IGFmdGVyCi1tb2RpZnlpbmcgdGhlIHZhbHVlIG9mIGEgd2lkZ2V0 IGJlZm9yZSB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGVkaXQgdGhlCi13aWRnZXQgYWdhaW4u ICBJdCBpcyBlbm91Z2ggdG8gY2FsbCBAY29kZXt3aWRnZXQtc2V0dXB9IG9uY2UgaWYgeW91 Ci1tb2RpZnkgbXVsdGlwbGUgd2lkZ2V0cy4gIFRoaXMgaXMgY3VycmVudGx5IG9ubHkgbmVj ZXNzYXJ5IGlmIHRoZSB3aWRnZXQKLWNvbnRhaW5zIGFuIGVkaXRpbmcgZmllbGQsIGJ1dCBt YXkgYmUgbmVjZXNzYXJ5IGZvciBvdGhlciB3aWRnZXRzIGluIHRoZQotZnV0dXJlLgorQGRl ZmZuIFdpZGdldCBzZXQKK0Egd2lkZ2V0IHRvIGhvbGQgYSBsaXN0IG9mIG1lbWJlcnMgZnJv bSBhIGZpeGVkIHNldC4gIEl0cyBzdXBlciBpcyB0aGUKK0Bjb2Rle2NoZWNrbGlzdH0gd2lk Z2V0LgogCi1JZiB5b3VyIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGFzc29jaWF0ZSBzb21lIGlu Zm9ybWF0aW9uIHdpdGggdGhlIHdpZGdldAotb2JqZWN0cywgZm9yIGV4YW1wbGUgYSByZWZl cmVuY2UgdG8gdGhlIGl0ZW0gYmVpbmcgZWRpdGVkLCBpdCBjYW4gYmUKLWRvbmUgd2l0aCBA Y29kZXt3aWRnZXQtcHV0fSBhbmQgQGNvZGV7d2lkZ2V0LWdldH0uICBUaGUgcHJvcGVydHkg bmFtZXMKLW11c3QgYmVnaW4gd2l0aCBhIEBzYW1wezp9LgorSXRzIHZhbHVlIGlzIGEgbGlz dCB3aGVyZSB0aGUgZWxlbWVudHMgYWxsIGJlbG9uZyB0byBhIGdpdmVuIHNldC4gIFRoZQor b3JkZXIgb2YgZWxlbWVudHMgb2YgdGhlIGxpc3QgaXMgbm90IHNpZ25pZmljYW50LgogCi1A ZGVmdW4gd2lkZ2V0LXB1dCB3aWRnZXQgcHJvcGVydHkgdmFsdWUKLUluIEB2YXJ7d2lkZ2V0 fSBzZXQgQHZhcntwcm9wZXJ0eX0gdG8gQHZhcnt2YWx1ZX0uCi1AdmFye3Byb3BlcnR5fSBz aG91bGQgYmUgYSBzeW1ib2wsIHdoaWxlIEB2YXJ7dmFsdWV9IGNhbiBiZSBhbnl0aGluZy4K LUBlbmQgZGVmdW4KK0hlcmUncyB0aGUgc3ludGF4OgogCi1AZGVmdW4gd2lkZ2V0LWdldCB3 aWRnZXQgcHJvcGVydHkKLUluIEB2YXJ7d2lkZ2V0fSByZXR1cm4gdGhlIHZhbHVlIGZvciBA dmFye3Byb3BlcnR5fS4KLUB2YXJ7cHJvcGVydHl9IHNob3VsZCBiZSBhIHN5bWJvbCwgdGhl IHZhbHVlIGlzIHdoYXQgd2FzIGxhc3Qgc2V0IGJ5Ci1AY29kZXt3aWRnZXQtcHV0fSBmb3Ig QHZhcntwcm9wZXJ0eX0uCi1AZW5kIGRlZnVuCitAZXhhbXBsZQorQHZhcnt0eXBlfSA6Oj0g KHNldCBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2YXJ7cGVybWl0dGVk LWVsZW1lbnR9IC4uLiApCitAZW5kIGV4YW1wbGUKIAotQGRlZnVuIHdpZGdldC1tZW1iZXIg d2lkZ2V0IHByb3BlcnR5Ci1Ob24tQGNvZGV7bmlsfSBpZiBAdmFye3dpZGdldH0gaGFzIGEg dmFsdWUgKGV2ZW4gQGNvZGV7bmlsfSkgZm9yCi1wcm9wZXJ0eSBAdmFye3Byb3BlcnR5fS4K LUBlbmQgZGVmdW4KK1VzZSBAY29kZXtjb25zdH0gdG8gc3BlY2lmeSBlYWNoIHBlcm1pdHRl ZCBlbGVtZW50LCBsaWtlIHRoaXM6CitAY29kZXsoc2V0IChjb25zdCBhKSAoY29uc3QgYikp fS4KK0BlbmQgZGVmZm4KIAotQGRlZnVuIHdpZGdldC1hcHBseSB3aWRnZXQgcHJvcGVydHkg JnJlc3QgYXJncwotQXBwbHkgdGhlIHZhbHVlIG9mIEB2YXJ7cHJvcGVydHl9IHRvIEB2YXJ7 d2lkZ2V0fSwgcGFzc2luZyBAdmFye2FyZ3N9Ci1hcyBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0 byB0aGUgZnVuY3Rpb24uICBSZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGF0Ci1mdW5jdGlvbiBj YWxsLgotQGVuZCBkZWZ1bgorQGRlZmZuIFdpZGdldCByZXBlYXQKK1NwZWNpZmllcyBhIGxp c3Qgb2YgYW55IG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGZpdCBhIGNlcnRhaW4gdHlwZS4K K0l0cyBzdXBlciBpcyB0aGUgQGNvZGV7ZWRpdGFibGUtbGlzdH0gd2lkZ2V0LgogCi1PY2Nh c2lvbmFsbHkgaXQgY2FuIGJlIHVzZWZ1bCB0byBrbm93IHdoaWNoIGtpbmQgb2Ygd2lkZ2V0 IHlvdSBoYXZlLAotaS5lLiwgdGhlIG5hbWUgb2YgdGhlIHdpZGdldCB0eXBlIHlvdSBnYXZl IHdoZW4gdGhlIHdpZGdldCB3YXMgY3JlYXRlZC4KK0BleGFtcGxlCitAdmFye3R5cGV9IDo6 PSAocmVwZWF0IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgQHZhcnt0eXBl fSkKK0BlbmQgZXhhbXBsZQorQGVuZCBkZWZmbgogCi1AZGVmdW4gd2lkZ2V0LXR5cGUgd2lk Z2V0Ci1SZXR1cm4gdGhlIG5hbWUgb2YgQHZhcnt3aWRnZXR9LCBhIHN5bWJvbC4KLUBlbmQg ZGVmdW4KK0BkZWZmbiBXaWRnZXQgcGxpc3QKK0Egd2lkZ2V0IHRvIGVkaXQgcHJvcGVydHkg bGlzdHMuICBJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle2xpc3R9IHdpZGdldC4KIAotQGNpbmRl eCBhY3RpdmUgd2lkZ2V0Ci1AY2luZGV4IGluYWN0aXZlIHdpZGdldAotQGNpbmRleCBhY3Rp dmF0ZSBhIHdpZGdldAotQGNpbmRleCBkZWFjdGl2YXRlIGEgd2lkZ2V0Ci1XaWRnZXRzIGNh biBiZSBpbiB0d28gc3RhdGVzOiBhY3RpdmUsIHdoaWNoIG1lYW5zIHRoZXkgYXJlIG1vZGlm aWFibGUgYnkKLXRoZSB1c2VyLCBvciBpbmFjdGl2ZSwgd2hpY2ggbWVhbnMgdGhleSBjYW5u b3QgYmUgbW9kaWZpZWQgYnkgdGhlIHVzZXIuCi1Zb3UgY2FuIHF1ZXJ5IG9yIHNldCB0aGUg c3RhdGUgd2l0aCB0aGUgZm9sbG93aW5nIGNvZGU6CitJdCByZWNvZ25pemVzIHRoZSBmb2xs b3dpbmcgcHJvcGVydGllczoKIAotQGxpc3AKLTs7IEV4YW1pbmUgaWYgQHZhcnt3aWRnZXR9 IGlzIGFjdGl2ZSBvciBub3QuCi0oaWYgKHdpZGdldC1hcHBseSBAdmFye3dpZGdldH0gOmFj dGl2ZSkKLSAgICAobWVzc2FnZSAiV2lkZ2V0IGlzIGFjdGl2ZS4iKQotICAobWVzc2FnZSAi V2lkZ2V0IGlzIGluYWN0aXZlLiIpCitAdGFibGUgQGNvZGUKK0BpdGVtIDpvcHRpb25zCitB IGdpdmVuIHNldCBvZiByZWNvbW1lbmRlZCBrZXktdmFsdWUgdmFsdWVzIGZvciB0aGUgQGNv ZGV7cGxpc3R9Cit3aWRnZXQuICBFYWNoIG9wdGlvbiBzaG93cyB1cCBhcyBhIGNoZWNrbGlz dCBpdGVtLgogCi07OyBNYWtlIEB2YXJ7d2lkZ2V0fSBpbmFjdGl2ZS4KLSh3aWRnZXQtYXBw bHkgQHZhcnt3aWRnZXR9IDpkZWFjdGl2YXRlKQorQGl0ZW0gOmtleS10eXBlCitUaGUgd2lk Z2V0IHR5cGUgdG8gdXNlIGZvciB0aGUgcGxpc3Qga2V5cy4gIEJ5IGRlZmF1bHQsIGl0IHVz ZXMgdGhlCitAY29kZXtzeW1ib2x9IHdpZGdldC4KIAotOzsgTWFrZSBAdmFye3dpZGdldH0g YWN0aXZlLgotKHdpZGdldC1hcHBseSBAdmFye3dpZGdldH0gOmFjdGl2YXRlKQotQGVuZCBs aXNwCitAaXRlbSA6dmFsdWUtdHlwZQorVGhlIHdpZGdldCB0eXBlIHRvIHVzZSBmb3IgdGhl IHBsaXN0IHZhbHVlcy4gIEJ5IGRlZmF1bHQsIGl0IHVzZXMgdGhlCitAY29kZXtzZXhwfSB3 aWRnZXQuCitAZW5kIHRhYmxlCitAZW5kIGRlZmZuCiAKLUEgd2lkZ2V0IGlzIGluYWN0aXZl IGlmIGl0LCBvciBhbnkgb2YgaXRzIGFuY2VzdG9ycyAoZm91bmQgYnkKLWZvbGxvd2luZyB0 aGUgQGNvZGV7OnBhcmVudH0gbGluayksIGhhdmUgYmVlbiBkZWFjdGl2YXRlZC4gIFRvIG1h a2Ugc3VyZQotYSB3aWRnZXQgaXMgcmVhbGx5IGFjdGl2ZSwgeW91IG11c3QgdGhlcmVmb3Jl IGFjdGl2YXRlIGJvdGggaXQgYW5kCi1hbGwgaXRzIGFuY2VzdG9ycy4KK0BkZWZmbiBXaWRn ZXQgYWxpc3QKK0Egd2lkZ2V0IHRvIGVkaXQgYXNzb2NpYXRpb24gbGlzdHMuICBJdHMgc3Vw ZXIgaXMgdGhlIEBjb2Rle2xpc3R9Cit3aWRnZXQuCiAKLUBsaXNwCi0od2hpbGUgd2lkZ2V0 Ci0gICh3aWRnZXQtYXBwbHkgd2lkZ2V0IDphY3RpdmF0ZSkKLSAgKHNldHEgd2lkZ2V0ICh3 aWRnZXQtZ2V0IHdpZGdldCA6cGFyZW50KSkpCi1AZW5kIGxpc3AKK0l0IHJlY29nbml6ZXMg dGhlIHNhbWUgcHJvcGVydGllcyB0aGF0IHRoZSBAY29kZXtwbGlzdH0gd2lkZ2V0LCB3aXRo Cit0aGUgZGlmZmVyZW5jZSB0aGF0IHRoZSBAY29kZXs6a2V5LXR5cGV9IHVzZXMgYnkgZGVm YXVsdCBhIEBjb2Rle3NleHB9Cit3aWRnZXQuCitAZW5kIGRlZmZuCiAKLVlvdSBjYW4gY2hl Y2sgaWYgYSB3aWRnZXQgaGFzIGJlZW4gbWFkZSBpbmFjdGl2ZSBieSBleGFtaW5pbmcgdGhl IHZhbHVlCi1vZiB0aGUgQGNvZGV7OmluYWN0aXZlfSBrZXl3b3JkLiAgSWYgdGhpcyBpcyBu b24tQGNvZGV7bmlsfSwgdGhlIHdpZGdldCBpdHNlbGYKLWhhcyBiZWVuIGRlYWN0aXZhdGVk LiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB1c2luZyB0aGUgQGNvZGV7OmFjdGl2ZX0KLWtl eXdvcmQsIGluIHRoYXQgdGhlIGxhdHRlciB0ZWxscyB5b3UgaWYgdGhlIHdpZGdldCBAc3Ry b25ne29yfSBhbnkgb2YKLWl0cyBhbmNlc3RvcnMgaGF2ZSBiZWVuIGRlYWN0aXZhdGVkLiAg RG8gbm90IGF0dGVtcHQgdG8gc2V0IHRoZQotQGNvZGV7OmluYWN0aXZlfSBrZXl3b3JkIGRp cmVjdGx5LiAgVXNlIHRoZSBAY29kZXs6YWN0aXZhdGV9Ci1AY29kZXs6ZGVhY3RpdmF0ZX0g a2V5d29yZHMgaW5zdGVhZC4KK01vc3QgY29tcG9zaXRlIHdpZGdldHMgZG8gbm90IGFsbG93 IGZvciByZWN1cnNpb24uICBUaGF0IGlzLCBub25lIG9mCit0aGUgY29udGFpbmVkIHdpZGdl dHMgbWF5IGJlIG9mIHRoZSBzYW1lIHR5cGUgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcKK2Rl ZmluZWQuICBUbyBhbGxvdyBmb3IgdGhpcyBraW5kIG9mIHdpZGdldHMsIHRoZXJlJ3MgdGhl IEBjb2Rle2xhenl9Cit3aWRnZXQuCisKK0BkZWZmbiBXaWRnZXQgbGF6eQorQSBiYXNlIHdp ZGdldCBmb3IgcmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlcy4gIEl0cyBzdXBlciBpcyB0aGUK K0Bjb2Rle2RlZmF1bHR9IHdpZGdldC4KIAorV2hlbiBpbnN0YW50aWF0ZWQsIGl0IGNvbnRh aW5zIGEgc2luZ2xlIGluZmVyaW9yIHdpZGdldCBvZiB0aGUgd2lkZ2V0Cit0eXBlIHNwZWNp ZmllZCBpbiB0aGUgQGNvZGV7OnR5cGV9IHByb3BlcnR5LiAgSXRzIHZhbHVlIGlzIHRoZSBz YW1lIGFzCit0aGUgdmFsdWUgb2YgdGhpcyBpbmZlcmlvciB3aWRnZXQuCitAZW5kIGRlZmZu CiAKIEBub2RlIERlZmluaW5nIE5ldyBXaWRnZXRzCiBAY2hhcHRlciBEZWZpbmluZyBOZXcg V2lkZ2V0cwpAQCAtMTUyMCwxOSArMjgzNCwyNyBAQCBEZWZpbmluZyBOZXcgV2lkZ2V0cwog CiBZb3UgY2FuIGRlZmluZSBzcGVjaWFsaXplZCB3aWRnZXRzIHdpdGggQGNvZGV7ZGVmaW5l LXdpZGdldH0uICBJdCBhbGxvd3MKIHlvdSB0byBjcmVhdGUgYSBzaG9ydGhhbmQgZm9yIG1v cmUgY29tcGxleCB3aWRnZXRzLCBpbmNsdWRpbmcgc3BlY2lmeWluZwotY29tcG9uZW50IHdp ZGdldHMgYW5kIG5ldyBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGtleXdvcmQKLWFyZ3VtZW50 cy4KK2NvbXBvbmVudCB3aWRnZXRzIGFuZCBuZXcgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBr ZXl3b3JkIGFyZ3VtZW50cy4KIAogQGRlZnVuIGRlZmluZS13aWRnZXQgbmFtZSBjbGFzcyBk b2MgJnJlc3QgYXJncwotRGVmaW5lIGEgbmV3IHdpZGdldCB0eXBlIG5hbWVkIEB2YXJ7bmFt ZX0gZnJvbSBAY29kZXtjbGFzc30uCitEZWZpbmUgYSBuZXcgd2lkZ2V0IHR5cGUgbmFtZWQg QHZhcntuYW1lfSB0aGF0IGRlcml2ZXMgZnJvbSBAdmFye2NsYXNzfS4KIAotQHZhcntuYW1l fSBhbmQgY2xhc3Mgc2hvdWxkIGJvdGggYmUgc3ltYm9scywgQGNvZGV7Y2xhc3N9IHNob3Vs ZCBiZSBvbmUKLW9mIHRoZSBleGlzdGluZyB3aWRnZXQgdHlwZXMuCitAdmFye25hbWV9IGFu ZCBAdmFye2NsYXNzfSBzaG91bGQgYm90aCBiZSBzeW1ib2xzLCBhbmQgQHZhcntjbGFzc30K K3Nob3VsZCBiZSBvbmUgb2YgdGhlIGV4aXN0aW5nIHdpZGdldCB0eXBlcy4KIAogVGhlIHRo aXJkIGFyZ3VtZW50IEB2YXJ7ZG9jfSBpcyBhIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciB0 aGUgd2lkZ2V0LgogCi1BZnRlciB0aGUgbmV3IHdpZGdldCBoYXMgYmVlbiBkZWZpbmVkLCB0 aGUgZm9sbG93aW5nIHR3byBjYWxscyB3aWxsCi1jcmVhdGUgaWRlbnRpY2FsIHdpZGdldHM6 CitAdmFye2FyZ3N9IHNob3VsZCBiZSBrZXktdmFsdWUgcGFpcnMsIG92ZXJyaWRpbmcga2V5 d29yZCB2YWx1ZXMgb2YKK0B2YXJ7Y2xhc3N9LCBvciBhZGRpbmcgbmV3IHJlY29nbml6ZWQg a2V5d29yZHMgZm9yIEB2YXJ7bmFtZX0uCisKK1VzdWFsbHksIHlvdSdsbCB3YW50IHRvIGRl cml2ZSBmcm9tIGFuIGV4aXN0aW5nIHdpZGdldCB0eXBlLCBsaWtlIHRoZQorQGNvZGV7ZWRp dGFibGUtZmllbGR9IHdpZGdldCwgb3IgdGhlIEBjb2Rle2RlZmF1bHR9IHdpZGdldCwgYnV0 IGl0J3MKK2Fsc28gcG9zc2libGUgdG8gZGVyaXZlIGZyb20gbm90aGluZywgYnkgcGFzc2lu ZyBhIHZhbHVlIG9mIEBjb2Rle25pbH0KK2FzIEB2YXJ7Y2xhc3N9LiAgTm90ZSB0aGF0IGlm IHlvdSBkbyB0aGlzLCB5b3UncmUgZW50aXJlbHkgcmVzcG9uc2libGUKK2ZvciBkZWZpbmlu ZyBhIHdob2xlIG5ldyBkZWZhdWx0IGJlaGF2aW9yIGZvciB5b3VyIHdpZGdldHMuCisKK0Fm dGVyIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBmb2xsb3dpbmcgdHdvIGNhbGxzIHdpbGwg Y3JlYXRlCitpZGVudGljYWwgd2lkZ2V0czoKIAogQGl0ZW1pemUgQGJ1bGxldAogQGl0ZW0K QEAgLTE1NTUsMTcwICsyODc3LDY3IEBAIERlZmluaW5nIE5ldyBXaWRnZXRzCiBJZiB5b3Ug b25seSB3YW50IHRvIHNwZWNpZnkgZGVmYXVsdHMgZm9yIGtleXdvcmRzIHdpdGggbm8gY29t cGxleAogY29udmVyc2lvbnMsIHlvdSBjYW4gdXNlIEBjb2Rle2lkZW50aXR5fSBhcyB5b3Vy IGNvbnZlcnNpb24gZnVuY3Rpb24uCiAKLVRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBrZXl3 b3JkIGFyZ3VtZW50cyBhcmUgdXNlZnVsIHdoZW4gZGVmaW5pbmcgbmV3Ci13aWRnZXRzOgor V2hlbiBkZWZpbmluZyBuZXcgd2lkZ2V0cywgdGhlIEBjb2Rlezpjb252ZXJ0LXdpZGdldH0g cHJvcGVydHkgbWlnaHQKK2JlIHVzZWZ1bDoKKwogQHRhYmxlIEBjb2RlCiBAdmluZGV4IGNv bnZlcnQtd2lkZ2V0QHJ7IGtleXdvcmR9CiBAaXRlbSA6Y29udmVydC13aWRnZXQKIEZ1bmN0 aW9uIHRvIGNvbnZlcnQgYSB3aWRnZXQgdHlwZSBiZWZvcmUgY3JlYXRpbmcgYSB3aWRnZXQg b2YgdGhhdAotdHlwZS4gIEl0IHRha2VzIGEgd2lkZ2V0IHR5cGUgYXMgYW4gYXJndW1lbnQs IGFuZCByZXR1cm5zIHRoZSBjb252ZXJ0ZWQKLXdpZGdldCB0eXBlLiAgV2hlbiBhIHdpZGdl dCBpcyBjcmVhdGVkLCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgdGhlCi13aWRnZXQg dHlwZSBhbmQgYWxsIHRoZSB3aWRnZXQncyBwYXJlbnQgdHlwZXMsIG1vc3QgZGVyaXZlZCBm aXJzdC4KLQotVGhlIGZvbGxvd2luZyBwcmVkZWZpbmVkIGZ1bmN0aW9ucyBjYW4gYmUgdXNl ZCBoZXJlOgotCi1AZGVmdW4gd2lkZ2V0LXR5cGVzLWNvbnZlcnQtd2lkZ2V0IHdpZGdldAot Q29udmVydCBAY29kZXs6YXJnc30gYXMgd2lkZ2V0IHR5cGVzIGluIEB2YXJ7d2lkZ2V0fS4K LUBlbmQgZGVmdW4KLQotQGRlZnVuIHdpZGdldC12YWx1ZS1jb252ZXJ0LXdpZGdldCB3aWRn ZXQKLUluaXRpYWxpemUgQGNvZGV7OnZhbHVlfSBmcm9tIEBjb2RlezphcmdzfSBpbiBAdmFy e3dpZGdldH0uCi1AZW5kIGRlZnVuCi0KLUB2aW5kZXggY29weUByeyBrZXl3b3JkfQotQGl0 ZW0gOmNvcHkKLUZ1bmN0aW9uIHRvIGRlZXAgY29weSBhIHdpZGdldCB0eXBlLiAgSXQgdGFr ZXMgYSBzaGFsbG93IGNvcHkgb2YgdGhlCi13aWRnZXQgdHlwZSBhcyBhbiBhcmd1bWVudCAo bWFkZSBieSBAY29kZXtjb3B5LXNlcXVlbmNlfSksIGFuZCByZXR1cm5zIGEKLWRlZXAgY29w eS4gIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gYXZvaWQgaGF2aW5nIGRpZmZlcmVudCBp bnN0YW5jZXMKLW9mIGNvbWJpbmVkIHdpZGdldHMgc2hhcmUgbmVzdGVkIGF0dHJpYnV0ZXMu Ci0KLVRoZSBmb2xsb3dpbmcgcHJlZGVmaW5lZCBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgaGVy ZToKLQotQGRlZnVuIHdpZGdldC10eXBlcy1jb3B5IHdpZGdldAotQ29weSBAY29kZXs6YXJn c30gYXMgd2lkZ2V0IHR5cGVzIGluIEB2YXJ7d2lkZ2V0fS4KLUBlbmQgZGVmdW4KLQotQHZp bmRleCB2YWx1ZS10by1pbnRlcm5hbEByeyBrZXl3b3JkfQotQGl0ZW0gOnZhbHVlLXRvLWlu dGVybmFsCi1GdW5jdGlvbiB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byB0aGUgaW50ZXJuYWwg Zm9ybWF0LiAgVGhlIGZ1bmN0aW9uCi10YWtlcyB0d28gYXJndW1lbnRzLCBhIHdpZGdldCBh bmQgYW4gZXh0ZXJuYWwgdmFsdWUsIGFuZCByZXR1cm5zIHRoZQotaW50ZXJuYWwgdmFsdWUu ICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIHRoZSBwcmVzZW50IEBjb2Rlezp2YWx1ZX0K LXdoZW4gdGhlIHdpZGdldCBpcyBjcmVhdGVkLCBhbmQgb24gYW55IHZhbHVlIHNldCBsYXRl ciB3aXRoCi1AY29kZXt3aWRnZXQtdmFsdWUtc2V0fS4KLQotQHZpbmRleCB2YWx1ZS10by1l eHRlcm5hbEByeyBrZXl3b3JkfQotQGl0ZW0gOnZhbHVlLXRvLWV4dGVybmFsCi1GdW5jdGlv biB0byBjb252ZXJ0IHRoZSB2YWx1ZSB0byB0aGUgZXh0ZXJuYWwgZm9ybWF0LiAgVGhlIGZ1 bmN0aW9uCi10YWtlcyB0d28gYXJndW1lbnRzLCBhIHdpZGdldCBhbmQgYW4gaW50ZXJuYWwg dmFsdWUsIGFuZCByZXR1cm5zIHRoZQotZXh0ZXJuYWwgdmFsdWUuCi0KLUB2aW5kZXggY3Jl YXRlQHJ7IGtleXdvcmR9Ci1AaXRlbSA6Y3JlYXRlCi1GdW5jdGlvbiB0byBjcmVhdGUgYSB3 aWRnZXQgZnJvbSBzY3JhdGNoLiAgVGhlIGZ1bmN0aW9uIHRha2VzIG9uZQotYXJndW1lbnQs IGEgd2lkZ2V0IHR5cGUsIGFuZCBjcmVhdGVzIGEgd2lkZ2V0IG9mIHRoYXQgdHlwZSwgaW5z ZXJ0cyBpdAotaW4gdGhlIGJ1ZmZlciwgYW5kIHJldHVybnMgYSB3aWRnZXQgb2JqZWN0Lgot Ci1AdmluZGV4IGRlbGV0ZUByeyBrZXl3b3JkfQotQGl0ZW0gOmRlbGV0ZQotRnVuY3Rpb24g dG8gZGVsZXRlIGEgd2lkZ2V0LiAgVGhlIGZ1bmN0aW9uIHRha2VzIG9uZSBhcmd1bWVudCwg YSB3aWRnZXQsCi1hbmQgc2hvdWxkIHJlbW92ZSBhbGwgdHJhY2VzIG9mIHRoZSB3aWRnZXQg ZnJvbSB0aGUgYnVmZmVyLgotCi1UaGUgZGVmYXVsdCB2YWx1ZSBpczoKLQotQGRlZnVuIHdp ZGdldC1kZWZhdWx0LWRlbGV0ZSB3aWRnZXQKLVJlbW92ZSBAdmFye3dpZGdldH0gZnJvbSB0 aGUgYnVmZmVyLgotRGVsZXRlIGFsbCBAY29kZXs6Y2hpbGRyZW59IGFuZCBAY29kZXs6YnV0 dG9uc30gaW4gQHZhcnt3aWRnZXR9LgotQGVuZCBkZWZ1bgotCi1JbiBtb3N0IGNhc2VzIHlv dSBzaG91bGQgbm90IGNoYW5nZSB0aGlzIHZhbHVlLCBidXQgaW5zdGVhZCB1c2UKLUBjb2Rl ezp2YWx1ZS1kZWxldGV9IHRvIG1ha2UgYW55IGFkZGl0aW9uYWwgY2xlYW51cC4KLQotQHZp bmRleCB2YWx1ZS1jcmVhdGVAcnsga2V5d29yZH0KLUBpdGVtIDp2YWx1ZS1jcmVhdGUKLUZ1 bmN0aW9uIHRvIGV4cGFuZCB0aGUgQHNhbXB7JXZ9IGVzY2FwZSBpbiB0aGUgZm9ybWF0IHN0 cmluZy4gIEl0IHdpbGwKLWJlIGNhbGxlZCB3aXRoIHRoZSB3aWRnZXQgYXMgaXRzIGFyZ3Vt ZW50IGFuZCBzaG91bGQgaW5zZXJ0IGEKLXJlcHJlc2VudGF0aW9uIG9mIHRoZSB3aWRnZXQn cyB2YWx1ZSBpbiB0aGUgYnVmZmVyLgotCi1OZXN0ZWQgd2lkZ2V0cyBzaG91bGQgYmUgbGlz dGVkIGluIEBjb2RlezpjaGlsZHJlbn0gb3IgQGNvZGV7OmJ1dHRvbnN9Ci10byBtYWtlIHN1 cmUgdGhleSBhcmUgYXV0b21hdGljYWxseSBkZWxldGVkLgotCi1AdmluZGV4IHZhbHVlLWRl bGV0ZUByeyBrZXl3b3JkfQotQGl0ZW0gOnZhbHVlLWRlbGV0ZQotU2hvdWxkIHJlbW92ZSB0 aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHdpZGdldCdzIHZhbHVlIGZyb20gdGhlIGJ1ZmZl ci4KLUl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHdpZGdldCBhcyBpdHMgYXJndW1lbnQu ICBJdCBkb2Vzbid0IGhhdmUgdG8KLXJlbW92ZSB0aGUgdGV4dCwgYnV0IGl0IHNob3VsZCBy ZWxlYXNlIG1hcmtlcnMgYW5kIGRlbGV0ZSBuZXN0ZWQgd2lkZ2V0cwotaWYgdGhlc2UgYXJl IG5vdCBsaXN0ZWQgaW4gQGNvZGV7OmNoaWxkcmVufSBvciBAY29kZXs6YnV0dG9uc30uCi0K LUB2aW5kZXggdmFsdWUtZ2V0QHJ7IGtleXdvcmR9Ci1AaXRlbSA6dmFsdWUtZ2V0Ci1GdW5j dGlvbiB0byBleHRyYWN0IHRoZSB2YWx1ZSBvZiBhIHdpZGdldCwgYXMgaXQgaXMgZGlzcGxh eWVkIGluIHRoZQotYnVmZmVyLgotCi1UaGUgZm9sbG93aW5nIHByZWRlZmluZWQgZnVuY3Rp b24gY2FuIGJlIHVzZWQgaGVyZToKLQotQGRlZnVuIHdpZGdldC12YWx1ZS12YWx1ZS1nZXQg d2lkZ2V0Ci1SZXR1cm4gdGhlIEBjb2Rlezp2YWx1ZX0gcHJvcGVydHkgb2YgQHZhcnt3aWRn ZXR9LgotQGVuZCBkZWZ1bgotCi1AdmluZGV4IGZvcm1hdC1oYW5kbGVyQHJ7IGtleXdvcmR9 Ci1AaXRlbSA6Zm9ybWF0LWhhbmRsZXIKLUZ1bmN0aW9uIHRvIGhhbmRsZSB1bmtub3duIEBz YW1weyV9IGVzY2FwZXMgaW4gdGhlIGZvcm1hdCBzdHJpbmcuICBJdAotd2lsbCBiZSBjYWxs ZWQgd2l0aCB0aGUgd2lkZ2V0IGFuZCB0aGUgY2hhcmFjdGVyIHRoYXQgZm9sbG93cyB0aGUK LUBzYW1weyV9IGFzIGFyZ3VtZW50cy4gIFlvdSBjYW4gc2V0IHRoaXMgdG8gYWxsb3cgeW91 ciB3aWRnZXQgdG8gaGFuZGxlCi1ub24tc3RhbmRhcmQgZXNjYXBlcy4KLQotQGZpbmRleCB3 aWRnZXQtZGVmYXVsdC1mb3JtYXQtaGFuZGxlcgotWW91IHNob3VsZCBlbmQgdXAgY2FsbGlu ZyBAY29kZXt3aWRnZXQtZGVmYXVsdC1mb3JtYXQtaGFuZGxlcn0gdG8gaGFuZGxlCi11bmtu b3duIGVzY2FwZSBzZXF1ZW5jZXMsIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBAc2FtcHslaH0g YW5kIGFueSBmdXR1cmUKLWVzY2FwZSBzZXF1ZW5jZXMsIGFzIHdlbGwgYXMgZ2l2ZSBhbiBl cnJvciBmb3IgdW5rbm93biBlc2NhcGVzLgotCi1AdmluZGV4IGFjdGlvbkByeyBrZXl3b3Jk fQotQGl0ZW0gOmFjdGlvbgotRnVuY3Rpb24gdG8gaGFuZGxlIHVzZXIgaW5pdGlhdGVkIGV2 ZW50cy4gIEJ5IGRlZmF1bHQsIEBjb2Rlezpub3RpZnl9Ci10aGUgcGFyZW50LgordHlwZS4K IAotVGhlIGZvbGxvd2luZyBwcmVkZWZpbmVkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGhlcmU6 Ci0KLUBkZWZ1biB3aWRnZXQtcGFyZW50LWFjdGlvbiB3aWRnZXQgJm9wdGlvbmFsIGV2ZW50 Ci1UZWxsIEBjb2RlezpwYXJlbnR9IG9mIEB2YXJ7d2lkZ2V0fSB0byBoYW5kbGUgdGhlIEBj b2RlezphY3Rpb259LgotT3B0aW9uYWwgQHZhcntldmVudH0gaXMgdGhlIGV2ZW50IHRoYXQg dHJpZ2dlcmVkIHRoZSBhY3Rpb24uCi1AZW5kIGRlZnVuCitJdCB0YWtlcyBhIHdpZGdldCB0 eXBlIGFzIGFuIGFyZ3VtZW50LCBhbmQgcmV0dXJucyB0aGUgY29udmVydGVkCit3aWRnZXQg dHlwZS4gIFdoZW4gYSB3aWRnZXQgaXMgY3JlYXRlZCwgdGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgZm9yCit0aGUgd2lkZ2V0IHR5cGUgYW5kIGFsbCB0aGUgd2lkZ2V0J3MgcGFyZW50IHR5 cGVzLCBtb3N0IGRlcml2ZWQgZmlyc3QuCiAKLUB2aW5kZXggcHJvbXB0LXZhbHVlQHJ7IGtl eXdvcmR9Ci1AaXRlbSA6cHJvbXB0LXZhbHVlCi1GdW5jdGlvbiB0byBwcm9tcHQgZm9yIGEg dmFsdWUgaW4gdGhlIG1pbmlidWZmZXIuICBUaGUgZnVuY3Rpb24gc2hvdWxkCi10YWtlIGZv dXIgYXJndW1lbnRzLCBAdmFye3dpZGdldH0sIEB2YXJ7cHJvbXB0fSwgQHZhcnt2YWx1ZX0s IGFuZAotQHZhcnt1bmJvdW5kfSBhbmQgc2hvdWxkIHJldHVybiBhIHZhbHVlIGZvciB3aWRn ZXQgZW50ZXJlZCBieSB0aGUgdXNlci4KLUB2YXJ7cHJvbXB0fSBpcyB0aGUgcHJvbXB0IHRv IHVzZS4gIEB2YXJ7dmFsdWV9IGlzIHRoZSBkZWZhdWx0IHZhbHVlIHRvCi11c2UsIHVubGVz cyBAdmFye3VuYm91bmR9IGlzIG5vbi1AY29kZXtuaWx9LCBpbiB3aGljaCBjYXNlIHRoZXJl IGlzIG5vIGRlZmF1bHQKLXZhbHVlLiAgVGhlIGZ1bmN0aW9uIHNob3VsZCByZWFkIHRoZSB2 YWx1ZSB1c2luZyB0aGUgbWV0aG9kIG1vc3QgbmF0dXJhbAotZm9yIHRoaXMgd2lkZ2V0LCBh bmQgZG9lcyBub3QgaGF2ZSB0byBjaGVjayB0aGF0IGl0IG1hdGNoZXMuCitUaGUgcHJlZGVm aW5lZCBmdW5jdGlvbnMgQGNvZGV7d2lkZ2V0LXR5cGVzLWNvbnZlcnQtd2lkZ2V0fSBhbmQK K0Bjb2Rle3dpZGdldC12YWx1ZS1jb252ZXJ0LXdpZGdldH0gY2FuIGJlIHVzZWQgaGVyZS4K IEBlbmQgdGFibGUKIAotSWYgeW91IHdhbnQgdG8gZGVmaW5lIGEgbmV3IHdpZGdldCBmcm9t IHNjcmF0Y2gsIHVzZSB0aGUgQGNvZGV7ZGVmYXVsdH0KLXdpZGdldCBhcyBpdHMgYmFzZS4K LQotQGRlZmZuIFdpZGdldCBkZWZhdWx0Ci1XaWRnZXQgdXNlZCBhcyBhIGJhc2UgZm9yIG90 aGVyIHdpZGdldHMuCi0KLUl0IHByb3ZpZGVzIG1vc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdHkg dGhhdCBpcyByZWZlcnJlZCB0byBhcyBgYGJ5Ci1kZWZhdWx0JycgaW4gdGhpcyB0ZXh0Lgot QGVuZCBkZWZmbgotCi1Abm9kZSBXaWRnZXQgQnJvd3NlcgotQGNoYXB0ZXIgV2lkZ2V0IEJy b3dzZXIKK0Bub2RlIEluc3BlY3RpbmcgV2lkZ2V0cworQGNoYXB0ZXIgSW5zcGVjdGluZyBX aWRnZXRzCiBAY2luZGV4IHdpZGdldCBicm93c2VyCiAKLVRoZXJlIGlzIGEgc2VwYXJhdGUg cGFja2FnZSB0byBicm93c2Ugd2lkZ2V0cy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8gaGVscAot cHJvZ3JhbW1lcnMgd2hvIHdhbnQgdG8gZXhhbWluZSB0aGUgY29udGVudCBvZiBhIHdpZGdl dC4gIFRoZSBicm93c2VyCi1zaG93cyB0aGUgdmFsdWUgb2YgZWFjaCBrZXl3b3JkLCBidXQg dXNlcyBsaW5rcyBmb3IgY2VydGFpbiBrZXl3b3Jkcwotc3VjaCBhcyBAc2FtcHs6cGFyZW50 fSwgd2hpY2ggYXZvaWRzIHByaW50aW5nIGN5Y2xpYyBzdHJ1Y3R1cmVzLgorVGhlcmUgaXMg YSBzZXBhcmF0ZSBwYWNrYWdlIHRvIGJyb3dzZSB3aWRnZXRzLCBpbgorQHNhbXB7d2lkLWJy b3dzZS5lbH0uICBUaGlzIGlzIGludGVuZGVkIHRvIGhlbHAgcHJvZ3JhbW1lcnMgd2hvIHdh bnQKK3RvIGV4YW1pbmUgdGhlIGNvbnRlbnQgb2YgYSB3aWRnZXQuICBUaGUgYnJvd3NlciBz aG93cyB0aGUgdmFsdWUgb2YKK2VhY2gga2V5d29yZCwgYnV0IHVzZXMgbGlua3MgZm9yIGNl cnRhaW4ga2V5d29yZHMgc3VjaCBhcworQHNhbXB7OnBhcmVudH0sIHdoaWNoIGF2b2lkcyBw cmludGluZyBjeWNsaWMgc3RydWN0dXJlcy4KIAogQGRlZmZuIENvbW1hbmQgd2lkZ2V0LWJy b3dzZSBAdmFye3dpZGdldH0KIENyZWF0ZSBhIHdpZGdldCBicm93c2VyIGZvciBAdmFye3dp ZGdldH0uCisKIFdoZW4gY2FsbGVkIGludGVyYWN0aXZlbHksIHByb21wdCBmb3IgQHZhcnt3 aWRnZXR9LgogQGVuZCBkZWZmbgogCiBAZGVmZm4gQ29tbWFuZCB3aWRnZXQtYnJvd3NlLW90 aGVyLXdpbmRvdyBAdmFye3dpZGdldH0KIENyZWF0ZSBhIHdpZGdldCBicm93c2VyIGZvciBA dmFye3dpZGdldH0gYW5kIHNob3cgaXQgaW4gYW5vdGhlciB3aW5kb3cuCisKIFdoZW4gY2Fs bGVkIGludGVyYWN0aXZlbHksIHByb21wdCBmb3IgQHZhcnt3aWRnZXR9LgogQGVuZCBkZWZm bgogCiBAZGVmZm4gQ29tbWFuZCB3aWRnZXQtYnJvd3NlLWF0IEB2YXJ7cG9zfQogQ3JlYXRl IGEgd2lkZ2V0IGJyb3dzZXIgZm9yIHRoZSB3aWRnZXQgYXQgQHZhcntwb3N9LgorCiBXaGVu IGNhbGxlZCBpbnRlcmFjdGl2ZWx5LCB1c2UgdGhlIHBvc2l0aW9uIG9mIHBvaW50LgogQGVu ZCBkZWZmbgogCitJbiBhZGRpdGlvbiwgdGhlcmUncyBhIGZ1bmN0aW9uIHRvIGRlc2NyaWJl IHRoZSB3aWRnZXQgYXQgcG9pbnQuCisKK0BkZWZmbiBDb21tYW5kIHdpZGdldC1kZXNjcmli ZSAmb3B0aW9uYWwgd2lkZ2V0LW9yLXBvcworRGVzY3JpYmUgdGhlIHdpZGdldCBhdCBwb2lu dC4KKworV2hlbiBjYWxsZWQgZnJvbSBMaXNwLCBAdmFye3dpZGdldC1vci1wb3N9IG1pZ2h0 IGJlIHRoZSB3aWRnZXQgdG8KK2Rlc2NyaWJlIG9yIGEgYnVmZmVyIHBvc2l0aW9uIHdoZXJl IGEgd2lkZ2V0IGlzIHByZXNlbnQuICBJZgorQHZhcnt3aWRnZXQtb3ItcG9zfSBpcyBAY29k ZXtuaWx9LCB0aGUgd2lkZ2V0IHRvIGRlc2NyaWJlIGlzIHRoZQord2lkZ2V0IGF0IHBvaW50 LgorCitUaGlzIGNvbW1hbmQgc2V0cyB1cCBhIGhlbHAgYnVmZmVyIGZvciBwcm92aWRpbmcg aW5mb3JtYXRpb24gYWJvdXQgdGhlCit3aWRnZXQsIG1haW5seSBpdHMgQGNvZGV7OmFjdGlv bn0gYW5kIEBjb2Rlezptb3VzZS1kb3duLWFjdGlvbn0KK2Z1bmN0aW9ucywgYW5kIHByb3Zp ZGVzIGxpbmtzIHRvIGRlc2NyaWJlIGl0IGluIG1vcmUgZGV0YWlsIHVzaW5nIHRoZQorQGNv ZGV7d2lkZ2V0LWJyb3dzZX0gY29tbWFuZHMgZGVzY3JpYmVkIGFib3ZlLgorQGVuZCBkZWZm bgorCiBAbm9kZSAgV2lkZ2V0IE1pbm9yIE1vZGUKIEBjaGFwdGVyIFdpZGdldCBNaW5vciBN b2RlCiBAY2luZGV4IHdpZGdldCBtaW5vciBtb2RlCkBAIC0xNzQwLDE0ICsyOTU5LDI0IEBA IFV0aWxpdGllcwogQGNoYXB0ZXIgVXRpbGl0aWVzCiBAY2luZGV4IHV0aWxpdHkgZnVuY3Rp b25zIGZvciB3aWRnZXRzCiAKK0hlcmUgd2UgZGVzY3JpYmUgc29tZSB1dGlsaXR5IGZ1bmN0 aW9ucyB0aGF0IGRvbid0IHJlYWxseSBoYXZlIGEgcGxhY2UKK2VhcmxpZXIgaW4gdGhpcyBt YW51YWwuCisKIEBkZWZ1biB3aWRnZXQtcHJvbXB0LXZhbHVlIHdpZGdldCBwcm9tcHQgWyB2 YWx1ZSB1bmJvdW5kIF0KIFByb21wdCBmb3IgYSB2YWx1ZSBtYXRjaGluZyBAdmFye3dpZGdl dH0sIHVzaW5nIEB2YXJ7cHJvbXB0fS4KIFRoZSBjdXJyZW50IHZhbHVlIGlzIGFzc3VtZWQg dG8gYmUgQHZhcnt2YWx1ZX0sIHVubGVzcyBAdmFye3VuYm91bmR9IGlzCiBub24tQGNvZGV7 bmlsfS4KKworQ29udmVydHMgQHZhcnt3aWRnZXR9IGJlZm9yZSBwcm9tcHRpbmcsIGFuZCBm b3IgcHJvbXB0aW5nIGl0IHVzZXMgdGhlCitAY29kZXs6cHJvbXB0LXZhbHVlfSBmdW5jdGlv bi4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdXNlcgorYGBhbnN3ZXInJywgYW5kIGl0 J3MgYW4gZXJyb3IgaWYgdGhhdCBhbnN3ZXIgZG9lc24ndCBtYXRjaCB0aGUgd2lkZ2V0LAor YXMgd2l0aCB0aGUgQGNvZGV7Om1hdGNofSBmdW5jdGlvbi4KKworSWYgdGhlIGFuc3dlciBt YXRjaGVzIHRoZSB3aWRnZXQsIHJldHVybnMgdGhlIGFuc3dlci4KIEBlbmQgZGVmdW4KIAog QGRlZnVuIHdpZGdldC1nZXQtc2libGluZyB3aWRnZXQKLUdldCB0aGUgaXRlbSB3aGljaCBA dmFye3dpZGdldH0gaXMgYXNzdW1lZCB0byB0b2dnbGUuCitHZXQgdGhlIGl0ZW0gd2hpY2gg QHZhcnt3aWRnZXR9IHNob3VsZCB0b2dnbGUuCiBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBm b3IgcmFkaW8gYnV0dG9ucyBvciBjaGVja2JveGVzIGluIGEgbGlzdC4KIEBlbmQgZGVmdW4K IApAQCAtMTc3Myw2ICszMDAyLDE0MiBAQCBVdGlsaXRpZXMKIHRoZW4gdGhlIHJldHVybiB2 YWx1ZSBpcyB0aGUgQHZhcnt2YWx1ZX0gb2YgdGhlIGNob3NlbiBlbGVtZW50LgogQGVuZCBk ZWZ1bgogCitAZGVmdW4gd2lkZ2V0LWltYWdlLWZpbmQgaW1hZ2UKK0NyZWF0ZSBhIGdyYXBo aWNhbCBidXR0b24gZnJvbSBAdmFye2ltYWdlfSwgYW4gaW1hZ2Ugb3IgYSBmaWxlIG5hbWUK K3NhbnMgZXh0ZW5zaW9uLgorCitJZiBAdmFye2ltYWdlfSBpcyBhIGZpbGUgbmFtZSwgdGhl IGZpbGUgc2hvdWxkIGJlIGluCitAY29kZXt3aWRnZXQtaW1hZ2UtZGlyZWN0b3J5fSwgb3Ig aW4gYSBwbGFjZSB3aGVyZSBAY29kZXtmaW5kLWltYWdlfQord2lsbCBmaW5kIGl0LgorQGVu ZCBkZWZ1bgorCitAZGVmdW4gd2lkZ2V0LWltYWdlLWluc2VydCB3aWRnZXQgdGFnIGltYWdl CitBcyBwYXJ0IG9mIEB2YXJ7d2lkZ2V0fSwgaW5zZXJ0IHRoZSB0ZXh0IEB2YXJ7dGFnfSBv ciwgaWYgc3VwcG9ydGVkLAordGhlIGltYWdlIEB2YXJ7aW1hZ2V9LgorCitAdmFye2ltYWdl fSBzaG91bGQgYmUgYXMgZGVzY3JpYmVkIGluIEBjb2Rle3dpZGdldC1pbWFnZS1maW5kfS4K K0BlbmQgZGVmdW4KKworQGRlZnVuIHdpZGdldC1lY2hvLWhlbHAgcG9zCitEaXNwbGF5IGhl bHAtZWNobyB0ZXh0IGZvciB0aGUgd2lkZ2V0IGF0IEB2YXJ7cG9zfS4KKworVXNlcyB0aGUg dmFsdWUgb2YgQGNvZGV7OmhlbHAtZWNob30uICBJZiBpdCBpcyBhIGZ1bmN0aW9uLCBpdCBj YWxscyBpdAordG8gZ2V0IGEgc3RyaW5nLiAgT3RoZXJ3aXNlLCBpdCBAY29kZXtldmFsfXMg aXQuCitAZW5kIGRlZnVuCisKK0Bub2RlICBDdXN0b21pemF0aW9uCitAY2hhcHRlciBDdXN0 b21pemF0aW9uCitUaGlzIGNoYXB0ZXIgaXMgYWJvdXQgdGhlIGN1c3RvbWl6YXRpb24gb3B0 aW9ucyBmb3IgdGhlIFdpZGdldAorbGlicmFyeSwgZm9yIHRoZSBlbmQgdXNlci4KKworQGRl ZmZuIEZhY2Ugd2lkZ2V0LWZpZWxkLWZhY2UKK0ZhY2UgdXNlZCBmb3Igb3RoZXIgZWRpdGlu ZyBmaWVsZHMuCitAZW5kIGRlZmZuCisKK0BkZWZmbiBGYWNlIHdpZGdldC1idXR0b24tZmFj ZQorRmFjZSB1c2VkIGZvciBidXR0b25zLgorQGVuZCBkZWZmbgorCitAZGVmb3B0IHdpZGdl dC1tb3VzZS1mYWNlCitGYWNlIHVzZWQgZm9yIGhpZ2hsaWdodGluZyBhIGJ1dHRvbiB3aGVu IHRoZSBtb3VzZSBwb2ludGVyIG1vdmVzCithY3Jvc3MgaXQuCisKK1RoZSBkZWZhdWx0IHZh bHVlIGlzIEBjb2Rle2hpZ2hsaWdodH0uCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdl dC1pbWFnZS1kaXJlY3RvcnkKK0RpcmVjdG9yeSB3aGVyZSBXaWRnZXQgc2hvdWxkIGxvb2sg Zm9yIGltYWdlcy4KKworV2lkZ2V0IHdpbGwgbG9vayBoZXJlIGZvciBhIGZpbGUgd2l0aCB0 aGUgc2FtZSBuYW1lIGFzIHNwZWNpZmllZCBmb3IgdGhlCitpbWFnZSwgd2l0aCBlaXRoZXIg YSBAZmlsZXsueHBtfSAoaWYgc3VwcG9ydGVkKSBvciBAZmlsZXsueGJtfSBleHRlbnNpb24u CitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1pbWFnZS1lbmFibGUKK0lmIG5vbi1A Y29kZXtuaWx9LCBhbGxvdyBpbWFnZXMgdG8gYXBwZWFyIG9uIGRpc3BsYXlzIHdoZXJlIHRo ZXkgYXJlIHN1cHBvcnRlZC4KK0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgd2lkZ2V0LWltYWdl LWNvbnZlcnNpb24KK0FuIGFsaXN0IHRvIGNvbnZlcnQgc3ltYm9scyBmcm9tIGltYWdlIGZv cm1hdHMgdG8gZmlsZSBuYW1lIHN1ZmZpeGVzLgorCitFYWNoIGVsZW1lbnQgaXMgYSBjb25z IGNlbGwgKEB2YXJ7Zm9ybWF0fSAuIEB2YXJ7c3VmZml4fSksIHdoZXJlCitAdmFye2Zvcm1h dH0gaXMgYSBzeW1ib2wgdGhhdCByZXByZXNlbnRzIGFuIGltYWdlIGZvcm1hdCBhbmQKK0B2 YXJ7c3VmZml4fSBpcyBpdHMgY29ycmVzcG9uZGVudCBzdWZmaXguCitAZW5kIGRlZm9wdAor CitAZGVmb3B0IHdpZGdldC1idXR0b24tcHJlZml4CitTdHJpbmcgdG8gcHJlZml4IGJ1dHRv bnMuCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1idXR0b24tc3VmZml4CitTdHJp bmcgdG8gc3VmZml4IGJ1dHRvbnMuCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1w dXNoLWJ1dHRvbi1wcmVmaXgKK1N0cmluZyB0byBwcmVmaXggcHVzaCBidXR0b25zLgorQGVu ZCBkZWZvcHQKKworQGRlZm9wdCB3aWRnZXQtcHVzaC1idXR0b24tc3VmZml4CitTdHJpbmcg dG8gc3VmZml4IHB1c2ggYnV0dG9ucy4KK0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgd2lkZ2V0 LWxpbmstcHJlZml4CitTdHJpbmcgdG8gcHJlZml4IGxpbmtzLgorQGVuZCBkZWZvcHQKKwor QGRlZm9wdCB3aWRnZXQtbGluay1zdWZmaXgKK1N0cmluZyB0byBzdWZmaXggbGlua3MuCitA ZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1jaG9pY2UtdG9nZ2xlCitJZiBub24tQGNv ZGV7bmlsfSwgdG9nZ2xlIHdoZW4gdGhlcmUgYXJlIGp1c3QgdHdvIG9wdGlvbnMuCisKK0J5 IGRlZmF1bHQsIGl0cyB2YWx1ZSBpcyBAY29kZXtuaWx9LgorQGVuZCBkZWZvcHQKKworQGRl Zm9wdCB3aWRnZXQtZG9jdW1lbnRhdGlvbi1saW5rcworSWYgbm9uLUBjb2Rle25pbH0sIGFk ZCBoeXBlcmxpbmtzIHRvIGRvY3VtZW50YXRpb24gc3RyaW5ncy4KK0BlbmQgZGVmb3B0CisK K0BkZWZvcHQgd2lkZ2V0LWRvY3VtZW50YXRpb24tbGluay1yZWdleHAKK0EgcmVnZXhwIHRo YXQgbWF0Y2hlcyBwb3RlbnRpYWwgbGlua3MgaW4gZG9jdW1lbnRhdGlvbiBzdHJpbmdzLiAg VGhlCitsaW5rIGl0c2VsZiBzaG91bGQgbWF0Y2ggdG8gdGhlIGZpcnN0IGdyb3VwLgorQGVu ZCBkZWZvcHQKKworQGRlZm9wdCB3aWRnZXQtZG9jdW1lbnRhdGlvbi1saW5rLXAKK0EgcHJl ZGljYXRlIGZ1bmN0aW9uIHRvIHRlc3QgaWYgYSBzdHJpbmcgaXMgdXNlZnVsIGFzIGEgbGlu ay4gIFRoZQorZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCBhIHN0cmlu ZywgYW5kIHNob3VsZCByZXR1cm4KK25vbi1AY29kZXtuaWx9IGlmIHRoZXJlIHNob3VsZCBi ZSBhIGxpbmsgZm9yIHRoYXQgc3RyaW5nLgorCitCeSBkZWZhdWx0LCB0aGUgdmFsdWUgaXMg QGNvZGV7aW50ZXJuLXNvZnR9LgorQGVuZCBkZWZvcHQKKworQGRlZm9wdCB3aWRnZXQtZG9j dW1lbnRhdGlvbi1saW5rLXR5cGUKK0Egc3ltYm9sIHRoYXQgcmVwcmVzZW50cyBhIHdpZGdl dCB0eXBlIHRvIHVzZSBmb3IgbGlua3MgaW4KK2RvY3VtZW50YXRpb24gc3RyaW5ncy4KKwor QnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIEBjb2Rle2RvY3VtZW50YXRpb24tbGlua30uCitA ZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1tZW51LW1heC1zaXplCitNYXhpbXVtIHNp emUgZm9yIGEgcG9wdXAgbWVudS4gIEJ5IGRlZmF1bHQsIGl0cyB2YWx1ZSBpcyA0MC4KKwor SWYgYSBmdW5jdGlvbiBhc2sgeW91IHRvIGNob29zZSBmcm9tIGEgbWVudSB0aGF0IGlzIGxh cmdlciB0aGFuIHRoaXMKK3ZhbHVlLCBpdCB3aWxsIHVzZSB0aGUgbWluaWJ1ZmZlci4KK0Bl bmQgZGVmb3B0CisKK0BkZWZvcHQgd2lkZ2V0LW1lbnUtbWF4LXNob3J0Y3V0cworTGFyZ2Vz dCBudW1iZXIgb2YgaXRlbXMgZm9yIHdoaWNoIGl0IHdvcmtzIHRvIGNob29zZSBvbmUgd2l0 aCBhCitjaGFyYWN0ZXIuCisKK0ZvciBhIGxhcmdlciBudW1iZXIsIHVzZSB0aGUgbWluaWJ1 ZmZlci4KK0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgd2lkZ2V0LW1lbnUtbWluaWJ1ZmZlci1m bGFnCitXaGV0aGVyIHRvIHVzZSB0aGUgbWluaWJ1ZmZlciB0byBhc2sgZm9yIGEgY2hvaWNl LgorCitJZiBAY29kZXtuaWx9LCB0aGUgZGVmYXVsdCwgcmVhZCBhIHNpbmdsZSBjaGFyYWN0 ZXIuCitAZW5kIGRlZm9wdAorCiBAbm9kZSAgV2lkZ2V0IFdpc2hsaXN0CiBAY2hhcHRlciBX aXNobGlzdAogQGNpbmRleCB0b2RvCkBAIC0xODA4LDE1ICszMTczLDYgQEAgV2lkZ2V0IFdp c2hsaXN0CiBAaXRlbQogRmluZCBhIHdheSB0byBtYWtlIGdseXBocyBsb29rIGluYWN0aXZl LgogCi1AaXRlbQotQWRkIEBjb2Rle3Byb3BlcnR5LWxpc3R9IHdpZGdldC4KLQotQGl0ZW0K LUFkZCBAY29kZXthc3NvY2lhdGlvbi1saXN0fSB3aWRnZXQuCi0KLUBpdGVtCi1BZGQgQGNv ZGV7a2V5LWJpbmRpbmd9IHdpZGdldC4KLQogQGl0ZW0KIEFkZCBAY29kZXt3aWRnZXR9IHdp ZGdldCBmb3IgZWRpdGluZyB3aWRnZXQgc3BlY2lmaWNhdGlvbnMuCiAKLS0gCjIuMzQuMQoK --------------4aLYnQF8f6esIUhojLytHBk0--