<?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>41226</bug_id>
          
          <creation_ts>2010-06-25 14:21:59 -0700</creation_ts>
          <short_desc>Flesh out injected bundle code for WebKitTestRunner</short_desc>
          <delta_ts>2010-06-25 15:35:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243194</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-25 14:21:59 -0700</bug_when>
    <thetext>Flesh out injected bundle code for WebKitTestRunner and add a basic LayoutTestController implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243196</commentid>
    <comment_count>1</comment_count>
      <attachid>59795</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-25 14:25:00 -0700</bug_when>
    <thetext>Created attachment 59795
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243200</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 14:29:44 -0700</bug_when>
    <thetext>Attachment 59795 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
Last 3072 characters of output:
rrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:54:  InjectedBundlePage::_didStartProvisionalLoadForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:59:  InjectedBundlePage::_didReceiveServerRedirectForProvisionalLoadForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:64:  InjectedBundlePage::_didFailProvisionalLoadWithErrorForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:69:  InjectedBundlePage::_didCommitLoadForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:74:  InjectedBundlePage::_didFinishLoadForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:79:  InjectedBundlePage::_didFailLoadWithErrorForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:84:  InjectedBundlePage::_didReceiveTitleForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:89:  InjectedBundlePage::_didClearWindowForFrame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/LayoutTestController.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:46:  InjectedBundle::_didCreatePage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:51:  InjectedBundle::_willDestroyPage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKitTools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:56:  InjectedBundle::_didRecieveMessage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 27 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243230</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-25 15:35:26 -0700</bug_when>
    <thetext>Landed in r61906.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59795</attachid>
            <date>2010-06-25 14:25:00 -0700</date>
            <delta_ts>2010-06-25 14:32:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>33128</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYxOTAyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTAtMDYtMjUgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MjI2CisgICAgICAgIEZsZXNoIG91dCBpbmplY3RlZCBidW5kbGUgY29kZSBmb3IgV2ViS2l0VGVz
