<?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>178504</bug_id>
          
          <creation_ts>2017-10-18 23:23:20 -0700</creation_ts>
          <short_desc>Consolidate calls to insertedInto and expand the coverage of NoEventDispatchAssertion</short_desc>
          <delta_ts>2017-10-20 14:30:12 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362061</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-18 23:23:20 -0700</bug_when>
    <thetext>Right now, there is a whole bunch of helper functions to call notifyChildNodeInserted and didFinishInsertingNode.
Consolidate these call sites into one with NoEventDispatchAssertion,
and make the exact timing at which event dispatch gets allowed clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362062</commentid>
    <comment_count>1</comment_count>
      <attachid>324208</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-18 23:33:20 -0700</bug_when>
    <thetext>Created attachment 324208
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362063</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-18 23:36:14 -0700</bug_when>
    <thetext>Attachment 324208 did not pass style-queue:


ERROR: Source/WebCore/dom/ContainerNode.h:73:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362065</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-18 23:37:50 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #2)
&gt; Attachment 324208 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/dom/ContainerNode.h:73:  enum members should use
&gt; InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums. 
&gt; [readability/enum_casing] [4]
&gt; Total errors found: 1 in 16 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

This is a false positive in the style checker for ChildChangeSource::API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362069</commentid>
    <comment_count>4</comment_count>
      <attachid>324210</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-19 00:10:57 -0700</bug_when>
    <thetext>Created attachment 324210
Updated for trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362071</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-19 00:13:59 -0700</bug_when>
    <thetext>Attachment 324210 did not pass style-queue:


ERROR: Source/WebCore/dom/ContainerNode.h:73:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362092</commentid>
    <comment_count>6</comment_count>
      <attachid>324210</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-19 02:26:15 -0700</bug_when>
    <thetext>Comment on attachment 324210
Updated for trunk

Nice, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362101</commentid>
    <comment_count>7</comment_count>
      <attachid>324210</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-19 03:07:51 -0700</bug_when>
    <thetext>Comment on attachment 324210
Updated for trunk

Thanks for the reviews!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362104</commentid>
    <comment_count>8</comment_count>
      <attachid>324210</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-19 03:34:35 -0700</bug_when>
    <thetext>Comment on attachment 324210
Updated for trunk

Clearing flags on attachment: 324210

Committed r223687: &lt;https://trac.webkit.org/changeset/223687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362105</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-19 03:34:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362863</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-20 14:30:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/35102384&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324208</attachid>
            <date>2017-10-18 23:33:20 -0700</date>
            <delta_ts>2017-10-19 00:10:56 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-178504-20171018233319.patch</filename>
            <type>text/plain</type>
            <size>22544</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzY3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTEwLTE4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnNvbGlkYXRlIGNhbGxzIHRv
