<?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>35774</bug_id>
          
          <creation_ts>2010-03-04 17:22:30 -0800</creation_ts>
          <short_desc>[DRT/Chromium] Add AccessibilityController.{cpp,h} and AccessibilityUIElement.{cpp,h}</short_desc>
          <delta_ts>2010-03-09 03:56:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>35902</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>hamaji</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>196280</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-04 17:22:30 -0800</bug_when>
    <thetext>[DRT/Chromium] Add AccessibilityController.{cpp,h} and AccessibilityUIElement.{cpp,h}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196282</commentid>
    <comment_count>1</comment_count>
      <attachid>50069</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-04 17:28:51 -0800</bug_when>
    <thetext>Created attachment 50069
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196283</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-04 17:30:07 -0800</bug_when>
    <thetext>Attachment 50069 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:260:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebKitTools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:481:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebKitTools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:515:  One space before end of line comments  [whitespace/comments] [5]
WebKitTools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitTools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:559:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebKitTools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:563:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebKitTools/DumpRenderTree/chromium/AccessibilityController.cpp:44:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebKitTools/DumpRenderTree/chromium/AccessibilityController.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 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>196287</commentid>
    <comment_count>3</comment_count>
      <attachid>50071</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-04 17:36:55 -0800</bug_when>
    <thetext>Created attachment 50071
