<?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>178035</bug_id>
          
          <creation_ts>2017-10-06 16:12:48 -0700</creation_ts>
          <short_desc>Reduce includes in Document.h</short_desc>
          <delta_ts>2017-10-09 10:25:59 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1357801</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-06 16:12:48 -0700</bug_when>
    <thetext>Reduce includes in Document.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357803</commentid>
    <comment_count>1</comment_count>
      <attachid>323060</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-06 16:13:28 -0700</bug_when>
    <thetext>Created attachment 323060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357805</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-06 16:15:28 -0700</bug_when>
    <thetext>Attachment 323060 did not pass style-queue:


ERROR: Source/WTF/wtf/HashCountedSet.h:290:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/HashCountedSet.h:297:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/HashCountedSet.h:304:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/HashCountedSet.h:311:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/HashCountedSet.h:318:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WTF/wtf/Forward.h:34:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 7 in 5 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>1357948</commentid>
    <comment_count>3</comment_count>
      <attachid>323099</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-07 12:52:35 -0700</bug_when>
    <thetext>Created attachment 323099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357981</commentid>
    <comment_count>4</comment_count>
      <attachid>323099</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-07 17:14:20 -0700</bug_when>
    <thetext>Comment on attachment 323099
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=323099&amp;action=review

&gt; Source/WebCore/dom/Document.h:186
&gt; +template&lt;typename&gt; class ExceptionOr;

Should probably do this in a lot of other files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358275</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-09 10:24:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/r223049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358276</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-09 10:25:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/34888220&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323060</attachid>
            <date>2017-10-06 16:13:28 -0700</date>
            <delta_ts>2017-10-07 12:52:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178035-20171006161329.patch</filename>
            <type>text/plain</type>
            <size>27558</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjMwMDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTEwLTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIGluY2x1ZGVzIGluIERv