IGluc2VydGVkSW50byBhbmQgZXhwYW5kIHRoZSBjb3ZlcmFnZSBvZiBOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODUwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvbnNvbGlkYXRlZCBjYWxscyB0byBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCwgY2hpbGRyZW5D
aGFuZ2VkLCBkaWRGaW5pc2hJbnNlcnRpbmdOb2RlLCBhbmQKKyAgICAgICAgZGlzcGF0Y2hDaGls
ZEluc2VydGlvbkV2ZW50cyBmb3IgaW5zZXJ0aW5nIGEgbm9kZSBieSBleGVjdXRlTm9kZUluc2Vy
dGlvbldpdGhTY3JpcHRBc3NlcnRpb24sCisgICAgICAgIGEgbmV3IHRlbXBsYXRlZnVuY3Rpb24g
d2hpY2ggdGFrZXMgYSBjbG9zdXJlIHRvIGRvIHRoZSBub2RlIGluc2VydGlvbiB0byBtYWtlIGV4
YWN0bHkgd2hlbgorICAgICAgICB0aGUgc2NyaXB0IGJlY29tZXMgcnVubmFibGUgY2xlYXIuCisK
KyAgICAgICAgQWRkZWQgYW4gZXhjZXB0aW9uIHRvIFNWR1RSZWZFbGVtZW50Ojp1cGRhdGVSZWZl
cmVuY2VkVGV4dCBzaW5jZSB0aGlzIGNvZGUgbXV0YXRlcyB1c2VyIGFnZW50CisgICAgICAgIHNo
YWRvdyByb290IGR1cmluZyBpbnNlcnRlZEludG8sIGFuZCB0dXJuZWQgQ2hpbGRDaGFuZ2VTb3Vy
Y2UgaW50byBhbiBlbnVtIGNsYXNzLgorCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTm9k
ZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24pOiBFeHRyYWN0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKTogRGVwbG95ZWQgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpjaGFuZ2VGb3JDaGlsZEluc2VydGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpub3RpZnlDaGlsZEluc2VydGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6IERlcGxv
eWVkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbi4gCisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlcGxhY2VBbGxDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6YXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjp1cGRhdGVUcmVlQWZ0ZXJJbnNl
cnRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBh
dGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
TGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
UmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleHQpOiBBbGxvdyBET00gbXV0YXRpb25zIGlu
c2lkZSB0aGUgdXNlciBhZ2VudCBzaGFkb3cgdHJlZSBoZXJlLgorCiAyMDE3LTEwLTE4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERvbid0IGV4cG9zZSByYXcg
SFRNTCBpbiBwYXN0ZWJvYXJkIHRvIHRoZSB3ZWIgY29udGVudApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmNwcAkocmV2aXNpb24gMjIzNjI4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAg
dW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YQogICAgIGlmIChpczxUZXh0
PigqdGhpcykgJiYgcGFyZW50Tm9kZSgpKQogICAgICAgICBkb3duY2FzdDxUZXh0PigqdGhpcyku
dXBkYXRlUmVuZGVyZXJBZnRlckNvbnRlbnRDaGFuZ2Uob2xkTGVuZ3RoLCAwKTsKIAotICAgIG5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlUGFy
c2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZVNvdXJjZTo6UGFyc2VyKTsKIAogICAgIHJldHVybiBjaGFyYWN0ZXJMZW5ndGhMaW1pdDsK
IH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFBbmRVcGRh
dGUoY29uCiAgICAgaWYgKGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS5m
cmFtZSgpLT5zZWxlY3Rpb24oKS50ZXh0V2FzUmVwbGFjZWQodGhpcywgb2Zmc2V0T2ZSZXBsYWNl
ZERhdGEsIG9sZExlbmd0aCwgbmV3TGVuZ3RoKTsKIAotICAgIG5vdGlmeVBhcmVudEFmdGVyQ2hh
bmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlQVBJKTsKKyAgICBub3RpZnlQYXJl
bnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6QVBJKTsKIAog
ICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRhKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDIyMzYyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNDAgQEAg
dW5zaWduZWQgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpEaXNhYgogTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29wZSogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpF
dmVudEFsbG93ZWRTY29wZTo6c19jdXJyZW50U2NvcGUgPSBudWxscHRyOwogI2VuZGlmCiAKK2Vu
dW0gY2xhc3MgUmVwbGFjZWRBbGxDaGlsZHJlbiB7IE5vLCBZZXMgfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgRE9NSW5zZXJ0aW9uV29yaz4KK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5l
ck5vZGUsIE5vZGUmIGNoaWxkLAorICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNl
IHNvdXJjZSwgUmVwbGFjZWRBbGxDaGlsZHJlbiByZXBsYWNlZEFsbENoaWxkcmVuLCBET01JbnNl
cnRpb25Xb3JrIGRvTm9kZUluc2VydGlvbikKK3sKKyAgICBOb2RlVmVjdG9yIHBvc3RJbnNlcnRp
b25Ob3RpZmljYXRpb25UYXJnZXRzOworICAgIHsKKyAgICAgICAgTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKyAgICAgICAgZG9Ob2RlSW5zZXJ0aW9uKCk7
CisgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUoY29udGFpbmVyTm9kZSkuY2hpbGRBZGRl
ZChjaGlsZCk7CisgICAgICAgIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzID0gbm90
aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoY29udGFpbmVyTm9kZSwgY2hpbGQpOworICAgIH0KKworICAg
IC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hhbmdlZCBpbnRvIE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbiBibG9jay4KKyAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENo
aWxkcmVuOjpZZXMpCisgICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFpbmVyTm9kZTo6QWxsQ2hpbGRyZW5SZXBsYWNl
ZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOworICAgIGVsc2UgeworICAgICAgICBjb250
YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7Cisg
ICAgICAgICAgICBjaGlsZC5pc0VsZW1lbnROb2RlKCkgPyBDb250YWluZXJOb2RlOjpFbGVtZW50
SW5zZXJ0ZWQgOiAoY2hpbGQuaXNUZXh0Tm9kZSgpID8gQ29udGFpbmVyTm9kZTo6VGV4dEluc2Vy
dGVkIDogQ29udGFpbmVyTm9kZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkKSwKKyAgICAgICAg
ICAgIEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjaGlsZCksCisgICAgICAgICAg
ICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCksCisgICAgICAgICAgICBzb3Vy
Y2UKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbjo6aXNFdmVudERpc3BhdGNoQWxsb3dlZEluU3VidHJlZShjaGlsZCkpOworICAgIGZvciAo
YXV0byYgdGFyZ2V0IDogcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCisgICAgICAg
IHRhcmdldC0+ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpOworCisgICAgaWYgKHNvdXJjZSA9PSBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6QVBJKQorICAgICAgICBkaXNwYXRjaENo
aWxkSW5zZXJ0aW9uRXZlbnRzKGNoaWxkKTsKK30KKwogc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+
IGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoTm9kZSYgbm9kZSwgTm9kZVZl
Y3RvciYgbm9kZXMpCiB7CiAgICAgaWYgKCFpczxEb2N1bWVudEZyYWdtZW50Pihub2RlKSkgewpA
QCAtMTQwLDcgKzE3NCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJv
bSgKICAgICAgICAgICAgIG9sZFBhcmVudC0+cmVtb3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+
bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKICAgICAgICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92
ZWQoKm9sZFBhcmVudCwgKmNoaWxkKTsKICAgICAgICAgfQotICAgICAgICBDaGlsZENoYW5nZSBj
aGFuZ2UgPSB7IEFsbENoaWxkcmVuUmVtb3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgQ2hpbGRDaGFu
Z2VTb3VyY2VQYXJzZXIgfTsKKyAgICAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlID0geyBBbGxDaGls
ZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIg
fTsKICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAgICAgfQogCkBAIC0yODUsMTQg
KzMxOSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjppbnNlcnRCCiAgICAg
ICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgewotICAgICAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnRE
aXNwYXRjaDsKLQorICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRp
b24oKnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZVNvdXJjZTo6QVBJLCBSZXBsYWNlZEFs
bENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1
cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4
dCwgY2hpbGQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9u
KGNoaWxkKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZp
ZWRFdmVudCgpOwpAQCAtMzM5LDMxICszNjksNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OmFwcGVu
ZENoaWxkQ29tbW9uKE5vCiAgICAgbV9sYXN0Q2hpbGQgPSAmY2hpbGQ7CiB9CiAKLWlubGluZSBh
dXRvIENvbnRhaW5lck5vZGU6OmNoYW5nZUZvckNoaWxkSW5zZXJ0aW9uKE5vZGUmIGNoaWxkLCBD
aGlsZENoYW5nZVNvdXJjZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxD
aGlsZHJlbikgLT4gQ2hpbGRDaGFuZ2UKLXsKLSAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9
PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIHJldHVybiB7IEFsbENoaWxkcmVu
UmVwbGFjZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OwotCi0gICAgcmV0dXJuIHsKLSAg
ICAgICAgY2hpbGQuaXNFbGVtZW50Tm9kZSgpID8gRWxlbWVudEluc2VydGVkIDogY2hpbGQuaXNU
ZXh0Tm9kZSgpID8gVGV4dEluc2VydGVkIDogTm9uQ29udGVudHNDaGlsZEluc2VydGVkLAotICAg
ICAgICBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpLAotICAgICAgICBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCksCi0gICAgICAgIHNvdXJjZQotICAg
IH07Ci19Ci0KLXZvaWQgQ29udGFpbmVyTm9kZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZChOb2RlJiBj
aGlsZCwgY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKLXsKLSAgICBDaGlsZExpc3RNdXRhdGlv
blNjb3BlKCp0aGlzKS5jaGlsZEFkZGVkKGNoaWxkKTsKLQotICAgIGF1dG8gcG9zdEluc2VydGlv
bk5vdGlmaWNhdGlvblRhcmdldHMgPSBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCgqdGhpcywgY2hp
bGQpOwotCi0gICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHRh
cmdldCA6IHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQotICAgICAgICB0YXJnZXQt
PmRpZEZpbmlzaEluc2VydGluZ05vZGUoKTsKLX0KLQogdm9pZCBDb250YWluZXJOb2RlOjpub3Rp
ZnlDaGlsZFJlbW92ZWQoTm9kZSYgY2hpbGQsIE5vZGUqIHByZXZpb3VzU2libGluZywgTm9kZSog
bmV4dFNpYmxpbmcsIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZSkKIHsKICAgICBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwpAQCAtMzg3LDE0ICszOTIsMTQg
QEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoTgogICAgIGlmIChuZXh0
Q2hpbGQucHJldmlvdXNTaWJsaW5nKCkgPT0gJm5ld0NoaWxkIHx8ICZuZXh0Q2hpbGQgPT0gJm5l
d0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgmZG9j
dW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5hZG9w
dE5vZGUobmV3Q2hpbGQpOwotCi0gICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHRDaGlsZCwgbmV3
Q2hpbGQpOworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhp
cywgbmV3Q2hpbGQsIENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRy
ZW46Ok5vLCBbJl0geworICAgICAgICBpZiAoJmRvY3VtZW50KCkgIT0gJm5ld0NoaWxkLmRvY3Vt
ZW50KCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLmFkb3B0Tm9kZShuZXdDaGlsZCk7CiAKLSAg
ICBuZXdDaGlsZC51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNlcnRp
b24oKTsKKyAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHRDaGlsZCwgbmV3Q2hpbGQpOwog
Ci0gICAgbm90aWZ5Q2hpbGRJbnNlcnRlZChuZXdDaGlsZCwgY2hhbmdlRm9yQ2hpbGRJbnNlcnRp
b24obmV3Q2hpbGQsIENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKSk7CisgICAgICAgIG5ld0NoaWxk
LnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpOworICAg
IH0pOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQo
Tm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkKQpAQCAtNDYxLDE2ICs0NjYsMTMgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cmVwbGFjZQogICAgICAgICBpZiAoY2hpbGQt
PnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIENoaWxkQ2hhbmdlU291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBb
Jl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29w
ZSgpKTsKICAgICAgICAgICAgIGlmIChyZWZDaGlsZCkKICAgICAgICAgICAgICAgICBpbnNlcnRC
ZWZvcmVDb21tb24oKnJlZkNoaWxkLCBjaGlsZC5nZXQoKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21tb24oY2hpbGQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKGNoaWxkLmdldCgpKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwpAQCAtNTQ0LDcg
KzU0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlbW92ZUMKICAgICAg
ICAgTm9kZSogbmV4dCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgICAgICByZW1vdmVCZXR3
ZWVuKHByZXYsIG5leHQsIGNoaWxkKTsKIAotICAgICAgICBub3RpZnlDaGlsZFJlbW92ZWQoY2hp
bGQsIHByZXYsIG5leHQsIENoaWxkQ2hhbmdlU291cmNlQVBJKTsKKyAgICAgICAgbm90aWZ5Q2hp
bGRSZW1vdmVkKGNoaWxkLCBwcmV2LCBuZXh0LCBDaGlsZENoYW5nZVNvdXJjZTo6QVBJKTsKICAg
ICB9CiAKICAgICByZWJ1aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZOZWNlc3NhcnkoKTsKQEAg
LTYwOSw3ICs2MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKE5v
CiAKICAgICAgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBvbGRDaGlsZCk7CiAKLSAgICAg
ICAgbm90aWZ5Q2hpbGRSZW1vdmVkKG9sZENoaWxkLCBwcmV2LCBuZXh0LCBDaGlsZENoYW5nZVNv
dXJjZVBhcnNlcik7CisgICAgICAgIG5vdGlmeUNoaWxkUmVtb3ZlZChvbGRDaGlsZCwgcHJldiwg
bmV4dCwgQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcik7CiAgICAgfQogfQogCkBAIC02NDMsOSAr
NjQ1LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZXBsYWNlQWxsQ2hpbGRyZW4oUgogCiAgICAg
ewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzOwotICAgICAgICB7Ci0gICAgICAgICAgICBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotCisgICAgICAgIGV4ZWN1dGVO
b2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbm9kZS5nZXQoKSwgQ2hpbGRD
aGFuZ2VTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0gewogICAgICAg
ICAgICAgZG9jdW1lbnQoKS5ub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKCp0aGlzKTsKIAogICAg
ICAgICAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgewpAQCAt
NjU4LDkgKzY1OCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUFsbENoaWxkcmVuKFIK
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUo
ZG9jdW1lbnQoKSwgKnRoaXMpOwogCiAgICAgICAgICAgICBhcHBlbmRDaGlsZENvbW1vbihub2Rl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihub2RlLCBS
ZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICByZWJ1
aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZOZWNlc3NhcnkoKTsKQEAgLTY5OCw4ICs2OTYsNyBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgICAgIG5vdGlm
eUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMsICpjaGlsZCk7CiAgICAgICAgIH0KIAotICAgICAgICBD
aGlsZENoYW5nZSBjaGFuZ2UgPSB7IEFsbENoaWxkcmVuUmVtb3ZlZCwgbnVsbHB0ciwgbnVsbHB0
ciwgQ2hpbGRDaGFuZ2VTb3VyY2VBUEkgfTsKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5n
ZSk7CisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChDaGlsZENoYW5nZSB7IEFsbENoaWxkcmVuUmVt
b3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSB9KTsKICAgICB9
CiAKICAgICByZWJ1aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZOZWNlc3NhcnkoKTsKQEAgLTc0
OSwxMyArNzQ2LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZEMK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5k
IG9mIHRoZSBsaXN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlU291cmNl
OjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQt
PnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKICAgICAgICAgICAgIGFwcGVu
ZENoaWxkQ29tbW9uKGNoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVwZGF0ZVRyZWVBZnRl
ckluc2VydGlvbihjaGlsZC5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIGRpc3Bh
dGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKQEAgLTc2OCwyNSArNzYyLDIwIEBAIHZvaWQgQ29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoTm8KICAgICBBU1NFUlQoIW5ld0NoaWxkLmlz
RG9jdW1lbnRGcmFnbWVudCgpKTsKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0
ZW1wbGF0ZVRhZykpOwogCi0gICAgewotICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24g
YXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotCisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2Ny
aXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdDaGlsZCwgQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAh
PSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2Rl
KG5ld0NoaWxkKTsKIAogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbihuZXdDaGlsZCk7CiAgICAg
ICAgIG5ld0NoaWxkLnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKLSAgICB9
Ci0KLSAgICBuZXdDaGlsZC51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJ
bnNlcnRpb24oKTsKLQotICAgIG5vdGlmeUNoaWxkSW5zZXJ0ZWQobmV3Q2hpbGQsIGNoYW5nZUZv
ckNoaWxkSW5zZXJ0aW9uKG5ld0NoaWxkLCBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikpOworICAg
ICAgICBuZXdDaGlsZC51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNl
cnRpb24oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBkb2N1bWVudCgpLmluY0RPTVRy
ZWVWZXJzaW9uKCk7Ci0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VB
UEkgJiYgY2hhbmdlLnR5cGUgIT0gVGV4dENoYW5nZWQpCisgICAgaWYgKGNoYW5nZS5zb3VyY2Ug
PT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSAmJiBjaGFuZ2UudHlwZSAhPSBUZXh0Q2hhbmdlZCkK
ICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuQ2hhbmdlZCgqdGhp
cyk7CiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3Jz
KCk7CiB9CkBAIC04NjMsMTUgKzg1Miw2IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1v
dmFsRXZlbnRzKE4KICAgICB9CiB9CiAKLXZvaWQgQ29udGFpbmVyTm9kZTo6dXBkYXRlVHJlZUFm
dGVySW5zZXJ0aW9uKE5vZGUmIGNoaWxkLCBSZXBsYWNlZEFsbENoaWxkcmVuIHJlcGxhY2VkQWxs
Q2hpbGRyZW4pCi17Ci0gICAgQVNTRVJUKGNoaWxkLnJlZkNvdW50KCkpOwotCi0gICAgbm90aWZ5
Q2hpbGRJbnNlcnRlZChjaGlsZCwgY2hhbmdlRm9yQ2hpbGRJbnNlcnRpb24oY2hpbGQsIENoaWxk
Q2hhbmdlU291cmNlQVBJLCByZXBsYWNlZEFsbENoaWxkcmVuKSk7Ci0KLSAgICBkaXNwYXRjaENo
aWxkSW5zZXJ0aW9uRXZlbnRzKGNoaWxkKTsKLX0KLQogRXhjZXB0aW9uT3I8RWxlbWVudCo+IENv
bnRhaW5lck5vZGU6OnF1ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMpCiB7CiAg
ICAgYXV0byBxdWVyeSA9IGRvY3VtZW50KCkuc2VsZWN0b3JRdWVyeUZvclN0cmluZyhzZWxlY3Rv
cnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAyMjM2Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWlu
ZXJOb2RlJiBjbG9uZSk7CiAKICAgICBlbnVtIENoaWxkQ2hhbmdlVHlwZSB7IEVsZW1lbnRJbnNl
cnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJbnNlcnRlZCwgVGV4dFJlbW92ZWQsIFRleHRDaGFu
Z2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25Db250
ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxkcmVuUmVwbGFjZWQgfTsKLSAgICBlbnVtIENoaWxk
Q2hhbmdlU291cmNlIHsgQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIsIENoaWxkQ2hhbmdlU291cmNl
QVBJIH07CisgICAgZW51bSBjbGFzcyBDaGlsZENoYW5nZVNvdXJjZSB7IFBhcnNlciwgQVBJIH07
CiAgICAgc3RydWN0IENoaWxkQ2hhbmdlIHsKICAgICAgICAgQ2hpbGRDaGFuZ2VUeXBlIHR5cGU7
CiAgICAgICAgIEVsZW1lbnQqIHByZXZpb3VzU2libGluZ0VsZW1lbnQ7CkBAIC0xNDIsMTIgKzE0
Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRCZWZvcmVDb21tb24oTm9kZSYgbmV4dENo
aWxkLCBOb2RlJiBvbGRDaGlsZCk7CiAgICAgdm9pZCBhcHBlbmRDaGlsZENvbW1vbihOb2RlJik7
CiAKLSAgICB2b2lkIG5vdGlmeUNoaWxkSW5zZXJ0ZWQoTm9kZSYgY2hpbGQsIGNvbnN0IENoaWxk
Q2hhbmdlJik7CiAgICAgdm9pZCBub3RpZnlDaGlsZFJlbW92ZWQoTm9kZSYgY2hpbGQsIE5vZGUq
IHByZXZpb3VzU2libGluZywgTm9kZSogbmV4dFNpYmxpbmcsIENoaWxkQ2hhbmdlU291cmNlKTsK
IAotICAgIGVudW0gY2xhc3MgUmVwbGFjZWRBbGxDaGlsZHJlbiB7IE5vLCBZZXMgfTsKLSAgICB2
b2lkIHVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihOb2RlJiBjaGlsZCwgUmVwbGFjZWRBbGxDaGls
ZHJlbiA9IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vKTsKLSAgICBzdGF0aWMgQ2hpbGRDaGFuZ2Ug
Y2hhbmdlRm9yQ2hpbGRJbnNlcnRpb24oTm9kZSYgY2hpbGQsIENoaWxkQ2hhbmdlU291cmNlLCBS
ZXBsYWNlZEFsbENoaWxkcmVuID0gUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8pOwogICAgIHZvaWQg
cmVidWlsZFNWR0V4dGVuc2lvbnNFbGVtZW50c0lmTmVjZXNzYXJ5KCk7CiAKICAgICBib29sIGlz
Q29udGFpbmVyTm9kZSgpIGNvbnN0ID0gZGVsZXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkocmV2aXNpb24gMjIzNjI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDQyLDcgKzIwNDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvclNp
YmxpbmdTdHlsZUNoYW5nZXMoCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdl
ZChjaGFuZ2UpOwotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFy
c2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIp
CiAgICAgICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZSgqdGhpcyk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFNpYmxpbmdDaGVja1R5cGUgY2hlY2tUeXBlID0gY2hhbmdlLnR5cGUgPT0gRWxlbWVu
dFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNyArNzYsNyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
CiB7CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlciB8fCBt
X2lzU2V0VGV4dENvbnRlbnRJblByb2dyZXNzKSB7CisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0g
Q2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciB8fCBtX2lzU2V0VGV4dENvbnRlbnRJblByb2dyZXNz
KSB7CiAgICAgICAgIG1faXNTZXRUZXh0Q29udGVudEluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xp
cFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFNW
R0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkCiB7CiAgICAgU1ZHR3JhcGhpY3NFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09
IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxk
Q2hhbmdlU291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZW5kZXJP
YmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNyArMTAxNyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IEMKIHsKICAgICBTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291
cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQ
YXJzZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlSW5zdGFuY2VzKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIy
MzYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQoCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAg
ICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQogICAgICAg
ICByZXR1cm47CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAg
IGlmICghcGFyZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNw
cAkocmV2aXNpb24gMjIzNjI4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBTVkdGaWx0ZXJF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYwogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3Vy
Y2VQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBh
cnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0g
cmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAyMjM2Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291
cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQ
YXJzZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNjI4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKLSAg
ICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAgICBpZiAo
Y2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNjI4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoYwogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0gICAg
aWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIpCisgICAgaWYgKGNo
YW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNjI4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1
LDcgKzE1NSw3IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb24KIHsK
ICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291
cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzYyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoCiB7
CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKLSAgICBpZiAoY2hh
bmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAgICBpZiAoY2hhbmdlLnNv
dXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCkBAIC0xNDMs
OCArMTQ0LDkgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleAogICAg
IGlmICh0YXJnZXQpCiAgICAgICAgIHRleHRDb250ZW50ID0gdGFyZ2V0LT50ZXh0Q29udGVudCgp
OwogCi0gICAgQVNTRVJUKHNoYWRvd1Jvb3QoKSk7Ci0gICAgU2hhZG93Um9vdCogcm9vdCA9IHNo
YWRvd1Jvb3QoKTsKKyAgICBTaGFkb3dSb290KiByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgp
OworICAgIEFTU0VSVChyb290KTsKKyAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50
QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqcm9vdCk7CiAgICAgaWYgKCFyb290LT5maXJzdENo
aWxkKCkpCiAgICAgICAgIHJvb3QtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgp
LCB0ZXh0Q29udGVudCkpOwogICAgIGVsc2Ugewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324210</attachid>
            <date>2017-10-19 00:10:57 -0700</date>
            <delta_ts>2017-10-19 03:34:35 -0700</delta_ts>
            <desc>Updated for trunk</desc>
            <filename>bug-178504-20171019001057.patch</filename>
            <type>text/plain</type>
            <size>22537</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzY3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTEwLTE4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnNvbGlkYXRlIGNhbGxzIHRv