Proposed patch rev.2 (style fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197055</commentid>
    <comment_count>4</comment_count>
      <attachid>50071</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-07 18:47:07 -0800</bug_when>
    <thetext>Comment on attachment 50071
Proposed patch rev.2 (style fixes)

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197056</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-07 20:25:04 -0800</bug_when>
    <thetext>Thanks.  I&apos;ll remove TODO(name) comments before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197060</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-07 21:03:15 -0800</bug_when>
    <thetext>Landed as r55655.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50069</attachid>
            <date>2010-03-04 17:28:51 -0800</date>
            <delta_ts>2010-03-04 17:36:49 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-35774-20100305102849.patch</filename>
            <type>text/plain</type>
            <size>37530</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjMjNmYWVhLi45MTE5NDRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDMt
MDUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtEUlQvQ2hyb21pdW1dIEFkZCBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlciBhbmQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3NzQKKworICAgICAgICBBZGQg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgYW5kIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2xhc3Nl
cywKKyAgICAgICAgd2hpY2ggYXJlIGdvaW5nIHRvIGJlIHVzZWQgYnkgRHVtcFJlbmRlclRyZWUg
Q2hyb21pdW0gcG9ydC4gVGhlc2UKKyAgICAgICAgZmlsZXMgYXJlIGJhc2VkIG9uOgorICAgICAg
ICAtIHNyYy93ZWJraXQvdG9vbHMvdGVzdF9zaGVsbC9hY2Nlc3NpYmlsaXR5X2NvbnRyb2xsZXIu
e2NjLGh9IGFuZAorICAgICAgICAtIHNyYy93ZWJraXQvdG9vbHMvdGVzdF9zaGVsbC9hY2Nlc3Np
YmlsaXR5X3VpX2VsZW1lbnQue2NjLGh9CisgICAgICAgIG9mIENocm9taXVtIHJldi40MDQ5Mi4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQWRkZWQuCisKIDIw
MTAtMDMtMDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzI2OWVkCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIK
KyNpbmNsdWRlICJwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmgiCisjaW5jbHVkZSAicHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViRnJhbWUu
aCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicHVibGljL1dlYlZp
ZXcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCisgICAgOiBtX3No
ZWxsKHNoZWxsKSB7CisKKyAgICBiaW5kTWV0aG9kKCJsb2dGb2N1c0V2ZW50cyIsCisgICAgICAg
ICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHNDYWxsYmFjayk7CisgICAg
YmluZE1ldGhvZCgibG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMiLAorICAgICAgICAmQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzQ2FsbGJhY2spOworCisgICAg
YmluZFByb3BlcnR5KCJmb2N1c2VkRWxlbWVudCIsCisgICAgICAgICZBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnRHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5
KCJyb290RWxlbWVudCIsCisgICAgICAgICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVs
ZW1lbnRHZXR0ZXJDYWxsYmFjayk7CisKKyAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6YmluZFRvSmF2YXNjcmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdl
YlN0cmluZyYgY2xhc3NuYW1lKQoreworICAgIFdlYkFjY2Vzc2liaWxpdHlDYWNoZTo6ZW5hYmxl
QWNjZXNzaWJpbGl0eSgpOworICAgIENwcEJvdW5kQ2xhc3M6OmJpbmRUb0phdmFzY3JpcHQoZnJh
bWUsIGNsYXNzbmFtZSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0
KCkKK3sKKyAgICBtX3Jvb3RFbGVtZW50ID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdCgpOworICAg
IG1fZm9jdXNlZEVsZW1lbnQgPSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisgICAgbV9lbGVt
ZW50cy5jbGVhcigpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRGb2N1
c2VkRWxlbWVudChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBmb2N1c2VkRWxlbWVudCkK
K3sKKyAgICBtX2ZvY3VzZWRFbGVtZW50ID0gZm9jdXNlZEVsZW1lbnQ7Cit9CisKK0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRGb2N1c2VkRWxlbWVu
dCgpCit7CisgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQuaXNOdWxsKCkpCisgICAgICAgIG1fZm9j
dXNlZEVsZW1lbnQgPSBtX3NoZWxsLT53ZWJWaWV3KCktPmFjY2Vzc2liaWxpdHlPYmplY3QoKTsK
KyAgICByZXR1cm4gbV9lbGVtZW50cy5jcmVhdGUobV9mb2N1c2VkRWxlbWVudCk7Cit9CisKK0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpnZXRSb290RWxl
bWVudCgpCit7CisgICAgaWYgKG1fcm9vdEVsZW1lbnQuaXNOdWxsKCkpCisgICAgICAgIG1fcm9v
dEVsZW1lbnQgPSBtX3NoZWxsLT53ZWJWaWV3KCktPmFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKyAg
ICByZXR1cm4gbV9lbGVtZW50cy5jcmVhdGVSb290KG1fcm9vdEVsZW1lbnQpOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dGb2N1c0V2ZW50c0NhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICAvLyBBcyBvZiByNDkw
MzEsIHRoaXMgaXMgbm90IGJlaW5nIHVzZWQgdXBzdHJlYW0uCisgICAgcmVzdWx0LT5zZXROdWxs
KCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ1Njcm9sbGluZ1N0YXJ0
RXZlbnRzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0
KQoreworICAgIC8vIEFzIG9mIHI0OTAzMSwgdGhpcyBpcyBub3QgYmVpbmcgdXNlZCB1cHN0cmVh
bS4KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6Zm9jdXNlZEVsZW1lbnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCit7
CisgICAgcmVzdWx0LT5zZXQoKihnZXRGb2N1c2VkRWxlbWVudCgpLT5nZXRBc0NwcFZhcmlhbnQo
KSkpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudEdldHRl
ckNhbGxiYWNrKENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldCgqKGdldFJv
b3RFbGVtZW50KCktPmdldEFzQ3BwVmFyaWFudCgpKSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCogcmVzdWx0KQoreworICAgIHByaW50ZigiQ09OU09MRSBNRVNTQUdFOiBKYXZhU2Ny
aXB0IEVSUk9SOiB1bmtub3duIG1ldGhvZCBjYWxsZWQgb24gIgorICAgICAgICAgICAiQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJcbiIpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc4
ODM1OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9o
CisKKyNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3Q7CitjbGFzcyBXZWJGcmFtZTsKK30KKworY2xhc3MgVGVzdFNoZWxsOworCitjbGFzcyBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlciA6IHB1YmxpYyBDcHBCb3VuZENsYXNzIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihUZXN0U2hlbGwqKTsKKworICAg
IC8vIFNoYWRvdyB0byBpbmNsdWRlIGFjY2Vzc2liaWxpdHkgaW5pdGlhbGl6YXRpb24uCisgICAg
dm9pZCBiaW5kVG9KYXZhc2NyaXB0KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6Oldl
YlN0cmluZyYgY2xhc3NuYW1lKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIHNldEZv
Y3VzZWRFbGVtZW50KGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOworICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldEZvY3VzZWRFbGVtZW50KCk7CisgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogZ2V0Um9vdEVsZW1lbnQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBC
b3VuZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzCisgICAgdm9pZCBsb2dGb2N1c0V2ZW50c0NhbGxi
YWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGxvZ1Nj
cm9sbGluZ1N0YXJ0RXZlbnRzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOworICAgIHZvaWQgZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CisKKyAgICB2b2lkIGZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2so
Q3BwVmFyaWFudCopOworICAgIHZvaWQgcm9vdEVsZW1lbnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJp
YW50Kik7CisKKyAgICBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QgbV9mb2N1c2VkRWxl
bWVudDsKKyAgICBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QgbV9yb290RWxlbWVudDsK
KworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0IG1fZWxlbWVudHM7CisKKyAgICBUZXN0
U2hlbGwqIG1fc2hlbGw7Cit9OworCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44YTU0ODNiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTAsMCArMSw1ODQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
IgorCisjaW5jbHVkZSAicHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRl
ICJwdWJsaWMvV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJTdHJpbmcuaCIKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNp
bmcgbmFtZXNwYWNlIHN0ZDsKKworLy8gTWFwIHJvbGUgdmFsdWUgdG8gc3RyaW5nLCBtYXRjaGlu
ZyBTYWZhcmkvTWFjIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uIHRvCisvLyBhdm9pZCByZWJhc2Vs
aW5pbmcgbGF5b3V0IHRlc3RzLgorc3RhdGljIHN0cmluZyByb2xlVG9TdHJpbmcoV2ViQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZSkKK3sKKyAgICBzdHJpbmcgcmVzdWx0ID0gIkFYUm9sZTogQVgiOwor
ICAgIHN3aXRjaCAocm9sZSkgeworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVCdXR0b246
CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJCdXR0b24iKTsKKyAgICBjYXNlIFdlYkFj
Y2Vzc2liaWxpdHlSb2xlUmFkaW9CdXR0b246CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5k
KCJSYWRpb0J1dHRvbiIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVDaGVja0JveDoK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkNoZWNrQm94Iik7CisgICAgY2FzZSBXZWJB
Y2Nlc3NpYmlsaXR5Um9sZVNsaWRlcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlNs
aWRlciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVUYWJHcm91cDoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIlRhYkdyb3VwIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmls
aXR5Um9sZVRleHRGaWVsZDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlRleHRGaWVs
ZCIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVTdGF0aWNUZXh0OgorICAgICAgICBy
ZXR1cm4gcmVzdWx0LmFwcGVuZCgiU3RhdGljVGV4dCIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJp
bGl0eVJvbGVUZXh0QXJlYToKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlRleHRBcmVh
Iik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNjcm9sbEFyZWE6CisgICAgICAgIHJl
dHVybiByZXN1bHQuYXBwZW5kKCJTY3JvbGxBcmVhIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmls
aXR5Um9sZVBvcFVwQnV0dG9uOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiUG9wVXBC
dXR0b24iKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWVudUJ1dHRvbjoKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIk1lbnVCdXR0b24iKTsKKyAgICBjYXNlIFdlYkFjY2Vz
c2liaWxpdHlSb2xlVGFibGU6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJUYWJsZSIp
OworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVBcHBsaWNhdGlvbjoKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC5hcHBlbmQoIkFwcGxpY2F0aW9uIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmls
aXR5Um9sZUdyb3VwOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiR3JvdXAiKTsKKyAg
ICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlUmFkaW9Hcm91cDoKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5hcHBlbmQoIlJhZGlvR3JvdXAiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xl
TGlzdDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkxpc3QiKTsKKyAgICBjYXNlIFdl
YkFjY2Vzc2liaWxpdHlSb2xlU2Nyb2xsQmFyOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVu
ZCgiU2Nyb2xsQmFyIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZVZhbHVlSW5kaWNh
dG9yOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiVmFsdWVJbmRpY2F0b3IiKTsKKyAg
ICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlSW1hZ2U6CisgICAgICAgIHJldHVybiByZXN1bHQu
YXBwZW5kKCJJbWFnZSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVNZW51QmFyOgor
ICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiTWVudUJhciIpOworICAgIGNhc2UgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVNZW51OgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiTWVudSIp
OworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVNZW51SXRlbToKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5hcHBlbmQoIk1lbnVJdGVtIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9s
ZUNvbHVtbjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkNvbHVtbiIpOworICAgIGNh
c2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVSb3c6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5k
KCJSb3ciKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlVG9vbGJhcjoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIlRvb2xiYXIiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxp
dHlSb2xlQnVzeUluZGljYXRvcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkJ1c3lJ
bmRpY2F0b3IiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlUHJvZ3Jlc3NJbmRpY2F0
b3I6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJQcm9ncmVzc0luZGljYXRvciIpOwor
ICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVXaW5kb3c6CisgICAgICAgIHJldHVybiByZXN1
bHQuYXBwZW5kKCJXaW5kb3ciKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlRHJhd2Vy
OgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiRHJhd2VyIik7CisgICAgY2FzZSBXZWJB
Y2Nlc3NpYmlsaXR5Um9sZVN5c3RlbVdpZGU6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5k
KCJTeXN0ZW1XaWRlIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZU91dGxpbmU6Cisg
ICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJPdXRsaW5lIik7CisgICAgY2FzZSBXZWJBY2Nl
c3NpYmlsaXR5Um9sZUluY3JlbWVudG9yOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgi
SW5jcmVtZW50b3IiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlQnJvd3NlcjoKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkJyb3dzZXIiKTsKKyAgICBjYXNlIFdlYkFjY2Vz
c2liaWxpdHlSb2xlQ29tYm9Cb3g6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJDb21i
b0JveCIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVTcGxpdEdyb3VwOgorICAgICAg
ICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiU3BsaXRHcm91cCIpOworICAgIGNhc2UgV2ViQWNjZXNz
aWJpbGl0eVJvbGVTcGxpdHRlcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlNwbGl0
dGVyIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUNvbG9yV2VsbDoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIkNvbG9yV2VsbCIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJp
bGl0eVJvbGVHcm93QXJlYToKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkdyb3dBcmVh
Iik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNoZWV0OgorICAgICAgICByZXR1cm4g
cmVzdWx0LmFwcGVuZCgiU2hlZXQiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlSGVs
cFRhZzoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkhlbHBUYWciKTsKKyAgICBjYXNl
IFdlYkFjY2Vzc2liaWxpdHlSb2xlTWF0dGU6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5k
KCJNYXR0ZSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVSdWxlcjoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIlJ1bGVyIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5
Um9sZVJ1bGVyTWFya2VyOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiUnVsZXJNYXJr
ZXIiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGluazoKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5hcHBlbmQoIkxpbmsiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlRGlz
Y2xvc3VyZVRyaWFuZ2xlOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiRGlzY2xvc3Vy
ZVRyaWFuZ2xlIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUdyaWQ6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJHcmlkIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5
Um9sZUNlbGw6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJDZWxsIik7CisgICAgY2Fz
ZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUNvbHVtbkhlYWRlcjoKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC5hcHBlbmQoIkNvbHVtbkhlYWRlciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVS
b3dIZWFkZXI6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJSb3dIZWFkZXIiKTsKKyAg
ICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlV2ViQ29yZUxpbms6CisgICAgICAgIC8vIE1hcHMg
dG8gTGluayByb2xlLgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiTGluayIpOworICAg
IGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVJbWFnZU1hcExpbms6CisgICAgICAgIHJldHVybiBy
ZXN1bHQuYXBwZW5kKCJJbWFnZU1hcExpbmsiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlS
b2xlSW1hZ2VNYXA6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJJbWFnZU1hcCIpOwor
ICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVMaXN0TWFya2VyOgorICAgICAgICByZXR1cm4g
cmVzdWx0LmFwcGVuZCgiTGlzdE1hcmtlciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJv
bGVXZWJBcmVhOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiV2ViQXJlYSIpOworICAg
IGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVIZWFkaW5nOgorICAgICAgICByZXR1cm4gcmVzdWx0
LmFwcGVuZCgiSGVhZGluZyIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVMaXN0Qm94
OgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiTGlzdEJveCIpOworICAgIGNhc2UgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVMaXN0Qm94T3B0aW9uOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFw
cGVuZCgiTGlzdEJveE9wdGlvbiIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVUYWJs
ZUhlYWRlckNvbnRhaW5lcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlRhYmxlSGVh
ZGVyQ29udGFpbmVyIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZURlZmluaXRpb25M
aXN0VGVybToKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkRlZmluaXRpb25MaXN0VGVy
bSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVEZWZpbml0aW9uTGlzdERlZmluaXRp
b246CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJEZWZpbml0aW9uTGlzdERlZmluaXRp
b24iKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlQW5ub3RhdGlvbjoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIkFubm90YXRpb24iKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2li
aWxpdHlSb2xlU2xpZGVyVGh1bWI6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJTbGlk
ZXJUaHVtYiIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVMYW5kbWFya0FwcGxpY2F0
aW9uOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiTGFuZG1hcmtBcHBsaWNhdGlvbiIp
OworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVMYW5kbWFya0Jhbm5lcjoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIkxhbmRtYXJrQmFubmVyIik7CisgICAgY2FzZSBXZWJBY2Nl
c3NpYmlsaXR5Um9sZUxhbmRtYXJrQ29tcGxlbWVudGFyeToKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC5hcHBlbmQoIkxhbmRtYXJrQ29tcGxlbWVudGFyeSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJp
bGl0eVJvbGVMYW5kbWFya0NvbnRlbnRJbmZvOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVu
ZCgiTGFuZG1hcmtDb250ZW50SW5mbyIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVM
YW5kbWFya01haW46CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJMYW5kbWFya01haW4i
KTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGFuZG1hcmtOYXZpZ2F0aW9uOgorICAg
ICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiTGFuZG1hcmtOYXZpZ2F0aW9uIik7CisgICAgY2Fz
ZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxhbmRtYXJrU2VhcmNoOgorICAgICAgICByZXR1cm4gcmVz
dWx0LmFwcGVuZCgiTGFuZG1hcmtTZWFyY2giKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlS
b2xlQXBwbGljYXRpb25Mb2c6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJBcHBsaWNh
dGlvbkxvZyIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVBcHBsaWNhdGlvbk1hcnF1
ZWU6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJBcHBsaWNhdGlvbk1hcnF1ZWUiKTsK
KyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlQXBwbGljYXRpb25TdGF0dXM6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJBcHBsaWNhdGlvblN0YXR1cyIpOworICAgIGNhc2UgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVBcHBsaWNhdGlvblRpbWVyOgorICAgICAgICByZXR1cm4gcmVzdWx0
LmFwcGVuZCgiQXBwbGljYXRpb25UaW1lciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJv
bGVEb2N1bWVudDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkRvY3VtZW50Iik7Cisg
ICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZURvY3VtZW50QXJ0aWNsZToKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC5hcHBlbmQoIkRvY3VtZW50QXJ0aWNsZSIpOworICAgIGNhc2UgV2ViQWNjZXNz
aWJpbGl0eVJvbGVEb2N1bWVudE5vdGU6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJE
b2N1bWVudE5vdGUiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlRG9jdW1lbnRSZWdp
b246CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJEb2N1bWVudFJlZ2lvbiIpOworICAg
IGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVVc2VySW50ZXJmYWNlVG9vbHRpcDoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIlVzZXJJbnRlcmZhY2VUb29sdGlwIik7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgLy8gQWxzbyBtYXRjaGVzIFdlYkFjY2Vzc2liaWxpdHlSb2xlVW5rbm93bi4K
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlVua25vd24iKTsKKyAgICB9Cit9CisKK3N0
cmluZyBnZXREZXNjcmlwdGlvbihjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qp
Cit7CisgICAgc3RyaW5nIGRlc2NyaXB0aW9uID0gb2JqZWN0LmFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpLnV0ZjgoKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb24uaW5zZXJ0KDAsICJBWERlc2Ny
aXB0aW9uOiAiKTsKK30KKworc3RyaW5nIGdldFJvbGUoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdCYgb2JqZWN0KQoreworICAgIHJldHVybiByb2xlVG9TdHJpbmcob2JqZWN0LnJvbGVWYWx1
ZSgpKTsKK30KKworc3RyaW5nIGdldFRpdGxlKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCkKK3sKKyAgICBzdHJpbmcgdGl0bGUgPSBvYmplY3QudGl0bGUoKS51dGY4KCk7Cisg
ICAgcmV0dXJuIHRpdGxlLmluc2VydCgwLCAiQVhUaXRsZTogIik7Cit9CisKK3N0cmluZyBnZXRB
dHRyaWJ1dGVzKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKK3sKKyAgICAv
LyBUT0RPKGRnbGF6a292KTogQ29uY2F0ZW5hdGUgYWxsIGF0dHJpYnV0ZXMgb2YgdGhlIEFjY2Vz
c2liaWxpdHlPYmplY3QuCisgICAgc3RyaW5nIGF0dHJpYnV0ZXMoZ2V0VGl0bGUob2JqZWN0KSk7
CisgICAgYXR0cmlidXRlcy5hcHBlbmQoIlxuIik7CisgICAgYXR0cmlidXRlcy5hcHBlbmQoZ2V0
Um9sZShvYmplY3QpKTsKKyAgICBhdHRyaWJ1dGVzLmFwcGVuZCgiXG4iKTsKKyAgICBhdHRyaWJ1
dGVzLmFwcGVuZChnZXREZXNjcmlwdGlvbihvYmplY3QpKTsKKyAgICByZXR1cm4gYXR0cmlidXRl
czsKK30KKworCisvLyBDb2xsZWN0cyBhdHRyaWJ1dGVzIGludG8gYSBzdHJpbmcsIGRlbGltaXRl
ZCBieSBkYXNoZXMuIFVzZWQgYnkgYWxsIG1ldGhvZHMKKy8vIHRoYXQgb3V0cHV0IGxpc3RzIG9m
IGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHNDYWxsYmFjaywKKy8vIEF0
dHJpYnV0ZXNPZkNoaWxkcmVuQ2FsbGJhY2ssIGV0Yy4KK2NsYXNzIEF0dHJpYnV0ZXNDb2xsZWN0
b3IgeworcHVibGljOgorICAgIHZvaWQgY29sbGVjdEF0dHJpYnV0ZXMoY29uc3QgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVu
ZCgiXG4tLS0tLS0tLS0tLS1cbiIpOworICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKGdldEF0
dHJpYnV0ZXMob2JqZWN0KSk7CisgICAgfQorCisgICAgc3RyaW5nIGF0dHJpYnV0ZXMoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKworcHJpdmF0ZToKKyAgICBzdHJpbmcgbV9hdHRy
aWJ1dGVzOworfTsKKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudCgKKyAgICBjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIEZhY3Rvcnkq
IGZhY3RvcnkpCisgICAgOiBtX2FjY2Vzc2liaWxpdHlPYmplY3Qob2JqZWN0KSwKKyAgICAgIG1f
ZmFjdG9yeShmYWN0b3J5KSB7CisKKyAgICBBU1NFUlQoZmFjdG9yeSk7CisKKyAgICBiaW5kTWV0
aG9kKCJhbGxBdHRyaWJ1dGVzIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0
ZXNDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50
cyIsCisgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
TGlua2VkVUlFbGVtZW50c0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJhdHRyaWJ1dGVzT2ZE
b2N1bWVudExpbmtzIiwKKyAgICAgICAgICAgICAgICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImF0dHJp
YnV0ZXNPZkNoaWxkcmVuIiwKKyAgICAgICAgICAgICAgICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbkNhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJwYXJhbWV0
ZXJpemVkQXR0cmlidXRlTmFtZXMiLAorICAgICAgICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnBhcmFtZXRyaXplZEF0dHJpYnV0ZU5hbWVzQ2FsbGJhY2spOworICAgIGJpbmRNZXRo
b2QoImxpbmVGb3JJbmRleCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXhD
YWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiYm91bmRzRm9yUmFuZ2UiLCAmQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2VDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgic3Ry
aW5nRm9yUmFuZ2UiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2VDYWxs
YmFjayk7CisgICAgYmluZE1ldGhvZCgiY2hpbGRBdEluZGV4IiwgJkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkQXRJbmRleENhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJlbGVtZW50QXRQ
b2ludCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludENhbGxiYWNrKTsK
KyAgICBiaW5kTWV0aG9kKCJhdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzIiwKKyAgICAgICAgICAg
ICAgICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzQ2Fs
bGJhY2spOworICAgIGJpbmRNZXRob2QoImF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMiLAorICAgICAg
ICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnND
YWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiYXR0cmlidXRlc09mQ29sdW1ucyIsCisgICAgICAg
ICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uc0NhbGxi
YWNrKTsKKyAgICBiaW5kTWV0aG9kKCJhdHRyaWJ1dGVzT2ZSb3dzIiwKKyAgICAgICAgICAgICAg
ICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzQ2FsbGJhY2spOworICAg
IGJpbmRNZXRob2QoImF0dHJpYnV0ZXNPZlZpc2libGVDZWxscyIsCisgICAgICAgICAgICAgICAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzQ2FsbGJhY2sp
OworICAgIGJpbmRNZXRob2QoImF0dHJpYnV0ZXNPZkhlYWRlciIsCisgICAgICAgICAgICAgICAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyQ2FsbGJhY2spOworICAg
IGJpbmRNZXRob2QoImluZGV4SW5UYWJsZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRl
eEluVGFibGVDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgicm93SW5kZXhSYW5nZSIsICZBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlQ2FsbGJhY2spOworICAgIGJpbmRNZXRo
b2QoImNvbHVtbkluZGV4UmFuZ2UiLAorICAgICAgICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2VDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiY2VsbEZv
ckNvbHVtbkFuZFJvdyIsCisgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y2VsbEZvckNvbHVtbkFuZFJvd0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJ0aXRsZVVJRWxl
bWVudCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudENhbGxiYWNrKTsK
KyAgICBiaW5kTWV0aG9kKCJzZXRTZWxlY3RlZFRleHRSYW5nZSIsCisgICAgICAgICAgICAgICAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjayk7Cisg
ICAgYmluZE1ldGhvZCgiYXR0cmlidXRlVmFsdWUiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlVmFsdWVDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiaXNBdHRyaWJ1dGVTZXR0
YWJsZSIsCisgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1
dGVTZXR0YWJsZUNhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJpc0FjdGlvblN1cHBvcnRlZCIs
CisgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0
ZWRDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgicGFyZW50RWxlbWVudCIsICZBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50Q2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImlu
Y3JlbWVudCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnRDYWxsYmFjayk7Cisg
ICAgYmluZE1ldGhvZCgiZGVjcmVtZW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3Jl
bWVudENhbGxiYWNrKTsKKworICAgIGJpbmRQcm9wZXJ0eSgicm9sZSIsICZBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlR2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQcm9wZXJ0eSgic3Vicm9s
ZSIsICZtX3N1YnJvbGUpOworICAgIGJpbmRQcm9wZXJ0eSgidGl0bGUiLCAmQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGl0bGVHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5KCJkZXNj
cmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNj
cmlwdGlvbkdldHRlckNhbGxiYWNrKTsKKyAgICBiaW5kUHJvcGVydHkoImxhbmd1YWdlIiwgJm1f
bGFuZ3VhZ2UpOworICAgIGJpbmRQcm9wZXJ0eSgieCIsICZtX3gpOworICAgIGJpbmRQcm9wZXJ0
eSgieSIsICZtX3kpOworICAgIGJpbmRQcm9wZXJ0eSgid2lkdGgiLCAmbV93aWR0aCk7CisgICAg
YmluZFByb3BlcnR5KCJoZWlnaHQiLCAmbV9oZWlnaHQpOworICAgIGJpbmRQcm9wZXJ0eSgiY2xp
Y2tQb2ludFgiLCAmbV9jbGlja1BvaW50WCk7CisgICAgYmluZFByb3BlcnR5KCJjbGlja1BvaW50
WSIsICZtX2NsaWNrUG9pbnRZKTsKKyAgICBiaW5kUHJvcGVydHkoImludFZhbHVlIiwgJm1faW50
VmFsdWUpOworICAgIGJpbmRQcm9wZXJ0eSgibWluVmFsdWUiLCAmbV9taW5WYWx1ZSk7CisgICAg
YmluZFByb3BlcnR5KCJtYXhWYWx1ZSIsICZtX21heFZhbHVlKTsKKyAgICBiaW5kUHJvcGVydHko
ImNoaWxkcmVuQ291bnQiLAorICAgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2hpbGRyZW5Db3VudEdldHRlckNhbGxiYWNrKTsKKyAgICBiaW5kUHJvcGVydHkoImluc2Vy
dGlvblBvaW50TGluZU51bWJlciIsICZtX2luc2VydGlvblBvaW50TGluZU51bWJlcik7CisgICAg
YmluZFByb3BlcnR5KCJzZWxlY3RlZFRleHRSYW5nZSIsICZtX3NlbGVjdGVkVGV4dFJhbmdlKTsK
KyAgICBiaW5kUHJvcGVydHkoImlzRW5hYmxlZCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0VuYWJsZWRHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5KCJpc1JlcXVpcmVkIiwg
Jm1faXNSZXF1aXJlZCk7CisgICAgYmluZFByb3BlcnR5KCJpc1NlbGVjdGVkIiwgJkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWRHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3Bl
cnR5KCJ2YWx1ZURlc2NyaXB0aW9uIiwgJm1fdmFsdWVEZXNjcmlwdGlvbik7CisKKyAgICBiaW5k
RmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZhbGxiYWNrQ2FsbGJhY2sp
OworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpn
ZXRDaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgcmV0dXJuIG1fZmFjdG9yeS0+
Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QoKS5jaGlsZEF0KGluZGV4KSk7Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlc0NhbGxiYWNrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldChnZXRB
dHRyaWJ1dGVzKGFjY2Vzc2liaWxpdHlPYmplY3QoKSkpOworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHNDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXRO
dWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9j
dW1lbnRMaW5rc0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbkNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgQXR0cmlidXRlc0Nv
bGxlY3RvciBjb2xsZWN0b3I7CisgICAgdW5zaWduZWQgc2l6ZSA9IGFjY2Vzc2liaWxpdHlPYmpl
Y3QoKS5jaGlsZENvdW50KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKKyAgICAgICAgY29sbGVjdG9yLmNvbGxlY3RBdHRyaWJ1dGVzKGFjY2Vzc2liaWxpdHlPYmpl
Y3QoKS5jaGlsZEF0KGkpKTsKKyAgICByZXN1bHQtPnNldChjb2xsZWN0b3IuYXR0cmlidXRlcygp
KTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0cml6ZWRBdHRyaWJ1
dGVOYW1lc0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5lRm9ySW5kZXhDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2VDYWxsYmFjayhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2VDYWxsYmFj
ayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVz
dWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRB
dEluZGV4Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50cy5zaXplKCkgfHwgIWFyZ3VtZW50c1sw
XS5pc051bWJlcigpKSB7CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogY2hpbGQgPSBnZXRDaGls
ZEF0SW5kZXgoYXJndW1lbnRzWzBdLnRvSW50MzIoKSk7CisgICAgaWYgKCFjaGlsZCkgeworICAg
ICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJl
c3VsdC0+c2V0KCooY2hpbGQtPmdldEFzQ3BwVmFyaWFudCgpKSk7Cit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVy
c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnNDYWxsYmFjayhjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5z
ZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
Um93c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyQ2FsbGJhY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5U
YWJsZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb3dJbmRleFJhbmdlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2VDYWxsYmFjayhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvd0Nh
bGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAg
ICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
aXRsZVVJRWxlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVWYWx1ZUNhbGxiYWNr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJp
YnV0ZVNldHRhYmxlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEgJiYgIWFy
Z3VtZW50c1swXS5pc1N0cmluZygpKSB7CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RyaW5nIGF0dHJpYnV0ZSA9IGFyZ3VtZW50c1sw
XS50b1N0cmluZygpOworICAgIGJvb2wgc2V0dGFibGUgPSBmYWxzZTsKKyAgICBpZiAoYXR0cmli
dXRlID09ICJBWFZhbHVlIikgeworICAgICAgICBzZXR0YWJsZSA9IGFjY2Vzc2liaWxpdHlPYmpl
Y3QoKS5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpOworICAgIH0KKyAgICByZXN1bHQtPnNldChzZXR0
YWJsZSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0
ZWRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7
CisgICAgLy8gVGhpcyBvbmUgbWF5IGJlIHJlYWxseSBoYXJkIHRvIGltcGxlbWVudC4KKyAgICAv
LyBOb3QgZXhwb3NlZCBieSBBY2Nlc3NpYmlsaXR5T2JqZWN0LgorICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAg
cmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5j
cmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0
KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRlY3JlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCAm
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgLy8gVE9ETyhkZ2xhemtvdik6IEltcGxlbWVu
dCB0aGlzLgorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNoaWxkcmVuQ291bnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgaW50IGNvdW50ID0gMTsgIC8vIFJvb3Qgb2JqZWN0IGFsd2F5cyBoYXMgb25seSBv
bmUgY2hpbGQsIHRoZSBXZWJWaWV3LgorICAgIGlmICghaXNSb290KCkpCisgICAgICAgIGNvdW50
ID0gYWNjZXNzaWJpbGl0eU9iamVjdCgpLmNoaWxkQ291bnQoKTsKKyAgICByZXN1bHQtPnNldChj
b3VudCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb25HZXR0
ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCisgeworICAgIHJlc3VsdC0+c2V0KGdldERl
c2NyaXB0aW9uKGFjY2Vzc2liaWxpdHlPYmplY3QoKSkpOworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzRW5hYmxlZEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQtPnNldChhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuaXNFbmFibGVkKCkpOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWRHZXR0ZXJDYWxsYmFj
ayhDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZUdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldChnZXRSb2xlKGFjY2Vzc2liaWxpdHlPYmplY3Qo
KSkpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlR2V0dGVyQ2FsbGJh
Y2soQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KGdldFRpdGxlKGFjY2Vz
c2liaWxpdHlPYmplY3QoKSkpOworfQorCisKK1Jvb3RBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpS
b290QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0ICZv
YmplY3QsIEZhY3RvcnkgKmZhY3RvcnkpCisgICAgOiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9i
amVjdCwgZmFjdG9yeSkgeyB9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIFJvb3RBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAg
aWYgKGluZGV4KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBmYWN0b3J5KCktPmNy
ZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KCkpOworfQorCisKK0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRMaXN0IDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0KCkgeworICAgIGNsZWFyKCk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudExpc3Q6OmNsZWFyKCkgeworICAgIGZvciAo
RWxlbWVudExpc3Q6Oml0ZXJhdG9yIGkgPSBtX2VsZW1lbnRzLmJlZ2luKCk7IGkgIT0gbV9lbGVt
ZW50cy5lbmQoKTsgKytpKQorICAgICAgICBkZWxldGUgKCppKTsKKyAgICBtX2VsZW1lbnRzLmNs
ZWFyKCk7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnRMaXN0OjpjcmVhdGUoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQorewor
ICAgIGlmIChvYmplY3QuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IG5ldyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9i
amVjdCwgdGhpcyk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoZWxlbWVudCk7CisgICAgcmV0dXJu
IGVsZW1lbnQ7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRMaXN0OjpjcmVhdGVSb290KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVj
dCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50ID0gbmV3IFJvb3RBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KG9iamVjdCwgdGhpcyk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQo
ZWxlbWVudCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYzZjViOQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dF9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorCisjaW5jbHVkZSAiQ3BwQm91
bmRDbGFzcy5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IDog
cHVibGljIENwcEJvdW5kQ2xhc3MgeworcHVibGljOgorICAgIGNsYXNzIEZhY3RvcnkgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RmFjdG9yeSgpIHsgfQorICAgICAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlPYmplY3QmKSA9IDA7CisgICAgfTsKKworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQo
Y29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiwgRmFjdG9yeSopOworCisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRDaGlsZEF0SW5kZXgodW5zaWduZWQp
OworICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitw
cm90ZWN0ZWQ6CisgICAgY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBhY2Nl
c3NpYmlsaXR5T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0OyB9
CisgICAgRmFjdG9yeSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeTsgfQorCitw
cml2YXRlOgorICAgIC8vIEJvdW5kIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCisgICAgdm9pZCBh
bGxBdHRyaWJ1dGVzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworICAgIHZvaWQgYXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50c0NhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGF0dHJpYnV0ZXNPZkRvY3Vt
ZW50TGlua3NDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Cisg
ICAgdm9pZCBhdHRyaWJ1dGVzT2ZDaGlsZHJlbkNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHBhcmFtZXRyaXplZEF0dHJpYnV0ZU5hbWVzQ2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgbGlu
ZUZvckluZGV4Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwor
ICAgIHZvaWQgYm91bmRzRm9yUmFuZ2VDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisgICAgdm9pZCBzdHJpbmdGb3JSYW5nZUNhbGxiYWNrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGNoaWxkQXRJbmRleENhbGxiYWNr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGVsZW1lbnRB
dFBvaW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAg
IHZvaWQgYXR0cmlidXRlc09mQ29sdW1uSGVhZGVyc0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGF0dHJpYnV0ZXNPZlJvd0hlYWRlcnNDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBhdHRy
aWJ1dGVzT2ZDb2x1bW5zQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworICAgIHZvaWQgYXR0cmlidXRlc09mUm93c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGF0dHJpYnV0ZXNPZlZpc2libGVDZWxsc0Nh
bGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGF0
dHJpYnV0ZXNPZkhlYWRlckNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKKyAgICB2b2lkIGluZGV4SW5UYWJsZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHJvd0luZGV4UmFuZ2VDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBjb2x1bW5JbmRleFJhbmdl
Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQg
Y2VsbEZvckNvbHVtbkFuZFJvd0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKKyAgICB2b2lkIHRpdGxlVUlFbGVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBhdHRy
aWJ1dGVWYWx1ZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KyAgICB2b2lkIGlzQXR0cmlidXRlU2V0dGFibGVDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBpc0FjdGlvblN1cHBvcnRlZENhbGxiYWNrKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHBhcmVudEVsZW1l
bnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBpbmNyZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisgICAgdm9pZCBkZWNyZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CisgICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKworICAgIHZvaWQgY2hpbGRyZW5Db3VudEdldHRlckNhbGxiYWNr
KENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGRlc2NyaXB0aW9uR2V0dGVyQ2FsbGJhY2soQ3BwVmFy
aWFudCopOworICAgIHZvaWQgaXNFbmFibGVkR2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwor
ICAgIHZvaWQgaXNTZWxlY3RlZEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKKyAgICB2b2lk
IHJvbGVHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CisgICAgdm9pZCB0aXRsZUdldHRlckNh
bGxiYWNrKENwcFZhcmlhbnQqKTsKKworICAgIENwcFZhcmlhbnQgbV9zdWJyb2xlOworICAgIENw
cFZhcmlhbnQgbV9sYW5ndWFnZTsKKyAgICBDcHBWYXJpYW50IG1feDsKKyAgICBDcHBWYXJpYW50
IG1feTsKKyAgICBDcHBWYXJpYW50IG1fd2lkdGg7CisgICAgQ3BwVmFyaWFudCBtX2hlaWdodDsK
KyAgICBDcHBWYXJpYW50IG1fY2xpY2tQb2ludFg7CisgICAgQ3BwVmFyaWFudCBtX2NsaWNrUG9p
bnRZOworICAgIENwcFZhcmlhbnQgbV9pbnRWYWx1ZTsKKyAgICBDcHBWYXJpYW50IG1fbWluVmFs
dWU7CisgICAgQ3BwVmFyaWFudCBtX21heFZhbHVlOworICAgIENwcFZhcmlhbnQgbV9jaGlsZHJl
bkNvdW50OworICAgIENwcFZhcmlhbnQgbV9pbnNlcnRpb25Qb2ludExpbmVOdW1iZXI7CisgICAg
Q3BwVmFyaWFudCBtX3NlbGVjdGVkVGV4dFJhbmdlOworICAgIENwcFZhcmlhbnQgbV9pc1JlcXVp
cmVkOworICAgIENwcFZhcmlhbnQgbV92YWx1ZURlc2NyaXB0aW9uOworCisgICAgV2ViS2l0OjpX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsKKyAgICBGYWN0b3J5
KiBtX2ZhY3Rvcnk7Cit9OworCisKK2NsYXNzIFJvb3RBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IDog
cHVibGljIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgeworcHVibGljOgorICAgIFJvb3RBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYsIEZh
Y3RvcnkqKTsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0Q2hpbGRB
dEluZGV4KHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSb290KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorfTsKKworCisvLyBQcm92aWRlcyBzaW1wbGUgbGlmZXRpbWUgbWFuYWdlbWVu
dCBvZiB0aGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBpbnN0YW5jZXM6CisvLyBhbGwgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudHMgZXZlciBjcmVhdGVkIGZyb20gdGhlIGNvbnRyb2xsZXIgYXJlIHN0
b3JlZCBpbgorLy8gYSBsaXN0IGFuZCBjbGVhcmVkIGV4cGxpY2l0bHkuCitjbGFzcyBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TGlzdCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpGYWN0
b3J5IHsKK3B1YmxpYzoKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdCgpIHsgfQorICAg
IHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0KCk7CisKKyAgICB2b2lkIGNsZWFy
KCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBjcmVhdGUoY29uc3QgV2Vi
S2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCogY3JlYXRlUm9vdChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKwor
cHJpdmF0ZToKKyAgICB0eXBlZGVmIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxl
bWVudExpc3Q7CisgICAgRWxlbWVudExpc3QgbV9lbGVtZW50czsKK307CisKKyNlbmRpZiAvLyBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50071</attachid>
            <date>2010-03-04 17:36:55 -0800</date>
            <delta_ts>2010-03-07 18:47:07 -0800</delta_ts>
            <desc>Proposed patch rev.2 (style fixes)</desc>
            <filename>bug-35774-20100305103653.patch</filename>
            <type>text/plain</type>
            <size>37516</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjMjNmYWVhLi45MTE5NDRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDMt
MDUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtEUlQvQ2hyb21pdW1dIEFkZCBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlciBhbmQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3NzQKKworICAgICAgICBBZGQg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgYW5kIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2xhc3Nl
cywKKyAgICAgICAgd2hpY2ggYXJlIGdvaW5nIHRvIGJlIHVzZWQgYnkgRHVtcFJlbmRlclRyZWUg
Q2hyb21pdW0gcG9ydC4gVGhlc2UKKyAgICAgICAgZmlsZXMgYXJlIGJhc2VkIG9uOgorICAgICAg
ICAtIHNyYy93ZWJraXQvdG9vbHMvdGVzdF9zaGVsbC9hY2Nlc3NpYmlsaXR5X2NvbnRyb2xsZXIu
e2NjLGh9IGFuZAorICAgICAgICAtIHNyYy93ZWJraXQvdG9vbHMvdGVzdF9zaGVsbC9hY2Nlc3Np
YmlsaXR5X3VpX2VsZW1lbnQue2NjLGh9CisgICAgICAgIG9mIENocm9taXVtIHJldi40MDQ5Mi4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQWRkZWQuCisKIDIw
MTAtMDMtMDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmU4NTBjCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIK
KyNpbmNsdWRlICJwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmgiCisjaW5jbHVkZSAicHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViRnJhbWUu
aCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicHVibGljL1dlYlZp
ZXcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCisgICAgOiBtX3No
ZWxsKHNoZWxsKQoreworCisgICAgYmluZE1ldGhvZCgibG9nRm9jdXNFdmVudHMiLAorICAgICAg
ICAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0ZvY3VzRXZlbnRzQ2FsbGJhY2spOworICAg
IGJpbmRNZXRob2QoImxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzIiwKKyAgICAgICAgJkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpsb2dTY3JvbGxpbmdTdGFydEV2ZW50c0NhbGxiYWNrKTsKKworICAg
IGJpbmRQcm9wZXJ0eSgiZm9jdXNlZEVsZW1lbnQiLAorICAgICAgICAmQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQcm9wZXJ0
eSgicm9vdEVsZW1lbnQiLAorICAgICAgICAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RF
bGVtZW50R2V0dGVyQ2FsbGJhY2spOworCisgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayk7Cit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmJpbmRUb0phdmFzY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIGNsYXNzbmFtZSkKK3sKKyAgICBXZWJBY2Nlc3NpYmlsaXR5Q2FjaGU6OmVuYWJs
ZUFjY2Vzc2liaWxpdHkoKTsKKyAgICBDcHBCb3VuZENsYXNzOjpiaW5kVG9KYXZhc2NyaXB0KGZy
YW1lLCBjbGFzc25hbWUpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNl
dCgpCit7CisgICAgbV9yb290RWxlbWVudCA9IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKyAg
ICBtX2ZvY3VzZWRFbGVtZW50ID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdCgpOworICAgIG1fZWxl
bWVudHMuY2xlYXIoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2V0Rm9j
dXNlZEVsZW1lbnQoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgZm9jdXNlZEVsZW1lbnQp
Cit7CisgICAgbV9mb2N1c2VkRWxlbWVudCA9IGZvY3VzZWRFbGVtZW50OworfQorCitBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Z2V0Rm9jdXNlZEVsZW1l
bnQoKQoreworICAgIGlmIChtX2ZvY3VzZWRFbGVtZW50LmlzTnVsbCgpKQorICAgICAgICBtX2Zv
Y3VzZWRFbGVtZW50ID0gbV9zaGVsbC0+d2ViVmlldygpLT5hY2Nlc3NpYmlsaXR5T2JqZWN0KCk7
CisgICAgcmV0dXJuIG1fZWxlbWVudHMuY3JlYXRlKG1fZm9jdXNlZEVsZW1lbnQpOworfQorCitB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Z2V0Um9vdEVs
ZW1lbnQoKQoreworICAgIGlmIChtX3Jvb3RFbGVtZW50LmlzTnVsbCgpKQorICAgICAgICBtX3Jv
b3RFbGVtZW50ID0gbV9zaGVsbC0+d2ViVmlldygpLT5hY2Nlc3NpYmlsaXR5T2JqZWN0KCk7Cisg
ICAgcmV0dXJuIG1fZWxlbWVudHMuY3JlYXRlUm9vdChtX3Jvb3RFbGVtZW50KTsKK30KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHNDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgLy8gQXMgb2YgcjQ5
MDMxLCB0aGlzIGlzIG5vdCBiZWluZyB1c2VkIHVwc3RyZWFtLgorICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dTY3JvbGxpbmdTdGFy
dEV2ZW50c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICAvLyBBcyBvZiByNDkwMzEsIHRoaXMgaXMgbm90IGJlaW5nIHVzZWQgdXBzdHJl
YW0uCisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OmZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIHJlc3VsdC0+c2V0KCooZ2V0Rm9jdXNlZEVsZW1lbnQoKS0+Z2V0QXNDcHBWYXJpYW50
KCkpKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnRHZXR0
ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXQoKihnZXRS
b290RWxlbWVudCgpLT5nZXRBc0NwcFZhcmlhbnQoKSkpOworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBwcmludGYoIkNPTlNPTEUgTUVTU0FHRTogSmF2YVNj
cmlwdCBFUlJPUjogdW5rbm93biBtZXRob2QgY2FsbGVkIG9uICIKKyAgICAgICAgICAgIkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyXG4iKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNj
ZGU3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJf
aAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorI2luY2x1ZGUgIkNwcEJv
dW5kQ2xhc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OworY2xhc3MgV2ViRnJhbWU7Cit9CisKK2NsYXNzIFRlc3RTaGVsbDsKKworY2xhc3Mg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoVGVzdFNoZWxsKik7CisKKyAg
ICAvLyBTaGFkb3cgdG8gaW5jbHVkZSBhY2Nlc3NpYmlsaXR5IGluaXRpYWxpemF0aW9uLgorICAg
IHZvaWQgYmluZFRvSmF2YXNjcmlwdChXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmIGNsYXNzbmFtZSk7CisgICAgdm9pZCByZXNldCgpOworCisgICAgdm9pZCBzZXRG
b2N1c2VkRWxlbWVudChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKyAg
ICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRGb2N1c2VkRWxlbWVudCgpOworICAgIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIGdldFJvb3RFbGVtZW50KCk7CisKK3ByaXZhdGU6CisgICAgLy8g
Qm91bmQgbWV0aG9kcyBhbmQgcHJvcGVydGllcworICAgIHZvaWQgbG9nRm9jdXNFdmVudHNDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBsb2dT
Y3JvbGxpbmdTdGFydEV2ZW50c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKKyAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworCisgICAgdm9pZCBmb2N1c2VkRWxlbWVudEdldHRlckNhbGxiYWNr
KENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHJvb3RFbGVtZW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFy
aWFudCopOworCisgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IG1fZm9jdXNlZEVs
ZW1lbnQ7CisgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IG1fcm9vdEVsZW1lbnQ7
CisKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdCBtX2VsZW1lbnRzOworCisgICAgVGVz
dFNoZWxsKiBtX3NoZWxsOworfTsKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
X2gKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTEyOGMzZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC0wLDAgKzEsNTg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aCIKKworI2luY2x1ZGUgInB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVk
ZSAicHVibGljL1dlYkNTdHJpbmcuaCIKKyNpbmNsdWRlICJwdWJsaWMvV2ViU3RyaW5nLmgiCisj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3Vz
aW5nIG5hbWVzcGFjZSBzdGQ7CisKKy8vIE1hcCByb2xlIHZhbHVlIHRvIHN0cmluZywgbWF0Y2hp
bmcgU2FmYXJpL01hYyBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiB0bworLy8gYXZvaWQgcmViYXNl
bGluaW5nIGxheW91dCB0ZXN0cy4KK3N0YXRpYyBzdHJpbmcgcm9sZVRvU3RyaW5nKFdlYkFjY2Vz
c2liaWxpdHlSb2xlIHJvbGUpCit7CisgICAgc3RyaW5nIHJlc3VsdCA9ICJBWFJvbGU6IEFYIjsK
KyAgICBzd2l0Y2ggKHJvbGUpIHsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlQnV0dG9u
OgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiQnV0dG9uIik7CisgICAgY2FzZSBXZWJB
Y2Nlc3NpYmlsaXR5Um9sZVJhZGlvQnV0dG9uOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVu
ZCgiUmFkaW9CdXR0b24iKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlQ2hlY2tCb3g6
CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJDaGVja0JveCIpOworICAgIGNhc2UgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVTbGlkZXI6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJT
bGlkZXIiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlVGFiR3JvdXA6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJUYWJHcm91cCIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJp
bGl0eVJvbGVUZXh0RmllbGQ6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJUZXh0Rmll
bGQiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlU3RhdGljVGV4dDoKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5hcHBlbmQoIlN0YXRpY1RleHQiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2li
aWxpdHlSb2xlVGV4dEFyZWE6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJUZXh0QXJl
YSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVTY3JvbGxBcmVhOgorICAgICAgICBy
ZXR1cm4gcmVzdWx0LmFwcGVuZCgiU2Nyb2xsQXJlYSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJp
bGl0eVJvbGVQb3BVcEJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlBvcFVw
QnV0dG9uIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZU1lbnVCdXR0b246CisgICAg
ICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJNZW51QnV0dG9uIik7CisgICAgY2FzZSBXZWJBY2Nl
c3NpYmlsaXR5Um9sZVRhYmxlOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiVGFibGUi
KTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlQXBwbGljYXRpb246CisgICAgICAgIHJl
dHVybiByZXN1bHQuYXBwZW5kKCJBcHBsaWNhdGlvbiIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJp
bGl0eVJvbGVHcm91cDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkdyb3VwIik7Cisg
ICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZVJhZGlvR3JvdXA6CisgICAgICAgIHJldHVybiBy
ZXN1bHQuYXBwZW5kKCJSYWRpb0dyb3VwIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9s
ZUxpc3Q6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJMaXN0Iik7CisgICAgY2FzZSBX
ZWJBY2Nlc3NpYmlsaXR5Um9sZVNjcm9sbEJhcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBl
bmQoIlNjcm9sbEJhciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVWYWx1ZUluZGlj
YXRvcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlZhbHVlSW5kaWNhdG9yIik7Cisg
ICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUltYWdlOgorICAgICAgICByZXR1cm4gcmVzdWx0
LmFwcGVuZCgiSW1hZ2UiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWVudUJhcjoK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIk1lbnVCYXIiKTsKKyAgICBjYXNlIFdlYkFj
Y2Vzc2liaWxpdHlSb2xlTWVudToKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIk1lbnUi
KTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTWVudUl0ZW06CisgICAgICAgIHJldHVy
biByZXN1bHQuYXBwZW5kKCJNZW51SXRlbSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJv
bGVDb2x1bW46CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJDb2x1bW4iKTsKKyAgICBj
YXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlUm93OgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVu
ZCgiUm93Iik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRvb2xiYXI6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJUb29sYmFyIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmls
aXR5Um9sZUJ1c3lJbmRpY2F0b3I6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJCdXN5
SW5kaWNhdG9yIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZVByb2dyZXNzSW5kaWNh
dG9yOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiUHJvZ3Jlc3NJbmRpY2F0b3IiKTsK
KyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlV2luZG93OgorICAgICAgICByZXR1cm4gcmVz
dWx0LmFwcGVuZCgiV2luZG93Iik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZURyYXdl
cjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkRyYXdlciIpOworICAgIGNhc2UgV2Vi
QWNjZXNzaWJpbGl0eVJvbGVTeXN0ZW1XaWRlOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVu
ZCgiU3lzdGVtV2lkZSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVPdXRsaW5lOgor
ICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiT3V0bGluZSIpOworICAgIGNhc2UgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVJbmNyZW1lbnRvcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQo
IkluY3JlbWVudG9yIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUJyb3dzZXI6Cisg
ICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJCcm93c2VyIik7CisgICAgY2FzZSBXZWJBY2Nl
c3NpYmlsaXR5Um9sZUNvbWJvQm94OgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiQ29t
Ym9Cb3giKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlU3BsaXRHcm91cDoKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlNwbGl0R3JvdXAiKTsKKyAgICBjYXNlIFdlYkFjY2Vz
c2liaWxpdHlSb2xlU3BsaXR0ZXI6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJTcGxp
dHRlciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVDb2xvcldlbGw6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJDb2xvcldlbGwiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2li
aWxpdHlSb2xlR3Jvd0FyZWE6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJHcm93QXJl
YSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVTaGVldDoKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5hcHBlbmQoIlNoZWV0Iik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUhl
bHBUYWc6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJIZWxwVGFnIik7CisgICAgY2Fz
ZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZU1hdHRlOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVu
ZCgiTWF0dGUiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlUnVsZXI6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJSdWxlciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0
eVJvbGVSdWxlck1hcmtlcjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIlJ1bGVyTWFy
a2VyIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxpbms6CisgICAgICAgIHJldHVy
biByZXN1bHQuYXBwZW5kKCJMaW5rIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZURp
c2Nsb3N1cmVUcmlhbmdsZToKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkRpc2Nsb3N1
cmVUcmlhbmdsZSIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVHcmlkOgorICAgICAg
ICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiR3JpZCIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0
eVJvbGVDZWxsOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiQ2VsbCIpOworICAgIGNh
c2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVDb2x1bW5IZWFkZXI6CisgICAgICAgIHJldHVybiByZXN1
bHQuYXBwZW5kKCJDb2x1bW5IZWFkZXIiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xl
Um93SGVhZGVyOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiUm93SGVhZGVyIik7Cisg
ICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZVdlYkNvcmVMaW5rOgorICAgICAgICAvLyBNYXBz
IHRvIExpbmsgcm9sZS4KKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkxpbmsiKTsKKyAg
ICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlSW1hZ2VNYXBMaW5rOgorICAgICAgICByZXR1cm4g
cmVzdWx0LmFwcGVuZCgiSW1hZ2VNYXBMaW5rIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5
Um9sZUltYWdlTWFwOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiSW1hZ2VNYXAiKTsK
KyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGlzdE1hcmtlcjoKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5hcHBlbmQoIkxpc3RNYXJrZXIiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlS
b2xlV2ViQXJlYToKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIldlYkFyZWEiKTsKKyAg
ICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlSGVhZGluZzoKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC5hcHBlbmQoIkhlYWRpbmciKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGlzdEJv
eDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkxpc3RCb3giKTsKKyAgICBjYXNlIFdl
YkFjY2Vzc2liaWxpdHlSb2xlTGlzdEJveE9wdGlvbjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5h
cHBlbmQoIkxpc3RCb3hPcHRpb24iKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlVGFi
bGVIZWFkZXJDb250YWluZXI6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJUYWJsZUhl
YWRlckNvbnRhaW5lciIpOworICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVEZWZpbml0aW9u
TGlzdFRlcm06CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJEZWZpbml0aW9uTGlzdFRl
cm0iKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlRGVmaW5pdGlvbkxpc3REZWZpbml0
aW9uOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiRGVmaW5pdGlvbkxpc3REZWZpbml0
aW9uIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUFubm90YXRpb246CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJBbm5vdGF0aW9uIik7CisgICAgY2FzZSBXZWJBY2Nlc3Np
YmlsaXR5Um9sZVNsaWRlclRodW1iOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiU2xp
ZGVyVGh1bWIiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGFuZG1hcmtBcHBsaWNh
dGlvbjoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkxhbmRtYXJrQXBwbGljYXRpb24i
KTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlTGFuZG1hcmtCYW5uZXI6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJMYW5kbWFya0Jhbm5lciIpOworICAgIGNhc2UgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVMYW5kbWFya0NvbXBsZW1lbnRhcnk6CisgICAgICAgIHJldHVybiByZXN1
bHQuYXBwZW5kKCJMYW5kbWFya0NvbXBsZW1lbnRhcnkiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2li
aWxpdHlSb2xlTGFuZG1hcmtDb250ZW50SW5mbzoKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5hcHBl
bmQoIkxhbmRtYXJrQ29udGVudEluZm8iKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xl
TGFuZG1hcmtNYWluOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiTGFuZG1hcmtNYWlu
Iik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUxhbmRtYXJrTmF2aWdhdGlvbjoKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5hcHBlbmQoIkxhbmRtYXJrTmF2aWdhdGlvbiIpOworICAgIGNh
c2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVMYW5kbWFya1NlYXJjaDoKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5hcHBlbmQoIkxhbmRtYXJrU2VhcmNoIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5
Um9sZUFwcGxpY2F0aW9uTG9nOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiQXBwbGlj
YXRpb25Mb2ciKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlQXBwbGljYXRpb25NYXJx
dWVlOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiQXBwbGljYXRpb25NYXJxdWVlIik7
CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZUFwcGxpY2F0aW9uU3RhdHVzOgorICAgICAg
ICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiQXBwbGljYXRpb25TdGF0dXMiKTsKKyAgICBjYXNlIFdl
YkFjY2Vzc2liaWxpdHlSb2xlQXBwbGljYXRpb25UaW1lcjoKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC5hcHBlbmQoIkFwcGxpY2F0aW9uVGltZXIiKTsKKyAgICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlS
b2xlRG9jdW1lbnQ6CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJEb2N1bWVudCIpOwor
ICAgIGNhc2UgV2ViQWNjZXNzaWJpbGl0eVJvbGVEb2N1bWVudEFydGljbGU6CisgICAgICAgIHJl
dHVybiByZXN1bHQuYXBwZW5kKCJEb2N1bWVudEFydGljbGUiKTsKKyAgICBjYXNlIFdlYkFjY2Vz
c2liaWxpdHlSb2xlRG9jdW1lbnROb3RlOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgi
RG9jdW1lbnROb3RlIik7CisgICAgY2FzZSBXZWJBY2Nlc3NpYmlsaXR5Um9sZURvY3VtZW50UmVn
aW9uOgorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiRG9jdW1lbnRSZWdpb24iKTsKKyAg
ICBjYXNlIFdlYkFjY2Vzc2liaWxpdHlSb2xlVXNlckludGVyZmFjZVRvb2x0aXA6CisgICAgICAg
IHJldHVybiByZXN1bHQuYXBwZW5kKCJVc2VySW50ZXJmYWNlVG9vbHRpcCIpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIC8vIEFsc28gbWF0Y2hlcyBXZWJBY2Nlc3NpYmlsaXR5Um9sZVVua25vd24u
CisgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCJVbmtub3duIik7CisgICAgfQorfQorCitz
dHJpbmcgZ2V0RGVzY3JpcHRpb24oY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
KQoreworICAgIHN0cmluZyBkZXNjcmlwdGlvbiA9IG9iamVjdC5hY2Nlc3NpYmlsaXR5RGVzY3Jp
cHRpb24oKS51dGY4KCk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uLmluc2VydCgwLCAiQVhEZXNj
cmlwdGlvbjogIik7Cit9CisKK3N0cmluZyBnZXRSb2xlKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkKK3sKKyAgICByZXR1cm4gcm9sZVRvU3RyaW5nKG9iamVjdC5yb2xlVmFs
dWUoKSk7Cit9CisKK3N0cmluZyBnZXRUaXRsZShjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpCit7CisgICAgc3RyaW5nIHRpdGxlID0gb2JqZWN0LnRpdGxlKCkudXRmOCgpOwor
ICAgIHJldHVybiB0aXRsZS5pbnNlcnQoMCwgIkFYVGl0bGU6ICIpOworfQorCitzdHJpbmcgZ2V0
QXR0cmlidXRlcyhjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit7CisgICAg
Ly8gVE9ETyhkZ2xhemtvdik6IENvbmNhdGVuYXRlIGFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBBY2Nl
c3NpYmlsaXR5T2JqZWN0LgorICAgIHN0cmluZyBhdHRyaWJ1dGVzKGdldFRpdGxlKG9iamVjdCkp
OworICAgIGF0dHJpYnV0ZXMuYXBwZW5kKCJcbiIpOworICAgIGF0dHJpYnV0ZXMuYXBwZW5kKGdl
dFJvbGUob2JqZWN0KSk7CisgICAgYXR0cmlidXRlcy5hcHBlbmQoIlxuIik7CisgICAgYXR0cmli
dXRlcy5hcHBlbmQoZ2V0RGVzY3JpcHRpb24ob2JqZWN0KSk7CisgICAgcmV0dXJuIGF0dHJpYnV0
ZXM7Cit9CisKKworLy8gQ29sbGVjdHMgYXR0cmlidXRlcyBpbnRvIGEgc3RyaW5nLCBkZWxpbWl0
ZWQgYnkgZGFzaGVzLiBVc2VkIGJ5IGFsbCBtZXRob2RzCisvLyB0aGF0IG91dHB1dCBsaXN0cyBv
ZiBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzQ2FsbGJhY2ssCisvLyBB
dHRyaWJ1dGVzT2ZDaGlsZHJlbkNhbGxiYWNrLCBldGMuCitjbGFzcyBBdHRyaWJ1dGVzQ29sbGVj
dG9yIHsKK3B1YmxpYzoKKyAgICB2b2lkIGNvbGxlY3RBdHRyaWJ1dGVzKGNvbnN0IFdlYkFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iamVjdCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcy5hcHBl
bmQoIlxuLS0tLS0tLS0tLS0tXG4iKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChnZXRB
dHRyaWJ1dGVzKG9iamVjdCkpOworICAgIH0KKworICAgIHN0cmluZyBhdHRyaWJ1dGVzKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisKK3ByaXZhdGU6CisgICAgc3RyaW5nIG1fYXR0
cmlidXRlczsKK307CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0LCBGYWN0b3J5KiBmYWN0
b3J5KQorICAgIDogbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG9iamVjdCkKKyAgICAsIG1fZmFjdG9y
eShmYWN0b3J5KQoreworCisgICAgQVNTRVJUKGZhY3RvcnkpOworCisgICAgYmluZE1ldGhvZCgi
YWxsQXR0cmlidXRlcyIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzQ2Fs
bGJhY2spOworICAgIGJpbmRNZXRob2QoImF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMiLAor
ICAgICAgICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtl
ZFVJRWxlbWVudHNDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiYXR0cmlidXRlc09mRG9jdW1l
bnRMaW5rcyIsCisgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlc09mRG9jdW1lbnRMaW5rc0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJhdHRyaWJ1dGVz
T2ZDaGlsZHJlbiIsCisgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mQ2hpbGRyZW5DYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgicGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZU5hbWVzIiwKKyAgICAgICAgICAgICAgICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwYXJhbWV0cml6ZWRBdHRyaWJ1dGVOYW1lc0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJs
aW5lRm9ySW5kZXgiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4Q2FsbGJh
Y2spOworICAgIGJpbmRNZXRob2QoImJvdW5kc0ZvclJhbmdlIiwgJkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmJvdW5kc0ZvclJhbmdlQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInN0cmluZ0Zv
clJhbmdlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJhbmdlQ2FsbGJhY2sp
OworICAgIGJpbmRNZXRob2QoImNoaWxkQXRJbmRleCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjaGlsZEF0SW5kZXhDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiZWxlbWVudEF0UG9pbnQi
LCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnRDYWxsYmFjayk7CisgICAg
YmluZE1ldGhvZCgiYXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyIsCisgICAgICAgICAgICAgICAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVyc0NhbGxiYWNr
KTsKKyAgICBiaW5kTWV0aG9kKCJhdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzIiwKKyAgICAgICAgICAg
ICAgICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzQ2FsbGJh
Y2spOworICAgIGJpbmRNZXRob2QoImF0dHJpYnV0ZXNPZkNvbHVtbnMiLAorICAgICAgICAgICAg
ICAgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnNDYWxsYmFjayk7
CisgICAgYmluZE1ldGhvZCgiYXR0cmlidXRlc09mUm93cyIsCisgICAgICAgICAgICAgICAmQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93c0NhbGxiYWNrKTsKKyAgICBiaW5k
TWV0aG9kKCJhdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMiLAorICAgICAgICAgICAgICAgJkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxsc0NhbGxiYWNrKTsKKyAg
ICBiaW5kTWV0aG9kKCJhdHRyaWJ1dGVzT2ZIZWFkZXIiLAorICAgICAgICAgICAgICAgJkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlckNhbGxiYWNrKTsKKyAgICBiaW5k
TWV0aG9kKCJpbmRleEluVGFibGUiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRh
YmxlQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInJvd0luZGV4UmFuZ2UiLCAmQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZUNhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJj
b2x1bW5JbmRleFJhbmdlIiwKKyAgICAgICAgICAgICAgICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpjb2x1bW5JbmRleFJhbmdlQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImNlbGxGb3JDb2x1
bW5BbmRSb3ciLAorICAgICAgICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxG
b3JDb2x1bW5BbmRSb3dDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgidGl0bGVVSUVsZW1lbnQi
LCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnRDYWxsYmFjayk7CisgICAg
YmluZE1ldGhvZCgic2V0U2VsZWN0ZWRUZXh0UmFuZ2UiLAorICAgICAgICAgICAgICAgJkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlQ2FsbGJhY2spOworICAgIGJp
bmRNZXRob2QoImF0dHJpYnV0ZVZhbHVlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZVZhbHVlQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImlzQXR0cmlidXRlU2V0dGFibGUi
LAorICAgICAgICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0
dGFibGVDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiaXNBY3Rpb25TdXBwb3J0ZWQiLAorICAg
ICAgICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9ydGVkQ2Fs
bGJhY2spOworICAgIGJpbmRNZXRob2QoInBhcmVudEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJpbmNyZW1l
bnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50Q2FsbGJhY2spOworICAgIGJp
bmRNZXRob2QoImRlY3JlbWVudCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnRD
YWxsYmFjayk7CisKKyAgICBiaW5kUHJvcGVydHkoInJvbGUiLCAmQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm9sZUdldHRlckNhbGxiYWNrKTsKKyAgICBiaW5kUHJvcGVydHkoInN1YnJvbGUiLCAm
bV9zdWJyb2xlKTsKKyAgICBiaW5kUHJvcGVydHkoInRpdGxlIiwgJkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRpdGxlR2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQcm9wZXJ0eSgiZGVzY3JpcHRp
b24iLAorICAgICAgICAgICAgICAgICAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRp
b25HZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5KCJsYW5ndWFnZSIsICZtX2xhbmd1
YWdlKTsKKyAgICBiaW5kUHJvcGVydHkoIngiLCAmbV94KTsKKyAgICBiaW5kUHJvcGVydHkoInki
LCAmbV95KTsKKyAgICBiaW5kUHJvcGVydHkoIndpZHRoIiwgJm1fd2lkdGgpOworICAgIGJpbmRQ
cm9wZXJ0eSgiaGVpZ2h0IiwgJm1faGVpZ2h0KTsKKyAgICBiaW5kUHJvcGVydHkoImNsaWNrUG9p
bnRYIiwgJm1fY2xpY2tQb2ludFgpOworICAgIGJpbmRQcm9wZXJ0eSgiY2xpY2tQb2ludFkiLCAm
bV9jbGlja1BvaW50WSk7CisgICAgYmluZFByb3BlcnR5KCJpbnRWYWx1ZSIsICZtX2ludFZhbHVl
KTsKKyAgICBiaW5kUHJvcGVydHkoIm1pblZhbHVlIiwgJm1fbWluVmFsdWUpOworICAgIGJpbmRQ
cm9wZXJ0eSgibWF4VmFsdWUiLCAmbV9tYXhWYWx1ZSk7CisgICAgYmluZFByb3BlcnR5KCJjaGls
ZHJlbkNvdW50IiwKKyAgICAgICAgICAgICAgICAgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNo
aWxkcmVuQ291bnRHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5KCJpbnNlcnRpb25Q
b2ludExpbmVOdW1iZXIiLCAmbV9pbnNlcnRpb25Qb2ludExpbmVOdW1iZXIpOworICAgIGJpbmRQ
cm9wZXJ0eSgic2VsZWN0ZWRUZXh0UmFuZ2UiLCAmbV9zZWxlY3RlZFRleHRSYW5nZSk7CisgICAg
YmluZFByb3BlcnR5KCJpc0VuYWJsZWQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFi
bGVkR2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQcm9wZXJ0eSgiaXNSZXF1aXJlZCIsICZtX2lz
UmVxdWlyZWQpOworICAgIGJpbmRQcm9wZXJ0eSgiaXNTZWxlY3RlZCIsICZBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1NlbGVjdGVkR2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQcm9wZXJ0eSgi
dmFsdWVEZXNjcmlwdGlvbiIsICZtX3ZhbHVlRGVzY3JpcHRpb24pOworCisgICAgYmluZEZhbGxi
YWNrTWV0aG9kKCZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpmYWxsYmFja0NhbGxiYWNrKTsKK30K
KworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hp
bGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIHJldHVybiBtX2ZhY3RvcnktPmNyZWF0
ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuY2hpbGRBdChpbmRleCkpOworfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXQoZ2V0QXR0cmli
dXRlcyhhY2Nlc3NpYmlsaXR5T2JqZWN0KCkpKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzQ2FsbGJhY2soY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRvY3VtZW50
TGlua3NDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW5DYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIEF0dHJpYnV0ZXNDb2xsZWN0
b3IgY29sbGVjdG9yOworICAgIHVuc2lnbmVkIHNpemUgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0KCku
Y2hpbGRDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIGNvbGxlY3Rvci5jb2xsZWN0QXR0cmlidXRlcyhhY2Nlc3NpYmlsaXR5T2JqZWN0KCku
Y2hpbGRBdChpKSk7CisgICAgcmVzdWx0LT5zZXQoY29sbGVjdG9yLmF0dHJpYnV0ZXMoKSk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldHJpemVkQXR0cmlidXRlTmFt
ZXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7
CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bGluZUZvckluZGV4Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJhbmdlQ2FsbGJhY2soY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRl
eENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCit7CisgICAgaWYgKCFhcmd1bWVudHMuc2l6ZSgpIHx8ICFhcmd1bWVudHNbMF0uaXNO
dW1iZXIoKSkgeworICAgICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGNoaWxkID0gZ2V0Q2hpbGRBdElu
ZGV4KGFyZ3VtZW50c1swXS50b0ludDMyKCkpOworICAgIGlmICghY2hpbGQpIHsKKyAgICAgICAg
cmVzdWx0LT5zZXROdWxsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXN1bHQt
PnNldCgqKGNoaWxkLT5nZXRBc0NwcFZhcmlhbnQoKSkpOworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnNDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAg
cmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mUm93SGVhZGVyc0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zQ2FsbGJhY2soY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3ND
YWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlckNhbGxiYWNrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNl
dE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGVD
YWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm93SW5kZXhSYW5nZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3dDYWxsYmFj
ayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVz
dWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1
bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlVmFsdWVDYWxsYmFjayhjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5z
ZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVT
ZXR0YWJsZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxICYmICFhcmd1bWVu
dHNbMF0uaXNTdHJpbmcoKSkgeworICAgICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHN0cmluZyBhdHRyaWJ1dGUgPSBhcmd1bWVudHNbMF0udG9T
dHJpbmcoKTsKKyAgICBib29sIHNldHRhYmxlID0gZmFsc2U7CisgICAgaWYgKGF0dHJpYnV0ZSA9
PSAiQVhWYWx1ZSIpCisgICAgICAgIHNldHRhYmxlID0gYWNjZXNzaWJpbGl0eU9iamVjdCgpLmNh
blNldFZhbHVlQXR0cmlidXRlKCk7CisgICAgcmVzdWx0LT5zZXQoc2V0dGFibGUpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9ydGVkQ2FsbGJhY2soY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIC8vIFRoaXMg
b25lIG1heSBiZSByZWFsbHkgaGFyZCB0byBpbXBsZW1lbnQuCisgICAgLy8gTm90IGV4cG9zZWQg
YnkgQWNjZXNzaWJpbGl0eU9iamVjdC4KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50Q2FsbGJhY2soY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudENhbGxiYWNr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1l
bnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7
CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QgJiwgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIC8vIFRPRE8oZGdsYXprb3YpOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBy
ZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGls
ZHJlbkNvdW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGludCBj
b3VudCA9IDE7IC8vIFJvb3Qgb2JqZWN0IGFsd2F5cyBoYXMgb25seSBvbmUgY2hpbGQsIHRoZSBX
ZWJWaWV3LgorICAgIGlmICghaXNSb290KCkpCisgICAgICAgIGNvdW50ID0gYWNjZXNzaWJpbGl0
eU9iamVjdCgpLmNoaWxkQ291bnQoKTsKKyAgICByZXN1bHQtPnNldChjb3VudCk7Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb25HZXR0ZXJDYWxsYmFjayhDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXQoZ2V0RGVzY3JpcHRpb24oYWNjZXNz
aWJpbGl0eU9iamVjdCgpKSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNF
bmFibGVkR2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0KGFjY2Vzc2liaWxpdHlPYmplY3QoKS5pc0VuYWJsZWQoKSk7Cit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlR2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IHJlc3VsdC0+c2V0KGdldFJvbGUoYWNjZXNzaWJpbGl0eU9iamVjdCgpKSk7Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiBy
ZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXQoZ2V0VGl0bGUoYWNjZXNzaWJpbGl0eU9iamVjdCgp
KSk7Cit9CisKKworUm9vdEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OlJvb3RBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgJm9iamVjdCwgRmFjdG9yeSAq
ZmFjdG9yeSkKKyAgICA6IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQob2JqZWN0LCBmYWN0b3J5KSB7
IH0KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogUm9vdEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXgpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGZhY3RvcnkoKS0+Y3JlYXRlKGFjY2Vzc2liaWxp
dHlPYmplY3QoKSk7Cit9CisKKworQWNjZXNzaWJpbGl0eVVJRWxlbWVudExpc3QgOjp+QWNjZXNz
aWJpbGl0eVVJRWxlbWVudExpc3QoKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudExpc3Q6OmNsZWFyKCkKK3sKKyAgICBmb3IgKEVsZW1lbnRMaXN0Ojpp
dGVyYXRvciBpID0gbV9lbGVtZW50cy5iZWdpbigpOyBpICE9IG1fZWxlbWVudHMuZW5kKCk7ICsr
aSkKKyAgICAgICAgZGVsZXRlICgqaSk7CisgICAgbV9lbGVtZW50cy5jbGVhcigpOworfQorCitB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6Y3JlYXRl
KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKK3sKKyAgICBpZiAob2JqZWN0
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIGVsZW1lbnQgPSBuZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudChvYmplY3QsIHRoaXMpOwor
ICAgIG1fZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQor
CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6Y3Jl
YXRlUm9vdChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCit7CisgICAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IG5ldyBSb290QWNjZXNzaWJpbGl0eVVJRWxl
bWVudChvYmplY3QsIHRoaXMpOworICAgIG1fZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAg
IHJldHVybiBlbGVtZW50OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmM2Y1YjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAg
LTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRfaAorI2RlZmluZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50X2gKKworI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKKyNp
bmNsdWRlICJwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCA6IHB1YmxpYyBDcHBCb3Vu
ZENsYXNzIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBGYWN0b3J5IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgfkZhY3RvcnkoKSB7IH0KKyAgICAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jikg
PSAwOworICAgIH07CisKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYsIEZhY3RvcnkqKTsKKworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogZ2V0Q2hpbGRBdEluZGV4KHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJvdGVjdGVkOgorICAg
IGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgYWNjZXNzaWJpbGl0eU9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eU9iamVjdDsgfQorICAgIEZhY3Rvcnkq
IGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3Rvcnk7IH0KKworcHJpdmF0ZToKKyAgICAv
LyBCb3VuZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLgorICAgIHZvaWQgYWxsQXR0cmlidXRlc0Nh
bGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGF0
dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBhdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgYXR0cmli
dXRlc09mQ2hpbGRyZW5DYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgdm9pZCBwYXJhbWV0cml6ZWRBdHRyaWJ1dGVOYW1lc0NhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGxpbmVGb3JJbmRleENhbGxi
YWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGJvdW5k
c0ZvclJhbmdlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwor
ICAgIHZvaWQgc3RyaW5nRm9yUmFuZ2VDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisgICAgdm9pZCBjaGlsZEF0SW5kZXhDYWxsYmFjayhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBlbGVtZW50QXRQb2ludENhbGxiYWNr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGF0dHJpYnV0
ZXNPZkNvbHVtbkhlYWRlcnNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisgICAgdm9pZCBhdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzQ2FsbGJhY2soY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgYXR0cmlidXRlc09mQ29sdW1u
c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lk
IGF0dHJpYnV0ZXNPZlJvd3NDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisgICAgdm9pZCBhdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHNDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBhdHRyaWJ1dGVzT2ZIZWFk
ZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBpbmRleEluVGFibGVDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgdm9pZCByb3dJbmRleFJhbmdlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgY29sdW1uSW5kZXhSYW5nZUNhbGxiYWNrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGNlbGxGb3JDb2x1bW5B
bmRSb3dDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAg
dm9pZCB0aXRsZVVJRWxlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKKyAgICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlQ2FsbGJhY2soY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgYXR0cmlidXRlVmFsdWVDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBpc0F0
dHJpYnV0ZVNldHRhYmxlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworICAgIHZvaWQgaXNBY3Rpb25TdXBwb3J0ZWRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBwYXJlbnRFbGVtZW50Q2FsbGJhY2soY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgaW5jcmVtZW50Q2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZGVj
cmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAg
IHZvaWQgZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisKKyAgICB2b2lkIGNoaWxkcmVuQ291bnRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7
CisgICAgdm9pZCBkZXNjcmlwdGlvbkdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKKyAgICB2
b2lkIGlzRW5hYmxlZEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGlzU2Vs
ZWN0ZWRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CisgICAgdm9pZCByb2xlR2V0dGVyQ2Fs
bGJhY2soQ3BwVmFyaWFudCopOworICAgIHZvaWQgdGl0bGVHZXR0ZXJDYWxsYmFjayhDcHBWYXJp
YW50Kik7CisKKyAgICBDcHBWYXJpYW50IG1fc3Vicm9sZTsKKyAgICBDcHBWYXJpYW50IG1fbGFu
Z3VhZ2U7CisgICAgQ3BwVmFyaWFudCBtX3g7CisgICAgQ3BwVmFyaWFudCBtX3k7CisgICAgQ3Bw
VmFyaWFudCBtX3dpZHRoOworICAgIENwcFZhcmlhbnQgbV9oZWlnaHQ7CisgICAgQ3BwVmFyaWFu
dCBtX2NsaWNrUG9pbnRYOworICAgIENwcFZhcmlhbnQgbV9jbGlja1BvaW50WTsKKyAgICBDcHBW
YXJpYW50IG1faW50VmFsdWU7CisgICAgQ3BwVmFyaWFudCBtX21pblZhbHVlOworICAgIENwcFZh
cmlhbnQgbV9tYXhWYWx1ZTsKKyAgICBDcHBWYXJpYW50IG1fY2hpbGRyZW5Db3VudDsKKyAgICBD
cHBWYXJpYW50IG1faW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyOworICAgIENwcFZhcmlhbnQgbV9z
ZWxlY3RlZFRleHRSYW5nZTsKKyAgICBDcHBWYXJpYW50IG1faXNSZXF1aXJlZDsKKyAgICBDcHBW
YXJpYW50IG1fdmFsdWVEZXNjcmlwdGlvbjsKKworICAgIFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0
eU9iamVjdCBtX2FjY2Vzc2liaWxpdHlPYmplY3Q7CisgICAgRmFjdG9yeSogbV9mYWN0b3J5Owor
fTsKKworCitjbGFzcyBSb290QWNjZXNzaWJpbGl0eVVJRWxlbWVudCA6IHB1YmxpYyBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBSb290QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmLCBGYWN0b3J5Kik7CisKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldENoaWxkQXRJbmRleCh1bnNpZ25l
ZCk7CisgICAgdmlydHVhbCBib29sIGlzUm9vdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KK307
CisKKworLy8gUHJvdmlkZXMgc2ltcGxlIGxpZmV0aW1lIG1hbmFnZW1lbnQgb2YgdGhlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgaW5zdGFuY2VzOgorLy8gYWxsIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnRzIGV2ZXIgY3JlYXRlZCBmcm9tIHRoZSBjb250cm9sbGVyIGFyZSBzdG9yZWQgaW4KKy8vIGEg
bGlzdCBhbmQgY2xlYXJlZCBleHBsaWNpdGx5LgorY2xhc3MgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dExpc3QgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6RmFjdG9yeSB7CitwdWJsaWM6
CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudExpc3QoKSB7IH0KKyAgICB2aXJ0dWFsIH5BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TGlzdCgpOworCisgICAgdm9pZCBjbGVhcigpOworICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQWNjZXNz
aWJpbGl0eU9iamVjdCYpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGNyZWF0ZVJvb3Qo
Y29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAg
dHlwZWRlZiBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+IEVsZW1lbnRMaXN0OworICAg
IEVsZW1lbnRMaXN0IG1fZWxlbWVudHM7Cit9OworCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudF9oCg==
</data>
<flag name="review"
          id="33119"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>