dFJ1bm5lciBhbmQgYWRkIGJhc2ljIExheW91dFRlc3RDb250cm9sbGVyLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6Ol9kaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6Ol93
aWxsRGVzdHJveVBhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6X2RpZFJlY2ll
dmVNZXNzYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjp3aWxsRGVzdHJveVBhZ2UpOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZTo6ZGlkUmVjaWV2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDogQWRkZWQuCisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpsYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwOgorICAgICAg
ICAoV0tCdW5kbGVJbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZSk6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6fkluamVjdGVkQnVuZGxlUGFnZSk6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6X2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6Ol9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6X2RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6X2RpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6X2RpZEZpbmlzaExvYWRGb3JGcmFtZSk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6X2RpZEZhaWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6Ol9kaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6X2RpZENsZWFy
V2luZG93Rm9yRnJhbWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSk6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDogQWRkZWQu
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cGFnZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAg
ICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6On5MYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChXVFI6OmR1bXBBc1RleHRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OmxheW91
dFRlc3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdCk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpnZXRKU0NsYXNzKToKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6TGF5
b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBBc1RleHQpOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0RHVtcEFzVGV4dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTAtMDYtMjUg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBh
Z2UuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZVBhZ2UuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK0luamVjdGVkQnVuZGxlJiBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGUmIHNoYXJl
ZCA9ICpuZXcgSW5qZWN0ZWRCdW5kbGU7CisgICAgcmV0dXJuIHNoYXJlZDsKK30KKworSW5qZWN0
ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKCkKKyAgICA6IG1fYnVuZGxlKDApCisgICAgLCBtX2xh
eW91dFRlc3RDb250cm9sbGVyKExheW91dFRlc3RDb250cm9sbGVyOjpjcmVhdGUoc3RkOjpzdHJp
bmcoIiIpKSkKK3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6X2RpZENyZWF0ZVBhZ2UoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZSo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+ZGlkQ3JlYXRlUGFnZShwYWdlKTsKK30KKwordm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6X3dpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PElu
amVjdGVkQnVuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT53aWxsRGVzdHJv
eVBhZ2UocGFnZSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6Ol9kaWRSZWNpZXZlTWVzc2Fn
ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGUqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2lldmVNZXNzYWdlKG1lc3NhZ2UpOworfQorCit2
b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSkKK3sKKyAg
ICBtX2J1bmRsZSA9IGJ1bmRsZTsKKworICAgIFdLQnVuZGxlQ2xpZW50IGNsaWVudCA9IHsKKyAg
ICAgICAgMCwKKyAgICAgICAgdGhpcywKKyAgICAgICAgX2RpZENyZWF0ZVBhZ2UsCisgICAgICAg
IF93aWxsRGVzdHJveVBhZ2UsCisgICAgICAgIF9kaWRSZWNpZXZlTWVzc2FnZQorICAgIH07Cisg
ICAgV0tCdW5kbGVTZXRDbGllbnQobV9idW5kbGUsICZjbGllbnQpOworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQoreworICAgIG1f
cGFnZXMuYWRkKHBhZ2UsIG5ldyBJbmplY3RlZEJ1bmRsZVBhZ2UocGFnZSkpOworfQorCit2b2lk
IEluamVjdGVkQnVuZGxlOjp3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCit7
CisgICAgZGVsZXRlIG1fcGFnZXMudGFrZShwYWdlKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRs
ZTo6ZGlkUmVjaWV2ZU1lc3NhZ2UoV0tTdHJpbmdSZWYgbWVzc2FnZSkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RSCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBJbmplY3RlZEJ1bmRsZV9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlX2gKKworI2luY2x1ZGUg
IkxheW91dFRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVQYWdlOworCitjbGFzcyBJbmplY3RlZEJ1bmRsZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIEluamVjdGVkQnVuZGxlJiBzaGFyZWQoKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhl
IEluamVjdGVkQnVuZGxlLgorICAgIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZik7CisKKyAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIoKSB7IHJldHVybiBt
X2xheW91dFRlc3RDb250cm9sbGVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgSW5qZWN0ZWRC
dW5kbGUoKTsKKyAgICB+SW5qZWN0ZWRCdW5kbGUoKTsKKworICAgIHN0YXRpYyB2b2lkIF9kaWRD
cmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIF93aWxsRGVzdHJveVBhZ2UoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CisgICAgc3RhdGljIHZvaWQgX2RpZFJlY2lldmVNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1
bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisKKyAg
ICB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOworICAgIHZvaWQgd2ls
bERlc3Ryb3lQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKKyAgICB2b2lkIGRpZFJlY2lldmVN
ZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2UpOworCisgICAgV0tCdW5kbGVSZWYgbV9idW5kbGU7
CisgICAgSGFzaE1hcDxXS0J1bmRsZVBhZ2VSZWYsIEluamVjdGVkQnVuZGxlUGFnZSo+IG1fcGFn
ZXM7CisKKyAgICBSZWZQdHI8TGF5b3V0VGVzdENvbnRyb2xsZXI+IG1fbGF5b3V0VGVzdENvbnRy
b2xsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEluamVjdGVkQnVu
ZGxlX2gKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVNYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAJKHJldmlzaW9u
IDYxNzgzKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU1haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4NCArMjMsMTAgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSA8V2Vi
S2l0Mi9XS0J1bmRsZS5oPgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZUluaXRpYWxpemUuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxl
UGFnZS5oPgotI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgotCi1zdGF0aWMgV0tCdW5kbGVS
ZWYgZ2xvYmFsQnVuZGxlOwotCi0vLyBXS0J1bmRsZVBhZ2VDbGllbnQKLQotdm9pZCBfZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKLXsKLX0KLQotdm9pZCBfZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCi17Ci19Ci0KLXZvaWQgX2RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKLXsKLX0KLQotdm9pZCBfZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKQotewotfQotCi12b2lkIF9kaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Ci17Ci19Ci0KLXZvaWQgX2RpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Ci17Ci19Ci0KLXZvaWQgX2RpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKLXsKLX0KLQotdm9pZCBfZGlkQ2xlYXJXaW5kb3coV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIHdpbmRvdywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKLXsKLX0KLQotLy8gV0tCdW5k
bGVDbGllbnQKLQotdm9pZCBfZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFdLQnVuZGxl
UGFnZUNsaWVudCBjbGllbnQgPSB7Ci0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIF9k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAotICAgICAgICBfZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCi0gICAgICAgIF9kaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUsCi0gICAgICAgIF9kaWRDb21taXRMb2FkRm9y
RnJhbWUsCi0gICAgICAgIF9kaWRGaW5pc2hMb2FkRm9yRnJhbWUsCi0gICAgICAgIF9kaWRGYWls
TG9hZFdpdGhFcnJvckZvckZyYW1lLAotICAgICAgICBfZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUs
Ci0gICAgICAgIF9kaWRDbGVhcldpbmRvdwotICAgIH07Ci0gICAgV0tCdW5kbGVQYWdlU2V0Q2xp
ZW50KHBhZ2UsICZjbGllbnQpOwotfQotCi12b2lkIF93aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
LXsKLX0KLQotdm9pZCBfZGlkUmVjaWV2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0
cmluZ1JlZiBtZXNzYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotfQogCiBleHRlcm4g
IkMiIHZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSkKIHsKLSAgICBn
bG9iYWxCdW5kbGUgPSBidW5kbGU7Ci0KLSAgICBXS0J1bmRsZUNsaWVudCBjbGllbnQgPSB7Ci0g
ICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIF9kaWRDcmVhdGVQYWdlLAotICAgICAgICBf
d2lsbERlc3Ryb3lQYWdlLAotICAgICAgICBfZGlkUmVjaWV2ZU1lc3NhZ2UKLSAgICB9OwotICAg
IFdLQnVuZGxlU2V0Q2xpZW50KGJ1bmRsZSwgJmNsaWVudCk7CisgICAgV1RSOjpJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuaW5pdGlhbGl6ZShidW5kbGUpOwogfQpJbmRleDogV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVQYWdlLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorCituYW1lc3BhY2Ug
V1RSIHsKKworSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKKyAgICBXS0J1bmRsZVBhZ2VDbGll
bnQgY2xpZW50ID0geworICAgICAgICAwLAorICAgICAgICB0aGlzLAorICAgICAgICBfZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKKyAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICBfZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lLAorICAgICAgICBfZGlkQ29tbWl0TG9hZEZvckZyYW1l
LAorICAgICAgICBfZGlkRmluaXNoTG9hZEZvckZyYW1lLAorICAgICAgICBfZGlkRmFpbExvYWRX
aXRoRXJyb3JGb3JGcmFtZSwKKyAgICAgICAgX2RpZFJlY2VpdmVUaXRsZUZvckZyYW1lLAorICAg
ICAgICBfZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZQorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0
Q2xpZW50KG1fcGFnZSwgJmNsaWVudCk7Cit9CisKK0luamVjdGVkQnVuZGxlUGFnZTo6fkluamVj
dGVkQnVuZGxlUGFnZSgpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpfZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoZnJhbWUpOworfQorCit2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6X2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFn
ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoZnJhbWUpOworfQorCit2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6X2RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JG
b3JGcmFtZShmcmFtZSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpfZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVu
ZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKGZyYW1lKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6Ol9kaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5k
bGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hMb2FkRm9y
RnJhbWUoZnJhbWUpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6X2RpZEZhaWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8SW5qZWN0
ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGYWlsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKGZyYW1lKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
Ol9kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgdGl0bGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Cit7CisgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh0aXRsZSwgZnJhbWUpOwor
fQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6X2RpZENsZWFyV2luZG93Rm9yRnJhbWUoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIHdpbmRvdywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBz
dGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRpZENsZWFyV2luZG93Rm9yRnJhbWUoZnJhbWUsIGN0eCwgd2luZG93KTsKK30KKwor
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKK3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSkKK3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENvbW1pdExvYWRGb3JGcmFt
ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCit7Cit9CisK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1N0cmluZ1JlZiB0aXRsZSwgV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSkKK3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENsZWFyV2luZG93
Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgd2luZG93KQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+bWFrZVdpbmRvd09i
amVjdChjdHgsIHdpbmRvdywgJmV4Y2VwdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpJ
bmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SW5qZWN0ZWRCdW5kbGVQYWdlX2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVQYWdlX2gKKworI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitjbGFz
cyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworcHVibGljOgorICAgIEluamVjdGVkQnVuZGxlUGFnZShX
S0J1bmRsZVBhZ2VSZWYpOworICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKKworICAgIFdLQnVu
ZGxlUGFnZVJlZiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisKK3ByaXZhdGU6Cisg
ICAgc3RhdGljIHZvaWQgX2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgX2RpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAgc3RhdGlj
IHZvaWQgX2RpZENvbW1pdExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgX2RpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQg
X2RpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworICAgIHN0YXRpYyB2
b2lkIF9kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgdGl0bGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIF9kaWRDbGVhcldpbmRvd0ZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiB3aW5kb3csIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworCisgICAgdm9pZCBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOworICAg
IHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CisgICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CisgICAgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CisgICAgdm9pZCBkaWRG
YWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOworICAgIHZv
aWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tTdHJpbmdSZWYgdGl0bGUsIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUpOworICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZShXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB3aW5kb3cpOworCisg
ICAgV0tCdW5kbGVQYWdlUmVmIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCisj
ZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVQYWdlX2gKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiTGF5b3V0VGVzdENv
bnRyb2xsZXIuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisK
K25hbWVzcGFjZSBXVFIgeworCitQYXNzUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Y3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJM
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIodGVzdFBh
dGhPclVSTCkpOworfQorCitMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCisgICAgOiBtX2R1bXBBc1RleHQo
ZmFsc2UpCisgICAgLCBtX3Rlc3RQYXRoT3JVUkwodGVzdFBhdGhPclVSTCkKK3sKK30KKworTGF5
b3V0VGVzdENvbnRyb2xsZXI6On5MYXlvdXRUZXN0Q29udHJvbGxlcigpCit7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIGR1bXBBc1RleHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2Fz
dDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
CisgICAgY29udHJvbGxlci0+c2V0RHVtcEFzVGV4dCh0cnVlKTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKKy8vIE9iamVjdCBGaW5hbGl6YXRpb24KKwor
c3RhdGljIHZvaWQgbGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJl
ZiBvYmplY3QpCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3Qp
KTsKKyAgICBjb250cm9sbGVyLT5kZXJlZigpOworfQorCisvLyBPYmplY3QgQ3JlYXRpb24KKwor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxheW91dFRlc3RDb250b2xsZXJTdHIo
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxl
ciIpKTsKKyAgICByZWYoKTsKKworICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYgPSBnZXRKU0NsYXNz
KCk7CisgICAgSlNWYWx1ZVJlZiBsYXlvdXRUZXN0Q29udG9sbGVyT2JqZWN0ID0gSlNPYmplY3RN
YWtlKGNvbnRleHQsIGNsYXNzUmVmLCB0aGlzKTsKKyAgICBKU0NsYXNzUmVsZWFzZShjbGFzc1Jl
Zik7CisKKyAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd09iamVjdCwgbGF5
b3V0VGVzdENvbnRvbGxlclN0ci5nZXQoKSwgbGF5b3V0VGVzdENvbnRvbGxlck9iamVjdCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSwgZXhjZXB0aW9uKTsKK30KKworSlNDbGFzc1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z2V0
SlNDbGFzcygpCit7CisgICAgc3RhdGljIEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9u
cyA9IExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKTsKKyAgICBzdGF0aWMg
SlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0geworICAgICAgICAwLCBrSlNDbGFz
c0F0dHJpYnV0ZU5vbmUsICJMYXlvdXRUZXN0Q29udHJvbGxlciIsIDAsIDAsIHN0YXRpY0Z1bmN0
aW9ucywKKyAgICAgICAgMCwgbGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZSwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMAorICAgIH07CisKKyAgICByZXR1cm4gSlNDbGFzc0NyZWF0
ZSgmY2xhc3NEZWZpbml0aW9uKTsKK30KKworSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCit7CisgICAgc3RhdGljIEpTU3RhdGljRnVuY3Rp
b24gc3RhdGljRnVuY3Rpb25zW10gPSB7CisgICAgICAgIHsgImR1bXBBc1RleHQiLCBkdW1wQXNU
ZXh0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAwLCAwLCAwIH0KKyAgICB9OworCisgICAg
cmV0dXJuIHN0YXRpY0Z1bmN0aW9uczsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBX
ZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBM
YXlvdXRUZXN0Q29udHJvbGxlcl9oCisjZGVmaW5lIExheW91dFRlc3RDb250cm9sbGVyX2gKKwor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHN0
cmluZz4KKworbmFtZXNwYWNlIFdUUiB7CisKK2NsYXNzIExheW91dFRlc3RDb250cm9sbGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8TGF5b3V0VGVzdENvbnRyb2xsZXI+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gY3JlYXRlKGNvbnN0IHN0ZDo6
c3RyaW5nJiB0ZXN0UGF0aE9yVVJMKTsKKyAgICB+TGF5b3V0VGVzdENvbnRyb2xsZXIoKTsKKwor
ICAgIHZvaWQgbWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworCisgICAgYm9vbCBkdW1w
QXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQXNUZXh0OyB9CisgICAgdm9pZCBzZXREdW1w
QXNUZXh0KGJvb2wgZHVtcEFzVGV4dCkgeyBtX2R1bXBBc1RleHQgPSBkdW1wQXNUZXh0OyB9CisK
K3ByaXZhdGU6CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRl
c3RQYXRoT3JVUkwpOworCisgICAgYm9vbCBtX2R1bXBBc1RleHQ7CisKKyAgICBzdGQ6OnN0cmlu
ZyBtX3Rlc3RQYXRoT3JVUkw7CisgICAgCisgICAgc3RhdGljIEpTQ2xhc3NSZWYgZ2V0SlNDbGFz
cygpOworICAgIHN0YXRpYyBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZXMoKTsKKyAgICBzdGF0
aWMgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb25zKCk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXVFIKKworI2VuZGlmIC8vIExheW91dFRlc3RDb250cm9sbGVyX2gKSW5kZXg6IFdlYktp
dFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2MTc4MykK
KysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw5IEBACiAJCUJD
NzkzNEFDMTE5MDY1OEMwMDVFQThFMiAvKiBXZWJLaXQyLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzkzNEFCMTE5MDY1OEMwMDVF
QThFMiAvKiBXZWJLaXQyLmZyYW1ld29yayAqLzsgfTsKIAkJQkM3OTM0RTgxMTkwNjg0NjAwNUVB
OEUyIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzkzNEU3MTE5MDY4NDYwMDVFQThFMiAvKiBQbGF0Zm9ybVdl
YlZpZXdNYWMubW0gKi87IH07CiAJCUJDOEM3OTVDMTFEMjc4NUQwMDQ1MzVBMSAvKiBUZXN0Q29u
dHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOEM3OTVCMTFEMjc4NUQwMDQ1MzVBMSAvKiBUZXN0Q29udHJvbGxlck1hYy5tbSAqLzsg
fTsKKwkJQkNDOTk3QTQxMUQzQzhGNjAwMTdCQ0EyIC8qIEluamVjdGVkQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzk5N0EwMTFEM0M4
RjYwMDE3QkNBMiAvKiBJbmplY3RlZEJ1bmRsZS5jcHAgKi87IH07CisJCUJDQzk5N0E1MTFEM0M4
RjYwMDE3QkNBMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDOTk3QTIxMUQzQzhGNjAwMTdCQ0EyIC8qIElu
amVjdGVkQnVuZGxlUGFnZS5jcHAgKi87IH07CisJCUJDQzk5ODE4MTFEM0Y1MUUwMDE3QkNBMiAv
KiBMYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0M5OTgxNzExRDNGNTFFMDAxN0JDQTIgLyogTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwICovOyB9OwogCQlCQ0Q3RDJGODExOTIxMjc4MDA2REI3RUUgLyogVGVzdElu
dm9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNEN0QyRjcxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmNwcCAqLzsgfTsK
IAkJQkNEQTJBQkYxMTkwQjUxQTAwQzNCQzQ3IC8qIFRlc3RJbnZvY2F0aW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQTJBQkUxMTkwQjUx
QTAwQzNCQzQ3IC8qIFRlc3RJbnZvY2F0aW9uTWFjLm1tICovOyB9OwogCQlCQ0RBMkI5QTExOTEw
NTFGMDBDM0JDNDcgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQTJCOTkxMTkxMDUxRjAwQzNCQzQ3
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKQEAgLTYyLDYgKzY1LDEyIEBACiAJ
CUJDNzkzNEREMTE5MDY2RUMwMDVFQThFMiAvKiBQbGF0Zm9ybVdlYlZpZXcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1XZWJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDNzkzNEU3MTE5MDY4NDYwMDVFQThFMiAvKiBQbGF0Zm9ybVdlYlZp
ZXdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9y
bVdlYlZpZXdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM3OTVCMTFE
Mjc4NUQwMDQ1MzVBMSAvKiBUZXN0Q29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0M5OTdBMDExRDNDOEY2MDAxN0JDQTIgLyogSW5qZWN0ZWRCdW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0M5OTdBMTExRDNDOEY2MDAx
N0JDQTIgLyogSW5qZWN0ZWRCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5qZWN0ZWRCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDOTk3
QTIxMUQzQzhGNjAwMTdCQ0EyIC8qIEluamVjdGVkQnVuZGxlUGFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQ0M5OTdBMzExRDNDOEY2MDAxN0JDQTIgLyogSW5qZWN0
ZWRCdW5kbGVQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0M5OTgxNjExRDNG
NTFFMDAxN0JDQTIgLyogTGF5b3V0VGVzdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGF5b3V0VGVzdENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNDOTk4MTcxMUQzRjUxRTAwMTdCQ0EyIC8qIExheW91dFRlc3RDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFRlc3RD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNEN0QyRjYxMTky
MTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRlc3RJbnZvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDRDdEMkY3MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0SW52b2NhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDREEyQUJFMTE5MEI1MUEwMEMzQkM0NyAvKiBUZXN0SW52
b2NhdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
c3RJbnZvY2F0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxLDcg
KzE1MCwxMyBAQAogCQlCQzI1MTgzNTExRDE1NzFEMDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJDQzk5N0Ew
MTFEM0M4RjYwMDE3QkNBMiAvKiBJbmplY3RlZEJ1bmRsZS5jcHAgKi8sCisJCQkJQkNDOTk3QTEx
MUQzQzhGNjAwMTdCQ0EyIC8qIEluamVjdGVkQnVuZGxlLmggKi8sCiAJCQkJQkMyNTE4NDYxMUQx
NTc2NzAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlTWFpbi5jcHAgKi8sCisJCQkJQkNDOTk3QTIx
MUQzQzhGNjAwMTdCQ0EyIC8qIEluamVjdGVkQnVuZGxlUGFnZS5jcHAgKi8sCisJCQkJQkNDOTk3
QTMxMUQzQzhGNjAwMTdCQ0EyIC8qIEluamVjdGVkQnVuZGxlUGFnZS5oICovLAorCQkJCUJDQzk5
ODE2MTFEM0Y1MUUwMDE3QkNBMiAvKiBMYXlvdXRUZXN0Q29udHJvbGxlci5oICovLAorCQkJCUJD
Qzk5ODE3MTFEM0Y1MUUwMDE3QkNBMiAvKiBMYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IEluamVjdGVkQnVuZGxlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTI2Miw2ICsyNzcsOSBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAogCQkJCUJDMjUxQTNFMTFEMTY4MzEwMDJFQkMwMSAvKiBJbmplY3RlZEJ1
bmRsZU1haW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNDOTk3QTQxMUQzQzhGNjAwMTdCQ0Ey
IC8qIEluamVjdGVkQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQzk5N0E1MTFEM0M4
RjYwMDE3QkNBMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkNDOTk4MTgxMUQzRjUxRTAwMTdCQ0EyIC8qIExheW91dFRlc3RDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9Owo=
</data>
<flag name="review"
          id="46879"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>