<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>23165</bug_id>
          
          <creation_ts>2009-01-07 10:46:31 -0800</creation_ts>
          <short_desc>Add support for application cache dynamic entries</short_desc>
          <delta_ts>2009-06-15 02:10:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>darin</cc>
    
    <cc>ian</cc>
    
    <cc>michaeln</cc>
    
    <cc>pknight</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>104725</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-07 10:46:31 -0800</bug_when>
    <thetext>We need to support dynamic application cache entries from HTML5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104728</commentid>
    <comment_count>1</comment_count>
      <attachid>26496</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-07 10:59:59 -0800</bug_when>
    <thetext>Created attachment 26496
Part1 - implement DOMStringList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104803</commentid>
    <comment_count>2</comment_count>
      <attachid>26496</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-07 16:16:59 -0800</bug_when>
    <thetext>Comment on attachment 26496
Part1 - implement DOMStringList

&gt; +        static PassRefPtr&lt;StaticStringList&gt; create(const Vector&lt;String&gt;&amp; strings)
&gt; +        {
&gt; +            return adoptRef(new StaticStringList(strings));
&gt; +        }

It&apos;d be more efficient to make this adopt a vector rather than copying a vector. You&apos;d then probably call it adopt rather than create. And you could implement it by doing a swap and then a clear. Although that&apos;s not the perfect name, I think it&apos;s pretty good.

&gt; Index: WebCore/loader/appcache/ApplicationCacheGroup.cpp
&gt; ===================================================================
&gt; --- WebCore/loader/appcache/ApplicationCacheGroup.cpp	(revision 39671)
&gt; +++ WebCore/loader/appcache/ApplicationCacheGroup.cpp	(working copy)

Should revert the change to this file.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104861</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-08 03:55:48 -0800</bug_when>
    <thetext>Committed revision 39699.

(In reply to comment #2)
&gt; It&apos;d be more efficient to make this adopt a vector rather than copying a
&gt; vector. You&apos;d then probably call it adopt rather than create. And you could
&gt; implement it by doing a swap and then a clear.

I added an adopt() method, and used it in DOMApplicationCache. I didn&apos;t understand why use clear() though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104862</commentid>
    <comment_count>4</comment_count>
      <attachid>26496</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-08 03:56:15 -0800</bug_when>
    <thetext>Comment on attachment 26496
Part1 - implement DOMStringList

Clearing review flag from a landed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104880</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-08 09:08:08 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; It&apos;d be more efficient to make this adopt a vector rather than copying a
&gt; &gt; vector. You&apos;d then probably call it adopt rather than create. And you could
&gt; &gt; implement it by doing a swap and then a clear.
&gt; 
&gt; I added an adopt() method, and used it in DOMApplicationCache. I didn&apos;t
&gt; understand why use clear() though.

My mistake. The clear function is for cases when we already have a vector and want to adopt a replacement. It&apos;s better to clear after swapping than to export the old values in the vector. Not at all relevant to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105201</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 04:22:19 -0800</bug_when>
    <thetext>After further investigation and some discussion with Hixie, I believe that the spec is not in a state that we should implement, and it&apos;s not yet clear how to fix it.

1) Dynamic entry lifetime is unclear. The UA can silently drop dynamic entries when updating the cache, so an application cannot rely on the resources being present.
2) The model for propagation of resources added to an old cache in not mature yet. I.e., if window.applicationCache is associated with a cache that isn&apos;t newest, then add/remove calls will only manipulate that cache, not its newer versions. There is currently a requirement that changes the behavior a bit when cache update is in progress (adds/removes should be stored and replayed when update is finished), but that&apos;s not general enough.
3) The API is too easy to misuse - since online whitelist can not be manipulated dynamically, clients would add dynamic entries for external resources they want to access, easily blowing up the cache.
4) WebKit doesn&apos;t have quotas for application cache yet, and I think that it&apos;s a pre-requisite for letting JS code add resources dynamically (the latter is not an issue with the spec, of course).

More generally, I think that while appcache holds application code and other resources, dynamic entries are really for application data, and it&apos;s quite questionable that they should be mixed up like that. Existing local storage APIs looks like they may be better suited for application data storage (if we design a way for loader to access these directly).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105202</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 04:23:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/5946450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105203</commentid>
    <comment_count>8</comment_count>
      <attachid>26601</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 04:24:44 -0800</bug_when>
    <thetext>Created attachment 26601
Work in progress

Some code I had in my tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105204</commentid>
    <comment_count>9</comment_count>
      <attachid>26602</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 04:30:53 -0800</bug_when>
    <thetext>Created attachment 26602
Work in progress

Also added tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105205</commentid>
    <comment_count>10</comment_count>
      <attachid>26603</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 04:37:46 -0800</bug_when>
    <thetext>Created attachment 26603
Disable existing code

Disable existing stub code, to make feature checks easier. I wouldn&apos;t go as far as removing all existing code as long as the feature is in HTML5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105224</commentid>
    <comment_count>11</comment_count>
      <attachid>26603</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-11 08:58:43 -0800</bug_when>
    <thetext>Comment on attachment 26603
Disable existing code

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105306</commentid>
    <comment_count>12</comment_count>
      <attachid>26603</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 23:22:24 -0800</bug_when>
    <thetext>Comment on attachment 26603
Disable existing code

Committed revision 39816.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123492</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-05-28 16:02:51 -0700</bug_when>
    <thetext>&gt; More generally, I think that while appcache holds application code and other
&gt; resources, dynamic entries are really for application data, and it&apos;s quite
&gt; questionable that they should be mixed up like that. Existing local storage
&gt; APIs looks like they may be better suited for application data storage (if we
&gt; design a way for loader to access these directly).

+1 this line of thinking

I can tell you from working with Gears that applications will not be happy with a rigid cache for the http resources that fall into that &quot;application data&quot; category.

For example, gmail message attachments are referenced via urls that contain two ids (messageID + attachmentID). But each unique draft of a message has a unique messageID. To carry attachments forward is a PITA with a fixed url scheme. Additionally, if messages with attachments are to be composed &apos;offline&apos;, these resources have to go somewhere at that time.

Additionally, there is more than one way (and url) to access each attachment, &apos;download it&apos; vs &apos;view it&apos;. In many cases the only difference in the response is the addition or absence of a Content-Disposition header. In other cases, an HTML page is synthesized to dress up a &apos;viewed&apos; image (for example).

My dream on this dimension is allow application script to execute in response to a resource load which would generate/compose a response (based on the contents of local storage among other things).

The &apos;dynamic entries&apos; stuff was sorely lacking.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125908</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-06-15 02:10:00 -0700</bug_when>
    <thetext>Since this is no longer in spec, and is unlikely to come back in original form, marking as INVALID.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26496</attachid>
            <date>2009-01-07 10:59:59 -0800</date>
            <delta_ts>2009-01-08 03:56:15 -0800</delta_ts>
            <desc>Part1 - implement DOMStringList</desc>
            <filename>DOMStringList.txt</filename>
            <type>text/plain</type>
            <size>46865</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTY4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMDktMDEtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhcnQgb25lIG9mIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNjUKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGFwcGxpY2F0aW9uIGNhY2hlIGR5
