<?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>141123</bug_id>
          
          <creation_ts>2015-01-31 12:00:50 -0800</creation_ts>
          <short_desc>Create tests for JSC&apos;s Control Flow Profiler</short_desc>
          <delta_ts>2015-02-02 11:06:19 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065845</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-31 12:00:50 -0800</bug_when>
    <thetext>There are currently not tests for this and it&apos;s time to change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065891</commentid>
    <comment_count>1</comment_count>
      <attachid>245809</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-31 16:51:48 -0800</bug_when>
    <thetext>Created attachment 245809
patch

added preliminary tests. More to come in a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066029</commentid>
    <comment_count>2</comment_count>
      <attachid>245853</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-01 19:38:47 -0800</bug_when>
    <thetext>Created attachment 245853
patch

See if Win build is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066148</commentid>
    <comment_count>3</comment_count>
      <attachid>245853</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 10:53:55 -0800</bug_when>
    <thetext>Comment on attachment 245853
patch

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

&gt; Tools/Scripts/run-jsc-stress-tests:738
&gt; +       run(&quot;no-cjit-type-profiler&quot;, &quot;--enableControlFlowProfiler=true&quot;, *NO_CJIT_OPTIONS)

This needs one more space of indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066152</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-02 11:06:19 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/179479</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245809</attachid>
            <date>2015-01-31 16:51:48 -0800</date>
            <delta_ts>2015-02-01 19:38:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17883</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NDUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE1LTAxLTMxICBTYWFtIEJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBDcmVhdGUgdGVzdHMgZm9yIEpTQydzIENvbnRyb2wgRmxvdyBQcm9maWxlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVh
dGVzIGEgY29udHJvbCBmbG93IHByb2ZpbGVyIHRlc3RpbmcgQVBJIGluIGpzYy5jcHAgCisgICAg
ICAgIHRoYXQgYWNjZXB0cyBhIGZ1bmN0aW9uIGFuZCBhIHN0cmluZyBhcyBhcmd1bWVudHMuIFRo
ZSBzdHJpbmcgbXVzdCAKKyAgICAgICAgYmUgYSBzdWJzdHJpbmcgb2YgdGhlIHRleHQgb2YgdGhl
IGZ1bmN0aW9uIGFyZ3VtZW50LiBUaGUgQVBJIHJldHVybnMgCisgICAgICAgIGEgYm9vbGVhbiBp
bmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBiYXNpYyBibG9jayB0aGF0IGVuY2xvc2VzIHRo
ZSAKKyAgICAgICAgc3Vic3RyaW5nIGhhcyBleGVjdXRlZC4KKworICAgICAgICBUaGlzIHBhdGNo
IHVzZXMgdGhpcyBBUEkgdG8gdGVzdCB0aGF0IHRoZSBjb250cm9sIGZsb3cgcHJvZmlsZXIKKyAg
ICAgICAgYmVoYXZlcyBhcyBleHBlY3RlZCBvbiBiYXNpYyBibG9jayBib3VuZGFyaWVzLiBUaGVz
ZSB0ZXN0cyBkbyBub3QKKyAgICAgICAgcHJvdmlkZSBmdWxsIGNvdmVyYWdlIGZvciBhbGwgSmF2
YVNjcmlwdCBzdGF0ZW1lbnRzIHRoYXQgY2FuIGNyZWF0ZQorICAgICAgICBiYXNpYyBibG9ja3Mg
Ym91bmRhcmllcy4gRnVsbCBjb3ZlcmFnZSB3aWxsIGNvbWUgaW4gYSBsYXRlciBwYXRjaC4KKwor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpDb250cm9sRmxv
d1Byb2ZpbGVyOjpoYXNCYXNpY0Jsb2NrQXRUZXh0T2Zmc2V0QmVlbkV4ZWN1dGVkKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaDoKKyAgICAgICAgKiB0ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2Zp
bGVyLnlhbWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvZHJp
dmVyOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2RyaXZlci9k
cml2ZXIuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKiB0ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyL2lmLXN0YXRlbWVudC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0SWYp
OgorICAgICAgICAobm9NYXRjaGVzKToKKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2Zp
bGVyL2xvb3Atc3RhdGVtZW50cy5qczogQWRkZWQuCisgICAgICAgIChmb3JSZWd1bGFyKToKKyAg
ICAgICAgKGZvckluKToKKyAgICAgICAgKGZvck9mKToKKyAgICAgICAgKHdoaWxlTG9vcCk6Cisg
ICAgICAgICogdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9zd2l0Y2gtc3RhdGVtZW50cy5qczog
QWRkZWQuCisgICAgICAgICh0ZXN0U3dpdGNoKToKKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxv
d1Byb2ZpbGVyL3Rlc3Qtaml0LmpzOiBBZGRlZC4KKyAgICAgICAgKHRpZXJVcFRvQmFzZWxpbmUp
OgorICAgICAgICAodGllclVwVG9ERkcpOgorICAgICAgICAoYmFzZWxpbmVUZXN0KToKKyAgICAg
ICAgKGRmZ1Rlc3QpOgorCiAyMDE1LTAxLTMxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIGV2ZW4gbW9yZSBNb3VudGFpbiBMaW9uIHN1cHBvcnQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNzkzOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDYgKzQ4Miw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXR1cm5UeXBlRm9y
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25EdW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4
ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSop
OwpAQCAtNjM4LDYgKzYzOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJyZXR1cm5UeXBlRm9yIiwgZnVuY3Rpb25SZXR1cm5UeXBlRm9yLCAxKTsKIAogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzIiwgZnVuY3Rpb25E
dW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcyAsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2
bSwgImhhc0Jhc2ljQmxvY2tFeGVjdXRlZCIsIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVk
LCAyKTsKICAgICAgICAgCiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlB
cnJheShnbG9iYWxFeGVjKCksIDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50cy5zaXplKCk7ICsraSkKQEAgLTExMTQsNiArMTExNiwyMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkhhc0Jhc2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpOworCisgICAgSlNWYWx1ZSBm
dW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVu
Y3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvblZhbHVlLmFzQ2VsbCgp
LT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKGV4
ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOworICAgIFN0cmluZyBzdWJzdHJpbmcgPSBleGVj
LT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0
ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICBpbnQgb2Zmc2V0ID0gc291
cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRP
ZmZzZXQoKTsKKyAgICAKKyAgICBib29sIGhhc0V4ZWN1dGVkID0gZXhlYy0+dm0oKS5jb250cm9s
Rmxvd1Byb2ZpbGVyKCktPmhhc0Jhc2ljQmxvY2tBdFRleHRPZmZzZXRCZWVuRXhlY3V0ZWQob2Zm
c2V0LCBleGVjdXRhYmxlLT5zb3VyY2VJRCgpLCBleGVjLT52bSgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihoYXNFeGVjdXRlZCkpOworfQorCiAvLyBVc2UgU0VIIGZv
ciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2YgdGhlIGNyYXNoIHJlcG9ydCBkaWFs
b2cKIC8vIChsdWNraWx5IHRoZSBzYW1lIHRlc3RzIGZhaWwgaW4gUmVsZWFzZSBhbmQgRGVidWcg
YnVpbGRzIHNvIGZhcikuIE5lZWQgdG8KIC8vIGJlIGluIGEgc2VwYXJhdGUgbWFpbiBmdW5jdGlv
biBiZWNhdXNlIHRoZSBqc2NtYWluIGZ1bmN0aW9uIHJlcXVpcmVzIG9iamVjdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxl
ci5jcHAJKHJldmlzaW9uIDE3OTM5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw0ICs5OCwyMyBA
QCBWZWN0b3I8QmFzaWNCbG9ja1JhbmdlPiBDb250cm9sRmxvd1Byb2ZpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorYm9vbCBDb250cm9sRmxvd1Byb2ZpbGVyOjpoYXNCYXNpY0Jsb2NrQXRUZXh0
T2Zmc2V0QmVlbkV4ZWN1dGVkKGludCBvZmZzZXQsIGludHB0cl90IHNvdXJjZUlELCBWTSYgdm0p
Cit7CisgICAgY29uc3QgVmVjdG9yPEJhc2ljQmxvY2tSYW5nZT4mIGJsb2NrcyA9IGdldEJhc2lj
QmxvY2tzRm9yU291cmNlSUQoc291cmNlSUQsIHZtKTsKKyAgICBpbnQgYmVzdERpc3RhbmNlID0g
SU5UX01BWDsKKyAgICBCYXNpY0Jsb2NrUmFuZ2UgYmVzdFJhbmdlOworICAgIGJlc3RSYW5nZS5t
X3N0YXJ0T2Zmc2V0ID0gYmVzdFJhbmdlLm1fZW5kT2Zmc2V0ID0gLTE7CisgICAgLy8gQmVjYXVz
ZSBzb21lIHJhbmdlcyBtYXkgb3ZlcmxhcCBiZWNhdXNlIG9mIGZ1bmN0aW9uIGJvdW5kYXJpZXMs
IG1ha2Ugc3VyZSB0byBmaW5kIHRoZSBzbWFsbGVzdCByYW5nZSBlbmNsb3NpbmcgdGhlIG9mZnNl
dC4KKyAgICBmb3IgKEJhc2ljQmxvY2tSYW5nZSByYW5nZSA6IGJsb2NrcykgeworICAgICAgICBp
ZiAocmFuZ2UubV9zdGFydE9mZnNldCA8PSBvZmZzZXQgJiYgb2Zmc2V0IDw9IHJhbmdlLm1fZW5k
T2Zmc2V0ICYmIChyYW5nZS5tX2VuZE9mZnNldCAtIHJhbmdlLm1fc3RhcnRPZmZzZXQpIDwgYmVz
dERpc3RhbmNlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyYW5nZS5tX2VuZE9mZnNl
dCAtIHJhbmdlLm1fc3RhcnRPZmZzZXQgPj0gMCk7CisgICAgICAgICAgICBiZXN0RGlzdGFuY2Ug
PSByYW5nZS5tX2VuZE9mZnNldCAtIHJhbmdlLm1fc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICBi
ZXN0UmFuZ2UgPSByYW5nZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJU
KGJlc3RSYW5nZS5tX3N0YXJ0T2Zmc2V0ICE9IC0xICYmIGJlc3RSYW5nZS5tX2VuZE9mZnNldCAh
PSAtMSk7CisgICAgcmV0dXJuIGJlc3RSYW5nZS5tX2hhc0V4ZWN1dGVkOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xG
bG93UHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgJKHJldmlzaW9uIDE3OTM5NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1w
RGF0YSgpIGNvbnN0OwogICAgIFZlY3RvcjxCYXNpY0Jsb2NrUmFuZ2U+IGdldEJhc2ljQmxvY2tz
Rm9yU291cmNlSUQoaW50cHRyX3Qgc291cmNlSUQsIFZNJikgY29uc3Q7CiAgICAgQmFzaWNCbG9j
a0xvY2F0aW9uKiBkdW1teUJhc2ljQmxvY2soKSB7IHJldHVybiAmbV9kdW1teUJhc2ljQmxvY2s7
IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0Jhc2ljQmxvY2tBdFRleHRPZmZzZXRC
ZWVuRXhlY3V0ZWQoaW50LCBpbnRwdHJfdCwgVk0mKTsgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMg
Zm9yIHRlc3RpbmcuCiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEJhc2ljQmxvY2tL
ZXksIEJhc2ljQmxvY2tMb2NhdGlvbio+IEJsb2NrTG9jYXRpb25DYWNoZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyLnlhbWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIueWFt
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxv
d1Byb2ZpbGVyLnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIFNhYW0gQmFyYXRpIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy0gcGF0aDogY29udHJv
bEZsb3dQcm9maWxlcgorICBjbWQ6IHJ1bkNvbnRyb2xGbG93UHJvZmlsZXIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2lmLXN0YXRlbWVudC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQ
cm9maWxlci9pZi1zdGF0ZW1lbnQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9pZi1zdGF0ZW1lbnQuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1NiBAQAorbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CisKK3Zh
ciBhLCBiLCBjLCBkOworCitmdW5jdGlvbiB0ZXN0SWYoeCkgeworICAgIGlmICh4ID4gMTAgJiYg
eCA8IDIwKSB7CisgICAgICAgIHJldHVybiBhOworICAgIH0gZWxzZSBpZiAoeCA+IDIwICYmIHgg
PCAzMCkgeworICAgICAgICByZXR1cm4gYjsKKyAgICB9IGVsc2UgaWYgKHggPiAzMCAmJiB4IDwg
NDApIHsKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGQ7
CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIG5vTWF0Y2hlcyh4KSB7
CisgICAgaWYgKHggPiAxMCAmJiB4IDwgMjApIHsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfSBl
bHNlIGlmICh4ID4gMjAgJiYgeCA8IDMwKSB7CisgICAgICAgIHJldHVybiBiOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHJldHVybiBjOworICAgIH0KK30KKworYXNzZXJ0KCFoYXNCYXNpY0Jsb2Nr
RXhlY3V0ZWQodGVzdElmLCAicmV0dXJuIGEiKSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5
ZXQuIik7Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0SWYsICJyZXR1cm4gYiIp
LCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9j
a0V4ZWN1dGVkKHRlc3RJZiwgInJldHVybiBjIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQg
eWV0LiIpOworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdElmLCAicmV0dXJuIGQi
KSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7CisKK3Rlc3RJZigxMSk7Cithc3Nl
cnQoaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKHRlc3RJZiwgInJldHVybiBhIiksICJzaG91bGQgaGF2
ZSBleGVjdXRlZC4iKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdElmLCAieCA+
IDEwIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4
ZWN1dGVkKHRlc3RJZiwgInJldHVybiBiIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0
LiIpOworCit0ZXN0SWYoMjEpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0SWYs
ICJyZXR1cm4gYiIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7Cithc3NlcnQoIWhhc0Jhc2lj
QmxvY2tFeGVjdXRlZCh0ZXN0SWYsICJyZXR1cm4gYyIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1
dGVkIHlldC4iKTsKKwordGVzdElmKDMxKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQo
dGVzdElmLCAicmV0dXJuIGMiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworYXNzZXJ0KCFo
YXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdElmLCAicmV0dXJuIGQiKSwgInNob3VsZCBub3QgaGF2
ZSBleGVjdXRlZCB5ZXQuIik7CisKK3Rlc3RJZigwKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhl
Y3V0ZWQodGVzdElmLCAicmV0dXJuIGQiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworCisK
K25vTWF0Y2hlcygwKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKG5vTWF0Y2hlcywg
InJldHVybiBhIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworYXNzZXJ0KGhh
c0Jhc2ljQmxvY2tFeGVjdXRlZChub01hdGNoZXMsICJ4ID4gMTAiKSwgInNob3VsZCBoYXZlIGV4
ZWN1dGVkLiIpOworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQobm9NYXRjaGVzLCAicmV0
dXJuIGIiKSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7Cithc3NlcnQoaGFzQmFz
aWNCbG9ja0V4ZWN1dGVkKG5vTWF0Y2hlcywgInggPiAyMCIpLCAic2hvdWxkIGhhdmUgZXhlY3V0
ZWQuIik7Cithc3NlcnQoaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKG5vTWF0Y2hlcywgInJldHVybiBj
IiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2xvb3Atc3RhdGVtZW50cy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9sb29w
LXN0YXRlbWVudHMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvY29udHJvbEZsb3dQcm9maWxlci9sb29wLXN0YXRlbWVudHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3NiBAQAorbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CisKK2Z1bmN0aW9u
IGZvclJlZ3VsYXIobGltaXQpIHsKKyAgICB2YXIgc3VtID0gMDsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxpbWl0OyBpKyspIHsKKyAgICAgICAgc3VtICs9IGk7CisgICAgfQorCisgICAgcmV0
dXJuIHN1bTsKK30KKworZnVuY3Rpb24gZm9ySW4obykgeworICAgIHZhciBzID0gIiI7CisgICAg
dmFyIHA7CisgICAgZm9yIChwIGluIG8pIHsKKyAgICAgICAgcyArPSBwOworICAgIH0KK30KKwor
ZnVuY3Rpb24gZm9yT2YoYSkgeworICAgIHZhciBzID0gIiI7CisgICAgdmFyIHA7CisgICAgZm9y
IChwIG9mIGEpIHsKKyAgICAgICAgcyArPSBwOworICAgIH0KK30KKworZnVuY3Rpb24gd2hpbGVM
b29wKGxpbWl0KSB7CisgICAgdmFyIGkgPSAwOworICAgIHZhciBzdW0gPSAwOworICAgIHdoaWxl
IChpIDwgbGltaXQpIHsKKyAgICAgICAgc3VtICs9IGk7CisgICAgICAgIGkrKzsKKyAgICB9CisK
KyAgICByZXR1cm4gc3VtOworfQorCithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JS
ZWd1bGFyLCAidmFyIHN1bSIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKwor
Zm9yUmVndWxhcigwKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZm9yUmVndWxhciwg
InZhciBzdW0iKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworYXNzZXJ0KCFoYXNCYXNpY0Js
b2NrRXhlY3V0ZWQoZm9yUmVndWxhciwgInN1bSArPSBpIiksICJzaG91bGQgbm90IGhhdmUgZXhl
Y3V0ZWQgeWV0LiIpOworCitmb3JSZWd1bGFyKDEpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVj
dXRlZChmb3JSZWd1bGFyLCAic3VtICs9IGkiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOwor
CisKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKGZvckluLCAidmFyIHMiKSwgInNob3Vs
ZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7CisKK2ZvckluKHt9KTsKK2Fzc2VydChoYXNCYXNp
Y0Jsb2NrRXhlY3V0ZWQoZm9ySW4sICJ2YXIgcyIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7
Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JJbiwgInMgKz0gcCIpLCAic2hvdWxk
IG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKworZm9ySW4oe2ZvbzogImJhciJ9KTsKK2Fzc2Vy
dChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZm9ySW4sICJzICs9IHAiKSwgInNob3VsZCBoYXZlIGV4
ZWN1dGVkLiIpOworCisKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKGZvck9mLCAidmFy
IHMiKSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7CisKK2Zvck9mKFtdKTsKK2Fz
c2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZm9yT2YsICJ2YXIgcyIpLCAic2hvdWxkIGhhdmUg
ZXhlY3V0ZWQuIik7Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JPZiwgInMgKz0g
cCIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKworZm9yT2YoWyJhIl0pOwor
YXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JPZiwgInMgKz0gcCIpLCAic2hvdWxkIGhh
dmUgZXhlY3V0ZWQuIik7CisKKworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQod2hpbGVM
b29wLCAidmFyIHN1bSIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKword2hp
bGVMb29wKDApOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh3aGlsZUxvb3AsICJ2YXIg
c3VtIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4
ZWN1dGVkKHdoaWxlTG9vcCwgInN1bSArPSBpIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQg
eWV0LiIpOworCit3aGlsZUxvb3AoMSk7Cithc3NlcnQoaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKHdo
aWxlTG9vcCwgInN1bSArPSBpIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL3N3aXRjaC1zdGF0
ZW1lbnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyL3N3aXRjaC1zdGF0ZW1lbnRzLmpzCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvc3dpdGNoLXN0YXRl
bWVudHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorbG9hZCgiLi9kcml2ZXIv
ZHJpdmVyLmpzIik7CisKK3ZhciBhLCBiLCBjOworZnVuY3Rpb24gdGVzdFN3aXRjaChzKSB7Cisg
ICAgc3dpdGNoIChzKSB7CisgICAgY2FzZSAiZm9vIjoKKyAgICAgICAgcmV0dXJuIGE7CisgICAg
Y2FzZSAiYmFyIjoKKyAgICAgICAgcmV0dXJuIGI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGM7CisgICAgfQorfQorCithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0U3dp
dGNoLCAic3dpdGNoIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworCit0ZXN0
U3dpdGNoKCJmb28iKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdFN3aXRjaCwg
InN3aXRjaCIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7Cithc3NlcnQoaGFzQmFzaWNCbG9j
a0V4ZWN1dGVkKHRlc3RTd2l0Y2gsICJyZXR1cm4gYSIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQu
Iik7Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0U3dpdGNoLCAicmV0dXJuIGIi
KSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7Cithc3NlcnQoIWhhc0Jhc2ljQmxv
Y2tFeGVjdXRlZCh0ZXN0U3dpdGNoLCAicmV0dXJuIGMiKSwgInNob3VsZCBub3QgaGF2ZSBleGVj
dXRlZCB5ZXQuIik7CisKK3Rlc3RTd2l0Y2goImJhciIpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tF
eGVjdXRlZCh0ZXN0U3dpdGNoLCAicmV0dXJuIGIiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIp
OworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdFN3aXRjaCwgInJldHVybiBjIiks
ICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworCit0ZXN0U3dpdGNoKCIiKTsKK2Fz
c2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdFN3aXRjaCwgInJldHVybiBjIiksICJzaG91
bGQgaGF2ZSBleGVjdXRlZC4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9j
b250cm9sRmxvd1Byb2ZpbGVyL3Rlc3Qtaml0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL3Rlc3Qtaml0LmpzCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIv
dGVzdC1qaXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorbG9hZCgiLi9kcml2
ZXIvZHJpdmVyLmpzIik7CisKK2Z1bmN0aW9uIHRpZXJVcFRvQmFzZWxpbmUoZnVuYywgYXJnKSAK
K3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUwOyBpKyspCisgICAgICAgIGZ1bmMoYXJnKTsK
K30KKworZnVuY3Rpb24gdGllclVwVG9ERkcoZnVuYywgYXJnKSAKK3sKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDUwOyBpKyspCisgICAgICAgIGZ1bmMoYXJnKTsKK30KKworZnVuY3Rpb24gYmFz
ZWxpbmVUZXN0KGFyZykgeworICAgIGlmIChhcmcgPiAyMCkgeworICAgICAgICByZXR1cm4gMjA7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDMwOworICAgIH0KK30KKworZnVuY3Rpb24g
ZGZnVGVzdChhcmcpIHsKKyAgICBpZiAoYXJnID4gMjApIHsKKyAgICAgICAgcmV0dXJuIDIwOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAzMDsKKyAgICB9Cit9CisKK25vSW5saW5lKGJh
c2VsaW5lVGVzdCk7Citub0lubGluZShkZmdUZXN0KTsKKwordGllclVwVG9CYXNlbGluZShiYXNl
bGluZVRlc3QsIDEwKTsKK3RpZXJVcFRvREZHKGRmZ1Rlc3QsIDEwKTsKKworYXNzZXJ0KCFoYXNC
YXNpY0Jsb2NrRXhlY3V0ZWQoYmFzZWxpbmVUZXN0LCAicmV0dXJuIDIwIiksICJzaG91bGQgbm90
IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZChiYXNl
bGluZVRlc3QsICJyZXR1cm4gMzAiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworYmFzZWxp
bmVUZXN0KDI1KTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoYmFzZWxpbmVUZXN0LCAi
cmV0dXJuIDIwIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKKworYXNzZXJ0KCFoYXNCYXNp
Y0Jsb2NrRXhlY3V0ZWQoZGZnVGVzdCwgInJldHVybiAyMCIpLCAic2hvdWxkIG5vdCBoYXZlIGV4
ZWN1dGVkIHlldC4iKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZGZnVGVzdCwgInJl
dHVybiAzMCIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7CitkZmdUZXN0KDI1KTsKK2Fzc2Vy
dChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZGZnVGVzdCwgInJldHVybiAyMCIpLCAic2hvdWxkIGhh
dmUgZXhlY3V0ZWQuIik7CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyL2RyaXZlci9kcml2ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvZHJpdmVyL2RyaXZlci5qcwko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1By
b2ZpbGVyL2RyaXZlci9kcml2ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACitm
dW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCByZWFzb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlYXNvbik7Cit9CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzk0NTIpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wMS0z
MSAgU2FhbSBCYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAgICAgICAgQ3JlYXRl
IHRlc3RzIGZvciBKU0MncyBDb250cm9sIEZsb3cgUHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHM6CisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0cyk6CisgICAgICAgICogU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBw
b3J0CkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwkocmV2aXNpb24g
MTc5Mzk3KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHdvcmtp
bmcgY29weSkKQEAgLTI2NCw3ICsyNjQsOCBAQCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKICAgICAg
ICAgIkxheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzIiwKICAgICAgICAgIlBlcmZv
cm1hbmNlVGVzdHMvU3VuU3BpZGVyL3Byb2ZpbGVyLXRlc3QueWFtbCIsCiAgICAgICAgICJMYXlv
dXRUZXN0cy9qc2MtbGF5b3V0LXRlc3RzLnlhbWwiLAotICAgICAgICAiU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3R5cGVQcm9maWxlci55YW1sIgorICAgICAgICAiU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3R5cGVQcm9maWxlci55YW1sIiwKKyAgICAgICAgIlNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyLnlhbWwiCiAgICAgKTsKICAgICBpZiAo
JGVuYWJsZUZUTCkgewogICAgICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICItLWZ0bC1q
aXQiKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMTc5Mzk3
KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpA
QCAtNzMxLDYgKzczMSwxNCBAQCBkZWYgcnVuVHlwZVByb2ZpbGVyCiAgICAgZW5kCiBlbmQKIAor
ZGVmIHJ1bkNvbnRyb2xGbG93UHJvZmlsZXIKKyAgICBpZiAkZW5hYmxlRlRMCisgICAgICAgIHJ1
bigiZnRsLW5vLWNqaXQtdHlwZS1wcm9maWxlciIsICItLWVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXI9dHJ1ZSIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMpKQorICAgIGVsc2UKKyAg
ICAgICBydW4oIm5vLWNqaXQtdHlwZS1wcm9maWxlciIsICItLWVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXI9dHJ1ZSIsICpOT19DSklUX09QVElPTlMpCisgICAgZW5kCitlbmQKKwogZGVmIHJ1bkxh
eW91dFRlc3Qoa2luZCwgKm9wdGlvbnMpCiAgICAgcmFpc2UgdW5sZXNzICRiZW5jaG1hcmsudG9f
cyA9fiAvXC5qcyQvCiAgICAgdGVzdE5hbWUgPSAkfi5wcmVfbWF0Y2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245853</attachid>
            <date>2015-02-01 19:38:47 -0800</date>
            <delta_ts>2015-02-02 10:53:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>17883</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NDUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE1LTAxLTMxICBTYWFtIEJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBDcmVhdGUgdGVzdHMgZm9yIEpTQydzIENvbnRyb2wgRmxvdyBQcm9maWxlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVh
dGVzIGEgY29udHJvbCBmbG93IHByb2ZpbGVyIHRlc3RpbmcgQVBJIGluIGpzYy5jcHAgCisgICAg
ICAgIHRoYXQgYWNjZXB0cyBhIGZ1bmN0aW9uIGFuZCBhIHN0cmluZyBhcyBhcmd1bWVudHMuIFRo
ZSBzdHJpbmcgbXVzdCAKKyAgICAgICAgYmUgYSBzdWJzdHJpbmcgb2YgdGhlIHRleHQgb2YgdGhl
IGZ1bmN0aW9uIGFyZ3VtZW50LiBUaGUgQVBJIHJldHVybnMgCisgICAgICAgIGEgYm9vbGVhbiBp
bmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBiYXNpYyBibG9jayB0aGF0IGVuY2xvc2VzIHRo
ZSAKKyAgICAgICAgc3Vic3RyaW5nIGhhcyBleGVjdXRlZC4KKworICAgICAgICBUaGlzIHBhdGNo
IHVzZXMgdGhpcyBBUEkgdG8gdGVzdCB0aGF0IHRoZSBjb250cm9sIGZsb3cgcHJvZmlsZXIKKyAg
ICAgICAgYmVoYXZlcyBhcyBleHBlY3RlZCBvbiBiYXNpYyBibG9jayBib3VuZGFyaWVzLiBUaGVz
ZSB0ZXN0cyBkbyBub3QKKyAgICAgICAgcHJvdmlkZSBmdWxsIGNvdmVyYWdlIGZvciBhbGwgSmF2
YVNjcmlwdCBzdGF0ZW1lbnRzIHRoYXQgY2FuIGNyZWF0ZQorICAgICAgICBiYXNpYyBibG9ja3Mg
Ym91bmRhcmllcy4gRnVsbCBjb3ZlcmFnZSB3aWxsIGNvbWUgaW4gYSBsYXRlciBwYXRjaC4KKwor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpDb250cm9sRmxv
d1Byb2ZpbGVyOjpoYXNCYXNpY0Jsb2NrQXRUZXh0T2Zmc2V0QmVlbkV4ZWN1dGVkKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaDoKKyAgICAgICAgKiB0ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2Zp
bGVyLnlhbWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvZHJp
dmVyOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2RyaXZlci9k
cml2ZXIuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKiB0ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyL2lmLXN0YXRlbWVudC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0SWYp
OgorICAgICAgICAobm9NYXRjaGVzKToKKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2Zp
bGVyL2xvb3Atc3RhdGVtZW50cy5qczogQWRkZWQuCisgICAgICAgIChmb3JSZWd1bGFyKToKKyAg
ICAgICAgKGZvckluKToKKyAgICAgICAgKGZvck9mKToKKyAgICAgICAgKHdoaWxlTG9vcCk6Cisg
ICAgICAgICogdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9zd2l0Y2gtc3RhdGVtZW50cy5qczog
QWRkZWQuCisgICAgICAgICh0ZXN0U3dpdGNoKToKKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxv
d1Byb2ZpbGVyL3Rlc3Qtaml0LmpzOiBBZGRlZC4KKyAgICAgICAgKHRpZXJVcFRvQmFzZWxpbmUp
OgorICAgICAgICAodGllclVwVG9ERkcpOgorICAgICAgICAoYmFzZWxpbmVUZXN0KToKKyAgICAg
ICAgKGRmZ1Rlc3QpOgorCiAyMDE1LTAxLTMxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIGV2ZW4gbW9yZSBNb3VudGFpbiBMaW9uIHN1cHBvcnQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNzkzOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDYgKzQ4Miw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXR1cm5UeXBlRm9y
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25EdW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEV4
ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSop
OwpAQCAtNjM4LDYgKzYzOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJyZXR1cm5UeXBlRm9yIiwgZnVuY3Rpb25SZXR1cm5UeXBlRm9yLCAxKTsKIAogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImR1bXBCYXNpY0Jsb2NrRXhlY3V0aW9uUmFuZ2VzIiwgZnVuY3Rpb25E
dW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdlcyAsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2
bSwgImhhc0Jhc2ljQmxvY2tFeGVjdXRlZCIsIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVk
LCAyKTsKICAgICAgICAgCiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlB
cnJheShnbG9iYWxFeGVjKCksIDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50cy5zaXplKCk7ICsraSkKQEAgLTExMTQsNiArMTExNiwyMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkhhc0Jhc2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+dm0oKS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpOworCisgICAgSlNWYWx1ZSBm
dW5jdGlvblZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVu
Y3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvblZhbHVlLmFzQ2VsbCgp
LT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKGV4
ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOworICAgIFN0cmluZyBzdWJzdHJpbmcgPSBleGVj
LT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0
ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICBpbnQgb2Zmc2V0ID0gc291
cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRP
ZmZzZXQoKTsKKyAgICAKKyAgICBib29sIGhhc0V4ZWN1dGVkID0gZXhlYy0+dm0oKS5jb250cm9s
Rmxvd1Byb2ZpbGVyKCktPmhhc0Jhc2ljQmxvY2tBdFRleHRPZmZzZXRCZWVuRXhlY3V0ZWQob2Zm
c2V0LCBleGVjdXRhYmxlLT5zb3VyY2VJRCgpLCBleGVjLT52bSgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihoYXNFeGVjdXRlZCkpOworfQorCiAvLyBVc2UgU0VIIGZv
ciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2YgdGhlIGNyYXNoIHJlcG9ydCBkaWFs
b2cKIC8vIChsdWNraWx5IHRoZSBzYW1lIHRlc3RzIGZhaWwgaW4gUmVsZWFzZSBhbmQgRGVidWcg
YnVpbGRzIHNvIGZhcikuIE5lZWQgdG8KIC8vIGJlIGluIGEgc2VwYXJhdGUgbWFpbiBmdW5jdGlv
biBiZWNhdXNlIHRoZSBqc2NtYWluIGZ1bmN0aW9uIHJlcXVpcmVzIG9iamVjdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9maWxl
ci5jcHAJKHJldmlzaW9uIDE3OTM5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnRyb2xGbG93UHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw0ICs5OCwyMyBA
QCBWZWN0b3I8QmFzaWNCbG9ja1JhbmdlPiBDb250cm9sRmxvd1Byb2ZpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorYm9vbCBDb250cm9sRmxvd1Byb2ZpbGVyOjpoYXNCYXNpY0Jsb2NrQXRUZXh0
T2Zmc2V0QmVlbkV4ZWN1dGVkKGludCBvZmZzZXQsIGludHB0cl90IHNvdXJjZUlELCBWTSYgdm0p
Cit7CisgICAgY29uc3QgVmVjdG9yPEJhc2ljQmxvY2tSYW5nZT4mIGJsb2NrcyA9IGdldEJhc2lj
QmxvY2tzRm9yU291cmNlSUQoc291cmNlSUQsIHZtKTsKKyAgICBpbnQgYmVzdERpc3RhbmNlID0g
SU5UX01BWDsKKyAgICBCYXNpY0Jsb2NrUmFuZ2UgYmVzdFJhbmdlOworICAgIGJlc3RSYW5nZS5t
X3N0YXJ0T2Zmc2V0ID0gYmVzdFJhbmdlLm1fZW5kT2Zmc2V0ID0gLTE7CisgICAgLy8gQmVjYXVz
ZSBzb21lIHJhbmdlcyBtYXkgb3ZlcmxhcCBiZWNhdXNlIG9mIGZ1bmN0aW9uIGJvdW5kYXJpZXMs
IG1ha2Ugc3VyZSB0byBmaW5kIHRoZSBzbWFsbGVzdCByYW5nZSBlbmNsb3NpbmcgdGhlIG9mZnNl
dC4KKyAgICBmb3IgKEJhc2ljQmxvY2tSYW5nZSByYW5nZSA6IGJsb2NrcykgeworICAgICAgICBp
ZiAocmFuZ2UubV9zdGFydE9mZnNldCA8PSBvZmZzZXQgJiYgb2Zmc2V0IDw9IHJhbmdlLm1fZW5k
T2Zmc2V0ICYmIChyYW5nZS5tX2VuZE9mZnNldCAtIHJhbmdlLm1fc3RhcnRPZmZzZXQpIDwgYmVz
dERpc3RhbmNlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyYW5nZS5tX2VuZE9mZnNl
dCAtIHJhbmdlLm1fc3RhcnRPZmZzZXQgPj0gMCk7CisgICAgICAgICAgICBiZXN0RGlzdGFuY2Ug
PSByYW5nZS5tX2VuZE9mZnNldCAtIHJhbmdlLm1fc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICBi
ZXN0UmFuZ2UgPSByYW5nZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJU
KGJlc3RSYW5nZS5tX3N0YXJ0T2Zmc2V0ICE9IC0xICYmIGJlc3RSYW5nZS5tX2VuZE9mZnNldCAh
PSAtMSk7CisgICAgcmV0dXJuIGJlc3RSYW5nZS5tX2hhc0V4ZWN1dGVkOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xG
bG93UHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db250cm9sRmxvd1Byb2ZpbGVyLmgJKHJldmlzaW9uIDE3OTM5NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1w
RGF0YSgpIGNvbnN0OwogICAgIFZlY3RvcjxCYXNpY0Jsb2NrUmFuZ2U+IGdldEJhc2ljQmxvY2tz
Rm9yU291cmNlSUQoaW50cHRyX3Qgc291cmNlSUQsIFZNJikgY29uc3Q7CiAgICAgQmFzaWNCbG9j
a0xvY2F0aW9uKiBkdW1teUJhc2ljQmxvY2soKSB7IHJldHVybiAmbV9kdW1teUJhc2ljQmxvY2s7
IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc0Jhc2ljQmxvY2tBdFRleHRPZmZzZXRC
ZWVuRXhlY3V0ZWQoaW50LCBpbnRwdHJfdCwgVk0mKTsgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMg
Zm9yIHRlc3RpbmcuCiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEJhc2ljQmxvY2tL
ZXksIEJhc2ljQmxvY2tMb2NhdGlvbio+IEJsb2NrTG9jYXRpb25DYWNoZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyLnlhbWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIueWFt
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxv
d1Byb2ZpbGVyLnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIFNhYW0gQmFyYXRpIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy0gcGF0aDogY29udHJv
bEZsb3dQcm9maWxlcgorICBjbWQ6IHJ1bkNvbnRyb2xGbG93UHJvZmlsZXIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2lmLXN0YXRlbWVudC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQ
cm9maWxlci9pZi1zdGF0ZW1lbnQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9pZi1zdGF0ZW1lbnQuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1NiBAQAorbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CisKK3Zh
ciBhLCBiLCBjLCBkOworCitmdW5jdGlvbiB0ZXN0SWYoeCkgeworICAgIGlmICh4ID4gMTAgJiYg
eCA8IDIwKSB7CisgICAgICAgIHJldHVybiBhOworICAgIH0gZWxzZSBpZiAoeCA+IDIwICYmIHgg
PCAzMCkgeworICAgICAgICByZXR1cm4gYjsKKyAgICB9IGVsc2UgaWYgKHggPiAzMCAmJiB4IDwg
NDApIHsKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGQ7
CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIG5vTWF0Y2hlcyh4KSB7
CisgICAgaWYgKHggPiAxMCAmJiB4IDwgMjApIHsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfSBl
bHNlIGlmICh4ID4gMjAgJiYgeCA8IDMwKSB7CisgICAgICAgIHJldHVybiBiOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHJldHVybiBjOworICAgIH0KK30KKworYXNzZXJ0KCFoYXNCYXNpY0Jsb2Nr
RXhlY3V0ZWQodGVzdElmLCAicmV0dXJuIGEiKSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5
ZXQuIik7Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0SWYsICJyZXR1cm4gYiIp
LCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9j
a0V4ZWN1dGVkKHRlc3RJZiwgInJldHVybiBjIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQg
eWV0LiIpOworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdElmLCAicmV0dXJuIGQi
KSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7CisKK3Rlc3RJZigxMSk7Cithc3Nl
cnQoaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKHRlc3RJZiwgInJldHVybiBhIiksICJzaG91bGQgaGF2
ZSBleGVjdXRlZC4iKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdElmLCAieCA+
IDEwIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4
ZWN1dGVkKHRlc3RJZiwgInJldHVybiBiIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0
LiIpOworCit0ZXN0SWYoMjEpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0SWYs
ICJyZXR1cm4gYiIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7Cithc3NlcnQoIWhhc0Jhc2lj
QmxvY2tFeGVjdXRlZCh0ZXN0SWYsICJyZXR1cm4gYyIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1
dGVkIHlldC4iKTsKKwordGVzdElmKDMxKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQo
dGVzdElmLCAicmV0dXJuIGMiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworYXNzZXJ0KCFo
YXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdElmLCAicmV0dXJuIGQiKSwgInNob3VsZCBub3QgaGF2
ZSBleGVjdXRlZCB5ZXQuIik7CisKK3Rlc3RJZigwKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhl
Y3V0ZWQodGVzdElmLCAicmV0dXJuIGQiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworCisK
K25vTWF0Y2hlcygwKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKG5vTWF0Y2hlcywg
InJldHVybiBhIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworYXNzZXJ0KGhh
c0Jhc2ljQmxvY2tFeGVjdXRlZChub01hdGNoZXMsICJ4ID4gMTAiKSwgInNob3VsZCBoYXZlIGV4
ZWN1dGVkLiIpOworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQobm9NYXRjaGVzLCAicmV0
dXJuIGIiKSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7Cithc3NlcnQoaGFzQmFz
aWNCbG9ja0V4ZWN1dGVkKG5vTWF0Y2hlcywgInggPiAyMCIpLCAic2hvdWxkIGhhdmUgZXhlY3V0
ZWQuIik7Cithc3NlcnQoaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKG5vTWF0Y2hlcywgInJldHVybiBj
IiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2xvb3Atc3RhdGVtZW50cy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9sb29w
LXN0YXRlbWVudHMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvY29udHJvbEZsb3dQcm9maWxlci9sb29wLXN0YXRlbWVudHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3NiBAQAorbG9hZCgiLi9kcml2ZXIvZHJpdmVyLmpzIik7CisKK2Z1bmN0aW9u
IGZvclJlZ3VsYXIobGltaXQpIHsKKyAgICB2YXIgc3VtID0gMDsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxpbWl0OyBpKyspIHsKKyAgICAgICAgc3VtICs9IGk7CisgICAgfQorCisgICAgcmV0
dXJuIHN1bTsKK30KKworZnVuY3Rpb24gZm9ySW4obykgeworICAgIHZhciBzID0gIiI7CisgICAg
dmFyIHA7CisgICAgZm9yIChwIGluIG8pIHsKKyAgICAgICAgcyArPSBwOworICAgIH0KK30KKwor
ZnVuY3Rpb24gZm9yT2YoYSkgeworICAgIHZhciBzID0gIiI7CisgICAgdmFyIHA7CisgICAgZm9y
IChwIG9mIGEpIHsKKyAgICAgICAgcyArPSBwOworICAgIH0KK30KKworZnVuY3Rpb24gd2hpbGVM
b29wKGxpbWl0KSB7CisgICAgdmFyIGkgPSAwOworICAgIHZhciBzdW0gPSAwOworICAgIHdoaWxl
IChpIDwgbGltaXQpIHsKKyAgICAgICAgc3VtICs9IGk7CisgICAgICAgIGkrKzsKKyAgICB9CisK
KyAgICByZXR1cm4gc3VtOworfQorCithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JS
ZWd1bGFyLCAidmFyIHN1bSIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKwor
Zm9yUmVndWxhcigwKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZm9yUmVndWxhciwg
InZhciBzdW0iKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworYXNzZXJ0KCFoYXNCYXNpY0Js
b2NrRXhlY3V0ZWQoZm9yUmVndWxhciwgInN1bSArPSBpIiksICJzaG91bGQgbm90IGhhdmUgZXhl
Y3V0ZWQgeWV0LiIpOworCitmb3JSZWd1bGFyKDEpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVj
dXRlZChmb3JSZWd1bGFyLCAic3VtICs9IGkiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOwor
CisKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKGZvckluLCAidmFyIHMiKSwgInNob3Vs
ZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7CisKK2ZvckluKHt9KTsKK2Fzc2VydChoYXNCYXNp
Y0Jsb2NrRXhlY3V0ZWQoZm9ySW4sICJ2YXIgcyIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7
Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JJbiwgInMgKz0gcCIpLCAic2hvdWxk
IG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKworZm9ySW4oe2ZvbzogImJhciJ9KTsKK2Fzc2Vy
dChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZm9ySW4sICJzICs9IHAiKSwgInNob3VsZCBoYXZlIGV4
ZWN1dGVkLiIpOworCisKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKGZvck9mLCAidmFy
IHMiKSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7CisKK2Zvck9mKFtdKTsKK2Fz
c2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZm9yT2YsICJ2YXIgcyIpLCAic2hvdWxkIGhhdmUg
ZXhlY3V0ZWQuIik7Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JPZiwgInMgKz0g
cCIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKworZm9yT2YoWyJhIl0pOwor
YXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZChmb3JPZiwgInMgKz0gcCIpLCAic2hvdWxkIGhh
dmUgZXhlY3V0ZWQuIik7CisKKworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQod2hpbGVM
b29wLCAidmFyIHN1bSIpLCAic2hvdWxkIG5vdCBoYXZlIGV4ZWN1dGVkIHlldC4iKTsKKword2hp
bGVMb29wKDApOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh3aGlsZUxvb3AsICJ2YXIg
c3VtIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKK2Fzc2VydCghaGFzQmFzaWNCbG9ja0V4
ZWN1dGVkKHdoaWxlTG9vcCwgInN1bSArPSBpIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQg
eWV0LiIpOworCit3aGlsZUxvb3AoMSk7Cithc3NlcnQoaGFzQmFzaWNCbG9ja0V4ZWN1dGVkKHdo
aWxlTG9vcCwgInN1bSArPSBpIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL3N3aXRjaC1zdGF0
ZW1lbnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyL3N3aXRjaC1zdGF0ZW1lbnRzLmpzCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvc3dpdGNoLXN0YXRl
bWVudHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorbG9hZCgiLi9kcml2ZXIv
ZHJpdmVyLmpzIik7CisKK3ZhciBhLCBiLCBjOworZnVuY3Rpb24gdGVzdFN3aXRjaChzKSB7Cisg
ICAgc3dpdGNoIChzKSB7CisgICAgY2FzZSAiZm9vIjoKKyAgICAgICAgcmV0dXJuIGE7CisgICAg
Y2FzZSAiYmFyIjoKKyAgICAgICAgcmV0dXJuIGI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGM7CisgICAgfQorfQorCithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0U3dp
dGNoLCAic3dpdGNoIiksICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworCit0ZXN0
U3dpdGNoKCJmb28iKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdFN3aXRjaCwg
InN3aXRjaCIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7Cithc3NlcnQoaGFzQmFzaWNCbG9j
a0V4ZWN1dGVkKHRlc3RTd2l0Y2gsICJyZXR1cm4gYSIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQu
Iik7Cithc3NlcnQoIWhhc0Jhc2ljQmxvY2tFeGVjdXRlZCh0ZXN0U3dpdGNoLCAicmV0dXJuIGIi
KSwgInNob3VsZCBub3QgaGF2ZSBleGVjdXRlZCB5ZXQuIik7Cithc3NlcnQoIWhhc0Jhc2ljQmxv
Y2tFeGVjdXRlZCh0ZXN0U3dpdGNoLCAicmV0dXJuIGMiKSwgInNob3VsZCBub3QgaGF2ZSBleGVj
dXRlZCB5ZXQuIik7CisKK3Rlc3RTd2l0Y2goImJhciIpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tF
eGVjdXRlZCh0ZXN0U3dpdGNoLCAicmV0dXJuIGIiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIp
OworYXNzZXJ0KCFoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdFN3aXRjaCwgInJldHVybiBjIiks
ICJzaG91bGQgbm90IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworCit0ZXN0U3dpdGNoKCIiKTsKK2Fz
c2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQodGVzdFN3aXRjaCwgInJldHVybiBjIiksICJzaG91
bGQgaGF2ZSBleGVjdXRlZC4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9j
b250cm9sRmxvd1Byb2ZpbGVyL3Rlc3Qtaml0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL3Rlc3Qtaml0LmpzCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIv
dGVzdC1qaXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorbG9hZCgiLi9kcml2
ZXIvZHJpdmVyLmpzIik7CisKK2Z1bmN0aW9uIHRpZXJVcFRvQmFzZWxpbmUoZnVuYywgYXJnKSAK
K3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUwOyBpKyspCisgICAgICAgIGZ1bmMoYXJnKTsK
K30KKworZnVuY3Rpb24gdGllclVwVG9ERkcoZnVuYywgYXJnKSAKK3sKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDUwOyBpKyspCisgICAgICAgIGZ1bmMoYXJnKTsKK30KKworZnVuY3Rpb24gYmFz
ZWxpbmVUZXN0KGFyZykgeworICAgIGlmIChhcmcgPiAyMCkgeworICAgICAgICByZXR1cm4gMjA7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIDMwOworICAgIH0KK30KKworZnVuY3Rpb24g
ZGZnVGVzdChhcmcpIHsKKyAgICBpZiAoYXJnID4gMjApIHsKKyAgICAgICAgcmV0dXJuIDIwOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAzMDsKKyAgICB9Cit9CisKK25vSW5saW5lKGJh
c2VsaW5lVGVzdCk7Citub0lubGluZShkZmdUZXN0KTsKKwordGllclVwVG9CYXNlbGluZShiYXNl
bGluZVRlc3QsIDEwKTsKK3RpZXJVcFRvREZHKGRmZ1Rlc3QsIDEwKTsKKworYXNzZXJ0KCFoYXNC
YXNpY0Jsb2NrRXhlY3V0ZWQoYmFzZWxpbmVUZXN0LCAicmV0dXJuIDIwIiksICJzaG91bGQgbm90
IGhhdmUgZXhlY3V0ZWQgeWV0LiIpOworYXNzZXJ0KGhhc0Jhc2ljQmxvY2tFeGVjdXRlZChiYXNl
bGluZVRlc3QsICJyZXR1cm4gMzAiKSwgInNob3VsZCBoYXZlIGV4ZWN1dGVkLiIpOworYmFzZWxp
bmVUZXN0KDI1KTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoYmFzZWxpbmVUZXN0LCAi
cmV0dXJuIDIwIiksICJzaG91bGQgaGF2ZSBleGVjdXRlZC4iKTsKKworYXNzZXJ0KCFoYXNCYXNp
Y0Jsb2NrRXhlY3V0ZWQoZGZnVGVzdCwgInJldHVybiAyMCIpLCAic2hvdWxkIG5vdCBoYXZlIGV4
ZWN1dGVkIHlldC4iKTsKK2Fzc2VydChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZGZnVGVzdCwgInJl
dHVybiAzMCIpLCAic2hvdWxkIGhhdmUgZXhlY3V0ZWQuIik7CitkZmdUZXN0KDI1KTsKK2Fzc2Vy
dChoYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoZGZnVGVzdCwgInJldHVybiAyMCIpLCAic2hvdWxkIGhh
dmUgZXhlY3V0ZWQuIik7CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250
cm9sRmxvd1Byb2ZpbGVyL2RyaXZlci9kcml2ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvZHJpdmVyL2RyaXZlci5qcwko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1By
b2ZpbGVyL2RyaXZlci9kcml2ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACitm
dW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uLCByZWFzb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlYXNvbik7Cit9CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzk0NTIpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wMS0z
MSAgU2FhbSBCYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAgICAgICAgQ3JlYXRl
IHRlc3RzIGZvciBKU0MncyBDb250cm9sIEZsb3cgUHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHM6CisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0cyk6CisgICAgICAgICogU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBw
b3J0CkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwkocmV2aXNpb24g
MTc5Mzk3KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHdvcmtp
bmcgY29weSkKQEAgLTI2NCw3ICsyNjQsOCBAQCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKICAgICAg
ICAgIkxheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzIiwKICAgICAgICAgIlBlcmZv
cm1hbmNlVGVzdHMvU3VuU3BpZGVyL3Byb2ZpbGVyLXRlc3QueWFtbCIsCiAgICAgICAgICJMYXlv
dXRUZXN0cy9qc2MtbGF5b3V0LXRlc3RzLnlhbWwiLAotICAgICAgICAiU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3R5cGVQcm9maWxlci55YW1sIgorICAgICAgICAiU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3R5cGVQcm9maWxlci55YW1sIiwKKyAgICAgICAgIlNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyLnlhbWwiCiAgICAgKTsKICAgICBpZiAo
JGVuYWJsZUZUTCkgewogICAgICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICItLWZ0bC1q
aXQiKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMTc5Mzk3
KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpA
QCAtNzMxLDYgKzczMSwxNCBAQCBkZWYgcnVuVHlwZVByb2ZpbGVyCiAgICAgZW5kCiBlbmQKIAor
ZGVmIHJ1bkNvbnRyb2xGbG93UHJvZmlsZXIKKyAgICBpZiAkZW5hYmxlRlRMCisgICAgICAgIHJ1
bigiZnRsLW5vLWNqaXQtdHlwZS1wcm9maWxlciIsICItLWVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXI9dHJ1ZSIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMpKQorICAgIGVsc2UKKyAg
ICAgICBydW4oIm5vLWNqaXQtdHlwZS1wcm9maWxlciIsICItLWVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXI9dHJ1ZSIsICpOT19DSklUX09QVElPTlMpCisgICAgZW5kCitlbmQKKwogZGVmIHJ1bkxh
eW91dFRlc3Qoa2luZCwgKm9wdGlvbnMpCiAgICAgcmFpc2UgdW5sZXNzICRiZW5jaG1hcmsudG9f
cyA9fiAvXC5qcyQvCiAgICAgdGVzdE5hbWUgPSAkfi5wcmVfbWF0Y2gK
</data>
<flag name="review"
          id="270766"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>