<?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>84960</bug_id>
          
          <creation_ts>2012-04-26 07:52:53 -0700</creation_ts>
          <short_desc>[GTK] Test WebKit2.RestoreSessionStateContainingFormData fails</short_desc>
          <delta_ts>2015-10-15 01:19:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>610610</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-26 07:52:53 -0700</bug_when>
    <thetext>Session State is not implemented in GTK+ port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127082</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-18 00:02:58 -0700</bug_when>
    <thetext>The test crashes because it uses WKSessionStateCopyData() that requires an implementation of WebKit::encodeLegacySessionState(). The default implementation returns NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128879</commentid>
    <comment_count>2</comment_count>
    <who name="Sam P.">sam</who>
    <bug_when>2015-09-26 03:19:37 -0700</bug_when>
    <thetext>How do you actually run this test?  I have worked on an implementation of this ap and tested it with minibrowser, however, I can not find documentation on how to run these type of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128883</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-09-26 07:13:37 -0700</bug_when>
    <thetext>Hi, thanks for working on this. Use the script Tools/Scripts/run-gtk-tests to run the tests. You will need to remove this test from the list of skipped tests up towards the top of that file.

That will run all the tests, though; I can&apos;t remember if I ever found a way to run a single cross-platform test or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128925</commentid>
    <comment_count>4</comment_count>
      <attachid>261985</attachid>
    <who name="Sam P.">sam</who>
    <bug_when>2015-09-26 20:20:16 -0700</bug_when>
    <thetext>Created attachment 261985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131804</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-10-08 18:25:04 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=261985&amp;action=review

&gt; Source/WebKit2/ChangeLog:8
&gt; +        This commit adds an implimentation of the LegacySessionStateCoding.  It is based off of

implementation

&gt; Source/WebKit2/ChangeLog:9
&gt; +        the mac implimentation, however instead of using core foundation dictionaries it uses

Ditto

&gt; Source/WebKit2/PlatformGTK.cmake:367
&gt; +    UIProcess/LegacySessionStateCodingNone.cpp

Instead of doing this, let&apos;s remove it from CMakeLists.txt and add it manually to all the other Platform*.cmake files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131849</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-08 23:30:56 -0700</bug_when>
    <thetext>*** Bug 88455 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131851</commentid>
    <comment_count>7</comment_count>
      <attachid>261985</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-08 23:36:42 -0700</bug_when>
    <thetext>Comment on attachment 261985
Patch

I&apos;m sorry if I didn&apos;t explain it correctly, I didn&apos;t mean we needed a new implementation of the legacy decoders. Those are there only for compatibility with Safari, but still used by the unit tests. We already have a cross-platform implementation of the SessionState, so we don&apos;t need to copy the mac legacy encoders/decoders, but simply use the new implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131853</commentid>
    <comment_count>8</comment_count>
      <attachid>262753</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-08 23:41:59 -0700</bug_when>
    <thetext>Created attachment 262753
Patch

This is what I meant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131854</commentid>
    <comment_count>9</comment_count>
    <who name="Sam P.">sam</who>
    <bug_when>2015-10-08 23:46:23 -0700</bug_when>
    <thetext>That looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133413</commentid>
    <comment_count>10</comment_count>
      <attachid>262753</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-10-15 01:01:02 -0700</bug_when>
    <thetext>Comment on attachment 262753
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133417</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-15 01:19:42 -0700</bug_when>
    <thetext>Committed r191103: &lt;http://trac.webkit.org/changeset/191103&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261985</attachid>
            <date>2015-09-26 20:20:16 -0700</date>
            <delta_ts>2015-10-08 23:36:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84960-20150927131952.patch</filename>
            <type>text/plain</type>
            <size>26696</size>
            <attacher name="Sam P.">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjE5ZWVkMTZiOWFmY2Fi