Y3VtZW50LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDoKKyAgICAg
ICAgKFdURjo6VHJhaXRzPjo6c3dhcCk6CisgICAgICAgIChXVEY6OlRyYWl0cz46OnNpemUgY29u
c3QpOgorICAgICAgICAoV1RGOjpUcmFpdHM+OjpjYXBhY2l0eSBjb25zdCk6CisgICAgICAgIChX
VEY6OlRyYWl0cz46OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpdHM+OjpiZWdp
bik6CisgICAgICAgIChXVEY6OlRyYWl0cz46OmVuZCk6CisgICAgICAgIChXVEY6OlRyYWl0cz46
OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaXRzPjo6ZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6VHJhaXRzPjo6ZmluZCk6CisgICAgICAgIChXVEY6OlRyYWl0cz46OmZpbmQgY29u
c3QpOgorICAgICAgICAoV1RGOjpUcmFpdHM+Ojpjb250YWlucyBjb25zdCk6CisgICAgICAgIChX
VEY6OlRyYWl0cz46OmNvdW50IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaXRzPjo6YWRkKToK
KyAgICAgICAgKFdURjo6VHJhaXRzPjo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6VHJhaXRzPjo6
cmVtb3ZlQWxsKToKKyAgICAgICAgKFdURjo6VHJhaXRzPjo6Y2xlYXIpOgorICAgICAgICAoV1RG
Ojpjb3B5VG9WZWN0b3IpOgorCiAyMDE3LTEwLTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyNzkx
IGFuZCByMjIyODczLgpJbmRleDogU291cmNlL1dURi93dGYvRm9yd2FyZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAkocmV2aXNpb24gMjIyOTg5KQorKysgU291cmNl
L1dURi93dGYvRm9yd2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw5IEBAIG5hbWVz
cGFjZSBXVEYgewogc3RydWN0IEZhc3RNYWxsb2M7CiBjbGFzcyBDcmFzaE9uT3ZlcmZsb3c7CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaCB7IHVzaW5nIEhhc2ggPSB2
b2lkOyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRnVuY3Rpb247Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IExhenlOZXZlckRlc3Ryb3llZDsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVyRGVz
dHJveWVkOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3B0aW9uU2V0OwpAQCAtNDEsNiAr
NDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIFQ+IGNsYXNzIFZhcmlhbnQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHkgPSAwLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIgPSBDcmFz
aE9uT3ZlcmZsb3csIHNpemVfdCBtaW5DYXBhY2l0eSA9IDE2LCB0eXBlbmFtZSBNYWxsb2MgPSBG
YXN0TWFsbG9jPiBjbGFzcyBWZWN0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlPjo6SGFzaCwgdHlw
ZW5hbWUgVHJhaXRzID0gSGFzaFRyYWl0czxWYWx1ZT4+IGNsYXNzIEhhc2hDb3VudGVkU2V0Owog
CiBjbGFzcyBBdG9taWNTdHJpbmc7CiBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwpAQCAtNjMsNiAr
NjYsNyBAQCB1c2luZyBXVEY6OkJpbmFyeVNlbWFwaG9yZTsKIHVzaW5nIFdURjo6Q1N0cmluZzsK
IHVzaW5nIFdURjo6RnVuY3Rpb247CiB1c2luZyBXVEY6OkZ1bmN0aW9uRGlzcGF0Y2hlcjsKK3Vz
aW5nIFdURjo6SGFzaENvdW50ZWRTZXQ7CiB1c2luZyBXVEY6OkxhenlOZXZlckRlc3Ryb3llZDsK
IHVzaW5nIFdURjo6TmV2ZXJEZXN0cm95ZWQ7CiB1c2luZyBXVEY6Ok9wdGlvblNldDsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvSGFzaENvdW50ZWRTZXQuaAkocmV2aXNpb24gMjIyOTg5KQorKysgU291cmNlL1dURi93
dGYvSGFzaENvdW50ZWRTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMzAwICsyMywzMDEgQEAK
IAogI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zID0gdHlwZW5hbWUgRGVmYXVs
dEhhc2g8VmFsdWU+OjpIYXNoLCB0eXBlbmFtZSBUcmFpdHMgPSBIYXNoVHJhaXRzPFZhbHVlPj4K
LSAgICBjbGFzcyBIYXNoQ291bnRlZFNldCBmaW5hbCB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxWYWx1ZSwg
dW5zaWduZWQsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz4gSW1wbFR5cGU7Ci0gICAgcHVibGljOgot
ICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBJbXBsVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
SW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVm
IHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwotCi0gICAgICAgIEhhc2hD
b3VudGVkU2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgSGFzaENvdW50ZWRT
ZXQoc3RkOjppbml0aWFsaXplcl9saXN0PHR5cGVuYW1lIEltcGxUeXBlOjpLZXlWYWx1ZVBhaXJU
eXBlPiBpbml0aWFsaXplckxpc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYga2V5VmFsdWVQYWlyIDogaW5pdGlhbGl6ZXJMaXN0KQotICAgICAgICAgICAgICAgIGFk
ZChrZXlWYWx1ZVBhaXIua2V5LCBrZXlWYWx1ZVBhaXIudmFsdWUpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgSGFzaENvdW50ZWRTZXQoc3RkOjppbml0aWFsaXplcl9saXN0PHR5cGVuYW1lIEltcGxU
eXBlOjpLZXlUeXBlPiBpbml0aWFsaXplckxpc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdmFsdWUgOiBpbml0aWFsaXplckxpc3QpCi0gICAgICAgICAgICAgICAg
YWRkKHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzd2FwKEhhc2hD
b3VudGVkU2V0Jik7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7Ci0g
ICAgICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OwotICAgICAgICAKLSAgICAgICAgLy8gSXRlcmF0b3JzIGl0ZXJhdGUgb3ZlciBwYWly
cyBvZiB2YWx1ZXMgYW5kIGNvdW50cy4KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKTsKLSAgICAg
ICAgaXRlcmF0b3IgZW5kKCk7Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7
Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAg
aXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmKTsKLSAgICAgICAgY29uc3RfaXRlcmF0b3Ig
ZmluZChjb25zdCBWYWx1ZVR5cGUmKSBjb25zdDsKLSAgICAgICAgYm9vbCBjb250YWlucyhjb25z
dCBWYWx1ZVR5cGUmKSBjb25zdDsKLSAgICAgICAgdW5zaWduZWQgY291bnQoY29uc3QgVmFsdWVU
eXBlJikgY29uc3Q7Ci0KLSAgICAgICAgLy8gSW5jcmVtZW50cyB0aGUgY291bnQgaWYgYW4gZXF1
YWwgdmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50LgotICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVl
IGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIHZhbHVlJ3MgbG9jYXRpb24sCi0gICAg
ICAgIC8vIGFuZCBhbiBpc05ld0VudHJ5IGJvb2wgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBpdCBp
cyBhIG5ldyBvciBleGlzdGluZyBlbnRyeS4KLSAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBW
YWx1ZVR5cGUmKTsKLSAgICAgICAgQWRkUmVzdWx0IGFkZChWYWx1ZVR5cGUmJik7Ci0KLSAgICAg
ICAgLy8gSW5jcmVtZW50cyB0aGUgY291bnQgb2YgYSB2YWx1ZSBieSB0aGUgcGFzc2VkIGFtb3Vu
dC4KLSAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmLCB1bnNpZ25lZCk7Ci0g
ICAgICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYsIHVuc2lnbmVkKTsKLQotICAgICAgICAv
LyBEZWNyZW1lbnRzIHRoZSBjb3VudCBvZiB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIGl0IGlmIGNv
dW50IGdvZXMgZG93biB0byB6ZXJvLgotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHZh
bHVlIGlzIHJlbW92ZWQuCi0gICAgICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwot
ICAgICAgICBib29sIHJlbW92ZShpdGVyYXRvcik7Ci0gCi0gICAgICAgIC8vIFJlbW92ZXMgdGhl
IHZhbHVlLCByZWdhcmRsZXNzIG9mIGl0cyBjb3VudC4KLSAgICAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIGEgdmFsdWUgd2FzIHJlbW92ZWQuCi0gICAgICAgIGJvb2wgcmVtb3ZlQWxsKGl0ZXJhdG9y
KTsKLSAgICAgICAgYm9vbCByZW1vdmVBbGwoY29uc3QgVmFsdWVUeXBlJik7Ci0KLSAgICAgICAg
Ly8gQ2xlYXJzIHRoZSB3aG9sZSBzZXQuCi0gICAgICAgIHZvaWQgY2xlYXIoKTsKLQotICAgICAg
ICAvLyBPdmVybG9hZHMgZm9yIHNtYXJ0IHBvaW50ZXIga2V5cyB0aGF0IHRha2UgdGhlIHJhdyBw
b2ludGVyIHR5cGUgYXMgdGhlIHBhcmFtZXRlci4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
ViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFs
dWUsIGl0ZXJhdG9yPjo6dHlwZSBmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlw
ZSk7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBjb25zdF9pdGVyYXRvcj46OnR5cGUg
ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpIGNvbnN0OwotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJ
c1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgY29udGFpbnModHlwZW5hbWUgR2V0UHRy
SGVscGVyPFY+OjpQdHJUeXBlKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9
IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUs
IHVuc2lnbmVkPjo6dHlwZSBjb3VudCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUp
IGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgcmVtb3Zl
KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSk7Ci0KLSAgICBwcml2YXRlOgotICAg
ICAgICBJbXBsVHlwZSBtX2ltcGw7Ci0gICAgfTsKLQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICBpbmxp
bmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6c3dh
cChIYXNoQ291bnRlZFNldCYgb3RoZXIpCi0gICAgewotICAgICAgICBtX2ltcGwuc3dhcChvdGhl
ci5tX2ltcGwpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSB1bnNpZ25l
ZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6c2l6ZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCi0gICAgfQotICAgIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIHVuc2lnbmVkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpjYXBhY2l0eSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9pbXBsLmNhcGFjaXR5KCk7IAotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAg
IGlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
Ojppc0VtcHR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplKCkgPT0gMDsgCi0g
ICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciBIYXNoQ291bnRlZFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faW1wbC5iZWdpbigpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGlu
ZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
aXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmVu
ZCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOyAKLSAgICB9Ci0gICAgCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnN0X2l0ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpiZWdpbigpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9pbXBsLmJlZ2luKCk7IAotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlu
bGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6Y29uc3RfaXRlcmF0b3IgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cz46OmVuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLmVuZCgpOyAK
LSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50
ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOyAKLSAgICB9
Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8
VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnN0X2l0ZXJhdG9yIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOyAK
LSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICBpbmxpbmUgYm9vbCBIYXNoQ291bnRlZFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVmFsdWVUeXBl
JiB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwuY29udGFpbnModmFs
dWUpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSB1bnNpZ25lZCBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y291bnQoY29uc3QgVmFsdWVU
eXBlJiB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwuZ2V0KHZhbHVl
KTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdCBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFZhbHVlVHlw
ZSAmdmFsdWUpCi0gICAgewotICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2
YWx1ZSwgMCk7Ci0gICAgICAgICsrcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6QWRkUmVzdWx0IEhh
c2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjphZGQoVmFsdWVUeXBl
JiYgdmFsdWUpCi0gICAgewotICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZChz
dGQ6OmZvcndhcmQ8VmFsdWU+KHZhbHVlKSwgMCk7Ci0gICAgICAgICsrcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgot
ICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSwgdW5zaWduZWQgY291bnQpCi0gICAg
ewotICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7Ci0gICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY291bnQ7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIHR5cGVuYW1lIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChWYWx1ZVR5cGUmJiB2
YWx1ZSwgdW5zaWduZWQgY291bnQpCi0gICAgewotICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0g
bV9pbXBsLmFkZChzdGQ6OmZvcndhcmQ8VmFsdWU+KHZhbHVlKSwgMCk7Ci0gICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgKz0gY291bnQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlbW92ZShmaW5kKHZhbHVlKSk7Ci0gICAgfQotICAg
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZShpdGVyYXRvciBpdCkKLSAgICB7Ci0gICAgICAg
IGlmIChpdCA9PSBlbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB1
bnNpZ25lZCBvbGRWYWwgPSBpdC0+dmFsdWU7Ci0gICAgICAgIEFTU0VSVChvbGRWYWwpOwotICAg
ICAgICB1bnNpZ25lZCBuZXdWYWwgPSBvbGRWYWwgLSAxOwotICAgICAgICBpZiAobmV3VmFsKSB7
Ci0gICAgICAgICAgICBpdC0+dmFsdWUgPSBuZXdWYWw7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2ltcGwucmVtb3ZlKGl0KTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIGJvb2wgSGFz
aENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZUFsbChjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlbW92ZUFsbChmaW5k
KHZhbHVlKSk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIGJvb2wgSGFz
aENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZUFsbChpdGVy
YXRvciBpdCkKLSAgICB7Ci0gICAgICAgIGlmIChpdCA9PSBlbmQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBtX2ltcGwucmVtb3ZlKGl0KTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIHZvaWQgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNsZWFyKCkKLSAgICB7Ci0g
ICAgICAgIG1faW1wbC5jbGVhcigpOyAKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgVmVjdG9yVHlwZT4KLSAgICBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz4mIGNvbGxlY3Rpb24sIFZlY3Rv
clR5cGUmIHZlY3RvcikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaENvdW50
ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJh
dG9yOwotICAgICAgICAKLSAgICAgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7
Ci0gICAgICAgIAotICAgICAgICBpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsKLSAg
ICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCi0gICAgICAgICAgICB2ZWN0b3JbaV0g
PSAqaXQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBjb3B5VG9WZWN0
b3IoY29uc3QgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz4mIGNv
bGxlY3Rpb24sIFZlY3RvcjxWYWx1ZT4mIHZlY3RvcikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNv
bnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgICAKLSAgICAgICAgdmVjdG9yLnJlc2l6ZShj
b2xsZWN0aW9uLnNpemUoKSk7Ci0gICAgICAgIAotICAgICAgICBpdGVyYXRvciBpdCA9IGNvbGxl
Y3Rpb24uYmVnaW4oKTsKLSAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaXQgIT0gZW5kOyArK2l0LCArK2kpCi0gICAg
ICAgICAgICB2ZWN0b3JbaV0gPSAoKml0KS5rZXk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZh
bHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxW
Pjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC5m
aW5kKHZhbHVlKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1
ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUs
IGNvbnN0X2l0ZXJhdG9yPjo6dHlwZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC5maW5k
KHZhbHVlKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWPgotICAgIGlubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHM+Ojpjb250YWlucyh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFs
dWUpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVl
LCBib29sPjo6dHlwZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1
ZSk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4K
LSAgICBpbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzPjo6Y291bnQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25z
dCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgdW5zaWdu
ZWQ+Ojp0eXBlCi0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLmdldCh2YWx1ZSk7Ci0gICAg
fQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICBpbmxp
bmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVt
b3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlCi0gICAgewot
ICAgICAgICByZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKLSAgICB9Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgorY2xh
c3MgSGFzaENvdW50ZWRTZXQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8VmFsdWUsIHVuc2lnbmVkLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+IEltcGxUeXBlOworcHVibGljOgorICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVU
eXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwor
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJh
dG9yOworICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7
CisKKyAgICBIYXNoQ291bnRlZFNldCgpCisgICAgeworICAgIH0KKworICAgIEhhc2hDb3VudGVk
U2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx0eXBlbmFtZSBJbXBsVHlwZTo6S2V5VmFsdWVQYWly
VHlwZT4gaW5pdGlhbGl6ZXJMaXN0KQorICAgIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBr
ZXlWYWx1ZVBhaXIgOiBpbml0aWFsaXplckxpc3QpCisgICAgICAgICAgICBhZGQoa2V5VmFsdWVQ
YWlyLmtleSwga2V5VmFsdWVQYWlyLnZhbHVlKTsKKyAgICB9CisKKyAgICBIYXNoQ291bnRlZFNl
dChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dHlwZW5hbWUgSW1wbFR5cGU6OktleVR5cGU+IGluaXRp
YWxpemVyTGlzdCkKKyAgICB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFsdWUgOiBpbml0
aWFsaXplckxpc3QpCisgICAgICAgICAgICBhZGQodmFsdWUpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHN3YXAoSGFzaENvdW50ZWRTZXQmKTsKKyAgICAKKyAgICB1bnNpZ25lZCBzaXplKCkgY29u
c3Q7CisgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKKyAgICAKKyAgICAvLyBJdGVyYXRvcnMgaXRlcmF0ZSBvdmVyIHBhaXJzIG9mIHZhbHVl
cyBhbmQgY291bnRzLgorICAgIGl0ZXJhdG9yIGJlZ2luKCk7CisgICAgaXRlcmF0b3IgZW5kKCk7
CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgICBjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdDsKKyAgICAKKyAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYpOwor
ICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgVmFsdWVUeXBlJikgY29uc3Q7CisgICAgYm9v
bCBjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjb3VudChj
b25zdCBWYWx1ZVR5cGUmKSBjb25zdDsKKworICAgIC8vIEluY3JlbWVudHMgdGhlIGNvdW50IGlm
IGFuIGVxdWFsIHZhbHVlIGlzIGFscmVhZHkgcHJlc2VudC4KKyAgICAvLyBUaGUgcmV0dXJuIHZh
bHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIHZhbHVlJ3MgbG9jYXRpb24sCisg
ICAgLy8gYW5kIGFuIGlzTmV3RW50cnkgYm9vbCB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGl0IGlz
IGEgbmV3IG9yIGV4aXN0aW5nIGVudHJ5LgorICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgVmFsdWVU
eXBlJik7CisgICAgQWRkUmVzdWx0IGFkZChWYWx1ZVR5cGUmJik7CisKKyAgICAvLyBJbmNyZW1l
bnRzIHRoZSBjb3VudCBvZiBhIHZhbHVlIGJ5IHRoZSBwYXNzZWQgYW1vdW50LgorICAgIEFkZFJl
c3VsdCBhZGQoY29uc3QgVmFsdWVUeXBlJiwgdW5zaWduZWQpOworICAgIEFkZFJlc3VsdCBhZGQo
VmFsdWVUeXBlJiYsIHVuc2lnbmVkKTsKKworICAgIC8vIERlY3JlbWVudHMgdGhlIGNvdW50IG9m
IHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgaXQgaWYgY291bnQgZ29lcyBkb3duIHRvIHplcm8uCisg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyByZW1vdmVkLgorICAgIGJvb2wgcmVt
b3ZlKGNvbnN0IFZhbHVlVHlwZSYpOworICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKKworICAg
IC8vIFJlbW92ZXMgdGhlIHZhbHVlLCByZWdhcmRsZXNzIG9mIGl0cyBjb3VudC4KKyAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgYSB2YWx1ZSB3YXMgcmVtb3ZlZC4KKyAgICBib29sIHJlbW92ZUFsbChp
dGVyYXRvcik7CisgICAgYm9vbCByZW1vdmVBbGwoY29uc3QgVmFsdWVUeXBlJik7CisKKyAgICAv
LyBDbGVhcnMgdGhlIHdob2xlIHNldC4KKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICAvLyBPdmVy
bG9hZHMgZm9yIHNtYXJ0IHBvaW50ZXIga2V5cyB0aGF0IHRha2UgdGhlIHJhdyBwb2ludGVyIHR5
cGUgYXMgdGhlIHBhcmFtZXRlci4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBl
PiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+
Ojp0eXBlIGZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPFY+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlwZW5hbWUgR2V0
UHRySGVscGVyPFY+OjpQdHJUeXBlKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0g
VmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwg
Ym9vbD46OnR5cGUgY29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgdW5zaWduZWQ+Ojp0eXBlIGNvdW50KHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGJvb2w+Ojp0eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0
clR5cGUpOworCitwcml2YXRlOgorICAgIEltcGxUeXBlIG1faW1wbDsKK307CisKKwordGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cz4KK2lubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHM+Ojpzd2FwKEhhc2hDb3VudGVkU2V0JiBvdGhlcikKK3sKKyAgICBtX2ltcGwuc3dhcChvdGhl
ci5tX2ltcGwpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgoraW5saW5lIHVuc2lnbmVkIEhhc2hDb3VudGVkU2V0
PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbXBsLnNpemUoKTsgCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CitpbmxpbmUgdW5zaWduZWQgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNhcGFjaXR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pbXBsLmNhcGFjaXR5KCk7IAorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgoraW5saW5l
IGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmlzRW1w
dHkoKSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgoraW5saW5l
IHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpp
dGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVn
aW4oKQoreworICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsgCit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Citpbmxp
bmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
Oml0ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpl
bmQoKQoreworICAgIHJldHVybiBtX2ltcGwuZW5kKCk7IAorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgoraW5saW5l
IHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpj
b25zdF9pdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6YmVnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsgCit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHM+CitpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cz46OmNvbnN0X2l0ZXJhdG9yIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjplbmQoKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwuZW5kKCk7
IAorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzPgoraW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQoreworICAg
IHJldHVybiBtX2ltcGwuZmluZCh2YWx1ZSk7IAorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgoraW5saW5lIHR5cGVu
YW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb25zdF9p
dGVyYXRvciBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Zmlu
ZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwuZmlu
ZCh2YWx1ZSk7IAorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgoraW5saW5lIGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFs
dWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1ZSk7IAorfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzPgoraW5saW5lIHVuc2lnbmVkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+Ojpjb3VudChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAoreworICAg
IHJldHVybiBtX2ltcGwuZ2V0KHZhbHVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KK2lubGluZSB0eXBlbmFt
ZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6QWRkUmVzdWx0
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjphZGQoY29uc3Qg
VmFsdWVUeXBlICZ2YWx1ZSkKK3sKKyAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2
YWx1ZSwgMCk7CisgICAgKytyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHM+CitpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUs
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKFZhbHVlVHlwZSYmIHZhbHVlKQoreworICAgIEFk
ZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwuYWRkKHN0ZDo6Zm9yd2FyZDxWYWx1ZT4odmFsdWUpLCAw
KTsKKyAgICArK3Jlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cz4KK2lubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSwgdW5zaWduZWQgY291
bnQpCit7CisgICAgQWRkUmVzdWx0IHJlc3VsdCA9IG1faW1wbC5hZGQodmFsdWUsIDApOworICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gY291bnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cz4KK2lubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjphZGQoVmFsdWVUeXBlJiYgdmFsdWUsIHVuc2lnbmVkIGNvdW50KQor
eworICAgIEFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwuYWRkKHN0ZDo6Zm9yd2FyZDxWYWx1ZT4o
dmFsdWUpLCAwKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CitpbmxpbmUgYm9vbCBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFs
dWUpCit7CisgICAgcmV0dXJuIHJlbW92ZShmaW5kKHZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Citp
bmxpbmUgYm9vbCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
cmVtb3ZlKGl0ZXJhdG9yIGl0KQoreworICAgIGlmIChpdCA9PSBlbmQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgb2xkVmFsID0gaXQtPnZhbHVlOworICAgIEFTU0VS
VChvbGRWYWwpOworICAgIHVuc2lnbmVkIG5ld1ZhbCA9IG9sZFZhbCAtIDE7CisgICAgaWYgKG5l
d1ZhbCkgeworICAgICAgICBpdC0+dmFsdWUgPSBuZXdWYWw7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBtX2ltcGwucmVtb3ZlKGl0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cz4KK2lubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+OjpyZW1vdmVBbGwoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gcmVtb3ZlQWxsKGZpbmQodmFsdWUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KK2lubGluZSBib29s
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmVBbGwo
aXRlcmF0b3IgaXQpCit7CisgICAgaWYgKGl0ID09IGVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX2ltcGwucmVtb3ZlKGl0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4KK2lubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+OjpjbGVhcigpCit7CisgICAgbV9pbXBsLmNsZWFyKCk7IAorfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBWZWN0b3JUeXBlPgoraW5saW5lIHZvaWQgY29weVRvVmVjdG9yKGNvbnN0IEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+JiBjb2xsZWN0aW9uLCBWZWN0
b3JUeXBlJiB2ZWN0b3IpCit7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7Cisg
ICAgCisgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7CisgICAgCisgICAgaXRl
cmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7CisgICAgaXRlcmF0b3IgZW5kID0gY29sbGVj
dGlvbi5lbmQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQsICsr
aSkKKyAgICAgICAgdmVjdG9yW2ldID0gKml0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgoraW5saW5lIHZvaWQg
Y29weVRvVmVjdG9yKGNvbnN0IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+JiBjb2xsZWN0aW9uLCBWZWN0b3I8VmFsdWU+JiB2ZWN0b3IpCit7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CisgICAgCisgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0
aW9uLnNpemUoKSk7CisgICAgCisgICAgaXRlcmF0b3IgaXQgPSBjb2xsZWN0aW9uLmJlZ2luKCk7
CisgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQsICsraSkKKyAgICAgICAgdmVjdG9yW2ldID0gKCppdCku
a2V5OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzPgordGVtcGxhdGU8dHlwZW5hbWUgVj4KK2lubGluZSBhdXRvIEhh
c2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKHR5cGVuYW1l
IEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZQoreworICAgIHJldHVybiBt
X2ltcGwuZmluZCh2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWPgor
aW5saW5lIGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0
b3I+Ojp0eXBlCit7CisgICAgcmV0dXJuIG1faW1wbC5maW5kKHZhbHVlKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cz4KK3RlbXBsYXRlPHR5cGVuYW1lIFY+CitpbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1
ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVy
PFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK3sKKyAgICByZXR1cm4gbV9pbXBsLmNvbnRh
aW5zKHZhbHVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KK3RlbXBsYXRlPHR5cGVuYW1lIFY+CitpbmxpbmUg
YXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y291bnQo
dHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgdW5zaWduZWQ+Ojp0eXBlCit7
CisgICAgcmV0dXJuIG1faW1wbC5nZXQodmFsdWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgordGVtcGxhdGU8
dHlwZW5hbWUgVj4KK2lubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+OjpyZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZh
bHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9v
bD46OnR5cGUKK3sKKyAgICByZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsKK30KIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzAwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTEwLTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVkdWNlIGluY2x1ZGVzIGluIERvY3VtZW50LmgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisKIDIwMTctMTAtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgbW9yZSBpbmZyYXN0cnVjdHVy
ZSB0byBhcHBseSBjdXN0b20gaGVhZGVyIGZpZWxkcyB0byBzYW1lLW9yaWdpbiByZXF1ZXN0cwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIyMjk4OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTAgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNv
bG9yLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50RXZl
bnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRTZWxl
Y3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgpAQCAt
NTIsMTMgKzUwLDEwIEBACiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVXNlckFj
dGlvbkVsZW1lbnRTZXQuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgotI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKQEAgLTE4Niw2ICsxODEs
OSBAQCBjbGFzcyBYUGF0aEV4cHJlc3Npb247CiBjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7CiBjbGFz
cyBYUGF0aFJlc3VsdDsKIAordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwor
CitlbnVtIENvbGxlY3Rpb25UeXBlOwogZW51bSBjbGFzcyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OwogCiB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwpAQCAtMjQyLDcg
KzI0MCw3IEBAIGVudW0gTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIHsKIGNvbnN0IGludCBudW1O
b2RlTGlzdEludmFsaWRhdGlvblR5cGVzID0gSW52YWxpZGF0ZU9uQW55QXR0ckNoYW5nZSArIDE7
CiAKIGVudW0gY2xhc3MgRXZlbnRIYW5kbGVyUmVtb3ZhbCB7IE9uZSwgQWxsIH07Ci10eXBlZGVm
IEhhc2hDb3VudGVkU2V0PE5vZGUqPiBFdmVudFRhcmdldFNldDsKK3VzaW5nIEV2ZW50VGFyZ2V0
U2V0ID0gSGFzaENvdW50ZWRTZXQ8Tm9kZSo+OwogCiBlbnVtIERvY3VtZW50Q2xhc3MgewogICAg
IERlZmF1bHREb2N1bWVudENsYXNzID0gMCwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323099</attachid>
            <date>2017-10-07 12:52:35 -0700</date>
            <delta_ts>2017-10-07 17:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178035-20171007125243.patch</filename>
            <type>text/plain</type>
            <size>1694</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIGlu
Y2x1ZGVzIGluIERvY3VtZW50LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3ODAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKIDIwMTctMTAtMDcgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIEltcGxlbWVu
dCBQYXltZW50UmVxdWVzdC5zaG93KCkgYW5kIFBheW1lbnRSZXF1ZXN0LmhpZGUoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIyMzAyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTAgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3RvckNs
aWVudC5oIgogI2luY2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgpAQCAtNTIsMTMg
KzUwLDExIEBACiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVXNlckFjdGlvbkVs
ZW1lbnRTZXQuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgotI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgot
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKQEAgLTE4Nyw2ICsxODMsOSBAQCBj
bGFzcyBYUGF0aEV4cHJlc3Npb247CiBjbGFzcyBYUGF0aE5TUmVzb2x2ZXI7CiBjbGFzcyBYUGF0
aFJlc3VsdDsKIAordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOworCitlbnVt
IENvbGxlY3Rpb25UeXBlOwogZW51bSBjbGFzcyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OwogCiB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90Owo=
</data>
<flag name="review"
          id="342891"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>