<?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>38168</bug_id>
          
          <creation_ts>2010-04-26 21:57:43 -0700</creation_ts>
          <short_desc>Add ObjC and GObject to run-bindings-test</short_desc>
          <delta_ts>2010-04-27 14:24:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217504</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 21:57:43 -0700</bug_when>
    <thetext>Add ObjC and GObject to run-bindings-test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217505</commentid>
    <comment_count>1</comment_count>
      <attachid>54380</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 21:58:16 -0700</bug_when>
    <thetext>Created attachment 54380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217506</commentid>
    <comment_count>2</comment_count>
      <attachid>54380</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-26 21:59:40 -0700</bug_when>
    <thetext>Comment on attachment 54380
Patch

Wow.  Our bindings need love.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217507</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 22:01:55 -0700</bug_when>
    <thetext>Committed r58289: &lt;http://trac.webkit.org/changeset/58289&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54380</attachid>
            <date>2010-04-26 21:58:16 -0700</date>
            <delta_ts>2010-04-26 21:59:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38168-20100426215815.patch</filename>
            <type>text/plain</type>
            <size>45514</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjJjYjk3OWQxMWQxYzhhMTI3NThjYTJkZjkxNDViMGM4NGYzNTY3Zi4uNWE0OTVhMjg2YzE3YzM2