YmUyMzg5M2I1NjI0OGJmODQyMjM3Zjc3Ni4uODE4NzNlZTU1ZWM1ZjhmMzZhN2ZiMTZjYTdlMGQ2
Y2EzN2JiZTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA5LTI2ICBTYW0g
UGFya2luc29uICA8c2FtLnBhcmtpbnNvbjNAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdIFRl
c3QgV2ViS2l0Mi5SZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhIGZhaWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDk2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY29tbWl0
IGFkZHMgYW4gaW1wbGltZW50YXRpb24gb2YgdGhlIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy4g
IEl0IGlzIGJhc2VkIG9mZiBvZgorICAgICAgICB0aGUgbWFjIGltcGxpbWVudGF0aW9uLCBob3dl
dmVyIGluc3RlYWQgb2YgdXNpbmcgY29yZSBmb3VuZGF0aW9uIGRpY3Rpb25hcmllcyBpdCB1c2Vz
CisgICAgICAgIHRoZSBIaXN0b3J5RW50cnlEYXRhRW5jb2RlciBhbmQgRGVjb2Rlci4KKworICAg
ICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiAgRXhjbHVkZSBOVUxMIGltcGxpbWVudGF0aW9uIGZy
b20gdGhlIGJ1aWxkCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9MZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmcuY3BwOiBBZGRlZC4gIEJhc2VkIG9mIFVJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nLmNwcAorICAgICAgICAoV2ViS2l0OjpIaXN0b3J5RW50cnlEYXRhRW5jb2Rlcjo6
SGlzdG9yeUVudHJ5RGF0YUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVMZWdhY3lT
ZXNzaW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpIaXN0b3J5RW50cnlEYXRhRGVjb2Rlcjo6
SGlzdG9yeUVudHJ5RGF0YURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdhY3lT
ZXNzaW9uU3RhdGUpOgorCiAyMDE1LTA4LTE4ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR0xpYl0gR01haW5Mb29wU291cmNlIHNob3VsZCByZWNlaXZl
IHRoZSBzdGQ6OmZ1bmN0aW9uPD4gb2JqZWN0cyB0aHJvdWdoIHJ2YWx1ZSByZWZlcmVuY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDg1Y2I2YzRmM2FlYTdkMDAwMWFlOGI5YWRmNGFk
YTBhNWJmNzA3OGUuLjE2NTg3YjRmODA2MTY1NGQ3YjM1ZDcyM2VjMWFiZTNjYWRjZWFkZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yOTksNiArMjk5LDcgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2d0ay9HZXN0dXJlQ29udHJvbGxlci5jcHAK
ICAgICBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAogICAgIFVJUHJvY2Vzcy9n
dGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCisgICAgVUlQcm9jZXNzL2d0ay9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmcuY3BwCiAgICAgVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5jcHAKICAgICBVSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAogICAgIFVJ
UHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCkBAIC0zNjIsNiArMzYzLDEwIEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
U291cC5jcHAKICkKIAorbGlzdChSRU1PVkVfSVRFTSBXZWJLaXQyX1NPVVJDRVMKKyAgICBVSVBy
b2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKykKKwogbGlzdChBUFBFTkQg
V2ViS2l0Ml9ERVJJVkVEX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19XRUJLSVQyR1RL
X0RJUn0vSW5zcGVjdG9yR1Jlc291cmNlQnVuZGxlLmMKICAgICAke0RFUklWRURfU09VUkNFU19X
RUJLSVQyR1RLX0RJUn0vV2ViS2l0Mkluc3BlY3RvckdSZXNvdXJjZUJ1bmRsZS5jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdhYmIzYWNkNGVkODdlN2NmYmI3ZDZhZDY1Zjc5MDE3OTg2
ZGViZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvTGVn
YWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApAQCAtMCwwICsxLDc2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgU2FtIFBhcmtpbnNvbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmgiCisKKyNpbmNsdWRlICJBUElE
YXRhLmgiCisjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8d3RmL01hbGxvY1B0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBzZXNzaW9uU3Rh
dGVEYXRhVmVyc2lvbiA9IDE7CitzdGF0aWMgY29uc3QgdWludDMyX3Qgc2Vzc2lvbkhpc3RvcnlW
ZXJzaW9uID0gMTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0
YVZlcnNpb24gPSAxOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGlzVmFsaWRFbnVtKFQp
OworCitjbGFzcyBIaXN0b3J5RW50cnlEYXRhRW5jb2RlciB7CitwdWJsaWM6CisgICAgSGlzdG9y
eUVudHJ5RGF0YUVuY29kZXIoKQorICAgICAgICA6IG1fYnVmZmVyU2l6ZSgwKQorICAgICAgICAs
IG1fYnVmZmVyQ2FwYWNpdHkoNTEyKQorICAgICAgICAsIG1fYnVmZmVyKE1hbGxvY1B0cjx1aW50
OF90Pjo6bWFsbG9jKG1fYnVmZmVyQ2FwYWNpdHkpKQorICAgICAgICAsIG1fYnVmZmVyUG9pbnRl
cihtX2J1ZmZlci5nZXQoKSkKKyAgICB7IH0KKworICAgIEhpc3RvcnlFbnRyeURhdGFFbmNvZGVy
JiBvcGVyYXRvcjw8KHVpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVuY29k
ZUFyaXRobWV0aWNUeXBlKHZhbHVlKTsKKyAgICB9CisKKyAgICBIaXN0b3J5RW50cnlEYXRhRW5j
b2RlciYgb3BlcmF0b3I8PChpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVu
Y29kZUFyaXRobWV0aWNUeXBlKHZhbHVlKTsKKyAgICB9CisKKyAgICBIaXN0b3J5RW50cnlEYXRh
RW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBlbmNvZGVBcml0aG1ldGljVHlwZSh2YWx1ZSk7CisgICAgfQorCisgICAgSGlzdG9yeUVudHJ5
RGF0YUVuY29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBlbmNvZGVBcml0aG1ldGljVHlwZSh2YWx1ZSk7CisgICAgfQorCisgICAgSGlzdG9yeUVu
dHJ5RGF0YUVuY29kZXImIG9wZXJhdG9yPDwoZmxvYXQgdmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gZW5jb2RlQXJpdGhtZXRpY1R5cGUodmFsdWUpOworICAgIH0KKworICAgIEhpc3RvcnlF
bnRyeURhdGFFbmNvZGVyJiBvcGVyYXRvcjw8KGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBlbmNvZGVBcml0aG1ldGljVHlwZSh2YWx1ZSk7CisgICAgfQorCisgICAgSGlzdG9y
eUVudHJ5RGF0YUVuY29kZXImIG9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBlbmNvZGVBcml0aG1ldGljVHlwZSh2YWx1ZSk7CisgICAgfQorCisgICAgSGlzdG9y
eUVudHJ5RGF0YUVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCisgICAgICAgIGlmICh2
YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisKKyAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gdmFs
dWUubGVuZ3RoKCk7CisgICAgICAgICp0aGlzIDw8IGxlbmd0aDsKKworICAgICAgICAqdGhpcyA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAg
IGVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihT
dHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSksIGxlbmd0aCAq
IHNpemVvZihVQ2hhciksIGFsaWdub2YoVUNoYXIpKTsKKworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgSGlzdG9yeUVudHJ5RGF0YUVuY29kZXImIG9wZXJhdG9yPDwoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZSkKKyAgICB7CisgICAgICAgICp0aGlzIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih2YWx1ZS5zaXplKCkpOworICAgICAgICBlbmNvZGVGaXhlZExlbmd0aERh
dGEodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCksIDEpOworCisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICBIaXN0b3J5RW50cnlEYXRhRW5jb2RlciYgb3BlcmF0b3I8PChjb25z
dCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgKnRoaXMgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHZhbHVlLnNpemUoKSk7CisgICAgICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS5kYXRhKCkpLCB2YWx1ZS5z
aXplKCksIDEpOworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIGF1dG8gb3BlcmF0b3I8PChUIHZhbHVlKSAtPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2VudW08VD46OnZhbHVlLCBIaXN0b3J5RW50cnlEYXRhRW5j
b2RlciY+Ojp0eXBlIHsKKyAgICAgICAgcmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih2YWx1ZSk7CisgICAgfQorCisgICAgTWFsbG9jUHRyPHVpbnQ4X3Q+IGZpbmlzaEVuY29k
aW5nKHNpemVfdCYgc2l6ZSkKKyAgICB7CisgICAgICAgIHNpemUgPSBtX2J1ZmZlclNpemU7Cisg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUobV9idWZmZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorICAgIEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyJiBl
bmNvZGVBcml0aG1ldGljVHlwZShUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VHlwZT46OnZhbHVlLCAiIik7CisKKyAgICAgICAgZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNp
emVvZih2YWx1ZSksIHNpemVvZih2YWx1ZSkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihkYXRhKSAlIGFsaWdubWVudCkpOworCisgICAg
ICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coYWxpZ25tZW50LCBzaXplKTsKKyAgICAgICAgbWVt
Y3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CisgICAgfQorCisgICAgdWludDhfdCogZ3Jvdyh1bnNp
Z25lZCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGFsaWdu
ZWRTaXplID0gKChtX2J1ZmZlclNpemUgKyBhbGlnbm1lbnQgLSAxKSAvIGFsaWdubWVudCkgKiBh
bGlnbm1lbnQ7CisKKyAgICAgICAgZ3Jvd0NhcGFjaXR5KGFsaWduZWRTaXplICsgc2l6ZSk7CisK
KyAgICAgICAgbV9idWZmZXJTaXplID0gYWxpZ25lZFNpemUgKyBzaXplOworICAgICAgICBtX2J1
ZmZlclBvaW50ZXIgPSBtX2J1ZmZlci5nZXQoKSArIG1fYnVmZmVyU2l6ZTsKKworICAgICAgICBy
ZXR1cm4gbV9idWZmZXIuZ2V0KCkgKyBhbGlnbmVkU2l6ZTsKKyAgICB9CisKKyAgICB2b2lkIGdy
b3dDYXBhY2l0eShzaXplX3QgbmV3U2l6ZSkKKyAgICB7CisgICAgICAgIGlmIChuZXdTaXplIDw9
IG1fYnVmZmVyQ2FwYWNpdHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc2l6ZV90
IG5ld0NhcGFjaXR5ID0gbV9idWZmZXJDYXBhY2l0eSAqIDI7CisgICAgICAgIHdoaWxlIChuZXdD
YXBhY2l0eSA8IG5ld1NpemUpCisgICAgICAgICAgICBuZXdDYXBhY2l0eSAqPSAyOworCisgICAg
ICAgIG1fYnVmZmVyLnJlYWxsb2MobmV3Q2FwYWNpdHkpOworICAgICAgICBtX2J1ZmZlckNhcGFj
aXR5ID0gbmV3Q2FwYWNpdHk7CisgICAgfQorCisgICAgc2l6ZV90IG1fYnVmZmVyU2l6ZTsKKyAg
ICBzaXplX3QgbV9idWZmZXJDYXBhY2l0eTsKKyAgICBNYWxsb2NQdHI8dWludDhfdD4gbV9idWZm
ZXI7CisgICAgdWludDhfdCogbV9idWZmZXJQb2ludGVyOworfTsKKworZW51bSBjbGFzcyBGb3Jt
RGF0YUVsZW1lbnRUeXBlIHsKKyAgICBEYXRhID0gMCwKKyAgICBFbmNvZGVkRmlsZSA9IDEsCisg
ICAgRW5jb2RlZEJsb2IgPSAyLAorfTsKKworc3RhdGljIGJvb2wgaXNWYWxpZEVudW0oRm9ybURh
dGFFbGVtZW50VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRm9y
bURhdGFFbGVtZW50VHlwZTo6RGF0YToKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVudFR5cGU6OkVu
Y29kZWRGaWxlOgorICAgIGNhc2UgRm9ybURhdGFFbGVtZW50VHlwZTo6RW5jb2RlZEJsb2I6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIHZvaWQgZW5jb2RlRm9ybURhdGFFbGVtZW50KEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBIVFRQQm9keTo6RWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBzd2l0Y2gg
KGVsZW1lbnQudHlwZSkgeworICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkRhdGE6
CisgICAgICAgIGVuY29kZXIgPDwgRm9ybURhdGFFbGVtZW50VHlwZTo6RGF0YTsKKyAgICAgICAg
ZW5jb2RlciA8PCBlbGVtZW50LmRhdGE7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIVFRQ
Qm9keTo6RWxlbWVudDo6VHlwZTo6RmlsZToKKyAgICAgICAgZW5jb2RlciA8PCBGb3JtRGF0YUVs
ZW1lbnRUeXBlOjpFbmNvZGVkRmlsZTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVQ
YXRoOworCisgICAgICAgIC8vIFVzZWQgdG8gYmUgZ2VuZXJhdGVkRmlsZW5hbWUuCisgICAgICAg
IGVuY29kZXIgPDwgU3RyaW5nKCk7CisKKyAgICAgICAgLy8gVXNlZCB0byBiZSBzaG91bGRHZW5l
cmF0ZUZpbGUuCisgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CisKKyAgICAgICAgZW5jb2RlciA8
PCBlbGVtZW50LmZpbGVTdGFydDsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5n
dGgudmFsdWVPcigtMSk7CisgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lLnZhbHVlT3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWll
dF9OYU4oKSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6
VHlwZTo6QmxvYjoKKyAgICAgICAgZW5jb2RlciA8PCBGb3JtRGF0YUVsZW1lbnRUeXBlOjpFbmNv
ZGVkQmxvYjsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmJsb2JVUkxTdHJpbmc7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZW5jb2RlRm9ybURhdGEoSGlzdG9y
eUVudHJ5RGF0YUVuY29kZXImIGVuY29kZXIsIGNvbnN0IEhUVFBCb2R5JiBmb3JtRGF0YSkKK3sK
KyAgICAvLyBVc2VkIHRvIGJlIGFsd2F5c1N0cmVhbS4KKyAgICBlbmNvZGVyIDw8IGZhbHNlOwor
CisgICAgLy8gVXNlZCB0byBiZSBib3VuZGFyeS4KKyAgICBlbmNvZGVyIDw8IFZlY3Rvcjx1aW50
OF90PigpOworCisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZm9ybURhdGEu
ZWxlbWVudHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBmb3JtRGF0
YS5lbGVtZW50cykKKyAgICAgICAgZW5jb2RlRm9ybURhdGFFbGVtZW50KGVuY29kZXIsIGVsZW1l
bnQpOworCisgICAgLy8gVXNlZCB0byBiZSBoYXNHZW5lcmF0ZWRGaWxlcy4KKyAgICBlbmNvZGVy
IDw8IGZhbHNlOworCisgICAgLy8gVXNlZCB0byBiZSBpZGVudGlmaWVyLgorICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oMCk7Cit9CisKK3N0YXRpYyB2b2lkIGVuY29kZUZyYW1l
U3RhdGVOb2RlKEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFtZVN0
YXRlJiBmcmFtZVN0YXRlKQoreworICAgIGVuY29kZXIgPDwgc2Vzc2lvbkhpc3RvcnlFbnRyeURh
dGFWZXJzaW9uOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZyYW1lU3Rh
dGUuY2hpbGRyZW4uc2l6ZSgpKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRGcmFtZVN0
YXRlIDogZnJhbWVTdGF0ZS5jaGlsZHJlbikgeworICAgICAgICBlbmNvZGVyIDw8IGNoaWxkRnJh
bWVTdGF0ZS5vcmlnaW5hbFVSTFN0cmluZzsKKyAgICAgICAgZW5jb2RlciA8PCBjaGlsZEZyYW1l
U3RhdGUudXJsU3RyaW5nOworCisgICAgICAgIGVuY29kZUZyYW1lU3RhdGVOb2RlKGVuY29kZXIs
IGNoaWxkRnJhbWVTdGF0ZSk7CisgICAgfQorCisgICAgZW5jb2RlciA8PCBmcmFtZVN0YXRlLmRv
Y3VtZW50U2VxdWVuY2VOdW1iZXI7CisKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihmcmFtZVN0YXRlLmRvY3VtZW50U3RhdGUuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGRvY3VtZW50U3RhdGUgOiBmcmFtZVN0YXRlLmRvY3VtZW50U3RhdGUpCisgICAgICAgIGVu
Y29kZXIgPDwgZG9jdW1lbnRTdGF0ZTsKKworICAgIGlmIChmcmFtZVN0YXRlLmh0dHBCb2R5KSB7
CisgICAgICAgIGVuY29kZXIgPDwgZnJhbWVTdGF0ZS5odHRwQm9keS52YWx1ZSgpLmNvbnRlbnRU
eXBlOworICAgICAgICBlbmNvZGVyIDw8IHRydWU7CisKKyAgICAgICAgZW5jb2RlRm9ybURhdGEo
ZW5jb2RlciwgZnJhbWVTdGF0ZS5odHRwQm9keS52YWx1ZSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBlbmNvZGVyIDw8IFN0cmluZygpOworICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAg
IH0KKworICAgIGVuY29kZXIgPDwgZnJhbWVTdGF0ZS5pdGVtU2VxdWVuY2VOdW1iZXI7CisKKyAg
ICBlbmNvZGVyIDw8IGZyYW1lU3RhdGUucmVmZXJyZXI7CisKKyAgICBlbmNvZGVyIDw8IGZyYW1l
U3RhdGUuc2Nyb2xsUG9pbnQueCgpOworICAgIGVuY29kZXIgPDwgZnJhbWVTdGF0ZS5zY3JvbGxQ
b2ludC55KCk7CisKKyAgICBlbmNvZGVyIDw8IGZyYW1lU3RhdGUucGFnZVNjYWxlRmFjdG9yOwor
CisgICAgZW5jb2RlciA8PCAhIWZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhOworICAgIGlmIChm
cmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YSkKKyAgICAgICAgZW5jb2RlciA8PCBmcmFtZVN0YXRl
LnN0YXRlT2JqZWN0RGF0YS52YWx1ZSgpOworCisgICAgZW5jb2RlciA8PCBmcmFtZVN0YXRlLnRh
cmdldDsKK30KKworc3RhdGljIHZvaWQgZW5jb2RlU2Vzc2lvbkhpc3RvcnkoSGlzdG9yeUVudHJ5
RGF0YUVuY29kZXImIGVuY29kZXIsIGNvbnN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlJiBiYWNrRm9y
d2FyZExpc3RTdGF0ZSkKK3sKKyAgICBBU1NFUlQoIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJl
bnRJbmRleCB8fCBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWUoKSA8IGJh
Y2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zLnNpemUoKSk7CisgICAgZW5jb2RlciA8PCBzZXNzaW9u
SGlzdG9yeVZlcnNpb247CisKKyAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJ
bmRleCkgeworICAgICAgICBlbmNvZGVyIDw8IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBlbmNvZGVyIDw8IGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zLnNpemUoKTsKKworICAg
IGZvciAoY29uc3QgYXV0byYgaXRlbSA6IGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zKSB7Cisg
ICAgICAgIGVuY29kZXIgPDwgaXRlbS5wYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUudXJsU3RyaW5n
OworICAgICAgICBlbmNvZGVyIDw8IGl0ZW0ucGFnZVN0YXRlLnRpdGxlOworICAgICAgICBlbmNv
ZGVyIDw8IGl0ZW0ucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLm9yaWdpbmFsVVJMU3RyaW5nOwor
ICAgICAgICBlbmNvZGVGcmFtZVN0YXRlTm9kZShlbmNvZGVyLCBpdGVtLnBhZ2VTdGF0ZS5tYWlu
RnJhbWVTdGF0ZSk7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGl0
ZW0ucGFnZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgIH0KKworICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1
cnJlbnRJbmRleC52YWx1ZSgpKTsKK30KKworUmVmUHRyPEFQSTo6RGF0YT4gZW5jb2RlTGVnYWN5
U2Vzc2lvblN0YXRlKGNvbnN0IFNlc3Npb25TdGF0ZSYgc2Vzc2lvblN0YXRlKQoreworICAgIEhp
c3RvcnlFbnRyeURhdGFFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCBzZXNzaW9uU3Rh
dGVEYXRhVmVyc2lvbjsKKworICAgIGVuY29kZVNlc3Npb25IaXN0b3J5KGVuY29kZXIsIHNlc3Np
b25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSk7CisgICAgZW5jb2RlciA8PCBzZXNzaW9uU3Rh
dGUucHJvdmlzaW9uYWxVUkwuc3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBzZXNzaW9uU3RhdGUu
cmVuZGVyVHJlZVNpemU7CisKKyAgICBzaXplX3QgYnVmZmVyU2l6ZTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IGVuY29kZXIuZmluaXNoRW5jb2RpbmcoYnVmZmVyU2l6ZSk7CisKKyAgICByZXR1cm4gQVBJ
OjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUsIFtd
ICh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIGNvbnN0IHZvaWQqIGNvbnRleHQpIHsKKyAgICAgICAg
ZmFzdEZyZWUoYnVmZmVyKTsKKyAgICB9LCBudWxscHRyKTsKK30KKworY2xhc3MgSGlzdG9yeUVu
dHJ5RGF0YURlY29kZXIgeworcHVibGljOgorICAgIEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCisgICAgICAgIDogbV9idWZm
ZXIoYnVmZmVyKQorICAgICAgICAsIG1fYnVmZmVyRW5kKGJ1ZmZlciArIGJ1ZmZlclNpemUpCisg
ICAgeyB9CisKKyAgICBIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgb3BlcmF0b3I+Pihib29sJiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBkZWNvZGVBcml0aG1ldGljVHlwZSh2YWx1ZSk7
CisgICAgfQorCisgICAgSGlzdG9yeUVudHJ5RGF0YURlY29kZXImIG9wZXJhdG9yPj4odWludDMy
X3QmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlY29kZUFyaXRobWV0aWNUeXBlKHZh
bHVlKTsKKyAgICB9CisKKyAgICBIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgb3BlcmF0b3I+Pihp
bnQzMl90JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAqdGhpcyA+PiByZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Jj4odmFsdWUpOworICAgIH0KKworICAgIEhpc3RvcnlFbnRyeURhdGFE
ZWNvZGVyJiBvcGVyYXRvcj4+KHVpbnQ2NF90JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBkZWNvZGVBcml0aG1ldGljVHlwZSh2YWx1ZSk7CisgICAgfQorCisgICAgSGlzdG9yeUVudHJ5
RGF0YURlY29kZXImIG9wZXJhdG9yPj4oaW50NjRfdCYgdmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gKnRoaXMgPj4gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCY+KHZhbHVlKTsKKyAgICB9
CisKKyAgICBIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgb3BlcmF0b3I+PihmbG9hdCYgdmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gZGVjb2RlQXJpdGhtZXRpY1R5cGUodmFsdWUpOworICAg
IH0KKworICAgIEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyJiBvcGVyYXRvcj4+KGRvdWJsZSYgdmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gZGVjb2RlQXJpdGhtZXRpY1R5cGUodmFsdWUpOwor
ICAgIH0KKworICAgIEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyJiBvcGVyYXRvcj4+KFN0cmluZyYg
dmFsdWUpCisgICAgeworICAgICAgICB2YWx1ZSA9IFN0cmluZygpOworCisgICAgICAgIHVpbnQz
Ml90IGxlbmd0aDsKKyAgICAgICAgKnRoaXMgPj4gbGVuZ3RoOworCisgICAgICAgIGlmIChsZW5n
dGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CisgICAgICAgICAg
ICAvLyBUaGlzIGlzIHRoZSBudWxsIHN0cmluZy4KKyAgICAgICAgICAgIHZhbHVlID0gU3RyaW5n
KCk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB1aW50
NjRfdCBsZW5ndGhJbkJ5dGVzOworICAgICAgICAqdGhpcyA+PiBsZW5ndGhJbkJ5dGVzOworCisg
ICAgICAgIGlmIChsZW5ndGhJbkJ5dGVzICUgc2l6ZW9mKFVDaGFyKSB8fCBsZW5ndGhJbkJ5dGVz
IC8gc2l6ZW9mKFVDaGFyKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIG1hcmtJbnZhbGlkKCk7
CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWJ1
ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VUNoYXI+KGxlbmd0aCkpIHsKKyAgICAgICAgICAg
IG1hcmtJbnZhbGlkKCk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKwor
ICAgICAgICBVQ2hhciogYnVmZmVyOworICAgICAgICBhdXRvIHN0cmluZyA9IFN0cmluZzo6Y3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgICAgIGRlY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCBsZW5ndGggKiBzaXpl
b2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7CisKKyAgICAgICAgdmFsdWUgPSBzdHJpbmc7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBIaXN0b3J5RW50cnlEYXRhRGVjb2Rl
ciYgb3BlcmF0b3I+PihWZWN0b3I8dWludDhfdD4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFs
dWUgPSB7IH07CisKKyAgICAgICAgdWludDY0X3Qgc2l6ZTsKKyAgICAgICAgKnRoaXMgPj4gc2l6
ZTsKKworICAgICAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oMSwgc2l6ZSkpCisgICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CisKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IG1fYnVm
ZmVyOworICAgICAgICBtX2J1ZmZlciArPSBzaXplOworCisgICAgICAgIHZhbHVlLmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIEhpc3RvcnlF
bnRyeURhdGFEZWNvZGVyJiBvcGVyYXRvcj4+KFZlY3RvcjxjaGFyPiYgdmFsdWUpCisgICAgewor
ICAgICAgICB2YWx1ZSA9IHsgfTsKKworICAgICAgICB1aW50NjRfdCBzaXplOworICAgICAgICAq
dGhpcyA+PiBzaXplOworCisgICAgICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlvbigxLCBzaXpl
KSkKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKworICAgICAgICBjb25zdCB1aW50OF90KiBk
YXRhID0gbV9idWZmZXI7CisgICAgICAgIG1fYnVmZmVyICs9IHNpemU7CisKKyAgICAgICAgdmFs
dWUuYXBwZW5kKGRhdGEsIHNpemUpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBhdXRvIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4m
IHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2VudW08VD46OnZhbHVl
LCBIaXN0b3J5RW50cnlEYXRhRGVjb2RlciY+Ojp0eXBlIHsKKyAgICAgICAgdWludDMyX3QgdW5k
ZXJseWluZ0VudW1WYWx1ZTsKKyAgICAgICAgKnRoaXMgPj4gdW5kZXJseWluZ0VudW1WYWx1ZTsK
KworICAgICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNWYWxpZEVudW0oc3RhdGljX2Nhc3Q8VD4o
dW5kZXJseWluZ0VudW1WYWx1ZSkpKQorICAgICAgICAgICAgdmFsdWUgPSBOdWxsb3B0OworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KHVuZGVybHlpbmdF
bnVtVmFsdWUpOworCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKworICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyIDw9IG1fYnVmZmVyRW5kOyB9CisgICAg
dm9pZCBtYXJrSW52YWxpZCgpIHsgbV9idWZmZXIgPSBtX2J1ZmZlckVuZCArIDE7IH0KKworICAg
IGJvb2wgZmluaXNoRGVjb2RpbmcoKSB7IHJldHVybiBtX2J1ZmZlciA9PSBtX2J1ZmZlckVuZDsg
fQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CisgICAgSGlzdG9yeUVu
dHJ5RGF0YURlY29kZXImIGRlY29kZUFyaXRobWV0aWNUeXBlKFR5cGUmIHZhbHVlKQorICAgIHsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VHlwZT46OnZhbHVlLCAi
Iik7CisgICAgICAgIHZhbHVlID0gVHlwZSgpOworCisgICAgICAgIGRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpLCBz
aXplb2YodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHZvaWQg
ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCB1bnNpZ25l
ZCBhbGlnbm1lbnQpCisgICAgeworICAgICAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRpb24oYWxp
Z25tZW50LCBzaXplKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtZW1jcHkoZGF0
YSwgbV9idWZmZXIsIHNpemUpOworICAgICAgICBtX2J1ZmZlciArPSBzaXplOworICAgIH0KKwor
ICAgIGJvb2wgYWxpZ25CdWZmZXJQb3NpdGlvbih1bnNpZ25lZCBhbGlnbm1lbnQsIHNpemVfdCBz
aXplKQorICAgIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0aW9uID0gYWxp
Z25lZEJ1ZmZlcihhbGlnbm1lbnQpOworICAgICAgICBpZiAoIWFsaWduZWRCdWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluKGFsaWduZWRQb3NpdGlvbiwgc2l6ZSkpIHsKKyAgICAgICAgICAgIC8v
IFdlJ3ZlIHdhbGtlZCBvZmYgdGhlIGVuZCBvZiB0aGlzIGJ1ZmZlci4KKyAgICAgICAgICAgIG1h
cmtJbnZhbGlkKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBtX2J1ZmZlciA9IGFsaWduZWRQb3NpdGlvbjsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgY29uc3QgdWludDhfdCogYWxpZ25lZEJ1ZmZlcih1bnNpZ25lZCBhbGlnbm1l
bnQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoYWxpZ25tZW50ICYmICEoYWxpZ25tZW50
ICYgKGFsaWdubWVudCAtIDEpKSk7CisKKyAgICAgICAgdWludHB0cl90IGFsaWdubWVudE1hc2sg
PSBhbGlnbm1lbnQgLSAxOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2J1ZmZlcikgKyBhbGlnbm1lbnRNYXNr
KSAmIH5hbGlnbm1lbnRNYXNrKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMp
IGNvbnN0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxU
Pjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEi
KTsKKworICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKGFsaWdub2YoVCksIG51bUVs
ZW1lbnRzICogc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW4odW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBhbGlnbmVkQnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihhbGln
bmVkQnVmZmVyKGFsaWdubWVudCksIHNpemUpOworICAgIH0KKworICAgIGlubGluZSBib29sIGFs
aWduZWRCdWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKGNvbnN0IHVpbnQ4X3QqIGFsaWduZWRQ
b3NpdGlvbiwgc2l6ZV90IHNpemUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9idWZm
ZXJFbmQgPj0gYWxpZ25lZFBvc2l0aW9uICYmIHN0YXRpY19jYXN0PHNpemVfdD4obV9idWZmZXJF
bmQgLSBhbGlnbmVkUG9zaXRpb24pID49IHNpemU7CisgICAgfQorCisgICAgY29uc3QgdWludDhf
dCogbV9idWZmZXI7CisgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJFbmQ7Cit9OworCitzdGF0
aWMgdm9pZCBkZWNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5RGF0YURlY29kZXImIGRl
Y29kZXIsIEhUVFBCb2R5OjpFbGVtZW50JiBmb3JtRGF0YUVsZW1lbnQpCit7CisgICAgT3B0aW9u
YWw8Rm9ybURhdGFFbGVtZW50VHlwZT4gZWxlbWVudFR5cGU7CisgICAgZGVjb2RlciA+PiBlbGVt
ZW50VHlwZTsKKyAgICBpZiAoIWVsZW1lbnRUeXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBz
d2l0Y2ggKGVsZW1lbnRUeXBlLnZhbHVlKCkpIHsKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVudFR5
cGU6OkRhdGE6CisgICAgICAgIGZvcm1EYXRhRWxlbWVudC50eXBlID0gSFRUUEJvZHk6OkVsZW1l
bnQ6OlR5cGU6OkRhdGE7CisgICAgICAgIGRlY29kZXIgPj4gZm9ybURhdGFFbGVtZW50LmRhdGE7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnRUeXBlOjpFbmNvZGVk
RmlsZTogeworICAgICAgICBkZWNvZGVyID4+IGZvcm1EYXRhRWxlbWVudC5maWxlUGF0aDsKKwor
ICAgICAgICBTdHJpbmcgZ2VuZXJhdGVkRmlsZW5hbWU7CisgICAgICAgIGRlY29kZXIgPj4gZ2Vu
ZXJhdGVkRmlsZW5hbWU7CisKKyAgICAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGU7CisgICAg
ICAgIGRlY29kZXIgPj4gc2hvdWxkR2VuZXJhdGVGaWxlOworCisgICAgICAgIGRlY29kZXIgPj4g
Zm9ybURhdGFFbGVtZW50LmZpbGVTdGFydDsKKyAgICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5m
aWxlU3RhcnQgPCAwKSB7CisgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnQ2NF90IGZpbGVMZW5ndGg7
CisgICAgICAgIGRlY29kZXIgPj4gZmlsZUxlbmd0aDsKKyAgICAgICAgaWYgKGZpbGVMZW5ndGgg
IT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChmaWxlTGVuZ3RoIDwgZm9ybURhdGFFbGVtZW50LmZp
bGVTdGFydCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGZvcm1EYXRh
RWxlbWVudC5maWxlTGVuZ3RoID0gZmlsZUxlbmd0aDsKKyAgICAgICAgfQorCisKKyAgICAgICAg
ZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CisgICAgICAgIGRlY29kZXIgPj4g
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgaWYgKGV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUgIT0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSkKKyAgICAgICAgICAgIGZvcm1EYXRhRWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lID0gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVudFR5cGU6OkVuY29kZWRCbG9iOgorICAgICAg
ICBkZWNvZGVyID4+IGZvcm1EYXRhRWxlbWVudC5ibG9iVVJMU3RyaW5nOworICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGRlY29kZUZvcm1EYXRhKEhpc3RvcnlFbnRyeURh
dGFEZWNvZGVyJiBkZWNvZGVyLCBIVFRQQm9keSYgZm9ybURhdGEpCit7CisgICAgYm9vbCBhbHdh
eXNTdHJlYW07CisgICAgZGVjb2RlciA+PiBhbHdheXNTdHJlYW07CisKKyAgICBWZWN0b3I8dWlu
dDhfdD4gYm91bmRhcnk7CisgICAgZGVjb2RlciA+PiBib3VuZGFyeTsKKworICAgIHVpbnQ2NF90
IGZvcm1EYXRhRWxlbWVudENvdW50OworICAgIGRlY29kZXIgPj4gZm9ybURhdGFFbGVtZW50Q291
bnQ7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZm9ybURhdGFFbGVtZW50Q291bnQ7
ICsraSkgeworICAgICAgICBIVFRQQm9keTo6RWxlbWVudCBmb3JtRGF0YUVsZW1lbnQ7CisgICAg
ICAgIGRlY29kZUZvcm1EYXRhRWxlbWVudChkZWNvZGVyLCBmb3JtRGF0YUVsZW1lbnQpOworCisg
ICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgZm9ybURhdGEuZWxlbWVudHMuYXBwZW5kKFdURjo6bW92ZShmb3JtRGF0YUVsZW1lbnQp
KTsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRlZEZpbGVzOworICAgIGRlY29kZXIgPj4g
aGFzR2VuZXJhdGVkRmlsZXM7CisKKyAgICBpbnQ2NF90IGlkZW50aWZpZXI7CisgICAgZGVjb2Rl
ciA+PiBpZGVudGlmaWVyOworfQorCitzdGF0aWMgYm9vbCBkZWNvZGVCYWNrRm9yd2FyZFRyZWVO
b2RlKEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyJiBkZWNvZGVyLCBGcmFtZVN0YXRlJiBmcmFtZVN0
YXRlKQoreworICAgIHVpbnQ2NF90IGNoaWxkQ291bnQ7CisgICAgZGVjb2RlciA+PiBjaGlsZENv
dW50OworCisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGNoaWxkQ291bnQ7ICsraSkgewor
ICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVTdGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBj
aGlsZEZyYW1lU3RhdGUub3JpZ2luYWxVUkxTdHJpbmc7CisgICAgICAgIGRlY29kZXIgPj4gY2hp
bGRGcmFtZVN0YXRlLnVybFN0cmluZzsKKworICAgICAgICBkZWNvZGVCYWNrRm9yd2FyZFRyZWVO
b2RlKGRlY29kZXIsIGNoaWxkRnJhbWVTdGF0ZSk7CisKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlz
VmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmcmFtZVN0YXRl
LmNoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGRGcmFtZVN0YXRlKSk7CisgICAgfQorCisg
ICAgZGVjb2RlciA+PiBmcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CisKKyAgICB1
aW50NjRfdCBkb2N1bWVudFN0YXRlVmVjdG9yU2l6ZTsKKyAgICBkZWNvZGVyID4+IGRvY3VtZW50
U3RhdGVWZWN0b3JTaXplOworCisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRvY3VtZW50
U3RhdGVWZWN0b3JTaXplOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIHN0YXRlOworICAgICAgICBk
ZWNvZGVyID4+IHN0YXRlOworCisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZnJhbWVTdGF0ZS5kb2N1bWVudFN0YXRl
LmFwcGVuZChXVEY6Om1vdmUoc3RhdGUpKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZm9ybUNvbnRl
bnRUeXBlOworICAgIGRlY29kZXIgPj4gZm9ybUNvbnRlbnRUeXBlOworCisgICAgYm9vbCBoYXNG
b3JtRGF0YTsKKyAgICBkZWNvZGVyID4+IGhhc0Zvcm1EYXRhOworCisgICAgaWYgKGhhc0Zvcm1E
YXRhKSB7CisgICAgICAgIEhUVFBCb2R5IGh0dHBCb2R5OworICAgICAgICBodHRwQm9keS5jb250
ZW50VHlwZSA9IFdURjo6bW92ZShmb3JtQ29udGVudFR5cGUpOworCisgICAgICAgIGRlY29kZUZv
cm1EYXRhKGRlY29kZXIsIGh0dHBCb2R5KTsKKworICAgICAgICBmcmFtZVN0YXRlLmh0dHBCb2R5
ID0gV1RGOjptb3ZlKGh0dHBCb2R5KTsKKyAgICB9CisKKyAgICBkZWNvZGVyID4+IGZyYW1lU3Rh
dGUuaXRlbVNlcXVlbmNlTnVtYmVyOworCisgICAgZGVjb2RlciA+PiBmcmFtZVN0YXRlLnJlZmVy
cmVyOworCisgICAgaW50MzJfdCBzY3JvbGxQb2ludFg7CisgICAgZGVjb2RlciA+PiBzY3JvbGxQ
b2ludFg7CisKKyAgICBpbnQzMl90IHNjcm9sbFBvaW50WTsKKyAgICBkZWNvZGVyID4+IHNjcm9s
bFBvaW50WTsKKworICAgIGZyYW1lU3RhdGUuc2Nyb2xsUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2lu
dChzY3JvbGxQb2ludFgsIHNjcm9sbFBvaW50WSk7CisKKyAgICBkZWNvZGVyID4+IGZyYW1lU3Rh
dGUucGFnZVNjYWxlRmFjdG9yOworCisgICAgYm9vbCBoYXNTdGF0ZU9iamVjdDsKKyAgICBkZWNv
ZGVyID4+IGhhc1N0YXRlT2JqZWN0OworCisgICAgaWYgKGhhc1N0YXRlT2JqZWN0KSB7CisgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBzdGF0ZU9iamVjdERhdGE7CisgICAgICAgIGRlY29kZXIgPj4g
c3RhdGVPYmplY3REYXRhOworCisgICAgICAgIGZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhID0g
V1RGOjptb3ZlKHN0YXRlT2JqZWN0RGF0YSk7CisgICAgfQorCisgICAgZGVjb2RlciA+PiBmcmFt
ZVN0YXRlLnRhcmdldDsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBkZWNv
ZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgZGVjb2Rl
ciwgRnJhbWVTdGF0ZSYgbWFpbkZyYW1lU3RhdGUpCit7CisgICAgdWludDMyX3QgdmVyc2lvbjsK
KyAgICBkZWNvZGVyID4+IHZlcnNpb247CisKKyAgICBpZiAodmVyc2lvbiAhPSBzZXNzaW9uSGlz
dG9yeUVudHJ5RGF0YVZlcnNpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBkZWNvZGVCYWNrRm9yd2FyZFRyZWVOb2RlKGRlY29kZXIsIG1haW5GcmFtZVN0YXRlKTsKK30K
Kworc3RhdGljIGJvb2wgZGVjb2RlVjFTZXNzaW9uSGlzdG9yeShIaXN0b3J5RW50cnlEYXRhRGVj
b2RlciYgZGVjb2RlciwgQmFja0ZvcndhcmRMaXN0U3RhdGUmIGJhY2tGb3J3YXJkTGlzdFN0YXRl
KQoreworICAgIHNpemVfdCBsZW5ndGg7CisgICAgZGVjb2RlciA+PiBsZW5ndGg7CisKKyAgICBp
ZiAoIWxlbmd0aCkgeworICAgICAgICAvLyBObyBjdXJyZW50IGluZGV4IG1lYW5zIHRoZSBkaWN0
aW9uYXJ5IHJlcHJlc2VudHMgYW4gZW1wdHkgc2Vzc2lvbi4KKyAgICAgICAgYmFja0ZvcndhcmRM
aXN0U3RhdGUuY3VycmVudEluZGV4ID0gTnVsbG9wdDsKKyAgICAgICAgYmFja0ZvcndhcmRMaXN0
U3RhdGUuaXRlbXMgPSB7IH07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlIGl0ZW07CisgICAgICAgIGRlY29kZXIgPj4gaXRlbS5wYWdlU3RhdGUubWFp
bkZyYW1lU3RhdGUudXJsU3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IGl0ZW0ucGFnZVN0YXRl
LnRpdGxlOworICAgICAgICBkZWNvZGVyID4+IGl0ZW0ucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRl
Lm9yaWdpbmFsVVJMU3RyaW5nOworICAgICAgICBpZiAoIWRlY29kZVNlc3Npb25IaXN0b3J5RW50
cnlEYXRhKGRlY29kZXIsIGl0ZW0ucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50NjRfdCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OworICAgICAgICBkZWNvZGVyID4+IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k7CisgICAgICAgIGl0ZW0ucGFnZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5PihzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICAgICAgCisgICAgICAgIGJhY2tGb3J3YXJk
TGlzdFN0YXRlLml0ZW1zLmFwcGVuZChXVEY6Om1vdmUoaXRlbSkpOworICAgIH0KKworICAgIHVp
bnQ2NF90IGN1cnJlbnRJbmRleDsKKyAgICBkZWNvZGVyID4+IGN1cnJlbnRJbmRleDsKKyAgICBi
YWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBjdXJyZW50SW5kZXg7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGRlY29kZVNlc3Npb25IaXN0b3J5KEhpc3RvcnlF
bnRyeURhdGFEZWNvZGVyJiBkZWNvZGVyLCBCYWNrRm9yd2FyZExpc3RTdGF0ZSYgYmFja0Zvcndh
cmRMaXN0U3RhdGUpCit7CisgICAgdWludDMyX3QgdmVyc2lvbjsKKyAgICBkZWNvZGVyID4+IHZl
cnNpb247CisKKyAgICBpZiAodmVyc2lvbiA9PSAxKQorICAgICAgICByZXR1cm4gZGVjb2RlVjFT
ZXNzaW9uSGlzdG9yeShkZWNvZGVyLCBiYWNrRm9yd2FyZExpc3RTdGF0ZSk7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIFNlc3Npb25TdGF0ZSYgc2Vzc2lvblN0YXRl
KQoreworICAgIGlmIChidWZmZXJTaXplIDwgc2l6ZW9mKHVpbnQzMl90KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgSGlzdG9yeUVudHJ5RGF0YURlY29kZXIgZGVjb2RlciB7IGJ1ZmZl
ciwgYnVmZmVyU2l6ZSB9OworICAgIHVpbnQzMl90IHZlcnNpb247CisgICAgZGVjb2RlciA+PiB2
ZXJzaW9uOworCisgICAgaWYgKHZlcnNpb24gIT0gc2Vzc2lvblN0YXRlRGF0YVZlcnNpb24pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRlY29kZVNlc3Npb25IaXN0b3J5KGRlY29kZXIs
IHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSk7CisKKyAgICBXVEY6OlN0cmluZyBw
cm92aXNpb25hbFVSTDsKKyAgICBkZWNvZGVyID4+IHByb3Zpc2lvbmFsVVJMOworICAgIHNlc3Np
b25TdGF0ZS5wcm92aXNpb25hbFVSTCA9IFdlYkNvcmU6OlVSTChudWxscHRyLCBwcm92aXNpb25h
bFVSTCk7CisKKyAgICBkZWNvZGVyID4+IHNlc3Npb25TdGF0ZS5yZW5kZXJUcmVlU2l6ZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MjcxNTQzOGQ5MjdhNWRl
NDZiM2JjMmFiMTQ5NjdlNDQ4ZDNjMWM2Li4wZjA2OWUzZWYwNTIwNzRmYzAzMGIzMDVmYjI4Mzgy
MzE4ZjBkODEzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDktMjYgIFNhbSBQYXJraW5zb24gIDxzYW0ucGFy
a2luc29uM0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gVGVzdCBXZWJLaXQyLlJlc3RvcmVT
ZXNzaW9uU3RhdGVDb250YWluaW5nRm9ybURhdGEgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0OTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1ndGstdGVzdHM6IERvIG5v
dCBza2lwIFdlYktpdDIuUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5nRm9ybURhdGEKKyAgICAg
ICAgKFRlc3RSdW5uZXIpOiBEZWxldGVkLgorCiAyMDE1LTA4LTE4ICBDYXJsb3MgQWxiZXJ0byBM
b3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE4
ODU0OCk6IFtHVEtdIEJ1aWxkIGJyb2tlbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwppbmRleCBjOGYxNWY4ZmRk
OGI5NDdiNDQ1YzExZjIxODJmNzI1NTZkNWEzMDE1Li44MDg2OGNmOWY4OTZiM2Q3NzRmZGE0NDIx
ZTAxZjczYzdmYTNiZGQ5IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMK
KysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC02Nyw3ICs2Nyw2IEBAIGNsYXNz
IFRlc3RSdW5uZXI6CiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwg
IldlYktpdDIuTW91c2VNb3ZlQWZ0ZXJDcmFzaCIsICJUZXN0IGlzIGZsYWt5IiwgODUwNjYpLAog
ICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIsICJXZWJLaXQyLk5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcyIsICJUZXN0IGlzIGZsYWt5IiwgODUw
NjYpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIsICJXZWJLaXQy
Lk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcyIsICJUZXN0IGZhaWxzIiwgODUw
MzcpLAotICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIsICJXZWJLaXQy
LlJlc3RvcmVTZXNzaW9uU3RhdGVDb250YWluaW5nRm9ybURhdGEiLCAiU2Vzc2lvbiBTdGF0ZSBp
cyBub3QgaW1wbGVtZW50ZWQgaW4gR1RLKyBwb3J0IiwgODQ5NjApLAogICAgICAgICBTa2lwcGVk
VGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIsICJXZWJLaXQyLlNwYWNlYmFyU2Nyb2xsaW5nIiwg
IlRlc3QgZmFpbHMiLCA4NDk2MSksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RX
ZWJLaXQyIiwgIldlYktpdDIuV0tDb25uZWN0aW9uIiwgIlRlc3RzIGZhaWwgYW5kIHRpbWUgb3V0
IG91dCIsIDg0OTU5KSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIi
LCAiV2ViS2l0Mi5XS1BhZ2VHZXRTY2FsZUZhY3Rvck5vdFplcm8iLCAiVGVzdCBmYWlscyBhbmQg
dGltZXMgb3V0IiwgODg0NTUpLAo=
</data>
<flag name="review"
          id="287172"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="287927"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262753</attachid>
            <date>2015-10-08 23:41:59 -0700</date>
            <delta_ts>2015-10-15 01:01:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-session-state.diff</filename>
            <type>text/plain</type>
            <size>5585</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmM2ExNWMwLi4xZWEzYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIg
QEAKIDIwMTUtMTAtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIFRlc3QgV2ViS2l0Mi5SZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFp
bmluZ0Zvcm1EYXRhIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NDk2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIGNyb3NzLXBsYXRmb3JtIGltcGxlbWVudGF0aW9uIHRvIExlZ2FjeVNl
c3Npb25TdGF0ZUNvZGluZ05vbmUKKyAgICAgICAgdXNpbmcgdGhlIG5ldyBTZXNzaW9uU3RhdGUs
IHNvIHRoYXQgbm9uIG1hYyBwb3J0cyBjYW4gbWFrZSB1bml0CisgICAgICAgIHRlc3RzIHRoYXQg
dXNlIHRoZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBjb2RpbmcgcGFzcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlTGVn
YWN5U2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvbkhp
c3RvcnlFbnRyeURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVMZWdhY3lT
ZXNzaW9uSGlzdG9yeUVudHJ5RGF0YSk6IERlbGV0ZWQuCisKKzIwMTUtMTAtMDggIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIFN0b3Ag
dXNpbmcgYSBuZXN0ZWQgbWFpbiBsb29wIGZvciBwb3B1cCBtZW51cwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTIwCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNw
cAppbmRleCBjNDM0MTgyLi40NjI3YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCkBAIC0yNywzMyAr
MjcsMzIgQEAKICNpbmNsdWRlICJMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKIAogI2luY2x1
ZGUgIkFQSURhdGEuaCIKKyNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJB
cmd1bWVudEVuY29kZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWZQdHI8QVBJOjpEYXRhPiBlbmNvZGVMZWdh
Y3lTZXNzaW9uU3RhdGUoY29uc3QgU2Vzc2lvblN0YXRlJikKK1JlZlB0cjxBUEk6OkRhdGE+IGVu
Y29kZUxlZ2FjeVNlc3Npb25TdGF0ZShjb25zdCBTZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBBUEk6OkRhdGE6OmNyZWF0ZShu
dWxscHRyLCAwKTsKKyAgICBJUEM6OkFyZ3VtZW50RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29k
ZXIgPDwgc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlOworICAgIGVuY29kZXIgPDwg
c2Vzc2lvblN0YXRlLnJlbmRlclRyZWVTaXplOworICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRl
LnByb3Zpc2lvbmFsVVJMOworICAgIHJldHVybiBBUEk6OkRhdGE6OmNyZWF0ZShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKLVJlZlB0cjxBUEk6OkRhdGE+IGVu
Y29kZUxlZ2FjeVNlc3Npb25IaXN0b3J5RW50cnlEYXRhKGNvbnN0IEZyYW1lU3RhdGUmKQorYm9v
bCBkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFTaXplLCBTZXNzaW9uU3RhdGUmIHNlc3Npb25TdGF0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBBUEk6OkRhdGE6OmNyZWF0ZShudWxscHRyLCAwKTsKLX0KLQotYm9v
bCBkZWNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgdWludDhfdCosIHNpemVfdCwgU2Vzc2lv
blN0YXRlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBkZWNvZGVMZWdhY3lTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShjb25zdCB1aW50OF90
Kiwgc2l6ZV90LCBGcmFtZVN0YXRlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBJUEM6OkFyZ3VtZW50RGVjb2RlciBkZWNvZGVyKGRhdGEsIGRhdGFT
aXplKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExp
c3RTdGF0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHNlc3Npb25TdGF0ZS5yZW5kZXJUcmVlU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNzJmN2JiZS4uOTVlYTE5OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTEwLTA4ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBUZXN0IFdlYktp
dDIuUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YSBmYWlscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ5NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10
ZXN0czoKKyAgICAgICAgKFRlc3RSdW5uZXIpOiBVbnNraXAgdGVzdHMgdXNpbmcgU2Vzc2lvblN0
YXRlLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6IEFkZAorICAg
ICAgICBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRlcmluZyB0ZXN0LgorCiAyMDE1LTEw
LTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5d
IFN1cHBvcnQgNjQtYml0IEJ1aWxkIGFuZCBUZXN0aW5nCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3J1bi1ndGstdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKaW5kZXggZDlj
N2JjMi4uNDgxODFlYSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCisr
KyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpAQCAtNjgsMTAgKzY4LDggQEAgY2xhc3Mg
VGVzdFJ1bm5lcjoKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAi
V2ViS2l0Mi5Nb3VzZU1vdmVBZnRlckNyYXNoIiwgIlRlc3QgaXMgZmxha3kiLCA4NTA2NiksCiAg
ICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzIiwgIlRlc3QgaXMgZmxha3kiLCA4NTA2
NiksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIu
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzIiwgIlRlc3QgZmFpbHMiLCA4NTAz
NyksCi0gICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIu
UmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YSIsICJTZXNzaW9uIFN0YXRlIGlz
IG5vdCBpbXBsZW1lbnRlZCBpbiBHVEsrIHBvcnQiLCA4NDk2MCksCiAgICAgICAgIFNraXBwZWRU
ZXN0KCJXZWJLaXQyL1Rlc3RXZWJLaXQyIiwgIldlYktpdDIuU3BhY2ViYXJTY3JvbGxpbmciLCAi
VGVzdCBmYWlscyIsIDg0OTYxKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdl
YktpdDIiLCAiV2ViS2l0Mi5XS0Nvbm5lY3Rpb24iLCAiVGVzdHMgZmFpbCBhbmQgdGltZSBvdXQg
b3V0IiwgODQ5NTkpLAotICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mi9UZXN0V2ViS2l0MiIs
ICJXZWJLaXQyLldLUGFnZUdldFNjYWxlRmFjdG9yTm90WmVybyIsICJUZXN0IGZhaWxzIGFuZCB0
aW1lcyBvdXQiLCA4ODQ1NSksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyL1Rlc3RXZWJL
aXQyIiwgIldlYktpdDIuRm9yY2VSZXBhaW50IiwgIlRlc3QgdGltZXMgb3V0IiwgMTA1NTMyKSwK
ICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5SZWxv
YWRQYWdlQWZ0ZXJDcmFzaCIsICJUZXN0IGZsYWtpbHkgdGltZXMgb3V0IiwgMTEwMTI5KSwKICAg
ICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDIvVGVzdFdlYktpdDIiLCAiV2ViS2l0Mi5EaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHMiLCAiVGVzdCB0aW1lcyBvdXQiLCAxMjAzMDIpLApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOGU1YzRhZi4uYWRhYjk5NCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMDgsNiArMTA4LDcgQEAgYWRkX2V4ZWN1
dGFibGUoVGVzdFdlYktpdDIKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQy
L1VzZXJNZWRpYS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1Vz
ZXJNZXNzYWdlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvV2ls
bFNlbmRTdWJtaXRFdmVudC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJL
aXQyL1dLUGFnZUNvcHlTZXNzaW9uU3RhdGVXaXRoRmlsdGVyaW5nLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvV0tQcmVmZXJlbmNlcy5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyL1dLU3RyaW5nLmNwcAo=
</data>
<flag name="review"
          id="287941"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>