IGluc2VydGVkSW50byBhbmQgZXhwYW5kIHRoZSBjb3ZlcmFnZSBvZiBOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODUwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvbnNvbGlkYXRlZCBjYWxscyB0byBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCwgY2hpbGRyZW5D
aGFuZ2VkLCBkaWRGaW5pc2hJbnNlcnRpbmdOb2RlLCBhbmQKKyAgICAgICAgZGlzcGF0Y2hDaGls
ZEluc2VydGlvbkV2ZW50cyBmb3IgaW5zZXJ0aW5nIGEgbm9kZSBieSBleGVjdXRlTm9kZUluc2Vy
dGlvbldpdGhTY3JpcHRBc3NlcnRpb24sCisgICAgICAgIGEgbmV3IHRlbXBsYXRlZnVuY3Rpb24g
d2hpY2ggdGFrZXMgYSBjbG9zdXJlIHRvIGRvIHRoZSBub2RlIGluc2VydGlvbiB0byBtYWtlIGV4
YWN0bHkgd2hlbgorICAgICAgICB0aGUgc2NyaXB0IGJlY29tZXMgcnVubmFibGUgY2xlYXIuCisK
KyAgICAgICAgQWRkZWQgYW4gZXhjZXB0aW9uIHRvIFNWR1RSZWZFbGVtZW50Ojp1cGRhdGVSZWZl
cmVuY2VkVGV4dCBzaW5jZSB0aGlzIGNvZGUgbXV0YXRlcyB1c2VyIGFnZW50CisgICAgICAgIHNo
YWRvdyByb290IGR1cmluZyBpbnNlcnRlZEludG8sIGFuZCB0dXJuZWQgQ2hpbGRDaGFuZ2VTb3Vy
Y2UgaW50byBhbiBlbnVtIGNsYXNzLgorCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTm9k
ZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24pOiBFeHRyYWN0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKTogRGVwbG95ZWQgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpjaGFuZ2VGb3JDaGlsZEluc2VydGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpub3RpZnlDaGlsZEluc2VydGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6IERlcGxv
eWVkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbi4gCisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlcGxhY2VBbGxDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6YXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjp1cGRhdGVUcmVlQWZ0ZXJJbnNl
cnRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBh
dGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
TGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
UmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleHQpOiBBbGxvdyBET00gbXV0YXRpb25zIGlu
c2lkZSB0aGUgdXNlciBhZ2VudCBzaGFkb3cgdHJlZSBoZXJlLgorCiAyMDE3LTEwLTE4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERvbid0IGV4cG9zZSByYXcg
SFRNTCBpbiBwYXN0ZWJvYXJkIHRvIHRoZSB3ZWIgY29udGVudApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmNwcAkocmV2aXNpb24gMjIzNjI4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAg
dW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YQogICAgIGlmIChpczxUZXh0
PigqdGhpcykgJiYgcGFyZW50Tm9kZSgpKQogICAgICAgICBkb3duY2FzdDxUZXh0PigqdGhpcyku
dXBkYXRlUmVuZGVyZXJBZnRlckNvbnRlbnRDaGFuZ2Uob2xkTGVuZ3RoLCAwKTsKIAotICAgIG5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlUGFy
c2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZVNvdXJjZTo6UGFyc2VyKTsKIAogICAgIHJldHVybiBjaGFyYWN0ZXJMZW5ndGhMaW1pdDsK
IH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFBbmRVcGRh
dGUoY29uCiAgICAgaWYgKGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS5m
cmFtZSgpLT5zZWxlY3Rpb24oKS50ZXh0V2FzUmVwbGFjZWQodGhpcywgb2Zmc2V0T2ZSZXBsYWNl
ZERhdGEsIG9sZExlbmd0aCwgbmV3TGVuZ3RoKTsKIAotICAgIG5vdGlmeVBhcmVudEFmdGVyQ2hh
bmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlQVBJKTsKKyAgICBub3RpZnlQYXJl
bnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6QVBJKTsKIAog
ICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRhKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDIyMzYyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNDAgQEAg
dW5zaWduZWQgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpEaXNhYgogTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29wZSogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpF
dmVudEFsbG93ZWRTY29wZTo6c19jdXJyZW50U2NvcGUgPSBudWxscHRyOwogI2VuZGlmCiAKK2Vu
dW0gY2xhc3MgUmVwbGFjZWRBbGxDaGlsZHJlbiB7IE5vLCBZZXMgfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgRE9NSW5zZXJ0aW9uV29yaz4KK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5l
ck5vZGUsIE5vZGUmIGNoaWxkLAorICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNl
IHNvdXJjZSwgUmVwbGFjZWRBbGxDaGlsZHJlbiByZXBsYWNlZEFsbENoaWxkcmVuLCBET01JbnNl
cnRpb25Xb3JrIGRvTm9kZUluc2VydGlvbikKK3sKKyAgICBOb2RlVmVjdG9yIHBvc3RJbnNlcnRp
b25Ob3RpZmljYXRpb25UYXJnZXRzOworICAgIHsKKyAgICAgICAgTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKyAgICAgICAgZG9Ob2RlSW5zZXJ0aW9uKCk7
CisgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUoY29udGFpbmVyTm9kZSkuY2hpbGRBZGRl
ZChjaGlsZCk7CisgICAgICAgIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzID0gbm90
aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoY29udGFpbmVyTm9kZSwgY2hpbGQpOworICAgIH0KKworICAg
IC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hhbmdlZCBpbnRvIE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbiBibG9jay4KKyAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENo
aWxkcmVuOjpZZXMpCisgICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFpbmVyTm9kZTo6QWxsQ2hpbGRyZW5SZXBsYWNl
ZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOworICAgIGVsc2UgeworICAgICAgICBjb250
YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7Cisg
ICAgICAgICAgICBjaGlsZC5pc0VsZW1lbnROb2RlKCkgPyBDb250YWluZXJOb2RlOjpFbGVtZW50
SW5zZXJ0ZWQgOiAoY2hpbGQuaXNUZXh0Tm9kZSgpID8gQ29udGFpbmVyTm9kZTo6VGV4dEluc2Vy
dGVkIDogQ29udGFpbmVyTm9kZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkKSwKKyAgICAgICAg
ICAgIEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjaGlsZCksCisgICAgICAgICAg
ICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCksCisgICAgICAgICAgICBzb3Vy
Y2UKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQVNTRVJUKE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbjo6aXNFdmVudERpc3BhdGNoQWxsb3dlZEluU3VidHJlZShjaGlsZCkpOworICAgIGZvciAo
YXV0byYgdGFyZ2V0IDogcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCisgICAgICAg
IHRhcmdldC0+ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpOworCisgICAgaWYgKHNvdXJjZSA9PSBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6QVBJKQorICAgICAgICBkaXNwYXRjaENo
aWxkSW5zZXJ0aW9uRXZlbnRzKGNoaWxkKTsKK30KKwogc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+
IGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoTm9kZSYgbm9kZSwgTm9kZVZl
Y3RvciYgbm9kZXMpCiB7CiAgICAgaWYgKCFpczxEb2N1bWVudEZyYWdtZW50Pihub2RlKSkgewpA
QCAtMTQwLDcgKzE3NCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJv
bSgKICAgICAgICAgICAgIG9sZFBhcmVudC0+cmVtb3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+
bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKICAgICAgICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92
ZWQoKm9sZFBhcmVudCwgKmNoaWxkKTsKICAgICAgICAgfQotICAgICAgICBDaGlsZENoYW5nZSBj
aGFuZ2UgPSB7IEFsbENoaWxkcmVuUmVtb3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgQ2hpbGRDaGFu
Z2VTb3VyY2VQYXJzZXIgfTsKKyAgICAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlID0geyBBbGxDaGls
ZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIg
fTsKICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAgICAgfQogCkBAIC0yODUsMTQg
KzMxOSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjppbnNlcnRCCiAgICAg
ICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgewotICAgICAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFzc2VydE5vRXZlbnRE
aXNwYXRjaDsKLQorICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRp
b24oKnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZVNvdXJjZTo6QVBJLCBSZXBsYWNlZEFs
bENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1
cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4
dCwgY2hpbGQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9u
KGNoaWxkKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZp
ZWRFdmVudCgpOwpAQCAtMzM5LDMxICszNjksNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OmFwcGVu
ZENoaWxkQ29tbW9uKE5vCiAgICAgbV9sYXN0Q2hpbGQgPSAmY2hpbGQ7CiB9CiAKLWlubGluZSBh
dXRvIENvbnRhaW5lck5vZGU6OmNoYW5nZUZvckNoaWxkSW5zZXJ0aW9uKE5vZGUmIGNoaWxkLCBD
aGlsZENoYW5nZVNvdXJjZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxD
aGlsZHJlbikgLT4gQ2hpbGRDaGFuZ2UKLXsKLSAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9
PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIHJldHVybiB7IEFsbENoaWxkcmVu
UmVwbGFjZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OwotCi0gICAgcmV0dXJuIHsKLSAg
ICAgICAgY2hpbGQuaXNFbGVtZW50Tm9kZSgpID8gRWxlbWVudEluc2VydGVkIDogY2hpbGQuaXNU
ZXh0Tm9kZSgpID8gVGV4dEluc2VydGVkIDogTm9uQ29udGVudHNDaGlsZEluc2VydGVkLAotICAg
ICAgICBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpLAotICAgICAgICBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCksCi0gICAgICAgIHNvdXJjZQotICAg
IH07Ci19Ci0KLXZvaWQgQ29udGFpbmVyTm9kZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZChOb2RlJiBj
aGlsZCwgY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKLXsKLSAgICBDaGlsZExpc3RNdXRhdGlv
blNjb3BlKCp0aGlzKS5jaGlsZEFkZGVkKGNoaWxkKTsKLQotICAgIGF1dG8gcG9zdEluc2VydGlv
bk5vdGlmaWNhdGlvblRhcmdldHMgPSBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCgqdGhpcywgY2hp
bGQpOwotCi0gICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7Ci0KLSAgICBmb3IgKGF1dG8mIHRh
cmdldCA6IHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQotICAgICAgICB0YXJnZXQt
PmRpZEZpbmlzaEluc2VydGluZ05vZGUoKTsKLX0KLQogdm9pZCBDb250YWluZXJOb2RlOjpub3Rp
ZnlDaGlsZFJlbW92ZWQoTm9kZSYgY2hpbGQsIE5vZGUqIHByZXZpb3VzU2libGluZywgTm9kZSog
bmV4dFNpYmxpbmcsIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZSkKIHsKICAgICBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwpAQCAtMzg3LDE0ICszOTIsMTQg
QEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoTgogICAgIGlmIChuZXh0
Q2hpbGQucHJldmlvdXNTaWJsaW5nKCkgPT0gJm5ld0NoaWxkIHx8ICZuZXh0Q2hpbGQgPT0gJm5l
d0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgmZG9j
dW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5hZG9w
dE5vZGUobmV3Q2hpbGQpOwotCi0gICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHRDaGlsZCwgbmV3
Q2hpbGQpOworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhp
cywgbmV3Q2hpbGQsIENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRy
ZW46Ok5vLCBbJl0geworICAgICAgICBpZiAoJmRvY3VtZW50KCkgIT0gJm5ld0NoaWxkLmRvY3Vt
ZW50KCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLmFkb3B0Tm9kZShuZXdDaGlsZCk7CiAKLSAg
ICBuZXdDaGlsZC51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNlcnRp
b24oKTsKKyAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHRDaGlsZCwgbmV3Q2hpbGQpOwog
Ci0gICAgbm90aWZ5Q2hpbGRJbnNlcnRlZChuZXdDaGlsZCwgY2hhbmdlRm9yQ2hpbGRJbnNlcnRp
b24obmV3Q2hpbGQsIENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKSk7CisgICAgICAgIG5ld0NoaWxk
LnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpOworICAg
IH0pOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQo
Tm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkKQpAQCAtNDYxLDE2ICs0NjYsMTMgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cmVwbGFjZQogICAgICAgICBpZiAoY2hpbGQt
PnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIENoaWxkQ2hhbmdlU291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBb
Jl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29w
ZSgpKTsKICAgICAgICAgICAgIGlmIChyZWZDaGlsZCkKICAgICAgICAgICAgICAgICBpbnNlcnRC
ZWZvcmVDb21tb24oKnJlZkNoaWxkLCBjaGlsZC5nZXQoKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21tb24oY2hpbGQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKGNoaWxkLmdldCgpKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwpAQCAtNTQ0LDcg
KzU0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlbW92ZUMKICAgICAg
ICAgTm9kZSogbmV4dCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgICAgICByZW1vdmVCZXR3
ZWVuKHByZXYsIG5leHQsIGNoaWxkKTsKIAotICAgICAgICBub3RpZnlDaGlsZFJlbW92ZWQoY2hp
bGQsIHByZXYsIG5leHQsIENoaWxkQ2hhbmdlU291cmNlQVBJKTsKKyAgICAgICAgbm90aWZ5Q2hp
bGRSZW1vdmVkKGNoaWxkLCBwcmV2LCBuZXh0LCBDaGlsZENoYW5nZVNvdXJjZTo6QVBJKTsKICAg
ICB9CiAKICAgICByZWJ1aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZOZWNlc3NhcnkoKTsKQEAg
LTYwOSw3ICs2MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKE5v
CiAKICAgICAgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBvbGRDaGlsZCk7CiAKLSAgICAg
ICAgbm90aWZ5Q2hpbGRSZW1vdmVkKG9sZENoaWxkLCBwcmV2LCBuZXh0LCBDaGlsZENoYW5nZVNv
dXJjZVBhcnNlcik7CisgICAgICAgIG5vdGlmeUNoaWxkUmVtb3ZlZChvbGRDaGlsZCwgcHJldiwg
bmV4dCwgQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcik7CiAgICAgfQogfQogCkBAIC02NDMsOSAr
NjQ1LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZXBsYWNlQWxsQ2hpbGRyZW4oUgogCiAgICAg
ewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzOwotICAgICAgICB7Ci0gICAgICAgICAgICBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotCisgICAgICAgIGV4ZWN1dGVO
b2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbm9kZS5nZXQoKSwgQ2hpbGRD
aGFuZ2VTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0gewogICAgICAg
ICAgICAgZG9jdW1lbnQoKS5ub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKCp0aGlzKTsKIAogICAg
ICAgICAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgewpAQCAt
NjU4LDkgKzY1OCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUFsbENoaWxkcmVuKFIK
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUo
ZG9jdW1lbnQoKSwgKnRoaXMpOwogCiAgICAgICAgICAgICBhcHBlbmRDaGlsZENvbW1vbihub2Rl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihub2RlLCBS
ZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICByZWJ1
aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZOZWNlc3NhcnkoKTsKQEAgLTY5OCw4ICs2OTYsNyBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgICAgIG5vdGlm
eUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMsICpjaGlsZCk7CiAgICAgICAgIH0KIAotICAgICAgICBD
aGlsZENoYW5nZSBjaGFuZ2UgPSB7IEFsbENoaWxkcmVuUmVtb3ZlZCwgbnVsbHB0ciwgbnVsbHB0
ciwgQ2hpbGRDaGFuZ2VTb3VyY2VBUEkgfTsKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5n
ZSk7CisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChDaGlsZENoYW5nZSB7IEFsbENoaWxkcmVuUmVt
b3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSB9KTsKICAgICB9
CiAKICAgICByZWJ1aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZOZWNlc3NhcnkoKTsKQEAgLTc0
OSwxMyArNzQ2LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZEMK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5k
IG9mIHRoZSBsaXN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlU291cmNl
OjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQt
PnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKICAgICAgICAgICAgIGFwcGVu
ZENoaWxkQ29tbW9uKGNoaWxkKTsKLSAgICAgICAgfQotCi0gICAgICAgIHVwZGF0ZVRyZWVBZnRl
ckluc2VydGlvbihjaGlsZC5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIGRpc3Bh
dGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKQEAgLTc2OCwyNSArNzYyLDIwIEBAIHZvaWQgQ29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoTm8KICAgICBBU1NFUlQoIW5ld0NoaWxkLmlz
RG9jdW1lbnRGcmFnbWVudCgpKTsKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0
ZW1wbGF0ZVRhZykpOwogCi0gICAgewotICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24g
YXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotCisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2Ny
aXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdDaGlsZCwgQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAh
PSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2Rl
KG5ld0NoaWxkKTsKIAogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbihuZXdDaGlsZCk7CiAgICAg
ICAgIG5ld0NoaWxkLnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKLSAgICB9
Ci0KLSAgICBuZXdDaGlsZC51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJ
bnNlcnRpb24oKTsKLQotICAgIG5vdGlmeUNoaWxkSW5zZXJ0ZWQobmV3Q2hpbGQsIGNoYW5nZUZv
ckNoaWxkSW5zZXJ0aW9uKG5ld0NoaWxkLCBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikpOworICAg
ICAgICBuZXdDaGlsZC51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNl
cnRpb24oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBkb2N1bWVudCgpLmluY0RPTVRy
ZWVWZXJzaW9uKCk7Ci0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VB
UEkgJiYgY2hhbmdlLnR5cGUgIT0gVGV4dENoYW5nZWQpCisgICAgaWYgKGNoYW5nZS5zb3VyY2Ug
PT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSAmJiBjaGFuZ2UudHlwZSAhPSBUZXh0Q2hhbmdlZCkK
ICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuQ2hhbmdlZCgqdGhp
cyk7CiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3Jz
KCk7CiB9CkBAIC04NjMsMTUgKzg1Miw2IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1v
dmFsRXZlbnRzKE4KICAgICB9CiB9CiAKLXZvaWQgQ29udGFpbmVyTm9kZTo6dXBkYXRlVHJlZUFm
dGVySW5zZXJ0aW9uKE5vZGUmIGNoaWxkLCBSZXBsYWNlZEFsbENoaWxkcmVuIHJlcGxhY2VkQWxs
Q2hpbGRyZW4pCi17Ci0gICAgQVNTRVJUKGNoaWxkLnJlZkNvdW50KCkpOwotCi0gICAgbm90aWZ5
Q2hpbGRJbnNlcnRlZChjaGlsZCwgY2hhbmdlRm9yQ2hpbGRJbnNlcnRpb24oY2hpbGQsIENoaWxk
Q2hhbmdlU291cmNlQVBJLCByZXBsYWNlZEFsbENoaWxkcmVuKSk7Ci0KLSAgICBkaXNwYXRjaENo
aWxkSW5zZXJ0aW9uRXZlbnRzKGNoaWxkKTsKLX0KLQogRXhjZXB0aW9uT3I8RWxlbWVudCo+IENv
bnRhaW5lck5vZGU6OnF1ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMpCiB7CiAg
ICAgYXV0byBxdWVyeSA9IGRvY3VtZW50KCkuc2VsZWN0b3JRdWVyeUZvclN0cmluZyhzZWxlY3Rv
cnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCShyZXZpc2lvbiAyMjM2Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWlu
ZXJOb2RlJiBjbG9uZSk7CiAKICAgICBlbnVtIENoaWxkQ2hhbmdlVHlwZSB7IEVsZW1lbnRJbnNl
cnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJbnNlcnRlZCwgVGV4dFJlbW92ZWQsIFRleHRDaGFu
Z2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25Db250
ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxkcmVuUmVwbGFjZWQgfTsKLSAgICBlbnVtIENoaWxk
Q2hhbmdlU291cmNlIHsgQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIsIENoaWxkQ2hhbmdlU291cmNl
QVBJIH07CisgICAgZW51bSBjbGFzcyBDaGlsZENoYW5nZVNvdXJjZSB7IFBhcnNlciwgQVBJIH07
CiAgICAgc3RydWN0IENoaWxkQ2hhbmdlIHsKICAgICAgICAgQ2hpbGRDaGFuZ2VUeXBlIHR5cGU7
CiAgICAgICAgIEVsZW1lbnQqIHByZXZpb3VzU2libGluZ0VsZW1lbnQ7CkBAIC0xNDIsMTIgKzE0
Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRCZWZvcmVDb21tb24oTm9kZSYgbmV4dENo
aWxkLCBOb2RlJiBvbGRDaGlsZCk7CiAgICAgdm9pZCBhcHBlbmRDaGlsZENvbW1vbihOb2RlJik7
CiAKLSAgICB2b2lkIG5vdGlmeUNoaWxkSW5zZXJ0ZWQoTm9kZSYgY2hpbGQsIGNvbnN0IENoaWxk
Q2hhbmdlJik7CiAgICAgdm9pZCBub3RpZnlDaGlsZFJlbW92ZWQoTm9kZSYgY2hpbGQsIE5vZGUq
IHByZXZpb3VzU2libGluZywgTm9kZSogbmV4dFNpYmxpbmcsIENoaWxkQ2hhbmdlU291cmNlKTsK
IAotICAgIGVudW0gY2xhc3MgUmVwbGFjZWRBbGxDaGlsZHJlbiB7IE5vLCBZZXMgfTsKLSAgICB2
b2lkIHVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihOb2RlJiBjaGlsZCwgUmVwbGFjZWRBbGxDaGls
ZHJlbiA9IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vKTsKLSAgICBzdGF0aWMgQ2hpbGRDaGFuZ2Ug
Y2hhbmdlRm9yQ2hpbGRJbnNlcnRpb24oTm9kZSYgY2hpbGQsIENoaWxkQ2hhbmdlU291cmNlLCBS
ZXBsYWNlZEFsbENoaWxkcmVuID0gUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8pOwogICAgIHZvaWQg
cmVidWlsZFNWR0V4dGVuc2lvbnNFbGVtZW50c0lmTmVjZXNzYXJ5KCk7CiAKICAgICBib29sIGlz
Q29udGFpbmVyTm9kZSgpIGNvbnN0ID0gZGVsZXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkocmV2aXNpb24gMjIzNjI4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDQyLDcgKzIwNDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvclNp
YmxpbmdTdHlsZUNoYW5nZXMoCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdl
ZChjaGFuZ2UpOwotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFy
c2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIp
CiAgICAgICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZSgqdGhpcyk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIFNpYmxpbmdDaGVja1R5cGUgY2hlY2tUeXBlID0gY2hhbmdlLnR5cGUgPT0gRWxlbWVu
dFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNyArNzYsNyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
CiB7CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlciB8fCBt
X2lzU2V0VGV4dENvbnRlbnRJblByb2dyZXNzKSB7CisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0g
Q2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciB8fCBtX2lzU2V0VGV4dENvbnRlbnRJblByb2dyZXNz
KSB7CiAgICAgICAgIG1faXNTZXRUZXh0Q29udGVudEluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xp
cFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFNW
R0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkCiB7CiAgICAgU1ZHR3JhcGhpY3NFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09
IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxk
Q2hhbmdlU291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZW5kZXJP
YmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNyArMTAxNyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IEMKIHsKICAgICBTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291
cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQ
YXJzZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlSW5zdGFuY2VzKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIy
MzYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQoCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAg
ICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQogICAgICAg
ICByZXR1cm47CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAg
IGlmICghcGFyZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNw
cAkocmV2aXNpb24gMjIzNjI4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBTVkdGaWx0ZXJF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYwogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3Vy
Y2VQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBh
cnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0g
cmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAyMjM2Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291
cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQ
YXJzZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNjI4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKLSAg
ICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAgICBpZiAo
Y2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNjI4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoYwogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0gICAg
aWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIpCisgICAgaWYgKGNo
YW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzNjI4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1
LDcgKzE1NSw3IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb24KIHsK
ICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291
cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMzYyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoCiB7
CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKLSAgICBpZiAoY2hh
bmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAgICBpZiAoY2hhbmdlLnNv
dXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM2MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCkBAIC0xNDMs
OCArMTQ0LDkgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleAogICAg
IGlmICh0YXJnZXQpCiAgICAgICAgIHRleHRDb250ZW50ID0gdGFyZ2V0LT50ZXh0Q29udGVudCgp
OwogCi0gICAgQVNTRVJUKHNoYWRvd1Jvb3QoKSk7Ci0gICAgU2hhZG93Um9vdCogcm9vdCA9IHNo
YWRvd1Jvb3QoKTsKKyAgICBhdXRvIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAg
QVNTRVJUKHJvb3QpOworICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2Vk
U2NvcGUgYWxsb3dlZFNjb3BlKCpyb290KTsKICAgICBpZiAoIXJvb3QtPmZpcnN0Q2hpbGQoKSkK
ICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHRD
b250ZW50KSk7CiAgICAgZWxzZSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>