bmFtaWMgZW50cmllcworCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBwY2FjaGUvZHluYW1p
Yy1lbnRyaWVzLW5vLWNhY2hlLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS5zY29uczoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICBBZGRlZCBuZXcgZmlsZXMuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwOiAoV2Vi
Q29yZTo6SlNET01BcHBsaWNhdGlvbkNhY2hlOjpoYXNJdGVtKToKKyAgICAgICAgQWRkZWQgYmlu
ZGluZyBmb3IgaGFzSXRlbSgpLiBMaWtlIG90aGVyIERPTUFwcGxpY2FpdG9uQ2FjaGUgbWV0aG9k
cywgaXQgbmVlZHMgdG8gYmUgY3VzdG9tCisgICAgICAgIHRvIHJlc29sdmUgcmVsYXRpdmUgVVJM
cyBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0
b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRE9NU3RyaW5nTGlzdC5jcHA6IEFkZGVkLgor
ICAgICAgICAqIGRvbS9ET01TdHJpbmdMaXN0Lmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9ET01T
dHJpbmdMaXN0LmlkbDogQWRkZWQuCisgICAgICAgIEFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9m
IERPTSAzIENvcmUgRE9NU3RyaW5nTGlzdCBpbnRlcmZhY2UsIHdoaWNoIGlzIHJldHVybmVkIGJ5
CisgICAgICAgIERPTUFwcGxpY2F0aW9uQ2FjaGUgaXRlbXMgYXR0cmlidXRlLgorCisgICAgICAg
ICogZG9tL1N0YXRpY1N0cmluZ0xpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBkb20vU3RhdGlj
U3RyaW5nTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgRE9NU3Ry
aW5nTGlzdCB0aGF0IG1ha2VzIGEgc25hcHNob3QgKGZvciBET01BcHBsaWNhdGlvbkNhY2hlLCB0
aGlzCisgICAgICAgIG1hdGNoZXMgRmlyZWZveCwgYXMgdGhlIHNwZWMgZG9lc24ndCBzYXkgd2hl
dGhlciB0aGUgcmV0dXJuZWQgbGlzdCBzaG91bGQgYmUgbGl2ZSBvciBub3QpLgorCisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDogQWRkZWQgYSBsaXN0IG9mIHBl
bmRpbmcgZHluYW1pYyBlbnRyeSBhY3Rpb25zLCB0byBiZQorICAgICAgICB1c2VkIGluIHRoZSBu
ZWFyIGZ1dHVyZS4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNh
Y2hlLmlkbDogVXBkYXRlZCBmb3Igc3BlYyBjaGFuZ2VzLiBJbnN0ZWFkIG9mIGxlbmd0aCAKKyAg
ICAgICAgYXR0cmlidXRlIGFuZCBpdGVtKCksIHdlIG5vdyBoYXZlIGFuIGl0ZW1zIGF0dHJpYnV0
ZSB0aGF0IHJldHVybnMgYSBET01TdHJpbmdMaXN0LCBhbmQgYQorICAgICAgICBoYXNJdGVtIGNv
bnZlbmllbmNlIG1ldGhvZC4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNh
dGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6Oml0
ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6Omhhc0l0ZW0pOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAg
IEFkZGVkIGltcGxlbWVudGF0aW9ucyBvZiBpdGVtcyBhdHRyaWJ1dGUgYW5kIGhhc0l0ZW0oKSAo
bm90ZSB0aGF0IHVuZGVybHlpbmcgQXBwbGljYXRpb25DYWNoZQorICAgICAgICBtZXRob2RzIGFy
ZSBzdGlsbCB1bmltcGxlbWVudGVkIHRob3VnaCkuCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5pZGw6IEV4cG9zZSBhIERPTVN0cmluZ0xpc3QgZ2xvYmFsIGNvbnN0cnVjdG9yLgorCiAyMDA5
LTAxLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDM5NjcxKQor
KysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3
Niw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIERPTUltcGxlbWVudGF0aW9uIFwKICAgICBET01Q
YXJzZXIgXAogICAgIERPTVNlbGVjdGlvbiBcCisgICAgRE9NU3RyaW5nTGlzdCBcCiAgICAgRE9N
V2luZG93IFwKICAgICBEYXRhYmFzZSBcCiAgICAgRG9jdW1lbnQgXApJbmRleDogV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAzOTY3MSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw2ICsxMDUsNyBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvZG9tL0NvbW1lbnQu
aWRsIFwKIAlXZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmlkbCBcCiAJV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaWRsIFwKKwlXZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmlkbCBc
CiAJV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmlkbCBcCiAJV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmlkbCBcCkBAIC0yNjAsNiArMjYx
LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIFwKKwlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgXApAQCAt
NTUyLDYgKzU1NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vRE9NQ29y
ZUV4Y2VwdGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgXAogCVdl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmggXAorCVdlYkNvcmUvZG9tL0RPTVN0cmluZ0xp
c3QuY3BwIFwKKwlXZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmggXAogCVdlYkNvcmUvZG9tL0Rv
Y1B0ci5oIFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgXAogCVdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggXApAQCAtNjUwLDYgKzY1NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5oIFwKIAlXZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5j
cHAgXAogCVdlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmggXAorCVdlYkNvcmUvZG9tL1N0YXRp
Y1N0cmluZ0xpc3QuY3BwIFwKKwlXZWJDb3JlL2RvbS9TdGF0aWNTdHJpbmdMaXN0LmggXAogCVdl
YkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAgXAogCVdlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5o
IFwKIAlXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDM5Njcx
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSw3
IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgZG9tL0RvY3VtZW50VHlwZS5pZGwgXAogICAgIGRv
bS9ET01Db3JlRXhjZXB0aW9uLmlkbCBcCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbCBc
CisgICAgZG9tL0RPTVN0cmluZ0xpc3QuaWRsIFwKICAgICBkb20vRWxlbWVudC5pZGwgXAogICAg
IGRvbS9FbnRpdHkuaWRsIFwKICAgICBkb20vRW50aXR5UmVmZXJlbmNlLmlkbCBcCkBAIC00MTYs
NiArNDE3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3Rv
bS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgXAog
ICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBcCisgICAgYmluZGluZ3MvanMv
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIFwKICAgICBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBcCkBAIC01NjUsNiArNTY3LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIFwKICAgICBkb20vRG9jdW1l
bnRUeXBlLmNwcCBcCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBcCisgICAgZG9tL0RP
TVN0cmluZ0xpc3QuY3BwIFwKICAgICBkb20vRHluYW1pY05vZGVMaXN0LmNwcCBcCiAgICAgZG9t
L0VkaXRpbmdUZXh0LmNwcCBcCiAgICAgZG9tL0VsZW1lbnQuY3BwIFwKQEAgLTYwNCw2ICs2MDcs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAog
ICAgIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcCBcCiAgICAgZG9tL1N0YXRpY05vZGVMaXN0LmNw
cCBcCisgICAgZG9tL1N0YXRpY1N0cmluZ0xpc3QuY3BwIFwKICAgICBkb20vU3R5bGVkRWxlbWVu
dC5jcHAgXAogICAgIGRvbS9TdHlsZUVsZW1lbnQuY3BwIFwKICAgICBkb20vVGFnTm9kZUxpc3Qu
Y3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5zY29ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuc2NvbnMJKHJldmlzaW9uIDM5NjcxKQorKysgV2ViQ29yZS9XZWJDb3JlLnNjb25z
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHNvdXJjZXNbJ2RvbSddID0gWwogICAg
ICdkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAnLAogICAgICdkb20vRG9jdW1lbnRUeXBlLmNwcCcs
CiAgICAgJ2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAnLAorICAgICdkb20vRE9NU3RyaW5nTGlz
dC5jcHAnLAogICAgICdkb20vRHluYW1pY05vZGVMaXN0LmNwcCcsCiAgICAgJ2RvbS9FZGl0aW5n
VGV4dC5jcHAnLAogICAgICdkb20vRWxlbWVudC5jcHAnLApAQCAtMTIxLDYgKzEyMiw3IEBAIHNv
dXJjZXNbJ2RvbSddID0gWwogICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAnLAog
ICAgICdkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAnLAogICAgICdkb20vU3RhdGljTm9kZUxpc3Qu
Y3BwJywKKyAgICAnZG9tL1N0YXRpY1N0cmluZ0xpc3QuY3BwJywKICAgICAnZG9tL1N0eWxlZEVs
ZW1lbnQuY3BwJywKICAgICAnZG9tL1N0eWxlRWxlbWVudC5jcHAnLAogICAgICdkb20vVGFnTm9k
ZUxpc3QuY3BwJywKQEAgLTYxMyw2ICs2MTUsNyBAQCBzb3VyY2VzWydiaW5kaW5ncy9qcyddID0g
WwogICAgICJiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwIiwKICAg
ICAiYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCIsCiAgICAgImJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcCIsCisgICAgImJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3Rv
bS5jcHAiLAogICAgICJiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIiwKICAgICAiYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIiwKICAgICAiYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAiLApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDM5NjcxKQorKysg
V2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcg
QEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBiaW5k
aW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTUFw
cGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3Bw
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuY3BwCkBAIC0yMzYsNiArMjM3LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBs
aXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NSW1w
bGVtZW50YXRpb24uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01QYXJz
ZXIuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01TZWxlY3Rpb24uY3Bw
CisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01TdHJpbmdMaXN0LmNwcAogICAg
ICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93LmNwcAogICAgICAgICBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRWxlbWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0VudGl0eS5jcHAKQEAgLTM5MSw2ICszOTMsNyBAQCBUaGlzIGZpbGUgY29udGFp
bnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGRvbS9Db21tZW50LmNwcAogICAgICAg
ICBkb20vQ29udGFpbmVyTm9kZS5jcHAKICAgICAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cAorICAgICAgICBkb20vRE9NU3RyaW5nTGlzdC5jcHAKICAgICAgICAgZG9tL0RvY3VtZW50LmNw
cAogICAgICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKICAgICAgICAgZG9tL0RvY3VtZW50
VHlwZS5jcHAKQEAgLTQzMyw2ICs0MzYsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qg
b2YgZmlsZXMgbmVlCiAgICAgICAgIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAogICAg
ICAgICBkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAKICAgICAgICAgZG9tL1N0YXRpY05vZGVMaXN0
LmNwcAorICAgICAgICBkb20vU3RhdGljU3RyaW5nTGlzdC5jcHAKICAgICAgICAgZG9tL1N0eWxl
RWxlbWVudC5jcHAKICAgICAgICAgZG9tL1N0eWxlZEVsZW1lbnQuY3BwCiAgICAgICAgIGRvbS9U
YWdOb2RlTGlzdC5jcHAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
cmV2aXNpb24gMzk2NzEpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02NTYsNiArNjU2LDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01TdHJpbmdMaXN0LmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NV2luZG93LmgiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTExNTgsNiArMTExNjIsMjIgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERPTVN0cmluZ0xpc3Qu
Y3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFz
ZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRE9NU3RyaW5nTGlzdC5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXER5bmFtaWNOb2RlTGlz
dC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTE3OTQsNiArMTE4
MTQsMjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFN0YXRpY1N0cmluZ0xpc3QuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8
VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFt
T3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU3RhdGlj
U3RyaW5nTGlzdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXFN0eWxlZEVsZW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KQEAgLTE0MDQ5LDYgKzE0MDg1LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVN0
cmluZ0xpc3RDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93QmFzZS5jcHAiDQog
CQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMzk2NzEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDIyNSw2ICs0MjI1LDExIEBA
CiAJCUUxMEI5QjZEMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQjlCNkIw
Qjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgKi87IH07CiAJCUUx
MEI5Q0NDMEI3NDdBNDQwMDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5Q0NBMEI3NDdB
NDQwMDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKIAkJRTEwQjlD
Q0QwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5Q0NCMEI3NDdBNDQw
MDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIubW0gKi87IH07CisJCUUxMEJCMzc0
MEYxNEI1ODUwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQkIzNzMwRjE0QjU4NTAwNTYwRTEzIC8q
IERPTVN0cmluZ0xpc3QuaWRsICovOyB9OworCQlFMTBCQjM3ODBGMTRCNjIyMDA1NjBFMTMgLyog
RE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTEwQkIzNzcwRjE0QjYyMjAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaCAqLzsgfTsK
KwkJRTEwQkIzN0IwRjE0QjY0MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQkIzN0EwRjE0QjY0MTAw
NTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwICovOyB9OworCQlFMTBCQjM4NjBGMTRCOTUwMDA1
NjBFMTMgLyogSlNET01TdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTBCQjM4NDBGMTRCOTUwMDA1NjBFMTMgLyogSlNET01TdHJpbmdM
aXN0LmggKi87IH07CisJCUUxMEJCMzg3MEYxNEI5NTAwMDU2MEUxMyAvKiBKU0RPTVN0cmluZ0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEw
QkIzODUwRjE0Qjk1MDAwNTYwRTEzIC8qIEpTRE9NU3RyaW5nTGlzdC5jcHAgKi87IH07CiAJCUUx
MUM5RDlCMEVCMzY4MTIwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTFDOUQ5QTBFQjM2ODEy
MDBFNDA5REIgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMUM5REIwMEVCMzY5OTUwMEU0MDlEQiAv
KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMUM5REFGMEVCMzY5OTUwMEU0MDlEQiAvKiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCAqLzsgfTsKIAkJRTEyNzE5QzcwRUVFQzE2ODAwRjYxMjEzIC8qIE5h
dmlnYXRvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjcxOUM2MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmggKi87IH07CkBA
IC00MjM5LDYgKzQyNDQsOSBAQAogCQlFMTQ3OTlCNDBFQ0RFOUQ4MDAyOTJCRjMgLyogV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0Nzk5QjMwRUNERTlEODAwMjkyQkYzIC8qIFdvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcCAqLzsgfTsKIAkJRTE3QTRBMUIwRDk3OTkxRDAwRkMxMEM2IC8qIERPTVNWR0FsdEdseXBo
RWxlbWVudC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjVBQTZCQUMwRDk3NEEwMDAwMDU0MUFFIC8qIERPTVNWR0FsdEdseXBo
RWxlbWVudC5oICovOyB9OwogCQlFMTdBNEExQzBEOTc5OTFEMDBGQzEwQzYgLyogRE9NU1ZHQWx0
R2x5cGhFbGVtZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUE2QkFFMEQ5NzRBMDAwMDA1NDFBRSAvKiBE
T01TVkdBbHRHbHlwaEVsZW1lbnRJbnRlcm5hbC5oICovOyB9OworCQlFMTgxQjI1NzBGMTRDMUE2
MDBGQjc4NDcgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODFCMjU2MEYxNEMxQTYwMEZCNzg0NyAvKiBK
U0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICovOyB9OworCQlFMTgxQjM1MTBGMTUwMDhBMDBGQjc4
NDcgLyogU3RhdGljU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE4MUIzNTAwRjE1MDA4QTAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xp
c3QuaCAqLzsgfTsKKwkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4
MUIzNTUwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRpY1N0cmluZ0xpc3QuY3BwICovOyB9OwogCQlF
MTgyNTA0RjBFRDJGMjAyMDA0OTlBOEYgLyogRnJhbWVMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4MjUwNEUwRUQyRjIwMjAw
NDk5QThGIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLzsgfTsKIAkJRTE4MjU2OEYwRUYyQjAy
RDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3Jr
ZXJDb250ZXh0LmNwcCAqLzsgfTsKIAkJRTE4MjU2OTAwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29y
a2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICovOyB9OwpA
QCAtODk1Niw2ICs4OTY0LDExIEBACiAJCUUxMEI5QjZCMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRp
dmVYUGF0aE5TUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTEwQjlDQ0EwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DdXN0b21YUGF0aE5TUmVzb2x2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwQjlDQ0IwQjc0N0E0NDAwM0VE
ODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEwQkIzNzMwRjE0QjU4NTAwNTYwRTEzIC8qIERPTVN0cmlu
Z0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVN0cmluZ0xpc3QuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTBCQjM3NzBGMTRCNjIyMDA1NjBFMTMgLyogRE9N
U3RyaW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TdHJpbmdM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxMEJCMzdBMEYxNEI2NDEwMDU2
MEUxMyAvKiBET01TdHJpbmdMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERPTVN0cmluZ0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MTBCQjM4NDBGMTRCOTUwMDA1NjBFMTMgLyogSlNET01TdHJpbmdMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMTBCQjM4NTBGMTRCOTUwMDA1NjBFMTMgLyogSlNET01TdHJpbmdMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NU3RyaW5nTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMUM5RDlBMEVCMzY4MTIwMEU0
MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTExQzlEQUYwRUIzNjk5NTAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjcxOUM2MEVF
RUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5hdmlnYXRvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg5NjksNiArODk4Miw5IEBACiAJCUUxMkVEQkU5MEIzMDhFMEIwMDI3MDRCNiAvKiBFdmVudFRh
cmdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFRhcmdl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNDc5OUE2MEVDREUzQTQwMDI5
MkJGMyAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXb3JrZXJNZXNzYWdpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTQ3OTlCMzBFQ0RFOUQ4MDAyOTJCRjMgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTgxQjI1NjBGMTRDMUE2MDBG
Qjc4NDcgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxODFCMzUwMEYxNTAwOEEwMEZCNzg0NyAvKiBTdGF0aWNTdHJpbmdM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1N0cmluZ0xpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4MUIzNTUwRjE1MDBENzAwRkI3ODQ3
IC8qIFN0YXRpY1N0cmluZ0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RhdGljU3RyaW5nTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxODI1MDRFMEVEMkYyMDIwMDQ5OUE4RiAvKiBGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZUxvYWRlckNsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxODI1NjRGMEVGMkFDRTYwMDkzMzI0MiAvKiBX
b3JrZXJDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXJDb250ZXh0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4MjU2OEQwRUYyQjAyRDAwOTMzMjQy
IC8qIEpTV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTIxMDgsNiArMTIxMjQsOCBAQAogCQkJCUJDNjBEN0JGMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RP
TUNvcmVFeGNlcHRpb24uaCAqLywKIAkJCQk2NURGMzFFMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNE
T01JbXBsZW1lbnRhdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8q
IEpTRE9NSW1wbGVtZW50YXRpb24uaCAqLywKKwkJCQlFMTBCQjM4NTBGMTRCOTUwMDA1NjBFMTMg
LyogSlNET01TdHJpbmdMaXN0LmNwcCAqLywKKwkJCQlFMTBCQjM4NDBGMTRCOTUwMDA1NjBFMTMg
LyogSlNET01TdHJpbmdMaXN0LmggKi8sCiAJCQkJNjU5RERDODAwOUUxOThCQTAwMUJGM0M2IC8q
IEpTRG9jdW1lbnQuY3BwICovLAogCQkJCTY1OUREQzgxMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0Rv
Y3VtZW50LmggKi8sCiAJCQkJMUE0OTRFREMwQTEyM0Y0QzAwRkRBRkMxIC8qIEpTRG9jdW1lbnRG
cmFnbWVudC5jcHAgKi8sCkBAIC0xMzIzMyw2ICsxMzI1MSw3IEBACiAJCQkJMUEzNDE3QzgwQ0VD
RkYyNTAwNDlDQkRFIC8qIEpTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCAqLywKIAkJCQkxQTM0MTdD
NzBDRUNGRjI1MDA0OUNCREUgLyogSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCAqLywKIAkJCQkxQUMy
MjYxNjBEQjY5Rjc0MDA4OUI2NjkgLyogSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcCAq
LywKKwkJCQlFMTgxQjI1NjBGMTRDMUE2MDBGQjc4NDcgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9t
LmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0
b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1
c3RvbS5oICovLAogCQkJCTFBRTgzMDQyMENBQjBFRDEwMDIyMzdBRSAvKiBKU0RhdGFiYXNlQ3Vz
dG9tLmNwcCAqLywKQEAgLTE0MTIwLDYgKzE0MTM5LDkgQEAKIAkJCQlBODE4NUYzNjA5NzY1NzY1
MDA1ODI2RDkgLyogRE9NSW1wbGVtZW50YXRpb24uY3BwICovLAogCQkJCUE4MTg1RjMzMDk3NjU3
NjUwMDU4MjZEOSAvKiBET01JbXBsZW1lbnRhdGlvbi5oICovLAogCQkJCTkzRUVDMUU5MDlDMjg3
NzcwMEM1MTVEMSAvKiBET01JbXBsZW1lbnRhdGlvbi5pZGwgKi8sCisJCQkJRTEwQkIzN0EwRjE0
QjY0MTAwNTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuY3BwICovLAorCQkJCUUxMEJCMzc3MEYxNEI2
MjIwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmggKi8sCisJCQkJRTEwQkIzNzMwRjE0QjU4NTAw
NTYwRTEzIC8qIERPTVN0cmluZ0xpc3QuaWRsICovLAogCQkJCTkzRUVDMUU3MDlDMjg3NzcwMEM1
MTVEMSAvKiBEb2NQdHIuaCAqLywKIAkJCQlBODE4NUYzNDA5NzY1NzY1MDA1ODI2RDkgLyogRG9j
dW1lbnQuY3BwICovLAogCQkJCUE4MTg1RjM4MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1bWVudC5o
ICovLApAQCAtMTQyNDYsNiArMTQyNjgsOCBAQAogCQkJCUJDN0ZBNjdGMEQxRjE2NzkwMERCMjJB
OSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggKi8sCiAJCQkJQkM3RkE2MkMwRDFGMEVGRjAwREIyMkE5
IC8qIFN0YXRpY05vZGVMaXN0LmNwcCAqLywKIAkJCQlCQzdGQTYyQjBEMUYwRUZGMDBEQjIyQTkg
LyogU3RhdGljTm9kZUxpc3QuaCAqLywKKwkJCQlFMTgxQjM1NTBGMTUwMEQ3MDBGQjc4NDcgLyog
U3RhdGljU3RyaW5nTGlzdC5jcHAgKi8sCisJCQkJRTE4MUIzNTAwRjE1MDA4QTAwRkI3ODQ3IC8q
IFN0YXRpY1N0cmluZ0xpc3QuaCAqLywKIAkJCQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyog
U3R5bGVFbGVtZW50LmNwcCAqLywKIAkJCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5
bGVFbGVtZW50LmggKi8sCiAJCQkJQThDNEE3RUMwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVs
ZW1lbnQuY3BwICovLApAQCAtMTY0OTEsNiArMTY1MTUsOSBAQAogCQkJCTFBNTY5RDIzMEQ3RTJC
ODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlE
MjUwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMzMDlFMUUwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5pdHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUxMEJCMzc4MEYxNEI2MjIwMDU2MEUxMyAvKiBET01TdHJpbmdMaXN0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMTBCQjM4NjBGMTRCOTUwMDA1NjBFMTMgLyogSlNET01TdHJpbmdMaXN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTgxQjM1MTBGMTUwMDhBMDBGQjc4NDcgLyogU3RhdGlj
U3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjYwNSw2ICsxNjYzMiw3IEBACiAJCQkJ
ODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21P
dXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQlFMTBCQjM3NDBGMTRCNTg1MDA1NjBF
MTMgLyogRE9NU3RyaW5nTGlzdC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg0NDMsNiArMTg0
NzEsMTAgQEAKIAkJCQkxQTU2OUQyMjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMjQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRp
bWVfcm9vdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxRDA5OUU2NDkyMDA1NkU1ODEg
LyogdmlzaWJsZV91bml0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTBCQjM3QjBGMTRCNjQx
MDA1NjBFMTMgLyogRE9NU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTBCQjM4
NzBGMTRCOTUwMDA1NjBFMTMgLyogSlNET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUUxODFCMjU3MEYxNEMxQTYwMEZCNzg0NyAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MUIzNTYwRjE1MDBENzAwRkI3ODQ3IC8qIFN0YXRpY1N0
cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCShyZXZpc2lvbiAzOTY3MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTkgQEAgdm9pZCBKU0RPTUFwcGxpY2F0aW9uQ2Fj
aGU6Om1hcmsoKQogICAgIH0KIH0KIAorSlNWYWx1ZVB0ciBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6
Omhhc0l0ZW0oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEZy
YW1lKiBmcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+
aW1wbCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIGNvbnN0IEtVUkwmIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVV
UkwoYXJncy5hdChleGVjLCAwKS0+dG9TdHJpbmcoZXhlYykpOworCisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgYm9vbCByZXN1bHQgPSBpbXBsKCktPmhhc0l0ZW0odXJsLCBlYyk7Cisg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4ganNCb29sZWFuKHJlc3Vs
dCk7Cit9CisKIEpTVmFsdWVQdHIgSlNET01BcHBsaWNhdGlvbkNhY2hlOjphZGQoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGFzSlNE
T01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9t
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNET01TdHJpbmdMaXN0LmgiCisKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZVB0ciBKU0RP
TVN0cmluZ0xpc3Q6OmdldEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCkK
K3sKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbCgpLT5pdGVtKGluZGV4KSk7Cit9CisK
K0pTVmFsdWVQdHIgSlNET01TdHJpbmdMaXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbmRleCA9IGFyZ3MuYXQoZXhlYywgMCkt
PnRvVUludDMyKGV4ZWMpOworICAgIGlmIChpbmRleCA+PSBpbXBsKCktPmxlbmd0aCgpKQorICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbCgp
LT5pdGVtKGluZGV4KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNo
YW5nZXMgb246IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3Jl
L2RvbS9ET01TdHJpbmdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01TdHJp
bmdMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0RPTVN0cmluZ0xpc3Q6On5ET01TdHJpbmdMaXN0KCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlz
dC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDog
V2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RP
TVN0cmluZ0xpc3QuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3Qu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIERP
TVN0cmluZ0xpc3RfaAorI2RlZmluZSBET01TdHJpbmdMaXN0X2gKKworI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgRE9NU3RyaW5nTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPERP
TVN0cmluZ0xpc3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkRPTVN0cmluZ0xp
c3QoKTsKKworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKKyAg
ICAgICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCkgY29uc3QgPSAwOworICAgICAgICB2
aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOworICAgIH07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERPTVN0cmluZ0xpc3RfaAoKUHJv
cGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTVN0
cmluZ0xpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRs
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5pZGwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvciwKKyAgICAgICAgSGFzQ3Vz
dG9tSW5kZXhHZXR0ZXIKKyAgICBdIERPTVN0cmluZ0xpc3QgeworCisgICAgICAgIC8vIFVubGlr
ZSB0aGUgaW5kZXggZ2V0dGVyLCBpdGVtKCkgbmV2ZXIgcmFpc2VzIGV4Y2VwdGlvbnMsIGFuZCBy
ZXR1cm5zIG51bGwgZm9yIG91dCBvZiBib3VuZHMgaW5kaWNlcy4KKyAgICAgICAgW0N1c3RvbV0g
RE9NU3RyaW5nIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBib29sZWFuIGNvbnRh
aW5zKGluIERPTVN0cmluZyBzdHIpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL1N0
YXRpY1N0cmluZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0YXRpY1N0cmlu
Z0xpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vU3RhdGljU3RyaW5nTGlzdC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0YXRpY1N0cmluZ0xpc3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTdGF0aWNTdHJpbmdMaXN0OjpTdGF0aWNTdHJpbmdMaXN0KGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzdHJpbmdzKQorICAgIDogbV9zdHJpbmdzKHN0cmluZ3MpCit7Cit9CisKK1N0
YXRpY1N0cmluZ0xpc3Q6On5TdGF0aWNTdHJpbmdMaXN0KCkKK3sKK30KKwordW5zaWduZWQgU3Rh
dGljU3RyaW5nTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmdzLnNp
emUoKTsKK30KKworU3RyaW5nIFN0YXRpY1N0cmluZ0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0Cit7CisgICAgaWYgKGluZGV4ID49IG1fc3RyaW5ncy5zaXplKCkpCisgICAgICAgIHJl
dHVybiAiIjsKKyAgICByZXR1cm4gbV9zdHJpbmdzW2luZGV4XTsKK30KKworYm9vbCBTdGF0aWNT
dHJpbmdMaXN0Ojpjb250YWlucyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKK3sKKyAgICBzaXpl
X3QgY291bnQgPSBtX3N0cmluZ3Muc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgeworICAgICAgICBpZiAobV9zdHJpbmdzW2ldID09IHN0cikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL1N0YXRpY1N0
cmluZ0xpc3QuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
SW5kZXg6IFdlYkNvcmUvZG9tL1N0YXRpY1N0cmluZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9TdGF0aWNTdHJpbmdMaXN0LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9T
dGF0aWNTdHJpbmdMaXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisg
Ki8KKworI2lmbmRlZiBTdGF0aWNTdHJpbmdMaXN0X2gKKyNkZWZpbmUgU3RhdGljU3RyaW5nTGlz
dF9oCisKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworICAgIGNsYXNzIFN0YXRpY1N0cmluZ0xpc3QgOiBwdWJsaWMgRE9NU3RyaW5nTGlzdCB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNTdHJpbmdMaXN0PiBj
cmVhdGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljU3RyaW5nTGlzdChzdHJpbmdzKSk7CisgICAg
ICAgIH0KKyAgICAgICAgdmlydHVhbCB+U3RhdGljU3RyaW5nTGlzdCgpOworCisgICAgICAgIHZp
cnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGl0
ZW0odW5zaWduZWQpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTdGF0aWNTdHJpbmdMaXN0
KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9zdHJp
bmdzOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN0YXRp
Y1N0cmluZ0xpc3QKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvZG9tL1N0YXRpY1N0cmlu
Z0xpc3QuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiAz
OTY3MSkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEtVUkw+
IG1fb25saW5lV2hpdGVsaXN0OwogICAgIEZhbGxiYWNrVVJMVmVjdG9yIG1fZmFsbGJhY2tVUkxz
OwogCisgICAgLy8gV2hpbGUgYW4gdXBkYXRlIGlzIGluIHByb2dyZXNzLCBjaGFuZ2VzIGluIGR5
bmFtaWMgZW50cmllcyBhcmUgcXVldWVkIGZvciBsYXRlciBleGVjdXRpb24uCisgICAgVmVjdG9y
PHN0ZDo6cGFpcjxLVVJMLCBib29sPiA+IG1fcGVuZGluZ0R5bmFtaWNFbnRyeUFjdGlvbnM7CisK
ICAgICB1bnNpZ25lZCBtX3N0b3JhZ2VJRDsKIH07CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24gMzk2NzEp
CisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmNoZWNrSWZMb2FkSQogCiAgICAgaWYgKGlzVXBncmFkZUF0dGVtcHQpIHsKICAgICAgICAg
QVNTRVJUKG1fY2FjaGVDYW5kaWRhdGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIAorCiAgICAgICAg
IGNvcHlUb1ZlY3RvcihtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMsIGRvY3VtZW50TG9hZGVy
cyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgd2hpbGUgKCFtX2NhY2hlQ2FuZGlkYXRlcy5pc0Vt
cHR5KCkpIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0
aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAzOTY3MSkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25D
YWNoZUdyb3VwLmgiCisjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2
ZW50RXhjZXB0aW9uLmgiCkBAIC0zNyw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRl
ICJTdGF0aWNTdHJpbmdMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE5LDI5
ICsxMjEsMzMgQEAgdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjpzd2FwQ2FjaGUoRXhjZQogICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogfQogCi11bnNpZ25lZCBET01BcHBsaWNhdGlv
bkNhY2hlOjpsZW5ndGgoKSBjb25zdAorUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBET01BcHBs
aWNhdGlvbkNhY2hlOjppdGVtcygpCiB7Ci0gICAgQXBwbGljYXRpb25DYWNoZSogY2FjaGUgPSBh
c3NvY2lhdGVkQ2FjaGUoKTsKLSAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICByZXR1cm4gY2FjaGUtPm51bUR5bmFtaWNFbnRyaWVzKCk7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OworICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGFzc29jaWF0
ZWRDYWNoZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIG51bUVudHJpZXMgPSBjYWNoZS0+bnVtRHlu
YW1pY0VudHJpZXMoKTsKKyAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShudW1FbnRyaWVz
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUVudHJpZXM7ICsraSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2FjaGUtPmR5bmFtaWNFbnRyeShpKSk7CisgICAgfQor
ICAgIHJldHVybiBTdGF0aWNTdHJpbmdMaXN0OjpjcmVhdGUocmVzdWx0KTsKIH0KLSAgICAKLVN0
cmluZyBET01BcHBsaWNhdGlvbkNhY2hlOjppdGVtKHVuc2lnbmVkIGl0ZW0sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorCitib29sIERPTUFwcGxpY2F0aW9uQ2FjaGU6Omhhc0l0ZW0oY29uc3QgS1VSTCYg
dXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9
IGFzc29jaWF0ZWRDYWNoZSgpOwogICAgIGlmICghY2FjaGUpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGl0ZW0gPj0gbGVuZ3RoKCkpIHsKLSAgICAgICAgZWMg
PSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGlmICghdXJs
LmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGNhY2hlLT5keW5hbWljRW50cnkoaXRlbSk7
CisKKyAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlID0gY2FjaGUtPnJlc291
cmNlRm9yVVJMKHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHJlc291cmNlICYmIChyZXNvdXJj
ZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpEeW5hbWljKTsKIH0KICAgICAK
IHZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6YWRkKGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9u
Q29kZSYgZWMpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNh
Y2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5oCShyZXZpc2lvbiAzOTY3MSkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RP
TUFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBdG9taWNT
dHJpbmdJbXBsOworY2xhc3MgRE9NU3RyaW5nTGlzdDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS1VS
TDsKIGNsYXNzIFN0cmluZzsKQEAgLTYyLDggKzYzLDggQEAgcHVibGljOgogICAgIHZvaWQgdXBk
YXRlKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHN3YXBDYWNoZShFeGNlcHRpb25Db2RlJik7
CiAgICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGl0ZW0odW5z
aWduZWQgaXRlbSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gaXRlbXMoKTsKKyAgICBib29sIGhhc0l0ZW0oY29uc3QgS1VSTCYsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIGFkZChjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
cmVtb3ZlKGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJik7CiAKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCShyZXZpc2lvbiAzOTY3
MSkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIG1vZHVsZSBvZmZsaW5lIHsKICAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIAogICAgICAgICAvLyBkeW5hbWljIGVudHJp
ZXMKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAg
ICAgICBET01TdHJpbmcgaXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCkKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3QgaXRlbXM7CisgICAgICAgIFtD
dXN0b21dIGJvb2xlYW4gaGFzSXRlbShpbiBET01TdHJpbmcgdXJsKQogICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgYWRkKGluIERPTVN0cmlu
ZyB1cmkpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCShyZXZpc2lvbiAzOTY3MSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGUgY29tbWVudGVkLW91dCBnbG9iYWwgY29uc3RydWN0b3Jz
IGZvciBpbnRlcmZhY2VzIGxpc3RlZCBpbiBET00gTGV2ZWwgMyBDb3JlIHNwZWNpZmljYXRpb24u
CiAgICAgICAgIGF0dHJpYnV0ZSBET01Db3JlRXhjZXB0aW9uQ29uc3RydWN0b3IgRE9NRXhjZXB0
aW9uOwotLy8gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0Q29uc3RydWN0b3IgRE9NU3Ry
aW5nTGlzdDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZ0xpc3RDb25zdHJ1Y3RvciBET01T
dHJpbmdMaXN0OwogLy8gICAgICAgIGF0dHJpYnV0ZSBOYW1lTGlzdENvbnN0cnVjdG9yIE5hbWVM
aXN0OwogLy8gICAgICAgIGF0dHJpYnV0ZSBET01JbXBsZW1lbnRhdGlvbkxpc3RDb25zdHJ1Y3Rv
ciBET01JbXBsZW1lbnRhdGlvbkxpc3Q7CiAvLyAgICAgICAgYXR0cmlidXRlIERPTUltcGxlbWVu
dGF0aW9uU291cmNlQ29uc3RydWN0b3IgRE9NSW1wbGVtZW50YXRpb25Tb3VyY2U7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTY4MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTAxLTA3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXJ0IG9uZSBvZiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMTY1CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhcHBsaWNhdGlvbiBjYWNo
ZSBkeW5hbWljIGVudHJpZXMKKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZHluYW1p
Yy1lbnRyaWVzLW5vLWNhY2hlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHBjYWNoZS9keW5hbWljLWVudHJpZXMtbm8tY2FjaGUuaHRtbDogQWRkZWQuCisKIDIw
MDktMDEtMDYgIFBpZXJyZS1PbGl2aWVyIExhdG91ciAgPHBvbEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1uby1jYWNoZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9keW5hbWljLWVudHJpZXMtbm8t
Y2FjaGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9keW5hbWljLWVudHJpZXMtbm8tY2FjaGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI3IEBACitUZXN0IHRoZSBiZWhhdmlvciBvZiBET01BcHBsaWNhdGlv
bkNhY2hlIG1ldGhvZHMgcmVsYXRlZCB0byBkeW5hbWljIGVudHJpZXMgd2hlbiB0aGUgY29udGV4
dCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBjYWNoZS4KKworUEFTUzogYXBwbGljYXRpb25D
YWNoZS5pdGVtcy5sZW5ndGggaXMgMAorUEFTUzogYXBwbGljYXRpb25DYWNoZS5pdGVtcy5pdGVt
KDApIGlzIG51bGwKK1BBU1M6IGFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgxKSBpcyBudWxs
CitQQVNTOiBhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMHhmZmZmZmZmZikgaXMgbnVsbAor
UEFTUzogYXBwbGljYXRpb25DYWNoZS5pdGVtcy5pdGVtKDB4ZmZmZmZmZmUpIGlzIG51bGwKK1BB
U1M6IGFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgtMSkgaXMgbnVsbAorUEFTUzogYXBwbGlj
YXRpb25DYWNoZS5pdGVtcy5pdGVtKC0yKSBpcyBudWxsCitQQVNTOiBhcHBsaWNhdGlvbkNhY2hl
Lml0ZW1zWzB4ZmZmZmZmZmVdIGlzIHVuZGVmaW5lZAorUEFTUzogYXBwbGljYXRpb25DYWNoZS5p
dGVtc1sweGZmZmZmZmZmXSBpcyB1bmRlZmluZWQKK1BBU1M6IGFwcGxpY2F0aW9uQ2FjaGUuaXRl
bXNbJzAnXSBpcyB1bmRlZmluZWQKK1BBU1M6IGFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJyddIGlz
IHVuZGVmaW5lZAorUEFTUzogYXBwbGljYXRpb25DYWNoZS5pdGVtc1swXSBpcyB1bmRlZmluZWQK
K1BBU1M6IGFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMV0gaXMgdW5kZWZpbmVkCitQQVNTOiBhcHBs
aWNhdGlvbkNhY2hlLml0ZW1zWy0xXSBpcyB1bmRlZmluZWQKK1BBU1M6IGFwcGxpY2F0aW9uQ2Fj
aGUuaXRlbXNbLTJdIGlzIHVuZGVmaW5lZAorUEFTUzogYXBwbGljYXRpb25DYWNoZS5pdGVtc1sx
MDBdIGlzIHVuZGVmaW5lZAorUEFTUzogYXBwbGljYXRpb25DYWNoZS5pdGVtc1snMTAwJ10gaXMg
dW5kZWZpbmVkCitQQVNTOiBhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWydmb28nXSBpcyB1bmRlZmlu
ZWQKK1BBU1M6IGFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMC4xXSBpcyB1bmRlZmluZWQKK1BBU1M6
IGhhc0l0ZW0gcmFpc2VkIElOVkFMSURfU1RBVEVfRVJSCitQQVNTOiBhZGQgcmFpc2VkIElOVkFM
SURfU1RBVEVfRVJSCitQQVNTOiByZW1vdmUgcmFpc2VkIElOVkFMSURfU1RBVEVfRVJSCitQQVNT
OiBhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLmxlbmd0aCBpcyAwCitET05FCisKClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZHluYW1pYy1lbnRyaWVz
LW5vLWNhY2hlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAg
KyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1uby1jYWNoZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZHluYW1pYy1l
bnRyaWVzLW5vLWNhY2hlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1uby1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDExOSBAQAorPGJvZHk+Cis8cD5UZXN0IHRoZSBiZWhhdmlvciBvZiBET01BcHBs
aWNhdGlvbkNhY2hlIG1ldGhvZHMgcmVsYXRlZCB0byBkeW5hbWljIGVudHJpZXMgd2hlbiB0aGUg
Y29udGV4dAoraXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgY2FjaGUuPC9wPgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVy
SFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCisKK2Z1bmN0aW9uIGlzUmVzdWx0Q29ycmVj
dChfYWN0dWFsLCBfZXhwZWN0ZWQpCit7CisgICAgaWYgKF9leHBlY3RlZCA9PT0gMCkKKyAgICAg
ICAgcmV0dXJuIF9hY3R1YWwgPT09IF9leHBlY3RlZCAmJiAoMS9fYWN0dWFsKSA9PT0gKDEvX2V4
cGVjdGVkKTsKKyAgICBpZiAoX2FjdHVhbCA9PT0gX2V4cGVjdGVkKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodHlwZW9mKF9leHBlY3RlZCkgPT0gIm51bWJlciIgJiYgaXNOYU4oX2V4
cGVjdGVkKSkKKyAgICAgICAgcmV0dXJuIHR5cGVvZihfYWN0dWFsKSA9PSAibnVtYmVyIiAmJiBp
c05hTihfYWN0dWFsKTsKKyAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKF9l
eHBlY3RlZCkgPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFtdKSkgeworICAgICAg
ICBsb2coIkFycmF5IGNvbXBhcmlzb24gaXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmUoX2EsIF9iKQoreworICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAh
PSAic3RyaW5nIikKKyAgICBsb2coIldBUk46IHNob3VsZEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJn
dW1lbnRzIik7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgIF9h
diA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0K
KyAgdmFyIF9idiA9IGV2YWwoX2IpOworCisgIGlmIChleGNlcHRpb24pCisgICAgbG9nKCJGQUlM
OiAiICsgX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBl
eGNlcHRpb24pOworICBlbHNlIGlmIChpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKQorICAgIGxv
ZygiUEFTUzogIiArIF9hICsgIiBpcyAiICsgX2IpOworICBlbHNlIGlmICh0eXBlb2YoX2F2KSA9
PSB0eXBlb2YoX2J2KSkKKyAgICBsb2coIkZBSUw6ICIgKyBfYSArICIgc2hvdWxkIGJlICIgKyBf
YnYgKyAiLiBXYXMgIiArIHN0cmluZ2lmeShfYXYpICsgIi4iKTsKKyAgZWxzZQorICAgIGxvZygi
RkFJTDogIiArIF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIgKG9mIHR5cGUgIiArIHR5cGVv
ZiBfYnYgKyAiKS4gV2FzICIgKyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIiku
Iik7Cit9CisKKworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMubGVuZ3RoIiwgIjAi
KTsKK3Nob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMCkiLCAibnVsbCIpOwor
c2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgxKSIsICJudWxsIik7CitzaG91
bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtcy5pdGVtKDB4ZmZmZmZmZmYpIiwgIm51bGwiKTsK
K3Nob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMHhmZmZmZmZmZSkiLCAibnVs
bCIpOworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgtMSkiLCAibnVsbCIp
Oworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgtMikiLCAibnVsbCIpOwor
CitzaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1sweGZmZmZmZmZlXSIsICJ1bmRlZmlu
ZWQiKTsKK3Nob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWzB4ZmZmZmZmZmZdIiwgInVu
ZGVmaW5lZCIpOworCisvLyBUaGUgYmVsb3cgaW5kZXggYWNjZXNzIHRlc3RzIGdpdmUgZGlmZmVy
ZW50IHJlc3VsdHMgaW4gV2ViS2l0IGFuZCBGaXJlZm94IDMuMWIyICh1bmRlZmluZWQgdnMuIGVt
cHR5IHN0cmluZykuCitzaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1snMCddIiwgInVu
ZGVmaW5lZCIpOworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJyddIiwgInVuZGVm
aW5lZCIpOworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMF0iLCAidW5kZWZpbmVk
Iik7CitzaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1sxXSIsICJ1bmRlZmluZWQiKTsK
K3Nob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWy0xXSIsICJ1bmRlZmluZWQiKTsKK3No
b3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWy0yXSIsICJ1bmRlZmluZWQiKTsKK2FwcGxp
Y2F0aW9uQ2FjaGUuaXRlbXNbMTAwXSA9ICJmb29iYXIiOworYXBwbGljYXRpb25DYWNoZS5pdGVt
c1snMTAwJ10gPSAiZm9vYmFyIjsKK2FwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJ2ZvbyddID0gImJh
ciI7CitzaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1sxMDBdIiwgInVuZGVmaW5lZCIp
Oworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJzEwMCddIiwgInVuZGVmaW5lZCIp
OworCitzaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1snZm9vJ10iLCAidW5kZWZpbmVk
Iik7CitzaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1swLjFdIiwgInVuZGVmaW5lZCIp
OworCit0cnkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuaGFzSXRlbSgnZm9vJyk7CisgICAgbG9n
KCJGQUlMOiBoYXNJdGVtIGRpZG4ndCByYWlzZSBhbiBleGNlcHRpb24iKTsKK30gY2F0Y2ggKGV4
KSB7CisgICAgaWYgKGV4LmNvZGUgPT0gMTEpCisgICAgICAgIGxvZygiUEFTUzogaGFzSXRlbSBy
YWlzZWQgSU5WQUxJRF9TVEFURV9FUlIiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDog
aGFzSXRlbSByYWlzZWQgdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKK30KKwordHJ5IHsK
KyAgICBhcHBsaWNhdGlvbkNhY2hlLmFkZCgnZm9vJyk7CisgICAgbG9nKCJGQUlMOiBhZGQgZGlk
bid0IHJhaXNlIGFuIGV4Y2VwdGlvbiIpOworfSBjYXRjaCAoZXgpIHsKKyAgICBpZiAoZXguY29k
ZSA9PSAxMSkKKyAgICAgICAgbG9nKCJQQVNTOiBhZGQgcmFpc2VkIElOVkFMSURfU1RBVEVfRVJS
Iik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUw6IGFkZCByYWlzZWQgdW5leHBlY3RlZCBl
eGNlcHRpb24gIiArIGV4KTsKK30KKwordHJ5IHsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLnJlbW92
ZSgnYmFyJyk7CisgICAgbG9nKCJGQUlMOiByZW1vdmUgZGlkbid0IHJhaXNlIGFuIGV4Y2VwdGlv
biIpOworfSBjYXRjaCAoZXgpIHsKKyAgICBpZiAoZXguY29kZSA9PSAxMSkKKyAgICAgICAgbG9n
KCJQQVNTOiByZW1vdmUgcmFpc2VkIElOVkFMSURfU1RBVEVfRVJSIik7CisgICAgZWxzZQorICAg
ICAgICBsb2coIkZBSUw6IHJlbW92ZSByYWlzZWQgdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4
KTsKK30KKworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMubGVuZ3RoIiwgIjAiKTsK
KworCisKK2xvZygiRE9ORSIpOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzwvYm9keT4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZHluYW1pYy1l
bnRyaWVzLW5vLWNhY2hlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsg
dGV4dC9odG1sCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26601</attachid>
            <date>2009-01-11 04:24:44 -0800</date>
            <delta_ts>2009-01-11 04:32:55 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>DynamicEntries.txt</filename>
            <type>text/plain</type>
            <size>13482</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCShy
ZXZpc2lvbiAzOTc0NCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJDU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApA
QCAtNzEsOCArNzIsMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjphZGRSZXNvdXJjZShQYXNz
UgogICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBy
ZXNvdXJjZS0+dXJsKCk7CisgICAgYm9vbCBpc0R5bmFtaWMgPSByZXNvdXJjZS0+dHlwZSgpICYg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpEeW5hbWljOwogICAgIAogICAgIEFTU0VSVCghbV9y
ZXNvdXJjZXMuY29udGFpbnModXJsKSk7CisgICAgQVNTRVJUKFdURjo6bm90Rm91bmQgPT0gbV9y
ZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5maW5kKHVybCkpOwogICAgIAogICAgIGlmICht
X3N0b3JhZ2VJRCkgewogICAgICAgICBBU1NFUlQoIXJlc291cmNlLT5zdG9yYWdlSUQoKSk7CkBA
IC04MCwyMCArODMsMjkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjphZGRSZXNvdXJjZShQYXNz
UgogICAgICAgICAvLyBBZGQgdGhlIHJlc291cmNlIHRvIHRoZSBzdG9yYWdlLgogICAgICAgICBj
YWNoZVN0b3JhZ2UoKS5zdG9yZShyZXNvdXJjZS5nZXQoKSwgdGhpcyk7CiAgICAgfQotICAgIAor
CiAgICAgbV9yZXNvdXJjZXMuc2V0KHVybCwgcmVzb3VyY2UpOworICAgIGlmIChpc0R5bmFtaWMp
CisgICAgICAgIG1fcmVzb3VyY2VzLmR5bmFtaWNFbnRyaWVzT3JkZXIuYXBwZW5kKHVybCk7CiB9
CiAKIHVuc2lnbmVkIEFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZVJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgdXJsKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPiA+OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQodXJsKTsKLSAgICBpZiAo
aXQgPT0gbV9yZXNvdXJjZXMuZW5kKCkpCisgICAgaWYgKGl0ID09IG1fcmVzb3VyY2VzLmVuZCgp
KSB7CisgICAgICAgIEFTU0VSVChXVEY6Om5vdEZvdW5kID09IG1fcmVzb3VyY2VzLmR5bmFtaWNF
bnRyaWVzT3JkZXIuZmluZCh1cmwpKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAg
Ly8gVGhlIHJlc291cmNlIGV4aXN0cywgZ2V0IGl0cyB0eXBlIHNvIHdlIGNhbiByZXR1cm4gaXQu
CiAgICAgdW5zaWduZWQgdHlwZSA9IGl0LT5zZWNvbmQtPnR5cGUoKTsKIAogICAgIG1fcmVzb3Vy
Y2VzLnJlbW92ZShpdCk7CisgICAgaWYgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OkR5bmFtaWMpIHsKKyAgICAgICAgc2l6ZV90IHBvc2l0aW9uID0gbV9yZXNvdXJjZXMuZHluYW1p
Y0VudHJpZXNPcmRlci5maW5kKHVybCk7CisgICAgICAgIEFTU0VSVChXVEY6Om5vdEZvdW5kICE9
IHBvc2l0aW9uKTsKKyAgICAgICAgbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5yZW1v
dmUocG9zaXRpb24pOworICAgIH0KICAgICAKICAgICByZXR1cm4gdHlwZTsKIH0gICAgCkBAIC0x
MjMsMzAgKzEzNSw0MyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0aW9uQ2Fj
CiAgICAgcmV0dXJuIHJlc291cmNlRm9yVVJMKHJlcXVlc3QudXJsKCkpOwogfQogCi11bnNpZ25l
ZCBBcHBsaWNhdGlvbkNhY2hlOjpudW1EeW5hbWljRW50cmllcygpIGNvbnN0Ci17Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotICAgIAotU3RyaW5nIEFwcGxpY2F0
aW9uQ2FjaGU6OmR5bmFtaWNFbnRyeSh1bnNpZ25lZCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotICAgIAogYm9vbCBBcHBsaWNhdGlv
bkNhY2hlOjphZGREeW5hbWljRW50cnkoY29uc3QgU3RyaW5nJiB1cmwpCiB7CisgICAgaWYgKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSByZXNvdXJjZUZvclVSTCh1cmwpKSB7
CisgICAgICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpEeW5hbWljKQorICAgICAgICAgICAgQVNTRVJUKFdURjo6bm90Rm91bmQgIT0gbV9yZXNvdXJj
ZXMuZHluYW1pY0VudHJpZXNPcmRlci5maW5kKHVybCkpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIEFTU0VSVChXVEY6Om5vdEZvdW5kID09IG1fcmVzb3VyY2VzLmR5bmFtaWNFbnRyaWVz
T3JkZXIuZmluZCh1cmwpKTsKKyAgICAgICAgICAgIHJlc291cmNlLT5hZGRUeXBlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6RHluYW1pYyk7CisgICAgICAgICAgICBtX3Jlc291cmNlcy5keW5h
bWljRW50cmllc09yZGVyLmFwcGVuZCh1cmwpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKwogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UobV9ncm91cC0+bWFuaWZl
c3RVUkwoKS5wcm90b2NvbCgpLCBLVVJMKHVybCkucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGxvYWRpbmcuCisgICAgLy8gSXQgaXMgT0sgaWYgbG9hZGluZyBmYWlscywgd2Ugc2hvdWxk
IGp1c3Qgc2lsZW50bHkgZHJvcCB0aGUgZW50cnkgKG9yIHJhdGhlciwgbm90IGFkZCBpdCkuCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZUR5
bmFtaWNFbnRyeShjb25zdCBTdHJpbmcmKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVE
eW5hbWljRW50cnkoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVu
dAorICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSByZXNvdXJjZUZvclVS
TCh1cmwpOworICAgIGlmICghcmVzb3VyY2UgfHwgIShyZXNvdXJjZS0+dHlwZSgpICYgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpEeW5hbWljKSkgeworICAgICAgICBBU1NFUlQoV1RGOjpub3RG
b3VuZCA9PSBtX3Jlc291cmNlcy5keW5hbWljRW50cmllc09yZGVyLmZpbmQodXJsKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzb3VyY2UtPnJlbW92ZVR5cGUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpEeW5hbWljKTsKKyAgICBzaXplX3QgcG9zaXRpb24gPSBtX3Jlc291cmNl
cy5keW5hbWljRW50cmllc09yZGVyLmZpbmQodXJsKTsKKyAgICBBU1NFUlQoV1RGOjpub3RGb3Vu
ZCAhPSBwb3NpdGlvbik7CisgICAgbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5yZW1v
dmUocG9zaXRpb24pOworCisgICAgaWYgKHJlc291cmNlLT50eXBlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBJZiB0aGlzIHJlbW92ZXMgdGhlIGxhc3QgY2F0ZWdvcml6YXRp
b24gb2YgYW4gZW50cnkgaW4gdGhhdCBjYWNoZSwgdGhlbiB0aGUgZW50cnkgbXVzdCBiZSByZW1v
dmVkIGVudGlyZWx5LgogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdoaXRl
bGlzdChjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCkKQEAgLTE5OSw4ICsyMjQs
MjEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkdW1wKCkKICAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgCiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRy
PEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgcHJpbnRmKCIlcyAiLCBp
dC0+Zmlyc3QuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmR1bXBUeXBlKGl0LT5zZWNvbmQtPnR5cGUoKSk7CisgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICBpZiAocmVz
b3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RHluYW1pYykgeworICAg
ICAgICAgICAgQVNTRVJUKFdURjo6bm90Rm91bmQgIT0gbV9yZXNvdXJjZXMuZHluYW1pY0VudHJp
ZXNPcmRlci5maW5kKGl0LT5maXJzdCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgcHJpbnRmKCIlcyAiLCBpdC0+Zmlyc3QudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIEFTU0VSVChpdC0+Zmlyc3QgPT0gaXQtPnNlY29uZC0+dXJsKCkuc3RyaW5nKCkpOworICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmR1bXBUeXBlKHJlc291cmNlLT50eXBlKCkp
OworICAgIH0KKyAgICBzaXplX3QgY291bnQgPSBudW1EeW5hbWljRW50cmllcygpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3VyY2VGb3JVUkwoZHluYW1pY0VudHJ5KGkpKTsK
KyAgICAgICAgQVNTRVJUKHJlc291cmNlLT50eXBlKCkgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkR5bmFtaWMpOworICAgICAgICBwcmludGYoIiVzICIsIHJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
dW1wVHlwZShyZXNvdXJjZS0+dHlwZSgpKTsKICAgICB9CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDM5NzQ0KQor
KysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqIHJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsK
IAotICAgIHVuc2lnbmVkIG51bUR5bmFtaWNFbnRyaWVzKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGR5
bmFtaWNFbnRyeSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgc2l6ZV90IG51bUR5bmFtaWNF
bnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5z
aXplKCk7IH0KKyAgICBTdHJpbmcgZHluYW1pY0VudHJ5KHNpemVfdCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlcltpbmRleF07IH0KICAgICAKICAg
ICBib29sIGFkZER5bmFtaWNFbnRyeShjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCByZW1v
dmVEeW5hbWljRW50cnkoY29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtODAsNyArODAsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgZHVtcCgpOwogI2VuZGlmCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiA+IFJlc291cmNlTWFwOworICAg
IC8vIER5bmFtaWMgZW50cmllcyBhcmUga2VwdCBpbiB0aGUgaGFzaCBtYXAgbGlrZSBhbnkgb3Ro
ZXIgb25lcywgYW5kIG9yZGVyZWQgYnkgdGhlaXIgVVJMLgorICAgIGNsYXNzIFJlc291cmNlTWFw
IDogcHVibGljIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNl
PiA+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGR5bmFtaWNFbnRyaWVz
T3JkZXI7CisgICAgfTsKKwogICAgIFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzLmJlZ2luKCk7IH0KICAgICBSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXMuZW5kKCk7IH0K
ICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAkocmV2aXNpb24gMzk3NDQpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTcgKzQy
MSwyMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvCiAgICAgICAg
IGRpZEZhaWxUb0xvYWRNYW5pZmVzdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAot
ICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVwZGF0ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2FjaGUg
Z3JvdXAgdG8gYmUgZGVsZXRlZC4KLSAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOworCisgICAgLy8g
RklYTUU6IERvIHdlIGNhdGNoIHJlZGlyZWN0cyBoZXJlPyBUaGV5IHNob3VsZCBiZSBlcXVpdmFs
ZW50IHRvIG5ldHdvcmsgZXJyb3JzLgorCisgICAgaWYgKG1fY3VycmVudFJlc291cmNlLT50eXBl
KCkgJiAoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCB8IEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6RmFsbGJhY2spKSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVwZGF0
ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2FjaGUgZ3JvdXAgdG8gYmUgZGVsZXRlZC4KKyAgICAg
ICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKKyAgICB9CisgICAgLy8gRklYTUU6IElmIHRoZSBlcnJv
ciB3YXMgYSA0MDQgb3IgNDEwIEhUVFAgcmVzcG9uc2Ugb3IgZXF1aXZhbGVudCwgc2tpcCB0aGlz
IHJlc291cmNlLiBJdCBpcyBkcm9wcGVkIGZyb20gdGhlIGNhY2hlLgorICAgIC8vIEZJWE1FOiBP
dGhlcndpc2UsIGNvcHkgdGhlIHJlc291cmNlIGFuZCBpdHMgbWV0YWRhdGEgZnJvbSBjYWNoZSwg
YW5kIGFjdCBhcyBpZiB0aGF0IHdhcyB0aGUgZmV0Y2hlZCByZXNvdXJjZSwgaWdub3JpbmcgdGhl
IHJlc291cmNlIG9idGFpbmVkIGZyb20gdGhlIG5ldHdvcmsuCiB9CiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpbnQgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgLyAxMDA7CiAKLSAgICBpZiAoc3RhdHVzQ29kZSA9PSA0IHx8IHN0YXR1c0Nv
ZGUgPT0gNSB8fCAKLSAgICAgICAgIWVxdWFsSWdub3JpbmdDYXNlKHJlc3BvbnNlLm1pbWVUeXBl
KCksICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IikpIHsKKyAgICBpZiAoc3RhdHVzQ29kZSA9PSA0IHx8
IHN0YXR1c0NvZGUgPT0gNSB8fCAhZXF1YWxJZ25vcmluZ0Nhc2UocmVzcG9uc2UubWltZVR5cGUo
KSwgInRleHQvY2FjaGUtbWFuaWZlc3QiKSkgeworICAgICAgICAvLyBGSVhNRTogNHh4IGFuZCA1
eHggc3RhdHVzIGNvZGVzIHNob3VsZCByZXN1bHQgaW4gcnVubmluZyBjYWNoZSByZW1vdmFsIHN0
ZXBzLCBub3QgY2FjaGUgZmFpbHVyZSBzdGVwcy4KICAgICAgICAgZGlkRmFpbFRvTG9hZE1hbmlm
ZXN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01NzQsNyArNTgwLDExIEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZEkKIAogICAgIGlmIChpc1VwZ3JhZGVB
dHRlbXB0KSB7CiAgICAgICAgIEFTU0VSVChtX2NhY2hlQ2FuZGlkYXRlcy5pc0VtcHR5KCkpOwot
ICAgICAgICAKKworICAgICAgICAvLyBGSVhNRTogSWYgYW55IGR5bmFtaWMgZW50cmllcyBpbiBh
bnkgb2YgdGhlIGFwcGxpY2F0aW9uIGNhY2hlcyBpbiB0aGUgY2FjaGUgZ3JvdXAgd2VyZSBhZGRl
ZCBvciByZW1vdmVkICh1c2luZyB0aGUgYWRkKCkgYW5kIHJlbW92ZSgpIG1ldGhvZHMpCisgICAg
ICAgIC8vIHdoaWxlIHRoZSB1cGRhdGUgcHJvY2VzcyB3YXMgaW4gcHJvZ3Jlc3MsIHRoZW4gcmVw
bGF5IHRoZSBzZXF1ZW5jZSBvZiBhZGRzIGFuZCByZW1vdmVzIG9uIGNhY2hlLCB1c2luZyB0aGUg
cmVzb3VyY2VzIHRoYXQgd2VyZSBmZXRjaGVkIGJ5CisgICAgICAgIC8vIHRoZSBhZGQoKSBtZXRo
b2QgaWYgYXBwbGljYWJsZS4KKwogICAgICAgICBjb3B5VG9WZWN0b3IobV9hc3NvY2lhdGVkRG9j
dW1lbnRMb2FkZXJzLCBkb2N1bWVudExvYWRlcnMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHdo
aWxlICghbV9jYWNoZUNhbmRpZGF0ZXMuaXNFbXB0eSgpKSB7CkBAIC02MzEsOCArNjQxLDYgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGluZwogICAgIAogICAgIGNhbGxM
aXN0ZW5lcnNPbkFzc29jaWF0ZWREb2N1bWVudHMoJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxQ
cm9ncmVzc0xpc3RlbmVyKTsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGFuIHVwZ3JhZGUg
YXR0ZW1wdCwgdGhlIG5ld2VzdCBjYWNoZSBzaG91bGQgYmUgdXNlZCBhcyBhbiBIVFRQIGNhY2hl
LgotICAgIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChpdC0+Zmlyc3QpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDM5NzQ0KQorKysgV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw3ICsxMzksOCBAQCBwcml2YXRlOgogICAKICAgICAvLyBXaGV0aGVyIHRoaXMg
Y2FjaGUgZ3JvdXAgaXMgYSBjb3B5IHRoYXQncyBvbmx5IHVzZWQgZm9yIHRyYW5zZmVycmluZyB0
aGUgY2FjaGUgdG8gYW5vdGhlciBmaWxlLgogICAgIGJvb2wgbV9pc0NvcHk7Ci0gICAgCisKKyAg
ICAvLyBSZXNvdXJjZXMgYXJlIGN1cnJlbnRseSBsb2FkZWQgc2VxdWVudGlhbGx5LCB3aGljaCBn
dWFyYW50ZWVzIGNvcnJlY3Qgb3JkZXIgZm9yIGR5bmFtaWMgZW50cmllcy4KICAgICBSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IG1fY3VycmVudEhhbmRsZTsKICAgICBSZWZQdHI8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBtX2N1cnJlbnRSZXNvdXJjZTsKICAgICAKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAkocmV2
aXNpb24gMzk3NDQpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMiBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1CiAgICAgbV90eXBlIHw9IHR5cGU7IAogfQog
Cit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6cmVtb3ZlVHlwZSh1bnNpZ25lZCB0eXBl
KQoreworICAgIEFTU0VSVCghbV9zdG9yYWdlSUQpOworICAgIG1fdHlwZSAmPSB+dHlwZTsKK30K
KwogI2lmbmRlZiBOREVCVUcKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkdW1wVHlw
ZSh1bnNpZ25lZCB0eXBlKQogewpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgJKHJldmlzaW9uIDM5NzQ0KQorKysgV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKKyAg
ICB2b2lkIHJlbW92ZVR5cGUodW5zaWduZWQgdHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRTdG9y
YWdlSUQodW5zaWduZWQgc3RvcmFnZUlEKSB7IG1fc3RvcmFnZUlEID0gc3RvcmFnZUlEOyB9CiAg
ICAgdW5zaWduZWQgc3RvcmFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlSUQ7IH0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAJKHJldmlzaW9uIDM5NzQ0KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDgg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogCiBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBG
b3JVUkwoY29uc3QgS1VSTCYgdXJsKQogeworICAgIC8vIEZJWE1FOiBJZiBtdWx0aXBsZSBmYWxs
YmFjayBuYW1lc3BhY2VzIG1hdGNoIHRoZSBVUkwsIHRoZSBsb25nZXN0IG9uZSBzaG91bGQgd2lu
ICg1LjcuNSBQcm9jZXNzaW5nIG1vZGVsKS4KKwogICAgIC8vIENoZWNrIGlmIGFuIGFwcHJvcHJp
YXRlIGNhY2hlIGFscmVhZHkgZXhpc3RzIGluIG1lbW9yeS4KICAgICBDYWNoZUdyb3VwTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX2NhY2hlc0luTWVtb3J5LmVuZCgpOwogICAgIGZvciAoQ2Fj
aGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNDE3LDExICs0MTksMjEgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbAogICAgIAogICAgIHVuc2lnbmVkIGNhY2hlU3RvcmFn
ZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YWJhc2UubGFzdEluc2VydFJvd0lEKCkp
OwogCi0gICAgLy8gU3RvcmUgYWxsIHJlc291cmNlcworICAgIC8vIFN0b3JlIGFsbCByZXNvdXJj
ZXMuIER5bmFtaWMgZW50cmllcyBhcmUgc3RvcmVkIGluIG9yZGVyLgogICAgIHsKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hl
LT5lbmQoKTsKICAgICAgICAgZm9yIChBcHBsaWNhdGlvbkNhY2hlOjpSZXNvdXJjZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgICAgICBpZiAoIXN0b3JlKGl0LT5zZWNvbmQuZ2V0KCksIGNhY2hlU3RvcmFnZUlEKSkKKyAg
ICAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25k
LmdldCgpOworICAgICAgICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgJiBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkR5bmFtaWMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoIXN0b3JlKHJlc291cmNlLCBjYWNoZVN0b3JhZ2VJRCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHNpemVfdCBjb3VudCA9IGNhY2hl
LT5udW1EeW5hbWljRW50cmllcygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2UgPSBjYWNoZS0+cmVzb3VyY2VGb3JVUkwoY2FjaGUtPmR5bmFtaWNFbnRyeShpKSk7CisgICAg
ICAgICAgICBBU1NFUlQocmVzb3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6RHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIXN0b3JlKHJlc291cmNlLCBjYWNoZVN0b3Jh
Z2VJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5j
cHAJKHJldmlzaW9uIDM5NzQ0KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsxMjUsOSBAQCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IERPTUFwcGxpY2F0aW9uCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
cmVzdWx0OwogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGFzc29jaWF0ZWRDYWNo
ZSgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bUVudHJpZXMgPSBjYWNoZS0+bnVtRHluYW1pY0Vu
dHJpZXMoKTsKKyAgICAgICAgc2l6ZV90IG51bUVudHJpZXMgPSBjYWNoZS0+bnVtRHluYW1pY0Vu
dHJpZXMoKTsKICAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShudW1FbnRyaWVzKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUVudHJpZXM7ICsraSkKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyArK2kpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNhY2hlLT5keW5hbWljRW50cnkoaSkpOwogICAgIH0KICAgICByZXR1cm4gU3Rh
dGljU3RyaW5nTGlzdDo6YWRvcHQocmVzdWx0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26602</attachid>
            <date>2009-01-11 04:30:53 -0800</date>
            <delta_ts>2009-01-11 04:30:53 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>DynamicEntries.txt</filename>
            <type>text/plain</type>
            <size>18525</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCShy
ZXZpc2lvbiAzOTc0NCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJDU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApA
QCAtNzEsOCArNzIsMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjphZGRSZXNvdXJjZShQYXNz
UgogICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBy
ZXNvdXJjZS0+dXJsKCk7CisgICAgYm9vbCBpc0R5bmFtaWMgPSByZXNvdXJjZS0+dHlwZSgpICYg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpEeW5hbWljOwogICAgIAogICAgIEFTU0VSVCghbV9y
ZXNvdXJjZXMuY29udGFpbnModXJsKSk7CisgICAgQVNTRVJUKFdURjo6bm90Rm91bmQgPT0gbV9y
ZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5maW5kKHVybCkpOwogICAgIAogICAgIGlmICht
X3N0b3JhZ2VJRCkgewogICAgICAgICBBU1NFUlQoIXJlc291cmNlLT5zdG9yYWdlSUQoKSk7CkBA
IC04MCwyMCArODMsMjkgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjphZGRSZXNvdXJjZShQYXNz
UgogICAgICAgICAvLyBBZGQgdGhlIHJlc291cmNlIHRvIHRoZSBzdG9yYWdlLgogICAgICAgICBj
YWNoZVN0b3JhZ2UoKS5zdG9yZShyZXNvdXJjZS5nZXQoKSwgdGhpcyk7CiAgICAgfQotICAgIAor
CiAgICAgbV9yZXNvdXJjZXMuc2V0KHVybCwgcmVzb3VyY2UpOworICAgIGlmIChpc0R5bmFtaWMp
CisgICAgICAgIG1fcmVzb3VyY2VzLmR5bmFtaWNFbnRyaWVzT3JkZXIuYXBwZW5kKHVybCk7CiB9
CiAKIHVuc2lnbmVkIEFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZVJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgdXJsKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPiA+OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQodXJsKTsKLSAgICBpZiAo
aXQgPT0gbV9yZXNvdXJjZXMuZW5kKCkpCisgICAgaWYgKGl0ID09IG1fcmVzb3VyY2VzLmVuZCgp
KSB7CisgICAgICAgIEFTU0VSVChXVEY6Om5vdEZvdW5kID09IG1fcmVzb3VyY2VzLmR5bmFtaWNF
bnRyaWVzT3JkZXIuZmluZCh1cmwpKTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAg
Ly8gVGhlIHJlc291cmNlIGV4aXN0cywgZ2V0IGl0cyB0eXBlIHNvIHdlIGNhbiByZXR1cm4gaXQu
CiAgICAgdW5zaWduZWQgdHlwZSA9IGl0LT5zZWNvbmQtPnR5cGUoKTsKIAogICAgIG1fcmVzb3Vy
Y2VzLnJlbW92ZShpdCk7CisgICAgaWYgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OkR5bmFtaWMpIHsKKyAgICAgICAgc2l6ZV90IHBvc2l0aW9uID0gbV9yZXNvdXJjZXMuZHluYW1p
Y0VudHJpZXNPcmRlci5maW5kKHVybCk7CisgICAgICAgIEFTU0VSVChXVEY6Om5vdEZvdW5kICE9
IHBvc2l0aW9uKTsKKyAgICAgICAgbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5yZW1v
dmUocG9zaXRpb24pOworICAgIH0KICAgICAKICAgICByZXR1cm4gdHlwZTsKIH0gICAgCkBAIC0x
MjMsMzAgKzEzNSw0MyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0aW9uQ2Fj
CiAgICAgcmV0dXJuIHJlc291cmNlRm9yVVJMKHJlcXVlc3QudXJsKCkpOwogfQogCi11bnNpZ25l
ZCBBcHBsaWNhdGlvbkNhY2hlOjpudW1EeW5hbWljRW50cmllcygpIGNvbnN0Ci17Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotICAgIAotU3RyaW5nIEFwcGxpY2F0
aW9uQ2FjaGU6OmR5bmFtaWNFbnRyeSh1bnNpZ25lZCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotICAgIAogYm9vbCBBcHBsaWNhdGlv
bkNhY2hlOjphZGREeW5hbWljRW50cnkoY29uc3QgU3RyaW5nJiB1cmwpCiB7CisgICAgaWYgKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSByZXNvdXJjZUZvclVSTCh1cmwpKSB7
CisgICAgICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpEeW5hbWljKQorICAgICAgICAgICAgQVNTRVJUKFdURjo6bm90Rm91bmQgIT0gbV9yZXNvdXJj
ZXMuZHluYW1pY0VudHJpZXNPcmRlci5maW5kKHVybCkpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIEFTU0VSVChXVEY6Om5vdEZvdW5kID09IG1fcmVzb3VyY2VzLmR5bmFtaWNFbnRyaWVz
T3JkZXIuZmluZCh1cmwpKTsKKyAgICAgICAgICAgIHJlc291cmNlLT5hZGRUeXBlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6RHluYW1pYyk7CisgICAgICAgICAgICBtX3Jlc291cmNlcy5keW5h
bWljRW50cmllc09yZGVyLmFwcGVuZCh1cmwpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKwogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UobV9ncm91cC0+bWFuaWZl
c3RVUkwoKS5wcm90b2NvbCgpLCBLVVJMKHVybCkucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGxvYWRpbmcuCisgICAgLy8gSXQgaXMgT0sgaWYgbG9hZGluZyBmYWlscywgd2Ugc2hvdWxk
IGp1c3Qgc2lsZW50bHkgZHJvcCB0aGUgZW50cnkgKG9yIHJhdGhlciwgbm90IGFkZCBpdCkuCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZUR5
bmFtaWNFbnRyeShjb25zdCBTdHJpbmcmKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVE
eW5hbWljRW50cnkoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVu
dAorICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSByZXNvdXJjZUZvclVS
TCh1cmwpOworICAgIGlmICghcmVzb3VyY2UgfHwgIShyZXNvdXJjZS0+dHlwZSgpICYgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpEeW5hbWljKSkgeworICAgICAgICBBU1NFUlQoV1RGOjpub3RG
b3VuZCA9PSBtX3Jlc291cmNlcy5keW5hbWljRW50cmllc09yZGVyLmZpbmQodXJsKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzb3VyY2UtPnJlbW92ZVR5cGUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpEeW5hbWljKTsKKyAgICBzaXplX3QgcG9zaXRpb24gPSBtX3Jlc291cmNl
cy5keW5hbWljRW50cmllc09yZGVyLmZpbmQodXJsKTsKKyAgICBBU1NFUlQoV1RGOjpub3RGb3Vu
ZCAhPSBwb3NpdGlvbik7CisgICAgbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5yZW1v
dmUocG9zaXRpb24pOworCisgICAgaWYgKHJlc291cmNlLT50eXBlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBJZiB0aGlzIHJlbW92ZXMgdGhlIGxhc3QgY2F0ZWdvcml6YXRp
b24gb2YgYW4gZW50cnkgaW4gdGhhdCBjYWNoZSwgdGhlbiB0aGUgZW50cnkgbXVzdCBiZSByZW1v
dmVkIGVudGlyZWx5LgogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdoaXRl
bGlzdChjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCkKQEAgLTE5OSw4ICsyMjQs
MjEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkdW1wKCkKICAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgCiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRy
PEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgcHJpbnRmKCIlcyAiLCBp
dC0+Zmlyc3QuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmR1bXBUeXBlKGl0LT5zZWNvbmQtPnR5cGUoKSk7CisgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICBpZiAocmVz
b3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RHluYW1pYykgeworICAg
ICAgICAgICAgQVNTRVJUKFdURjo6bm90Rm91bmQgIT0gbV9yZXNvdXJjZXMuZHluYW1pY0VudHJp
ZXNPcmRlci5maW5kKGl0LT5maXJzdCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgcHJpbnRmKCIlcyAiLCBpdC0+Zmlyc3QudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIEFTU0VSVChpdC0+Zmlyc3QgPT0gaXQtPnNlY29uZC0+dXJsKCkuc3RyaW5nKCkpOworICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmR1bXBUeXBlKHJlc291cmNlLT50eXBlKCkp
OworICAgIH0KKyAgICBzaXplX3QgY291bnQgPSBudW1EeW5hbWljRW50cmllcygpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3VyY2VGb3JVUkwoZHluYW1pY0VudHJ5KGkpKTsK
KyAgICAgICAgQVNTRVJUKHJlc291cmNlLT50eXBlKCkgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkR5bmFtaWMpOworICAgICAgICBwcmludGYoIiVzICIsIHJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpk
dW1wVHlwZShyZXNvdXJjZS0+dHlwZSgpKTsKICAgICB9CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDM5NzQ0KQor
KysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqIHJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsK
IAotICAgIHVuc2lnbmVkIG51bUR5bmFtaWNFbnRyaWVzKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGR5
bmFtaWNFbnRyeSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgc2l6ZV90IG51bUR5bmFtaWNF
bnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlci5z
aXplKCk7IH0KKyAgICBTdHJpbmcgZHluYW1pY0VudHJ5KHNpemVfdCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZXMuZHluYW1pY0VudHJpZXNPcmRlcltpbmRleF07IH0KICAgICAKICAg
ICBib29sIGFkZER5bmFtaWNFbnRyeShjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCByZW1v
dmVEeW5hbWljRW50cnkoY29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtODAsNyArODAsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgZHVtcCgpOwogI2VuZGlmCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiA+IFJlc291cmNlTWFwOworICAg
IC8vIER5bmFtaWMgZW50cmllcyBhcmUga2VwdCBpbiB0aGUgaGFzaCBtYXAgbGlrZSBhbnkgb3Ro
ZXIgb25lcywgYW5kIG9yZGVyZWQgYnkgdGhlaXIgVVJMLgorICAgIGNsYXNzIFJlc291cmNlTWFw
IDogcHVibGljIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNl
PiA+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGR5bmFtaWNFbnRyaWVz
T3JkZXI7CisgICAgfTsKKwogICAgIFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzLmJlZ2luKCk7IH0KICAgICBSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXMuZW5kKCk7IH0K
ICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAkocmV2aXNpb24gMzk3NDQpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTcgKzQy
MSwyMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvCiAgICAgICAg
IGRpZEZhaWxUb0xvYWRNYW5pZmVzdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAot
ICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVwZGF0ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2FjaGUg
Z3JvdXAgdG8gYmUgZGVsZXRlZC4KLSAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOworCisgICAgLy8g
RklYTUU6IERvIHdlIGNhdGNoIHJlZGlyZWN0cyBoZXJlPyBUaGV5IHNob3VsZCBiZSBlcXVpdmFs
ZW50IHRvIG5ldHdvcmsgZXJyb3JzLgorCisgICAgaWYgKG1fY3VycmVudFJlc291cmNlLT50eXBl
KCkgJiAoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCB8IEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6RmFsbGJhY2spKSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVwZGF0
ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2FjaGUgZ3JvdXAgdG8gYmUgZGVsZXRlZC4KKyAgICAg
ICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKKyAgICB9CisgICAgLy8gRklYTUU6IElmIHRoZSBlcnJv
ciB3YXMgYSA0MDQgb3IgNDEwIEhUVFAgcmVzcG9uc2Ugb3IgZXF1aXZhbGVudCwgc2tpcCB0aGlz
IHJlc291cmNlLiBJdCBpcyBkcm9wcGVkIGZyb20gdGhlIGNhY2hlLgorICAgIC8vIEZJWE1FOiBP
dGhlcndpc2UsIGNvcHkgdGhlIHJlc291cmNlIGFuZCBpdHMgbWV0YWRhdGEgZnJvbSBjYWNoZSwg
YW5kIGFjdCBhcyBpZiB0aGF0IHdhcyB0aGUgZmV0Y2hlZCByZXNvdXJjZSwgaWdub3JpbmcgdGhl
IHJlc291cmNlIG9idGFpbmVkIGZyb20gdGhlIG5ldHdvcmsuCiB9CiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpbnQgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgLyAxMDA7CiAKLSAgICBpZiAoc3RhdHVzQ29kZSA9PSA0IHx8IHN0YXR1c0Nv
ZGUgPT0gNSB8fCAKLSAgICAgICAgIWVxdWFsSWdub3JpbmdDYXNlKHJlc3BvbnNlLm1pbWVUeXBl
KCksICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IikpIHsKKyAgICBpZiAoc3RhdHVzQ29kZSA9PSA0IHx8
IHN0YXR1c0NvZGUgPT0gNSB8fCAhZXF1YWxJZ25vcmluZ0Nhc2UocmVzcG9uc2UubWltZVR5cGUo
KSwgInRleHQvY2FjaGUtbWFuaWZlc3QiKSkgeworICAgICAgICAvLyBGSVhNRTogNHh4IGFuZCA1
eHggc3RhdHVzIGNvZGVzIHNob3VsZCByZXN1bHQgaW4gcnVubmluZyBjYWNoZSByZW1vdmFsIHN0
ZXBzLCBub3QgY2FjaGUgZmFpbHVyZSBzdGVwcy4KICAgICAgICAgZGlkRmFpbFRvTG9hZE1hbmlm
ZXN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01NzQsNyArNTgwLDExIEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZEkKIAogICAgIGlmIChpc1VwZ3JhZGVB
dHRlbXB0KSB7CiAgICAgICAgIEFTU0VSVChtX2NhY2hlQ2FuZGlkYXRlcy5pc0VtcHR5KCkpOwot
ICAgICAgICAKKworICAgICAgICAvLyBGSVhNRTogSWYgYW55IGR5bmFtaWMgZW50cmllcyBpbiBh
bnkgb2YgdGhlIGFwcGxpY2F0aW9uIGNhY2hlcyBpbiB0aGUgY2FjaGUgZ3JvdXAgd2VyZSBhZGRl
ZCBvciByZW1vdmVkICh1c2luZyB0aGUgYWRkKCkgYW5kIHJlbW92ZSgpIG1ldGhvZHMpCisgICAg
ICAgIC8vIHdoaWxlIHRoZSB1cGRhdGUgcHJvY2VzcyB3YXMgaW4gcHJvZ3Jlc3MsIHRoZW4gcmVw
bGF5IHRoZSBzZXF1ZW5jZSBvZiBhZGRzIGFuZCByZW1vdmVzIG9uIGNhY2hlLCB1c2luZyB0aGUg
cmVzb3VyY2VzIHRoYXQgd2VyZSBmZXRjaGVkIGJ5CisgICAgICAgIC8vIHRoZSBhZGQoKSBtZXRo
b2QgaWYgYXBwbGljYWJsZS4KKwogICAgICAgICBjb3B5VG9WZWN0b3IobV9hc3NvY2lhdGVkRG9j
dW1lbnRMb2FkZXJzLCBkb2N1bWVudExvYWRlcnMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHdo
aWxlICghbV9jYWNoZUNhbmRpZGF0ZXMuaXNFbXB0eSgpKSB7CkBAIC02MzEsOCArNjQxLDYgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGluZwogICAgIAogICAgIGNhbGxM
aXN0ZW5lcnNPbkFzc29jaWF0ZWREb2N1bWVudHMoJkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmNhbGxQ
cm9ncmVzc0xpc3RlbmVyKTsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlzIGFuIHVwZ3JhZGUg
YXR0ZW1wdCwgdGhlIG5ld2VzdCBjYWNoZSBzaG91bGQgYmUgdXNlZCBhcyBhbiBIVFRQIGNhY2hl
LgotICAgIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChpdC0+Zmlyc3QpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDM5NzQ0KQorKysgV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw3ICsxMzksOCBAQCBwcml2YXRlOgogICAKICAgICAvLyBXaGV0aGVyIHRoaXMg
Y2FjaGUgZ3JvdXAgaXMgYSBjb3B5IHRoYXQncyBvbmx5IHVzZWQgZm9yIHRyYW5zZmVycmluZyB0
aGUgY2FjaGUgdG8gYW5vdGhlciBmaWxlLgogICAgIGJvb2wgbV9pc0NvcHk7Ci0gICAgCisKKyAg
ICAvLyBSZXNvdXJjZXMgYXJlIGN1cnJlbnRseSBsb2FkZWQgc2VxdWVudGlhbGx5LCB3aGljaCBn
dWFyYW50ZWVzIGNvcnJlY3Qgb3JkZXIgZm9yIGR5bmFtaWMgZW50cmllcy4KICAgICBSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IG1fY3VycmVudEhhbmRsZTsKICAgICBSZWZQdHI8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBtX2N1cnJlbnRSZXNvdXJjZTsKICAgICAKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAkocmV2
aXNpb24gMzk3NDQpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMiBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1CiAgICAgbV90eXBlIHw9IHR5cGU7IAogfQog
Cit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6cmVtb3ZlVHlwZSh1bnNpZ25lZCB0eXBl
KQoreworICAgIEFTU0VSVCghbV9zdG9yYWdlSUQpOworICAgIG1fdHlwZSAmPSB+dHlwZTsKK30K
KwogI2lmbmRlZiBOREVCVUcKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkdW1wVHlw
ZSh1bnNpZ25lZCB0eXBlKQogewpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgJKHJldmlzaW9uIDM5NzQ0KQorKysgV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKKyAg
ICB2b2lkIHJlbW92ZVR5cGUodW5zaWduZWQgdHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRTdG9y
YWdlSUQodW5zaWduZWQgc3RvcmFnZUlEKSB7IG1fc3RvcmFnZUlEID0gc3RvcmFnZUlEOyB9CiAg
ICAgdW5zaWduZWQgc3RvcmFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlSUQ7IH0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAJKHJldmlzaW9uIDM5NzQ0KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDgg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogCiBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBG
b3JVUkwoY29uc3QgS1VSTCYgdXJsKQogeworICAgIC8vIEZJWE1FOiBJZiBtdWx0aXBsZSBmYWxs
YmFjayBuYW1lc3BhY2VzIG1hdGNoIHRoZSBVUkwsIHRoZSBsb25nZXN0IG9uZSBzaG91bGQgd2lu
ICg1LjcuNSBQcm9jZXNzaW5nIG1vZGVsKS4KKwogICAgIC8vIENoZWNrIGlmIGFuIGFwcHJvcHJp
YXRlIGNhY2hlIGFscmVhZHkgZXhpc3RzIGluIG1lbW9yeS4KICAgICBDYWNoZUdyb3VwTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX2NhY2hlc0luTWVtb3J5LmVuZCgpOwogICAgIGZvciAoQ2Fj
aGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNDE3LDExICs0MTksMjEgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbAogICAgIAogICAgIHVuc2lnbmVkIGNhY2hlU3RvcmFn
ZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YWJhc2UubGFzdEluc2VydFJvd0lEKCkp
OwogCi0gICAgLy8gU3RvcmUgYWxsIHJlc291cmNlcworICAgIC8vIFN0b3JlIGFsbCByZXNvdXJj
ZXMuIER5bmFtaWMgZW50cmllcyBhcmUgc3RvcmVkIGluIG9yZGVyLgogICAgIHsKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hl
LT5lbmQoKTsKICAgICAgICAgZm9yIChBcHBsaWNhdGlvbkNhY2hlOjpSZXNvdXJjZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgICAgICBpZiAoIXN0b3JlKGl0LT5zZWNvbmQuZ2V0KCksIGNhY2hlU3RvcmFnZUlEKSkKKyAg
ICAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25k
LmdldCgpOworICAgICAgICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgJiBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkR5bmFtaWMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoIXN0b3JlKHJlc291cmNlLCBjYWNoZVN0b3JhZ2VJRCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHNpemVfdCBjb3VudCA9IGNhY2hl
LT5udW1EeW5hbWljRW50cmllcygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2UgPSBjYWNoZS0+cmVzb3VyY2VGb3JVUkwoY2FjaGUtPmR5bmFtaWNFbnRyeShpKSk7CisgICAg
ICAgICAgICBBU1NFUlQocmVzb3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6RHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIXN0b3JlKHJlc291cmNlLCBjYWNoZVN0b3Jh
Z2VJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5j
cHAJKHJldmlzaW9uIDM5NzQ0KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsxMjUsOSBAQCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IERPTUFwcGxpY2F0aW9uCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
cmVzdWx0OwogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGFzc29jaWF0ZWRDYWNo
ZSgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIG51bUVudHJpZXMgPSBjYWNoZS0+bnVtRHluYW1pY0Vu
dHJpZXMoKTsKKyAgICAgICAgc2l6ZV90IG51bUVudHJpZXMgPSBjYWNoZS0+bnVtRHluYW1pY0Vu
dHJpZXMoKTsKICAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShudW1FbnRyaWVzKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUVudHJpZXM7ICsraSkKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyArK2kpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNhY2hlLT5keW5hbWljRW50cnkoaSkpOwogICAgIH0KICAgICByZXR1cm4gU3Rh
dGljU3RyaW5nTGlzdDo6YWRvcHQocmVzdWx0KTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvZHluYW1pYy1lbnRyaWVzLWFkZC1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1hZGQtcmVt
b3ZlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2R5bmFtaWMtZW50cmllcy1hZGQtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMxIEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2R5bmFtaWMtZW50cmllcy1hZGQtcmVt
b3ZlLm1hbmlmZXN0Ij4KKzxib2R5PgorPHA+VGVzdCB0aGUgYmVoYXZpb3Igb2YgRE9NQXBwbGlj
YXRpb25DYWNoZSBhZGQgYW5kIHJlbW92ZSBtZXRob2RzLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSAr
ICI8YnI+IjsKK30KKwordmFyIGhhZEZhaWx1cmUgPSBmYWxzZTsKK2Z1bmN0aW9uIGZhaWwobWVz
c2FnZSkKK3sKKyAgICBsb2coIkZBSUw6ICIgKyBtZXNzYWdlKTsKKyAgICBoYWRGYWlsdXJlID0g
dHJ1ZTsKK30KKworZnVuY3Rpb24gcmVzZXREeW5hbWljRW50cmllcygpCit7CisgICAgd2hpbGUg
KGFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMubGVuZ3RoKQorICAgICAgICBhcHBsaWNhdGlvbkNhY2hl
LnJlbW92ZShhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMCkpOworfQorCit2YXIgb3JpZ2lu
YWxJdGVtczsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgbG9nKCJU
ZXN0aW5nLi4uIik7CisKKyAgICAgICAgcmVzZXREeW5hbWljRW50cmllcygpOworICAgICAgICBv
cmlnaW5hbEl0ZW1zID0gYXBwbGljYXRpb25DYWNoZS5pdGVtczsKKyAgICAgICAgaWYgKGFwcGxp
Y2F0aW9uQ2FjaGUuaXRlbXMubGVuZ3RoKQorICAgICAgICAgICAgZmFpbCgiYXBwbGljYXRpb25D
YWNoZS5pdGVtcyBpcyBub3QgZW1wdHkgYWZ0ZXIgY2xlYXJpbmciKTsKKworICAgICAgICB0cnkg
eworICAgICAgICAgICAgYXBwbGljYXRpb25DYWNoZS5hZGQoImRvZXMtbm90LWV4aXN0Iik7Cisg
ICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBmYWlsKCJBZGRpbmcgYSBkeW5hbWlj
IGVudHJ5IGJ5IHJlbGF0aXZlIFVSTCBmYWlsZWQ6ICIgKyBleCk7CisgICAgICAgIH0KKyAgICAg
ICAgYXBwbGljYXRpb25DYWNoZS5hZGQoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9kb2VzLW5vdC1l
eGlzdCIpOworICAgICAgICBhcHBsaWNhdGlvbkNhY2hlLmFkZCgiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2FwcGNhY2hlL3Jlc291cmNlcy9lbXB0eS50eHQiKTsKKworICAgICAgICBpZiAoYXBwbGlj
YXRpb25DYWNoZS5pdGVtcy5sZW5ndGgpCisgICAgICAgICAgICBmYWlsKCJhcHBsaWNhdGlvbkNh
Y2hlLml0ZW1zIGlzIG5vdCBlbXB0eSByaWdodCBhZnRlciBhZGRpbmcgZHluYW1pYyBlbnRyaWVz
Iik7CisKKyAgICAgICAgLy8gU2hvdWxkIGJlIG5vLW9wLCBiZWNhdXNlIHRoZSByZXNvdXJjZSBo
YXNuJ3QgYmVlbiBmZXRjaGVkIHlldC4KKyAgICAgICAgYXBwbGljYXRpb25DYWNoZS5yZW1vdmUo
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hcHBjYWNoZS9yZXNvdXJjZXMvZW1wdHkudHh0Iik7CisK
KyAgICAgICAgLy8gU2hvdWxkIGJlIG5vLW9wLCBiZWNhdXNlIHRoZSByZXNvdXJjZSBpc24ndCBk
eW5hbWljLgorICAgICAgICBhcHBsaWNhdGlvbkNhY2hlLnJlbW92ZSgiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2FwcGNhY2hlL3Jlc291cmNlcy9zaW1wbGUudHh0Iik7CisKKyAgICAgICAgc2V0VGlt
ZW91dCh0ZXN0MiwgMTAwKTsKKworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGZhaWwoIlVu
ZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBleCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0Migp
Cit7CisgICAgdHJ5IHsKKyAgICAgICAgLy8gV2FpdCB1bnRpbCBsb2FkIGZpbmlzaGVzLgorICAg
ICAgICBpZiAoYXBwbGljYXRpb25DYWNoZS5pdGVtcy5sZW5ndGggIT0gMSkgeworICAgICAgICAg
ICAgc2V0VGltZW91dCh0ZXN0MiwgMTAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChvcmlnaW5hbEl0ZW1zLmxlbmd0aCkKKyAgICAgICAgICAgIGZhaWwo
IkRPTVN0cmluZ0xpc3QgcmV0dXJuZWQgYnkgRE9NQXBwbGljYXRpb25DYWNoZS5pdGVtcyB3YXMg
bGl2ZSIpOworCisgICAgICAgIGlmIChhcHBsaWNhdGlvbkNhY2hlLml0ZW1zID09PSBhcHBsaWNh
dGlvbkNhY2hlLml0ZW1zKQorICAgICAgICAgICAgZmFpbCgiRE9NU3RyaW5nTGlzdCByZXR1cm5l
ZCBieSBET01BcHBsaWNhdGlvbkNhY2hlLml0ZW1zIHdhc24ndCBkaWZmZXJlbnQgb24gZWFjaCBj
YWxsIik7CisKKyAgICAgICAgaWYgKCEvcmVzb3VyY2VzXC9lbXB0eS8udGVzdChhcHBsaWNhdGlv
bkNhY2hlLml0ZW1zWzBdKSkKKyAgICAgICAgICAgIGZhaWwoIml0ZW1zWzBdIGRpZG4ndCBoYXZl
IGV4cGVjdGVkIGNvbnRlbnQuIFdhcyAiICsgYXBwbGljYXRpb25DYWNoZS5pdGVtc1swXSk7Cisg
ICAgICAgIGlmICghL3Jlc291cmNlc1wvZW1wdHkvLnRlc3QoYXBwbGljYXRpb25DYWNoZS5pdGVt
cy5pdGVtKDApKSkKKyAgICAgICAgICAgIGZhaWwoIml0ZW1zLml0ZW0oMCkgZGlkbid0IGhhdmUg
ZXhwZWN0ZWQgY29udGVudC4gV2FzICIgKyBhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMCkp
OworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1
ZXN0OworICAgICAgICAgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvZW1wdHkudHh0Iiwg
ZmFsc2UpOworICAgICAgICAgICAgcmVxLnNlbmQoIiIpOworICAgICAgICAgICAgaWYgKHJlcS5y
ZXNwb25zZVRleHQgIT0gIiIpCisgICAgICAgICAgICAgICAgZmFpbCgiVW5leHBlY3RlZCBYSFIg
cmVzcG9uc2U6ICIgKyByZXEucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgIH0gY2F0Y2ggKGV4KSB7
CisgICAgICAgICAgICBmYWlsKCJDb3VsZCBub3QgcmV0cmlldmUgYSBkeW5hbWljYWxseSBjYWNo
ZWQgcmVzb3VyY2U6ICIgKyBleCk7CisgICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgICAgICAgICByZXEub3Bl
bigiR0VUIiwgInJlc291cmNlcy9zaW1wbGUudHh0IiwgZmFsc2UpOworICAgICAgICAgICAgcmVx
LnNlbmQoIiIpOworICAgICAgICAgICAgaWYgKHJlcS5yZXNwb25zZVRleHQgIT0gIkhlbGxvLCBX
b3JsZCEiKQorICAgICAgICAgICAgICAgIGZhaWwoIlVuZXhwZWN0ZWQgWEhSIHJlc3BvbnNlOiAi
ICsgcmVxLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICAg
ICAgZmFpbCgiQ291bGQgbm90IHJldHJpZXZlIGFuIGV4cGxpY2l0bHkgY2FjaGVkIHJlc291cmNl
OiAiICsgZXgpOworICAgICAgICAgfQorCisgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGUucmVtb3Zl
KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBwY2FjaGUvcmVzb3VyY2VzL2VtcHR5LnR4dCIpOwor
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0
OworICAgICAgICAgICAgcmVxLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvZW1wdHkudHh0IiwgZmFs
c2UpOworICAgICAgICAgICAgcmVxLnNlbmQoIiIpOworICAgICAgICAgICAgZmFpbCgiQSByZW1v
dmVkIGR5bmFtaWNhbGx5IGNhY2hlZCByZXNvdXJjZSBjb3VsZCBzdGlsbCBiZSBmZXRjaGVkIik7
CisgICAgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICAgfQorCisgICAgfSBjYXRjaCAoZXgp
IHsKKyAgICAgICAgZmFpbCgiVW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKKyAgICB9CisK
KyAgICBpZiAoIWhhZEZhaWx1cmUpCisgICAgICAgIGxvZygiU1VDQ0VTUyIpOworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rp
b24oKSB7IHRlc3QoKSB9CithcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0gZnVuY3Rpb24oKSB7
IHRlc3QoKSB9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9keW5hbWljLWVu
dHJpZXMtYWRkLXJlbW92ZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICAr
IHRleHQvaHRtbAoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3Vy
Y2VzL2R5bmFtaWMtZW50cmllcy1hZGQtcmVtb3ZlLm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2R5bmFtaWMtZW50cmllcy1h
ZGQtcmVtb3ZlLm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvZHluYW1pYy1lbnRyaWVzLWFkZC1yZW1vdmUubWFuaWZlc3QJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorQ0FDSEUgTUFOSUZFU1QKK3NpbXBsZS50eHQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26603</attachid>
            <date>2009-01-11 04:37:46 -0800</date>
            <delta_ts>2009-01-11 23:22:24 -0800</delta_ts>
            <desc>Disable existing code</desc>
            <filename>NoDynamicEntries.txt</filename>
            <type>text/plain</type>
            <size>11274</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTc5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMDEtMTEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2NQorICAgICAgICBE