NThhNDg5NjY4MjRhMjhhNjQxMjdkNzg1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw4NyBAQAogMjAxMC0wNC0yNiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBPYmpDIGFuZCBHT2JqZWN0IHRvIHJ1bi1iaW5kaW5n
cy10ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODE2OAorCisgICAgICAgIEFkZGVkIGV4cGVjdGVkIHJlc3VsdHMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRf
bWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9h
cmdzKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfaW50X21ldGhvZCk6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2ludF9tZXRob2Rfd2l0aF9hcmdzKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX29ial9tZXRob2Rfd2l0aF9hcmdzKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
bWV0aG9kX3dpdGhfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0
aG9kX3dpdGhfb3B0aW9uYWxfYXJnKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0
aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19hbmRfb3B0aW9uYWxfYXJnKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19hbmRfdHdvX29w
dGlvbmFsX2FyZ3MpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5
X2ludF9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9z
dHJpbmdfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlf
dGVzdF9vYmpfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9pbnRfYXR0
cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9pbnRfYXR0cik6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0cik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF90ZXN0X29ial9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3Rlc3Rfb2JqX2F0dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93
aXRoX2V4Y2VwdGlvbik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dp
dGhfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0
aF9zZXR0ZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0
dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
d3JhcFRlc3RPYmopOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9vYmpfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dF9kb21fdGVzdF9vYmpfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmg6IEFkZGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06IEFkZGVkLgor
ICAgICAgICAoLVtET01UZXN0T2JqIGRlYWxsb2NdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBm
aW5hbGl6ZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHJlYWRPbmx5SW50QXR0cl0pOgorICAg
ICAgICAoLVtET01UZXN0T2JqIHJlYWRPbmx5U3RyaW5nQXR0cl0pOgorICAgICAgICAoLVtET01U
ZXN0T2JqIHJlYWRPbmx5VGVzdE9iakF0dHJdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBpbnRB
dHRyXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0SW50QXR0cjpdKToKKyAgICAgICAgKC1b
RE9NVGVzdE9iaiBzdHJpbmdBdHRyXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0U3RyaW5n
QXR0cjpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB0ZXN0T2JqQXR0cl0pOgorICAgICAgICAo
LVtET01UZXN0T2JqIHNldFRlc3RPYmpBdHRyOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIGF0
dHJXaXRoRXhjZXB0aW9uXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0QXR0cldpdGhFeGNl
cHRpb246XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25d
KToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbjpdKToK
KyAgICAgICAgKC1bRE9NVGVzdE9iaiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbl0pOgorICAgICAg
ICAoLVtET01UZXN0T2JqIHNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uOl0pOgorICAgICAgICAo
LVtET01UZXN0T2JqIGN1c3RvbUF0dHJdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRDdXN0
b21BdHRyOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHZvaWRNZXRob2RdKToKKyAgICAgICAg
KC1bRE9NVGVzdE9iaiB2b2lkTWV0aG9kV2l0aEFyZ3M6c3RyQXJnOm9iakFyZzpdKToKKyAgICAg
ICAgKC1bRE9NVGVzdE9iaiBpbnRNZXRob2RdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBpbnRN
ZXRob2RXaXRoQXJnczpzdHJBcmc6b2JqQXJnOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIG9i
ak1ldGhvZF0pOgorICAgICAgICAoLVtET01UZXN0T2JqIG9iak1ldGhvZFdpdGhBcmdzOnN0ckFy
ZzpvYmpBcmc6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogbWV0aG9kV2l0aEV4Y2VwdGlvbl0p
OgorICAgICAgICAoLVtET01UZXN0T2JqIGN1c3RvbU1ldGhvZF0pOgorICAgICAgICAoLVtET01U
ZXN0T2JqIGN1c3RvbU1ldGhvZFdpdGhBcmdzOnN0ckFyZzpvYmpBcmc6XSk6CisgICAgICAgICgt
W0RPTVRlc3RPYmogbWV0aG9kV2l0aE9wdGlvbmFsQXJnOl0pOgorICAgICAgICAoLVtET01UZXN0
T2JqIG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnOm9wdDpdKToKKyAgICAg
ICAgKC1bRE9NVGVzdE9iaiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFy
Z3M6b3B0MTpvcHQyOl0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChraXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmpJbnRlcm5hbC5oOiBBZGRl
ZC4KKworMjAxMC0wNC0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAgICAgICAgIEFkZCB0ZXN0aW5nIGluZnJh
c3RydWN0dXJlIGZvciBKU0MgYmluZGluZ3MgZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMjY0ZGE2NTZlNDMzNGQxMTcyNDgxMDRiMTcyZTc1OTUwN2NjN2YxCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmNwcApAQCAtMCwwICsxLDU4NyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRlc3RPYmouaCIKKyNpbmNsdWRlICJXZWJLaXRE
T01CaW5kaW5nLmgiCisjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisj
aW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRlc3RPYmouaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2Vi
S2l0RE9NVGVzdE9ialByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXRtYXJzaGFsLmgiCisjaW5j
bHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK2dwb2lu
dGVyIGtpdChXZWJDb3JlOjpUZXN0T2JqKiBvYmopCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwob2JqICE9IDAsIDApOworCisgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hl
OjpnZXQob2JqKSkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldHVybiBET01PYmplY3RD
YWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVzdE9iaihvYmopKTsKK30KKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdlYktpdCAvLworCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0
aG9kIChXZWJLaXRET01UZXN0T2JqICpzZWxmKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNl
bGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGl0ZW0tPnZvaWRNZXRob2QoKTsKKworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3ZvaWRfbWV0aG9kX3dpdGhfYXJncyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50
X2FyZywgZ2NoYXIqICBzdHJfYXJnLCBXZWJLaXRET01UZXN0T2JqKiAgb2JqX2FyZykKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsIChzdHJfYXJnKTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsIChvYmpfYXJnKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgX2dfc3Ry
X2FyZyA9IFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgoc3RyX2FyZyk7CisgICAgV2ViQ29yZTo6
VGVzdE9iaiAqIF9nX29ial9hcmcgPSBXZWJLaXQ6OmNvcmUob2JqX2FyZyk7CisgICAgZ19yZXR1
cm5faWZfZmFpbCAoX2dfb2JqX2FyZyk7CisgICAgaXRlbS0+dm9pZE1ldGhvZFdpdGhBcmdzKGlu
dF9hcmcsIF9nX3N0cl9hcmcsIF9nX29ial9hcmcpOworCit9CisKK2dsb25nCit3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2ludF9tZXRob2QgKFdlYktpdERPTVRlc3RPYmogKnNlbGYpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYsIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdsb25nIHJlcyA9IGl0ZW0tPmludE1ldGhvZCgp
OworICAgIHJldHVybiByZXM7CisKK30KKworZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfaW50
X21ldGhvZF93aXRoX2FyZ3MgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcs
IGdjaGFyKiAgc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiogIG9ial9hcmcpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYsIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJfYXJn
LCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAob2JqX2FyZywgMCk7CisgICAgV2ViQ29y
ZTo6U3RyaW5nIF9nX3N0cl9hcmcgPSBXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KHN0cl9hcmcp
OworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBfZ19vYmpfYXJnID0gV2ViS2l0Ojpjb3JlKG9ial9h
cmcpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChfZ19vYmpfYXJnLCAwKTsKKyAgICBnbG9u
ZyByZXMgPSBpdGVtLT5pbnRNZXRob2RXaXRoQXJncyhpbnRfYXJnLCBfZ19zdHJfYXJnLCBfZ19v
YmpfYXJnKTsKKyAgICByZXR1cm4gcmVzOworCit9CisKK1dlYktpdERPTVRlc3RPYmoqIAord2Vi
a2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kIChXZWJLaXRET01UZXN0T2JqICpzZWxmKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRl
c3RPYmo+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+b2JqTWV0aG9kKCkpOworICAgIFdlYktp
dERPTVRlc3RPYmoqICByZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0T2JqKiA+KFdlYktp
dDo6a2l0KGdfcmVzLmdldCgpKSk7CisgICAgcmV0dXJuIHJlczsKKworfQorCitXZWJLaXRET01U
ZXN0T2JqKiAKK3dlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93aXRoX2FyZ3MgKFdlYktp
dERPTVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcsIGdjaGFyKiAgc3RyX2FyZywgV2ViS2l0
RE9NVGVzdE9iaiogIG9ial9hcmcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYs
IDApOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJfYXJnLCAwKTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbCAob2JqX2FyZywgMCk7CisgICAgV2ViQ29yZTo6U3RyaW5nIF9nX3N0cl9hcmcgPSBX
ZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KHN0cl9hcmcpOworICAgIFdlYkNvcmU6OlRlc3RPYmog
KiBfZ19vYmpfYXJnID0gV2ViS2l0Ojpjb3JlKG9ial9hcmcpOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsIChfZ19vYmpfYXJnLCAwKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+
IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+b2JqTWV0aG9kV2l0aEFyZ3MoaW50X2FyZywgX2df
c3RyX2FyZywgX2dfb2JqX2FyZykpOworICAgIFdlYktpdERPTVRlc3RPYmoqICByZXMgPSBzdGF0
aWNfY2FzdDxXZWJLaXRET01UZXN0T2JqKiA+KFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKSk7Cisg
ICAgcmV0dXJuIHJlczsKKworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93
aXRoX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgR0Vycm9yICoqZXJyb3IpCit7
CisgICAgZ19yZXR1cm5faWZfZmFpbCAoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgaXRlbS0+bWV0aG9kV2l0aEV4Y2VwdGlvbihlYyk7CisgICAgaWYgKGVjKSB7Cisg
ICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2M7CisgICAgICAg
IFdlYkNvcmU6OmdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihlYywgZWNkZXNjKTsKKyAgICAg
ICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lU
X0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgIH0KKworfQorCit2b2lkCit3
ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX29wdGlvbmFsX2FyZyAoV2ViS2l0RE9NVGVz
dE9iaiAqc2VsZiwgZ2xvbmcgb3B0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0
ZW0tPm1ldGhvZFdpdGhPcHRpb25hbEFyZyhvcHQpOworCit9CisKK3ZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfbWV0aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19hbmRfb3B0aW9uYWxfYXJnIChX
ZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyBub25fb3B0LCBnbG9uZyBvcHQpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbCAoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5k
T3B0aW9uYWxBcmcobm9uX29wdCwgb3B0KTsKKworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX21ldGhvZF93aXRoX25vbl9vcHRpb25hbF9hcmdfYW5kX3R3b19vcHRpb25hbF9hcmdzIChX
ZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyBub25fb3B0LCBnbG9uZyBvcHQxLCBnbG9uZyBv
cHQyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RP
YmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPm1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhub25fb3B0LCBvcHQxLCBvcHQyKTsKKworfQor
CitnbG9uZword2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2ludF9hdHRyIChXZWJL
aXRET01UZXN0T2JqICpzZWxmKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWxmLCAw
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBnbG9uZyByZXMgPSBpdGVtLT5yZWFkT25seUludEF0dHIoKTsKKyAgICByZXR1cm4gcmVzOwor
Cit9CisKK2djaGFyKiAKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9zdHJpbmdf
YXR0ciAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bCAoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CisgICAgZ2NoYXIqICByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnJlYWRP
bmx5U3RyaW5nQXR0cigpKTsKKyAgICByZXR1cm4gcmVzOworCit9CisKK1dlYktpdERPTVRlc3RP
YmoqIAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X3Rlc3Rfb2JqX2F0dHIgKFdl
YktpdERPTVRlc3RPYmogKnNlbGYpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYs
IDApOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVt
LT5yZWFkT25seVRlc3RPYmpBdHRyKCkpOworICAgIFdlYktpdERPTVRlc3RPYmoqICByZXMgPSBz
dGF0aWNfY2FzdDxXZWJLaXRET01UZXN0T2JqKiA+KFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKSk7
CisgICAgcmV0dXJuIHJlczsKKworfQorCitnbG9uZword2Via2l0X2RvbV90ZXN0X29ial9nZXRf
aW50X2F0dHIgKFdlYktpdERPTVRlc3RPYmogKnNlbGYpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwgKHNlbGYsIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIGdsb25nIHJlcyA9IGl0ZW0tPmludEF0dHIoKTsKKyAgICByZXR1cm4g
cmVzOworCit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2ludF9hdHRyIChXZWJL
aXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
IChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBpdGVtLT5zZXRJbnRBdHRyKHZhbHVlKTsKKworfQorCitnY2hhciogCit3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0ciAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZikKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9i
aiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2NoYXIqICByZXMgPSBjb252ZXJ0
VG9VVEY4U3RyaW5nKGl0ZW0tPnN0cmluZ0F0dHIoKSk7CisgICAgcmV0dXJuIHJlczsKKworfQor
Cit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0ciAoV2ViS2l0RE9NVGVz
dE9iaiAqc2VsZiwgZ2NoYXIqICB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxm
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsICh2YWx1ZSk7CisgICAgV2ViQ29yZTo6U3RyaW5nIF9nX3ZhbHVl
ID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CisgICAgaXRlbS0+c2V0U3RyaW5n
QXR0cihfZ192YWx1ZSk7CisKK30KKworV2ViS2l0RE9NVGVzdE9iaiogCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF90ZXN0X29ial9hdHRyIChXZWJLaXRET01UZXN0T2JqICpzZWxmKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRlc3RP
Ymo+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+dGVzdE9iakF0dHIoKSk7CisgICAgV2ViS2l0
RE9NVGVzdE9iaiogIHJlcyA9IHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RPYmoqID4oV2ViS2l0
OjpraXQoZ19yZXMuZ2V0KCkpKTsKKyAgICByZXR1cm4gcmVzOworCit9CisKK3ZvaWQKK3dlYmtp
dF9kb21fdGVzdF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIgKFdlYktpdERPTVRlc3RPYmogKnNlbGYs
IFdlYktpdERPTVRlc3RPYmoqICB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxm
KTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsICh2YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIF9nX3Zh
bHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAgICBnX3JldHVybl9pZl9mYWlsIChfZ192YWx1
ZSk7CisgICAgaXRlbS0+c2V0VGVzdE9iakF0dHIoX2dfdmFsdWUpOworCit9CisKK2dsb25nCit3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hdHRyX3dpdGhfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0
T2JqICpzZWxmKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWxmLCAwKTsKKyAgICBX
ZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnbG9uZyBy
ZXMgPSBpdGVtLT5hdHRyV2l0aEV4Y2VwdGlvbigpOworICAgIHJldHVybiByZXM7CisKK30KKwor
dm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX2V4Y2VwdGlvbiAoV2ViS2l0
RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgdmFsdWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbCAo
c2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgaXRlbS0+c2V0QXR0cldpdGhFeGNlcHRpb24odmFsdWUpOworCit9CisKK2dsb25nCit3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hdHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlvbiAoV2ViS2l0
RE9NVGVzdE9iaiAqc2VsZikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VsZiwgMCk7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
Z2xvbmcgcmVzID0gaXRlbS0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKTsKKyAgICByZXR1cm4g
cmVzOworCit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0dHJfd2l0aF9zZXR0
ZXJfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2YWx1ZSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bih2YWx1ZSk7CisKK30KKworZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0
aF9nZXR0ZXJfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmKQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsIChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnbG9uZyByZXMgPSBpdGVtLT5hdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbigpOworICAgIHJldHVybiByZXM7CisKK30KKwordm9pZAord2Via2l0X2RvbV90
ZXN0X29ial9zZXRfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmog
KnNlbGYsIGdsb25nIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOworICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0t
PnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKHZhbHVlKTsKKworfQorCisKK0dfREVGSU5FX1RZ
UEUoV2ViS2l0RE9NVGVzdE9iaiwgd2Via2l0X2RvbV90ZXN0X29iaiwgV0VCS0lUX1RZUEVfRE9N
X09CSkVDVCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYktpdERPTVRlc3RPYmoqIHdyYXBU
ZXN0T2JqKFdlYkNvcmU6OlRlc3RPYmoqIGNvcmVPYmplY3QpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKKyAgICAKKyAgICBXZWJLaXRET01UZXN0T2Jq
KiB3cmFwcGVyID0gV0VCS0lUX0RPTV9URVNUX09CSihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
RE9NX1RFU1RfT0JKLCBOVUxMKSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciAh
PSAwLCAwKTsKKworICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysg
c21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgICAq
IGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkg
Y29kZSBmb3IgdGhlCisgICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KKyAgICAgKi8KKworICAgIGNv
cmVPYmplY3QtPnJlZigpOworICAgIFdFQktJVF9ET01fT0JKRUNUKHdyYXBwZXIpLT5jb3JlT2Jq
ZWN0ID0gY29yZU9iamVjdDsKKworICAgIHJldHVybiB3cmFwcGVyOworfQorCitXZWJDb3JlOjpU
ZXN0T2JqKiBjb3JlKFdlYktpdERPTVRlc3RPYmoqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwocmVxdWVzdCAhPSAwLCAwKTsKKyAgICAKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaio+KFdFQktJVF9ET01f
T0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChj
b3JlT2JqZWN0ICE9IDAsIDApOworICAgIAorICAgIHJldHVybiBjb3JlT2JqZWN0OworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKK2VudW0geworICAgIFBST1BfMCwKKyAgICBQUk9QX1JFQURf
T05MWV9JTlRfQVRUUiwKKyAgICBQUk9QX1JFQURfT05MWV9TVFJJTkdfQVRUUiwKKyAgICBQUk9Q
X1JFQURfT05MWV9URVNUX09CSl9BVFRSLAorICAgIFBST1BfSU5UX0FUVFIsCisgICAgUFJPUF9T
VFJJTkdfQVRUUiwKKyAgICBQUk9QX1RFU1RfT0JKX0FUVFIsCisgICAgUFJPUF9BVFRSX1dJVEhf
RVhDRVBUSU9OLAorICAgIFBST1BfQVRUUl9XSVRIX1NFVFRFUl9FWENFUFRJT04sCisgICAgUFJP
UF9BVFRSX1dJVEhfR0VUVEVSX0VYQ0VQVElPTiwKKyAgICBQUk9QX0NVU1RPTV9BVFRSLAorfTsK
KworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2ZpbmFsaXplKEdPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBXZWJLaXRET01PYmplY3QqIGRvbV9vYmplY3QgPSBXRUJLSVRfRE9NX09C
SkVDVChvYmplY3QpOworICAgIAorICAgIGlmIChkb21fb2JqZWN0LT5jb3JlT2JqZWN0ICE9IE5V
TEwpIHsKKyAgICAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OlRlc3RPYmogKj4oZG9tX29iamVjdC0+Y29yZU9iamVjdCk7CisKKyAgICAgICAg
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOworICAgICAgICBjb3Jl
T2JqZWN0LT5kZXJlZigpOworCisgICAgICAgIGRvbV9vYmplY3QtPmNvcmVPYmplY3QgPSBOVUxM
OworICAgIH0KKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9vYmpfcGFyZW50
X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25z
dCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRET01UZXN0
T2JqICpzZWxmID0gV0VCS0lUX0RPTV9URVNUX09CSihvYmplY3QpOworICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworCisgICAgc3dpdGNoIChwcm9w
X2lkKSB7CisgICAgY2FzZSBQUk9QX0lOVF9BVFRSOgorICAgIHsKKyAgICAgICAgIGNvcmVTZWxm
LT5zZXRJbnRBdHRyKChnX3ZhbHVlX2dldF9sb25nKHZhbHVlKSkgKTsKKyAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFBST1BfU1RSSU5HX0FUVFI6CisgICAgeworICAgICAgICAgY29y
ZVNlbGYtPnNldFN0cmluZ0F0dHIoV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dl
dF9zdHJpbmcodmFsdWUpKSApOworICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJP
UF9BVFRSX1dJVEhfRVhDRVBUSU9OOgorICAgIHsKKyAgICAgICAgIGNvcmVTZWxmLT5zZXRBdHRy
V2l0aEV4Y2VwdGlvbigoZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkpICk7CisgICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBQUk9QX0FUVFJfV0lUSF9TRVRURVJfRVhDRVBUSU9OOgorICAg
IHsKKyAgICAgICAgIGNvcmVTZWxmLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigoZ192YWx1
ZV9nZXRfbG9uZyh2YWx1ZSkpICk7CisgICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQ
Uk9QX0FUVFJfV0lUSF9HRVRURVJfRVhDRVBUSU9OOgorICAgIHsKKyAgICAgICAgIGNvcmVTZWxm
LT5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbigoZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkpICk7
CisgICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0NVU1RPTV9BVFRSOgorICAg
IHsKKyAgICAgICAgIGNvcmVTZWxmLT5zZXRDdXN0b21BdHRyKChnX3ZhbHVlX2dldF9sb25nKHZh
bHVlKSkgKTsKKyAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgZGVmYXVsdDoKKyAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRET01UZXN0T2JqKiBz
ZWxmID0gV0VCS0lUX0RPTV9URVNUX09CSihvYmplY3QpOworICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworCisgICAgc3dpdGNoIChwcm9wX2lkKSB7
CisgICAgY2FzZSBQUk9QX1JFQURfT05MWV9JTlRfQVRUUjoKKyAgICB7CisgICAgICAgICBnX3Zh
bHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+cmVhZE9ubHlJbnRBdHRyKCkpOworICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9SRUFEX09OTFlfU1RSSU5HX0FUVFI6Cisg
ICAgeworICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0
cmluZyhjb3JlU2VsZi0+cmVhZE9ubHlTdHJpbmdBdHRyKCkpKTsKKyAgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIFBST1BfUkVBRF9PTkxZX1RFU1RfT0JKX0FUVFI6CisgICAgeworICAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNvcmVTZWxmLT5yZWFkT25seVRl
c3RPYmpBdHRyKCk7CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0Ojpr
aXQocHRyLmdldCgpKSk7CisgICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0lO
VF9BVFRSOgorICAgIHsKKyAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVTZWxm
LT5pbnRBdHRyKCkpOworICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9TVFJJ
TkdfQVRUUjoKKyAgICB7CisgICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252
ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5zdHJpbmdBdHRyKCkpKTsKKyAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFBST1BfVEVTVF9PQkpfQVRUUjoKKyAgICB7CisgICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gcHRyID0gY29yZVNlbGYtPnRlc3RPYmpBdHRyKCk7Cisg
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7
CisgICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0FUVFJfV0lUSF9FWENFUFRJ
T046CisgICAgeworICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgY29yZVNlbGYtPmF0
dHJXaXRoRXhjZXB0aW9uKCkpOworICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJP
UF9BVFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTjoKKyAgICB7CisgICAgICAgICBnX3ZhbHVlX3Nl
dF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CisgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0FUVFJfV0lUSF9HRVRURVJfRVhDRVBU
SU9OOgorICAgIHsKKyAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVTZWxmLT5h
dHRyV2l0aEdldHRlckV4Y2VwdGlvbigpKTsKKyAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIFBST1BfQ1VTVE9NX0FUVFI6CisgICAgeworICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2
YWx1ZSwgY29yZVNlbGYtPmN1c3RvbUF0dHIoKSk7CisgICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0
YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0T2Jq
Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdF9kb21fdGVzdF9vYmpfZmluYWxpemU7CisgICAgZ29iamVjdENsYXNzLT5zZXRf
cHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0
Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Byb3BlcnR5Owor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1JFQURfT05MWV9JTlRfQVRUUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19sb25nKCJy
ZWFkLW9ubHktaW50LWF0dHIiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9yZWFkLW9ubHktaW50
LWF0dHIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC1vbmx5ICBnbG9uZyBUZXN0
T2JqLnJlYWQtb25seS1pbnQtYXR0ciIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBl
eHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHX01JTkxPTkcsIC8qIG1pbiAqLworR19NQVhMT05H
LCAvKiBtYXggKi8KKzAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
CisgICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9SRUFEX09OTFlfU1RSSU5HX0FU
VFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3Ry
aW5nKCJyZWFkLW9ubHktc3RyaW5nLWF0dHIiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9yZWFk
LW9ubHktc3RyaW5nLWF0dHIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC1vbmx5
ICBnY2hhciogIFRlc3RPYmoucmVhZC1vbmx5LXN0cmluZy1hdHRyIiwgLyogbG9uZ2VyIC0gY291
bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAvKiBkZWZhdWx0
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworICAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfUkVBRF9PTkxZX1RFU1RfT0JKX0FUVFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJyZWFkLW9ubHktdGVzdC1vYmot
YXR0ciIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3JlYWQtb25seS10ZXN0LW9iai1hdHRyIiwg
Lyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtb25seSAgV2ViS2l0RE9NVGVzdE9iaiog
IFRlc3RPYmoucmVhZC1vbmx5LXRlc3Qtb2JqLWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3
aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX1RFU1Rf
T0JKLCAvKiBnb2JqZWN0IHR5cGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisgICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9JTlRfQVRUUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19sb25nKCJpbnQtYXR0ciIsIC8qIG5h
bWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRlc3Rfb2JqX2ludC1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InJlYWQtd3JpdGUgIGdsb25nIFRlc3RPYmouaW50LWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBk
byB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NSU5MT05HLCAvKiBtaW4g
Ki8KK0dfTUFYTE9ORywgLyogbWF4ICovCiswLCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUpKTsKKyAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1NUUklO
R19BVFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X3N0cmluZygic3RyaW5nLWF0dHIiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9zdHJpbmctYXR0
ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBnY2hhciogIFRlc3RP
Ymouc3RyaW5nLWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9j
IHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURX
UklURSkpOworICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFz
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfVEVTVF9PQkpfQVRU
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmpl
Y3QoInRlc3Qtb2JqLWF0dHIiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial90ZXN0LW9iai1hdHRy
IiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3JpdGUgIFdlYktpdERPTVRlc3RP
YmoqICBUZXN0T2JqLnRlc3Qtb2JqLWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNv
bWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCAv
KiBnb2JqZWN0IHR5cGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworICAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVRUUl9XSVRIX0VYQ0VQVElPTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19sb25nKCJhdHRyLXdpdGgt
ZXhjZXB0aW9uIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfYXR0ci13aXRoLWV4Y2VwdGlvbiIs
IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBnbG9uZyBUZXN0T2JqLmF0
dHItd2l0aC1leGNlcHRpb24iLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEg
ZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR19NSU5MT05HLCAvKiBtaW4gKi8KK0dfTUFYTE9ORywgLyog
bWF4ICovCiswLCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0FUVFJfV0lUSF9TRVRURVJfRVhDRVBU
SU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2xv
bmcoImF0dHItd2l0aC1zZXR0ZXItZXhjZXB0aW9uIiwgLyogbmFtZSAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpf
YXR0ci13aXRoLXNldHRlci1leGNlcHRpb24iLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cmVhZC13cml0ZSAgZ2xvbmcgVGVzdE9iai5hdHRyLXdpdGgtc2V0dGVyLWV4Y2VwdGlvbiIsIC8q
IGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
X01JTkxPTkcsIC8qIG1pbiAqLworR19NQVhMT05HLCAvKiBtYXggKi8KKzAsIC8qIGRlZmF1bHQg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworICAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfQVRUUl9XSVRIX0dFVFRFUl9FWENFUFRJT04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfbG9uZygiYXR0ci13aXRoLWdldHRlci1l
eGNlcHRpb24iLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9hdHRyLXdpdGgtZ2V0dGVyLWV4Y2Vw
dGlvbiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBnbG9uZyBUZXN0
T2JqLmF0dHItd2l0aC1nZXR0ZXItZXhjZXB0aW9uIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0
aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTUlOTE9ORywgLyogbWluICovCitH
X01BWExPTkcsIC8qIG1heCAqLworMCwgLyogZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
RFdSSVRFKSk7CisgICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENs
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9DVVNUT01fQVRU
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19sb25n
KCJjdXN0b20tYXR0ciIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX2N1c3RvbS1hdHRyIiwgLyog
c2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3JpdGUgIGdsb25nIFRlc3RPYmouY3VzdG9t
LWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhl
cmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR19NSU5MT05HLCAvKiBtaW4gKi8KK0dfTUFYTE9ORywgLyogbWF4ICovCiswLCAv
KiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworCisKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9pbml0KFdlYktpdERPTVRlc3RPYmoqIHJlcXVl
c3QpCit7Cit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWViNTczYWQ2OTA0NmIwMDRk
YjQ5NTkxMGNkYTE3N2QxZmRiZWI1NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC0wLDAgKzEsMTI2
IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdE9ial9o
CisjZGVmaW5lIFdlYktpdERPTVRlc3RPYmpfaAorCisjaW5jbHVkZSAid2Via2l0L3dlYmtpdGRv
bWRlZmluZXMuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXRkZWZpbmVzLmg+CisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTU9iamVjdC5oIgorCisK
K0dfQkVHSU5fREVDTFMKKyNkZWZpbmUgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKICAgICAgICAg
ICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9U
RVNUX09CSihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosIFdlYktpdERPTVRlc3RPYmopKQorI2RlZmluZSBX
RUJLSVRfRE9NX1RFU1RfT0JKX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwgV2ViS2l0RE9NVGVzdE9iakNs
YXNzKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKG9iaikgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9URVNUX09CSikpCisj
ZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9PQkpfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKKSkKKyNkZWZpbmUg
V0VCS0lUX0RPTV9URVNUX09CSl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosIFdlYktpdERPTVRlc3RPYmpD
bGFzcykpCisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdE9iaiB7CisgICAgV2ViS2l0RE9NT2JqZWN0
IHBhcmVudF9pbnN0YW5jZTsKK307CisKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdE9iakNsYXNzIHsK
KyAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJ
IEdUeXBlCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kIChXZWJLaXRET01UZXN0T2Jq
ICpzZWxmKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0
aG9kX3dpdGhfYXJncyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50X2FyZywgZ2No
YXIqICBzdHJfYXJnLCBXZWJLaXRET01UZXN0T2JqKiAgb2JqX2FyZyk7CisKK1dFQktJVF9BUEkg
Z2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfaW50X21ldGhvZCAoV2ViS2l0RE9NVGVzdE9iaiAq
c2VsZik7CisKK1dFQktJVF9BUEkgZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfaW50X21ldGhv
ZF93aXRoX2FyZ3MgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcsIGdjaGFy
KiAgc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiogIG9ial9hcmcpOworCitXRUJLSVRfQVBJIFdl
YktpdERPTVRlc3RPYmoqIAord2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kIChXZWJLaXRE
T01UZXN0T2JqICpzZWxmKTsKKworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKiAKK3dlYmtp
dF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93aXRoX2FyZ3MgKFdlYktpdERPTVRlc3RPYmogKnNl
bGYsIGdsb25nIGludF9hcmcsIGdjaGFyKiAgc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiogIG9i
al9hcmcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dp
dGhfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBHRXJyb3IgKiplcnJvcik7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25h
bF9hcmcgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIG9wdCk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxfYXJnX2Fu
ZF9vcHRpb25hbF9hcmcgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIG5vbl9vcHQsIGds
b25nIG9wdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rf
d2l0aF9ub25fb3B0aW9uYWxfYXJnX2FuZF90d29fb3B0aW9uYWxfYXJncyAoV2ViS2l0RE9NVGVz
dE9iaiAqc2VsZiwgZ2xvbmcgbm9uX29wdCwgZ2xvbmcgb3B0MSwgZ2xvbmcgb3B0Mik7CisKK1dF
QktJVF9BUEkgZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9pbnRfYXR0
ciAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZik7CisKK1dFQktJVF9BUEkgZ2NoYXIqIAord2Via2l0
X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X3N0cmluZ19hdHRyIChXZWJLaXRET01UZXN0T2Jq
ICpzZWxmKTsKKworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKiAKK3dlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3JlYWRfb25seV90ZXN0X29ial9hdHRyIChXZWJLaXRET01UZXN0T2JqICpzZWxm
KTsKKworV0VCS0lUX0FQSSBnbG9uZword2Via2l0X2RvbV90ZXN0X29ial9nZXRfaW50X2F0dHIg
KFdlYktpdERPTVRlc3RPYmogKnNlbGYpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X2ludF9hdHRyIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2YWx1
ZSk7CisKK1dFQktJVF9BUEkgZ2NoYXIqIAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfc3RyaW5n
X2F0dHIgKFdlYktpdERPTVRlc3RPYmogKnNlbGYpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9kb21fdGVzdF9vYmpfc2V0X3N0cmluZ19hdHRyIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBn
Y2hhciogIHZhbHVlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKiAKK3dlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3Rlc3Rfb2JqX2F0dHIgKFdlYktpdERPTVRlc3RPYmogKnNlbGYpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIg
KFdlYktpdERPTVRlc3RPYmogKnNlbGYsIFdlYktpdERPTVRlc3RPYmoqICB2YWx1ZSk7CisKK1dF
QktJVF9BUEkgZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0aF9leGNlcHRp
b24gKFdlYktpdERPTVRlc3RPYmogKnNlbGYpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X2F0dHJfd2l0aF9leGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmogKnNl
bGYsIGdsb25nIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnbG9uZword2Via2l0X2RvbV90ZXN0X29i
al9nZXRfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmogKnNlbGYp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F0dHJfd2l0aF9z
ZXR0ZXJfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyB2YWx1ZSk7CisK
K1dFQktJVF9BUEkgZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0aF9nZXR0
ZXJfZXhjZXB0aW9uIChXZWJLaXRET01UZXN0T2JqICpzZWxmKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbiAoV2Vi
S2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgdmFsdWUpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYgLyogV2ViS2l0RE9NVGVzdE9ial9oICovCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmpQcml2YXRlLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmpQcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzhjZDg3ZmIwYzRmNDkzM2E3ODg0NjdmYWNiZjk5ZGUxZDc4MzJmMwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9ialByaXZhdGUuaApAQCAtMCwwICsxLDM5IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpZm5kZWYgV0VCX0tJVF9ET01fVEVTVF9PQkpfUFJJVkFURV9ICisjZGVmaW5l
IFdFQl9LSVRfRE9NX1RFU1RfT0JKX1BSSVZBVEVfSAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+CisjaW5jbHVkZSAiVGVzdE9i
ai5oIgorbmFtZXNwYWNlIFdlYktpdCB7CisgICAgV2ViS2l0RE9NVGVzdE9iaiAqCisgICAgd3Jh
cFRlc3RPYmooV2ViQ29yZTo6VGVzdE9iaiAqY29yZU9iamVjdCk7CisKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqICoKKyAgICBjb3JlKFdlYktpdERPTVRlc3RPYmogKnJlcXVlc3QpOworCisgICAgZ3Bv
aW50ZXIKKyAgICBraXQoV2ViQ29yZTo6VGVzdE9iaiogbm9kZSk7CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLyogV0VCX0tJVF9ET01fVEVTVF9PQkpfUFJJVkFURV9IICovCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhiZTgwN2IwZGNiN2E0YzVkZmM5MDBmM2Y1MzdlMDhlOTA5YzZiODcKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworI2lmIFdFQktJVF9WRVJTSU9O
X01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVTVAorCitAY2xhc3MgRE9NVGVzdE9i
ajsKK0BjbGFzcyBOU1N0cmluZzsKKworQGludGVyZmFjZSBET01UZXN0T2JqIDogRE9NT2JqZWN0
CistIChpbnQpcmVhZE9ubHlJbnRBdHRyOworLSAoTlNTdHJpbmcgKilyZWFkT25seVN0cmluZ0F0
dHI7CistIChET01UZXN0T2JqICopcmVhZE9ubHlUZXN0T2JqQXR0cjsKKy0gKGludClpbnRBdHRy
OworLSAodm9pZClzZXRJbnRBdHRyOihpbnQpbmV3SW50QXR0cjsKKy0gKE5TU3RyaW5nICopc3Ry
aW5nQXR0cjsKKy0gKHZvaWQpc2V0U3RyaW5nQXR0cjooTlNTdHJpbmcgKiluZXdTdHJpbmdBdHRy
OworLSAoRE9NVGVzdE9iaiAqKXRlc3RPYmpBdHRyOworLSAodm9pZClzZXRUZXN0T2JqQXR0cjoo
RE9NVGVzdE9iaiAqKW5ld1Rlc3RPYmpBdHRyOworLSAoaW50KWF0dHJXaXRoRXhjZXB0aW9uOwor
LSAodm9pZClzZXRBdHRyV2l0aEV4Y2VwdGlvbjooaW50KW5ld0F0dHJXaXRoRXhjZXB0aW9uOwor
LSAoaW50KWF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOworLSAodm9pZClzZXRBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbjooaW50KW5ld0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOworLSAoaW50KWF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uOworLSAodm9pZClzZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbjoo
aW50KW5ld0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uOworLSAoaW50KWN1c3RvbUF0dHI7CistICh2
b2lkKXNldEN1c3RvbUF0dHI6KGludCluZXdDdXN0b21BdHRyOworLSAodm9pZCl2b2lkTWV0aG9k
OworLSAodm9pZCl2b2lkTWV0aG9kV2l0aEFyZ3M6KGludClpbnRBcmcgc3RyQXJnOihOU1N0cmlu
ZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CistIChpbnQpaW50TWV0aG9k
OworLSAoaW50KWludE1ldGhvZFdpdGhBcmdzOihpbnQpaW50QXJnIHN0ckFyZzooTlNTdHJpbmcg
KilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOworLSAoRE9NVGVzdE9iaiAqKW9i
ak1ldGhvZDsKKy0gKERPTVRlc3RPYmogKilvYmpNZXRob2RXaXRoQXJnczooaW50KWludEFyZyBz
dHJBcmc6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKKy0g
KHZvaWQpbWV0aG9kV2l0aEV4Y2VwdGlvbjsKKy0gKHZvaWQpY3VzdG9tTWV0aG9kOworLSAodm9p
ZCljdXN0b21NZXRob2RXaXRoQXJnczooaW50KWludEFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3Ry
QXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKKy0gKHZvaWQpbWV0aG9kV2l0aE9wdGlv
bmFsQXJnOihpbnQpb3B0OworLSAodm9pZCltZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZzooaW50KW5vbk9wdCBvcHQ6KGludClvcHQ7CistICh2b2lkKW1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnczooaW50KW5vbk9wdCBvcHQxOihpbnQpb3B0MSBv
cHQyOihpbnQpb3B0MjsKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdhOWZmYWE0NTNjNGZh
MTBjNTdkMmZkMDI5MjhmNGJjZTBkYWU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMCwwICsxLDIzNiBAQAor
LyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
RE9NSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NVGVzdE9iai5oIgorCisjaW1wb3J0ICJET01C
bG9iSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1J1bGVJbnRlcm5hbC5oIgorI2ltcG9ydCAi
RE9NQ1NTVmFsdWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRXZlbnRJbnRlcm5hbC5oIgorI2lt
cG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwu
aCIKKyNpbXBvcnQgIkRPTVRlc3RPYmpJbnRlcm5hbC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFu
ZGxlcnMuaCIKKyNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlRlc3RPYmouaCIKKyNpbXBvcnQg
IlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9ydCAi
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVm
aW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXN0T2JqKj4oX2ludGVybmFsKQor
CitAaW1wbGVtZW50YXRpb24gRE9NVGVzdE9iagorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBp
ZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RPYmog
Y2xhc3NdLCBzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9pbnRlcm5hbCkKKyAg
ICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQp
ZmluYWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOwor
ICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKGludClyZWFkT25seUludEF0dHIKK3sKKyAg
ICByZXR1cm4gSU1QTC0+cmVhZE9ubHlJbnRBdHRyKCk7Cit9CisKKy0gKE5TU3RyaW5nICopcmVh
ZE9ubHlTdHJpbmdBdHRyCit7CisgICAgcmV0dXJuIElNUEwtPnJlYWRPbmx5U3RyaW5nQXR0cigp
OworfQorCistIChET01UZXN0T2JqICopcmVhZE9ubHlUZXN0T2JqQXR0cgoreworICAgIHJldHVy
biBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7Cit9CisKKy0g
KGludClpbnRBdHRyCit7CisgICAgcmV0dXJuIElNUEwtPmludEF0dHIoKTsKK30KKworLSAodm9p
ZClzZXRJbnRBdHRyOihpbnQpbmV3SW50QXR0cgoreworICAgIElNUEwtPnNldEludEF0dHIobmV3
SW50QXR0cik7Cit9CisKKy0gKE5TU3RyaW5nICopc3RyaW5nQXR0cgoreworICAgIHJldHVybiBJ
TVBMLT5zdHJpbmdBdHRyKCk7Cit9CisKKy0gKHZvaWQpc2V0U3RyaW5nQXR0cjooTlNTdHJpbmcg
KiluZXdTdHJpbmdBdHRyCit7CisgICAgSU1QTC0+c2V0U3RyaW5nQXR0cihuZXdTdHJpbmdBdHRy
KTsKK30KKworLSAoRE9NVGVzdE9iaiAqKXRlc3RPYmpBdHRyCit7CisgICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT50ZXN0T2JqQXR0cigpKSk7Cit9CisKKy0gKHZvaWQpc2V0VGVzdE9i
akF0dHI6KERPTVRlc3RPYmogKiluZXdUZXN0T2JqQXR0cgoreworICAgIEFTU0VSVChuZXdUZXN0
T2JqQXR0cik7CisKKyAgICBJTVBMLT5zZXRUZXN0T2JqQXR0cihjb3JlKG5ld1Rlc3RPYmpBdHRy
KSk7Cit9CisKKy0gKGludClhdHRyV2l0aEV4Y2VwdGlvbgoreworICAgIHJldHVybiBJTVBMLT5h
dHRyV2l0aEV4Y2VwdGlvbigpOworfQorCistICh2b2lkKXNldEF0dHJXaXRoRXhjZXB0aW9uOihp
bnQpbmV3QXR0cldpdGhFeGNlcHRpb24KK3sKKyAgICBJTVBMLT5zZXRBdHRyV2l0aEV4Y2VwdGlv
bihuZXdBdHRyV2l0aEV4Y2VwdGlvbik7Cit9CisKKy0gKGludClhdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbgoreworICAgIHJldHVybiBJTVBMLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpOworfQor
CistICh2b2lkKXNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uOihpbnQpbmV3QXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24KK3sKKyAgICBJTVBMLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuZXdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbik7Cit9CisKKy0gKGludClhdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbgoreworICAgIHJldHVybiBJTVBMLT5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbigpOworfQor
CistICh2b2lkKXNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uOihpbnQpbmV3QXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24KK3sKKyAgICBJTVBMLT5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihuZXdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbik7Cit9CisKKy0gKGludCljdXN0b21BdHRyCit7CisgICAg
cmV0dXJuIElNUEwtPmN1c3RvbUF0dHIoKTsKK30KKworLSAodm9pZClzZXRDdXN0b21BdHRyOihp
bnQpbmV3Q3VzdG9tQXR0cgoreworICAgIElNUEwtPnNldEN1c3RvbUF0dHIobmV3Q3VzdG9tQXR0
cik7Cit9CisKKy0gKHZvaWQpdm9pZE1ldGhvZAoreworICAgIElNUEwtPnZvaWRNZXRob2QoKTsK
K30KKworLSAodm9pZCl2b2lkTWV0aG9kV2l0aEFyZ3M6KGludClpbnRBcmcgc3RyQXJnOihOU1N0
cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKK3sKKyAgICBJTVBMLT52
b2lkTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7Cit9CisKKy0g
KGludClpbnRNZXRob2QKK3sKKyAgICByZXR1cm4gSU1QTC0+aW50TWV0aG9kKCk7Cit9CisKKy0g
KGludClpbnRNZXRob2RXaXRoQXJnczooaW50KWludEFyZyBzdHJBcmc6KE5TU3RyaW5nICopc3Ry
QXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZworeworICAgIHJldHVybiBJTVBMLT5pbnRN
ZXRob2RXaXRoQXJncyhpbnRBcmcsIHN0ckFyZywgY29yZShvYmpBcmcpKTsKK30KKworLSAoRE9N
VGVzdE9iaiAqKW9iak1ldGhvZAoreworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
b2JqTWV0aG9kKCkpKTsKK30KKworLSAoRE9NVGVzdE9iaiAqKW9iak1ldGhvZFdpdGhBcmdzOihp
bnQpaW50QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICop
b2JqQXJnCit7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5vYmpNZXRob2RXaXRo
QXJncyhpbnRBcmcsIHN0ckFyZywgY29yZShvYmpBcmcpKSkpOworfQorCistICh2b2lkKW1ldGhv
ZFdpdGhFeGNlcHRpb24KK3sKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBJTVBMLT5tZXRob2RXaXRoRXhjZXB0aW9uKGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9N
RXJyb3IoZWMpOworfQorCistICh2b2lkKWN1c3RvbU1ldGhvZAoreworICAgIElNUEwtPmN1c3Rv
bU1ldGhvZCgpOworfQorCistICh2b2lkKWN1c3RvbU1ldGhvZFdpdGhBcmdzOihpbnQpaW50QXJn
IHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCit7
CisgICAgSU1QTC0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIGNvcmUob2Jq
QXJnKSk7Cit9CisKKy0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXJnOihpbnQpb3B0Cit7Cisg
ICAgSU1QTC0+bWV0aG9kV2l0aE9wdGlvbmFsQXJnKG9wdCk7Cit9CisKKy0gKHZvaWQpbWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmc6KGludClub25PcHQgb3B0OihpbnQpb3B0
Cit7CisgICAgSU1QTC0+bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcobm9u
T3B0LCBvcHQpOworfQorCistICh2b2lkKW1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09w
dGlvbmFsQXJnczooaW50KW5vbk9wdCBvcHQxOihpbnQpb3B0MSBvcHQyOihpbnQpb3B0Mgorewor
ICAgIElNUEwtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhub25P
cHQsIG9wdDEsIG9wdDIpOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RPYmoqIGNvcmUoRE9N
VGVzdE9iaiAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6VGVzdE9iaio+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQorCitET01U
ZXN0T2JqICpraXQoV2ViQ29yZTo6VGVzdE9iaiogdmFsdWUpCit7CisgICAgeyBET01fQVNTRVJU
X01BSU5fVEhSRUFEKCk7IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7IH07
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoRE9NVGVzdE9i
aiAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4gW1t3cmFw
cGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERPTVRlc3RPYmogKndyYXBwZXIgPSBbW0RP
TVRlc3RPYmogYWxsb2NdIF9pbml0XTsKKyAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVy
cHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4odmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsK
KyAgICBhZGRET01XcmFwcGVyKHdyYXBwZXIsIHZhbHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIg
YXV0b3JlbGVhc2VdOworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0T2JqSW50ZXJuYWwuaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iakludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI0ZWE4NDdkODA3ZmE4
MWM4NzE5ODM4YzE4NmU3ODlkNTFhYmExOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iakludGVybmFsLmgKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVGVz
dE9iai5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJ
T05fTEFURVNUCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBUZXN0T2JqOworfQor
CitXZWJDb3JlOjpUZXN0T2JqKiBjb3JlKERPTVRlc3RPYmogKik7CitET01UZXN0T2JqICpraXQo
V2ViQ29yZTo6VGVzdE9iaiopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBiMDEyNGE5MmQ2MjY4M2IyYmY1
NmM0YmY5MGUzZmM5YWE5ODAxNTgwLi4xMmI1YmFjYWE2NGI2Y2JlZTU4NmEzZDEyODliNDQxMmFm
M2NiZDVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIwMTAtMDQtMjYgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgT2JqQyBhbmQgR09iamVjdCB0byBydW4tYmluZGluZ3MtdGVzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxNjgKKworICAg
ICAgICAqIFNjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzOgorCisyMDEwLTA0LTI2ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCiAKICAgICAgICAgQWRkIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZm9yIEpTQyBiaW5kaW5n
cyBnZW5lcmF0b3IKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdz
LXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHMKaW5kZXggZjhk
OTc4Mzc3NDUzZDY5OTY2YTA2MDM2Yzg3M2U3MjM1ZmUzMzIwMC4uYWUxNzRjZjVlOWQzMzcxM2Rj
NGNiODkzNmI5YmRmYmEwMjNhNTAwNiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9y
dW4tYmluZGluZ3MtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3Mt
dGVzdHMKQEAgLTExNCw3ICsxMTQsOCBAQCBkZWYgbWFpbihhcmd2KToKICAgICBnZW5lcmF0b3Jz
ID0gWwogICAgICAgICAnSlMnLAogICAgICAgICAnVjgnLAotICAgICAgICAjIEZJWE1FOiBBZGQg
T2JqQworICAgICAgICAnT2JqQycsCisgICAgICAgICdHT2JqZWN0JywKICAgICBdCiAKICAgICBm
b3IgZ2VuZXJhdG9yIGluIGdlbmVyYXRvcnM6Cg==
</data>
<flag name="review"
          id="38334"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>