aXNhYmxlIGFwcGxpY2F0aW9uIGNhY2hlIGR5bmFtaWMgZW50cmllcyBzdXBwb3J0LgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGw6CisKIDIwMDktMDEt
MTEgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCShyZXZpc2lvbiAzOTc4MikKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQCB2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6
bWFyaygpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX0NBSEVfRFlOQU1JQ19F
TlRSSUVTKQorCiBKU1ZhbHVlUHRyIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6aGFzSXRlbShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
YXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1l
KCk7CkBAIC0xMTcsNiArMTE5LDggQEAgSlNWYWx1ZVB0ciBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6
OnJlbW92ZQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCisjZW5kaWYKKwogSlNWYWx1
ZVB0ciBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0
aW9uQ2FjaGUuaWRsCShyZXZpc2lvbiAzOTc4MikKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw4IEBA
IG1vZHVsZSBvZmZsaW5lIHsKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICB2b2lkIHN3YXBDYWNoZSgpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
LSAgICAKKworI2lmIEVOQUJMRV9BUFBMSUNBVElPTl9DQUhFX0RZTkFNSUNfRU5UUklFUwogICAg
ICAgICAvLyBkeW5hbWljIGVudHJpZXMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZ0xpc3QgaXRlbXM7CiAgICAgICAgIFtDdXN0b21dIGJvb2xlYW4gaGFzSXRlbShpbiBET01T
dHJpbmcgdXJsKQpAQCAtNTAsNiArNTEsNyBAQCBtb2R1bGUgb2ZmbGluZSB7CiAgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCByZW1vdmUoaW4g
RE9NU3RyaW5nIHVyaSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworI2VuZGlm
CiAKICAgICAgICAgLy8gZXZlbnRzCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
Y2hlY2tpbmc7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzOTc5NSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA5LTAxLTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMxNjUKKyAgICAgICAgRGlzYWJsZSBhcHBsaWNhdGlvbiBjYWNoZSBkeW5hbWljIGVu
dHJpZXMgc3VwcG9ydC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZHluYW1pYy1l
bnRyaWVzLW5vLWNhY2hlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBj
YWNoZS9keW5hbWljLWVudHJpZXMtbm8tY2FjaGUuaHRtbC1kaXNhYmxlZDogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9keW5hbWljLWVudHJpZXMtbm8tY2FjaGUu
aHRtbC4KKwogMjAwOS0wMS0xMSAgR2xlbm4gV2lsc29uICA8Z3dpbHNvbkBnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9keW5hbWljLWVudHJpZXMtbm8tY2FjaGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1uby1j
YWNoZS5odG1sCShyZXZpc2lvbiAzOTc4MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvZHluYW1pYy1lbnRyaWVzLW5vLWNhY2hlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTE5ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGUgYmVoYXZpb3Igb2YgRE9NQXBwbGljYXRp
b25DYWNoZSBtZXRob2RzIHJlbGF0ZWQgdG8gZHluYW1pYyBlbnRyaWVzIHdoZW4gdGhlIGNvbnRl
eHQKLWlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IGNhY2hlLjwvcD4KLTxkaXYgaWQ9InJlc3Vs
dCI+PC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0KLWZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwg
Kz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotCi1mdW5jdGlvbiBpc1Jlc3VsdENvcnJlY3QoX2Fj
dHVhbCwgX2V4cGVjdGVkKQotewotICAgIGlmIChfZXhwZWN0ZWQgPT09IDApCi0gICAgICAgIHJl
dHVybiBfYWN0dWFsID09PSBfZXhwZWN0ZWQgJiYgKDEvX2FjdHVhbCkgPT09ICgxL19leHBlY3Rl
ZCk7Ci0gICAgaWYgKF9hY3R1YWwgPT09IF9leHBlY3RlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHR5cGVvZihfZXhwZWN0ZWQpID09ICJudW1iZXIiICYmIGlzTmFOKF9leHBlY3Rl
ZCkpCi0gICAgICAgIHJldHVybiB0eXBlb2YoX2FjdHVhbCkgPT0gIm51bWJlciIgJiYgaXNOYU4o
X2FjdHVhbCk7Ci0gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChfZXhwZWN0
ZWQpID09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChbXSkpIHsKLSAgICAgICAgbG9n
KCJBcnJheSBjb21wYXJpc29uIGlzIG5vdCBzdXBwb3J0ZWQiKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlKF9h
LCBfYikKLXsKLSAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBlb2YgX2IgIT0gInN0
cmluZyIpCi0gICAgbG9nKCJXQVJOOiBzaG91bGRCZSgpIGV4cGVjdHMgc3RyaW5nIGFyZ3VtZW50
cyIpOwotICB2YXIgZXhjZXB0aW9uOwotICB2YXIgX2F2OwotICB0cnkgewotICAgICBfYXYgPSBl
dmFsKF9hKTsKLSAgfSBjYXRjaCAoZSkgewotICAgICBleGNlcHRpb24gPSBlOwotICB9Ci0gIHZh
ciBfYnYgPSBldmFsKF9iKTsKLQotICBpZiAoZXhjZXB0aW9uKQotICAgIGxvZygiRkFJTDogIiAr
IF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0
aW9uKTsKLSAgZWxzZSBpZiAoaXNSZXN1bHRDb3JyZWN0KF9hdiwgX2J2KSkKLSAgICBsb2coIlBB
U1M6ICIgKyBfYSArICIgaXMgIiArIF9iKTsKLSAgZWxzZSBpZiAodHlwZW9mKF9hdikgPT0gdHlw
ZW9mKF9idikpCi0gICAgbG9nKCJGQUlMOiAiICsgX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsg
Ii4gV2FzICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7Ci0gIGVsc2UKLSAgICBsb2coIkZBSUw6
ICIgKyBfYSArICIgc2hvdWxkIGJlICIgKyBfYnYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2
ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOwot
fQotCi0KLXNob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLmxlbmd0aCIsICIwIik7Ci1z
aG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtcy5pdGVtKDApIiwgIm51bGwiKTsKLXNob3Vs
ZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMSkiLCAibnVsbCIpOwotc2hvdWxkQmUo
ImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgweGZmZmZmZmZmKSIsICJudWxsIik7Ci1zaG91
bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtcy5pdGVtKDB4ZmZmZmZmZmUpIiwgIm51bGwiKTsK
LXNob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oLTEpIiwgIm51bGwiKTsKLXNo
b3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oLTIpIiwgIm51bGwiKTsKLQotc2hv
dWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMHhmZmZmZmZmZV0iLCAidW5kZWZpbmVkIik7
Ci1zaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1sweGZmZmZmZmZmXSIsICJ1bmRlZmlu
ZWQiKTsKLQotLy8gVGhlIGJlbG93IGluZGV4IGFjY2VzcyB0ZXN0cyBnaXZlIGRpZmZlcmVudCBy
ZXN1bHRzIGluIFdlYktpdCBhbmQgRmlyZWZveCAzLjFiMiAodW5kZWZpbmVkIHZzLiBlbXB0eSBz
dHJpbmcpLgotc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJzAnXSIsICJ1bmRlZmlu
ZWQiKTsKLXNob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWycnXSIsICJ1bmRlZmluZWQi
KTsKLXNob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWzBdIiwgInVuZGVmaW5lZCIpOwot
c2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMV0iLCAidW5kZWZpbmVkIik7Ci1zaG91
bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1stMV0iLCAidW5kZWZpbmVkIik7Ci1zaG91bGRC
ZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1stMl0iLCAidW5kZWZpbmVkIik7Ci1hcHBsaWNhdGlv
bkNhY2hlLml0ZW1zWzEwMF0gPSAiZm9vYmFyIjsKLWFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJzEw
MCddID0gImZvb2JhciI7Ci1hcHBsaWNhdGlvbkNhY2hlLml0ZW1zWydmb28nXSA9ICJiYXIiOwot
c2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMTAwXSIsICJ1bmRlZmluZWQiKTsKLXNo
b3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWycxMDAnXSIsICJ1bmRlZmluZWQiKTsKLQot
c2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJ2ZvbyddIiwgInVuZGVmaW5lZCIpOwot
c2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMC4xXSIsICJ1bmRlZmluZWQiKTsKLQot
dHJ5IHsKLSAgICBhcHBsaWNhdGlvbkNhY2hlLmhhc0l0ZW0oJ2ZvbycpOwotICAgIGxvZygiRkFJ
TDogaGFzSXRlbSBkaWRuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIik7Ci19IGNhdGNoIChleCkgewot
ICAgIGlmIChleC5jb2RlID09IDExKQotICAgICAgICBsb2coIlBBU1M6IGhhc0l0ZW0gcmFpc2Vk
IElOVkFMSURfU1RBVEVfRVJSIik7Ci0gICAgZWxzZQotICAgICAgICBsb2coIkZBSUw6IGhhc0l0
ZW0gcmFpc2VkIHVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBleCk7Ci19Ci0KLXRyeSB7Ci0gICAg
YXBwbGljYXRpb25DYWNoZS5hZGQoJ2ZvbycpOwotICAgIGxvZygiRkFJTDogYWRkIGRpZG4ndCBy
YWlzZSBhbiBleGNlcHRpb24iKTsKLX0gY2F0Y2ggKGV4KSB7Ci0gICAgaWYgKGV4LmNvZGUgPT0g
MTEpCi0gICAgICAgIGxvZygiUEFTUzogYWRkIHJhaXNlZCBJTlZBTElEX1NUQVRFX0VSUiIpOwot
ICAgIGVsc2UKLSAgICAgICAgbG9nKCJGQUlMOiBhZGQgcmFpc2VkIHVuZXhwZWN0ZWQgZXhjZXB0
aW9uICIgKyBleCk7Ci19Ci0KLXRyeSB7Ci0gICAgYXBwbGljYXRpb25DYWNoZS5yZW1vdmUoJ2Jh
cicpOwotICAgIGxvZygiRkFJTDogcmVtb3ZlIGRpZG4ndCByYWlzZSBhbiBleGNlcHRpb24iKTsK
LX0gY2F0Y2ggKGV4KSB7Ci0gICAgaWYgKGV4LmNvZGUgPT0gMTEpCi0gICAgICAgIGxvZygiUEFT
UzogcmVtb3ZlIHJhaXNlZCBJTlZBTElEX1NUQVRFX0VSUiIpOwotICAgIGVsc2UKLSAgICAgICAg
bG9nKCJGQUlMOiByZW1vdmUgcmFpc2VkIHVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBleCk7Ci19
Ci0KLXNob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLmxlbmd0aCIsICIwIik7Ci0KLQot
Ci1sb2coIkRPTkUiKTsKLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08L2JvZHk+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1uby1jYWNoZS5odG1s
LWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
ZHluYW1pYy1lbnRyaWVzLW5vLWNhY2hlLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDM5NzgyKQko
ZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1uby1j
YWNoZS5odG1sOjM5NzgyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9keW5h
bWljLWVudHJpZXMtbm8tY2FjaGUuaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExOSBAQAorPGJvZHk+Cis8cD5UZXN0IHRoZSBiZWhhdmlvciBvZiBET01BcHBsaWNhdGlv
bkNhY2hlIG1ldGhvZHMgcmVsYXRlZCB0byBkeW5hbWljIGVudHJpZXMgd2hlbiB0aGUgY29udGV4
dAoraXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgY2FjaGUuPC9wPgorPGRpdiBpZD0icmVzdWx0
Ij48L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCAr
PSBtZXNzYWdlICsgIjxicj4iOworfQorCisKK2Z1bmN0aW9uIGlzUmVzdWx0Q29ycmVjdChfYWN0
dWFsLCBfZXhwZWN0ZWQpCit7CisgICAgaWYgKF9leHBlY3RlZCA9PT0gMCkKKyAgICAgICAgcmV0
dXJuIF9hY3R1YWwgPT09IF9leHBlY3RlZCAmJiAoMS9fYWN0dWFsKSA9PT0gKDEvX2V4cGVjdGVk
KTsKKyAgICBpZiAoX2FjdHVhbCA9PT0gX2V4cGVjdGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAodHlwZW9mKF9leHBlY3RlZCkgPT0gIm51bWJlciIgJiYgaXNOYU4oX2V4cGVjdGVk
KSkKKyAgICAgICAgcmV0dXJuIHR5cGVvZihfYWN0dWFsKSA9PSAibnVtYmVyIiAmJiBpc05hTihf
YWN0dWFsKTsKKyAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKF9leHBlY3Rl
ZCkgPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFtdKSkgeworICAgICAgICBsb2co
IkFycmF5IGNvbXBhcmlzb24gaXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoX2Es
IF9iKQoreworICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPSAic3Ry
aW5nIikKKyAgICBsb2coIldBUk46IHNob3VsZEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRz
Iik7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgIF9hdiA9IGV2
YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0KKyAgdmFy
IF9idiA9IGV2YWwoX2IpOworCisgIGlmIChleGNlcHRpb24pCisgICAgbG9nKCJGQUlMOiAiICsg
X2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRp
b24pOworICBlbHNlIGlmIChpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKQorICAgIGxvZygiUEFT
UzogIiArIF9hICsgIiBpcyAiICsgX2IpOworICBlbHNlIGlmICh0eXBlb2YoX2F2KSA9PSB0eXBl
b2YoX2J2KSkKKyAgICBsb2coIkZBSUw6ICIgKyBfYSArICIgc2hvdWxkIGJlICIgKyBfYnYgKyAi
LiBXYXMgIiArIHN0cmluZ2lmeShfYXYpICsgIi4iKTsKKyAgZWxzZQorICAgIGxvZygiRkFJTDog
IiArIF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYnYg
KyAiKS4gV2FzICIgKyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7Cit9
CisKKworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMubGVuZ3RoIiwgIjAiKTsKK3No
b3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMCkiLCAibnVsbCIpOworc2hvdWxk
QmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgxKSIsICJudWxsIik7CitzaG91bGRCZSgi
YXBwbGljYXRpb25DYWNoZS5pdGVtcy5pdGVtKDB4ZmZmZmZmZmYpIiwgIm51bGwiKTsKK3Nob3Vs
ZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zLml0ZW0oMHhmZmZmZmZmZSkiLCAibnVsbCIpOwor
c2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgtMSkiLCAibnVsbCIpOworc2hv
dWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMuaXRlbSgtMikiLCAibnVsbCIpOworCitzaG91
bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1sweGZmZmZmZmZlXSIsICJ1bmRlZmluZWQiKTsK
K3Nob3VsZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWzB4ZmZmZmZmZmZdIiwgInVuZGVmaW5l
ZCIpOworCisvLyBUaGUgYmVsb3cgaW5kZXggYWNjZXNzIHRlc3RzIGdpdmUgZGlmZmVyZW50IHJl
c3VsdHMgaW4gV2ViS2l0IGFuZCBGaXJlZm94IDMuMWIyICh1bmRlZmluZWQgdnMuIGVtcHR5IHN0
cmluZykuCitzaG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1snMCddIiwgInVuZGVmaW5l
ZCIpOworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJyddIiwgInVuZGVmaW5lZCIp
Oworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbMF0iLCAidW5kZWZpbmVkIik7Citz
aG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1sxXSIsICJ1bmRlZmluZWQiKTsKK3Nob3Vs
ZEJlKCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWy0xXSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJl
KCJhcHBsaWNhdGlvbkNhY2hlLml0ZW1zWy0yXSIsICJ1bmRlZmluZWQiKTsKK2FwcGxpY2F0aW9u
Q2FjaGUuaXRlbXNbMTAwXSA9ICJmb29iYXIiOworYXBwbGljYXRpb25DYWNoZS5pdGVtc1snMTAw
J10gPSAiZm9vYmFyIjsKK2FwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJ2ZvbyddID0gImJhciI7Citz
aG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1sxMDBdIiwgInVuZGVmaW5lZCIpOworc2hv
dWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXNbJzEwMCddIiwgInVuZGVmaW5lZCIpOworCitz
aG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1snZm9vJ10iLCAidW5kZWZpbmVkIik7Citz
aG91bGRCZSgiYXBwbGljYXRpb25DYWNoZS5pdGVtc1swLjFdIiwgInVuZGVmaW5lZCIpOworCit0
cnkgeworICAgIGFwcGxpY2F0aW9uQ2FjaGUuaGFzSXRlbSgnZm9vJyk7CisgICAgbG9nKCJGQUlM
OiBoYXNJdGVtIGRpZG4ndCByYWlzZSBhbiBleGNlcHRpb24iKTsKK30gY2F0Y2ggKGV4KSB7Cisg
ICAgaWYgKGV4LmNvZGUgPT0gMTEpCisgICAgICAgIGxvZygiUEFTUzogaGFzSXRlbSByYWlzZWQg
SU5WQUxJRF9TVEFURV9FUlIiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDogaGFzSXRl
bSByYWlzZWQgdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKK30KKwordHJ5IHsKKyAgICBh
cHBsaWNhdGlvbkNhY2hlLmFkZCgnZm9vJyk7CisgICAgbG9nKCJGQUlMOiBhZGQgZGlkbid0IHJh
aXNlIGFuIGV4Y2VwdGlvbiIpOworfSBjYXRjaCAoZXgpIHsKKyAgICBpZiAoZXguY29kZSA9PSAx
MSkKKyAgICAgICAgbG9nKCJQQVNTOiBhZGQgcmFpc2VkIElOVkFMSURfU1RBVEVfRVJSIik7Cisg
ICAgZWxzZQorICAgICAgICBsb2coIkZBSUw6IGFkZCByYWlzZWQgdW5leHBlY3RlZCBleGNlcHRp
b24gIiArIGV4KTsKK30KKwordHJ5IHsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLnJlbW92ZSgnYmFy
Jyk7CisgICAgbG9nKCJGQUlMOiByZW1vdmUgZGlkbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiIpOwor
fSBjYXRjaCAoZXgpIHsKKyAgICBpZiAoZXguY29kZSA9PSAxMSkKKyAgICAgICAgbG9nKCJQQVNT
OiByZW1vdmUgcmFpc2VkIElOVkFMSURfU1RBVEVfRVJSIik7CisgICAgZWxzZQorICAgICAgICBs
b2coIkZBSUw6IHJlbW92ZSByYWlzZWQgdW5leHBlY3RlZCBleGNlcHRpb24gIiArIGV4KTsKK30K
Kworc2hvdWxkQmUoImFwcGxpY2F0aW9uQ2FjaGUuaXRlbXMubGVuZ3RoIiwgIjAiKTsKKworCisK
K2xvZygiRE9ORSIpOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>