<?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>154701</bug_id>
          
          <creation_ts>2016-02-25 16:08:31 -0800</creation_ts>
          <short_desc>Allow WKUserScripts to be run in isolated worlds</short_desc>
          <delta_ts>2016-02-26 22:10:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168283</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-25 16:08:31 -0800</bug_when>
    <thetext>Allow WKUserScripts to be run in isolated worlds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168286</commentid>
    <comment_count>1</comment_count>
      <attachid>272259</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-25 16:22:07 -0800</bug_when>
    <thetext>Created attachment 272259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168288</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-25 16:23:32 -0800</bug_when>
    <thetext>Attachment 272259 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp:104:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/_WKUserContentWorld.mm:83:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/_WKUserContentWorld.mm:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 30 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>1168310</commentid>
    <comment_count>3</comment_count>
      <attachid>272259</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-02-25 17:00:05 -0800</bug_when>
    <thetext>Comment on attachment 272259
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIUserContentWorld.cpp:61
&gt; +    , m_name(ASCIILiteral(&quot;Normal World&quot;))

Should normal worlds even have a name?

&gt; Source/WebKit2/UIProcess/API/APIUserContentWorld.h:56
&gt; +

Extra newline.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserScript.mm:90
&gt; +- (instancetype)_initWithSource:(NSString *)source injectionTime:(WKUserScriptInjectionTime)injectionTime forMainFrameOnly:(BOOL)forMainFrameOnly legacyWhitelist:(NSArray&lt;NSString *&gt; *)legacyWhitelist legacyBlacklist:(NSArray&lt;NSString *&gt; *)legacyBlacklist userContentWorld:(_WKUserContentWorld *)userContentWorld

We should really make sure that we don&apos;t ship with these legacy lists :|

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserContentWorld.h:38
&gt; +@property (nonatomic, readonly, copy) NSString *name;

Maybe name should be nullable and return nil for the normal world.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:42
&gt; +    static Ref&lt;InjectedBundleScriptWorld&gt; create(const String&amp; = String());

Instead of doing this, I suggest you fix the call site(s) to pass in a unique string (how about a uuid or something).

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:38
&gt; +@property (nonatomic, readonly, copy) NSString *name;

Again, I think we should make this nullable and use null for the normal world.

&gt; Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp:100
&gt; +    for (auto world : worlds) {

auto&amp; here so you won&apos;t end up copying the pair.

&gt; Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp:104
&gt; +        worldMap().ensure(world.first, [world] { return std::make_pair(InjectedBundleScriptWorld::create(world.second), 1); });

Nice. I&apos;d use [&amp;] instead of [world] so you don&apos;t end up copying the pair (again).

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:-24
&gt; -		1AAD19F71C7CE20300831E47 /* Coding.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAD19F51C7CE20300831E47 /* Coding.mm */; };

What?

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:-494
&gt; -		1AAD19F51C7CE20300831E47 /* Coding.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Coding.mm; sourceTree = &quot;&lt;group&gt;&quot;; };

What?

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:964
&gt;  				A14FC5891B89927100D107EB /* ContentFilteringPlugIn.mm */,

What?

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:-1869
&gt; -				1AAD19F71C7CE20300831E47 /* Coding.mm in Sources */,

What?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168537</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-26 09:50:42 -0800</bug_when>
    <thetext>Committed r197172: &lt;http://trac.webkit.org/changeset/197172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168837</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-26 22:10:03 -0800</bug_when>
    <thetext>Committed r197238: &lt;http://trac.webkit.org/changeset/197238&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272259</attachid>
            <date>2016-02-25 16:22:07 -0800</date>
            <delta_ts>2016-02-25 17:00:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154701-20160225162149.patch</filename>
            <type>text/plain</type>
            <size>78418</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBAQAorMjAxNi0wMi0yNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEFsbG93IFdLVXNlclNjcmlwdHMgdG8g
YmUgcnVuIGluIGlzb2xhdGVkIHdvcmxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciB1c2luZyBpc29sYXRlZCB3b3JsZHMs
IGNhbGxlZCBfV0tVc2VyQ29udGVudFdvcmxkcyBpbiB0aGUgU1BJLAorICAgICAgICBmcm9tIHRo
ZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudFdvcmxkLmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRl
bnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50V29ybGQ6OndvcmxkV2l0aE5hbWUp
OgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCk6CisgICAgICAg
IChBUEk6OlVzZXJDb250ZW50V29ybGQ6OlVzZXJDb250ZW50V29ybGQpOgorICAgICAgICAoQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjp+VXNlckNvbnRlbnRXb3JsZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmg6IEFkZGVkLgorICAgICAgICBBZGQgbmV3IFVz
ZXJDb250ZW50V29ybGQgdHlwZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNj
cmlwdC5oOgorICAgICAgICBCaW5kIGVhY2ggdXNlciBzY3JpcHQgdG8gYSBwYXJ0aWN1bGFyIF9X
S1VzZXJDb250ZW50V29ybGQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2Ny
aXB0UmVmLmNwcDoKKyAgICAgICAgKFdLVXNlclNjcmlwdENyZWF0ZVdpdGhTb3VyY2UpOgorICAg
ICAgICAoV0tVc2VyU2NyaXB0Q29weVNvdXJjZSk6CisgICAgICAgIEV4aXN0aW5nIEFQSXMgY3Jl
YXRlIHVzZXIgc2NyaXB0cyBmb3IgdGhlIG5vcm1hbCB3b3JsZCwgcHJlc2VydmluZyBleGlzdGlu
ZyBiZWhhdmlvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICBFeGlzdGluZyBBUElzIGNyZWF0ZSB1c2Vy
IHNjcmlwdHMgZm9yIHRoZSBub3JtYWwgd29ybGQsIHByZXNlcnZpbmcgZXhpc3RpbmcgYmVoYXZp
b3IuCisKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IF9pbml0V2l0aFNvdXJjZTppbmplY3Rpb25U
aW1lOmZvck1haW5GcmFtZU9ubHk6bGVnYWN5V2hpdGVsaXN0OmxlZ2FjeUJsYWNrbGlzdDp1c2Vy
Q29udGVudFdvcmxkOl0pOgorICAgICAgICBBZGQgYSBuZXcgaW5pdGlhbGl6ZXIgd2hpY2ggdGFr
ZXMgYSB3b3JsZCB0byBiaW5kIHRvLiAgQWxzbyBhZGQgc3VwcG9ydCBmb3IgdGhlIGxlZ2FjeSB3
aGl0ZWxpc3QvYmxhY2tsaXN0IG1lY2hhbmlzbQorICAgICAgICB3aGlsZSB3ZSBhcmUgaGVyZSwg
YXMgdGhlIGV4cGVjdGVkIGNsaWVudCBuZWVkcyB0aGVzZSBhcyB3ZWxsLgorCisgICAgICAgICgt
W1dLVXNlclNjcmlwdCBfdXNlckNvbnRlbnRXb3JsZF0pOgorICAgICAgICBBZGQgYWNjZXNzb3Ig
Zm9yIHRoZSBib3VuZCB3b3JsZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyU2NyaXB0SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgcHJpdmF0ZSBoZWFkZXIu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxk
Lm1tOiBBZGRlZC4KKyAgICAgICAgKCtbX1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1l
Ol0pOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdvcmxkXSk6CisgICAg
ICAgICgtW19XS1VzZXJDb250ZW50V29ybGQgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tVc2Vy
Q29udGVudFdvcmxkIG5hbWVdKToKKyAgICAgICAgKC1bX1dLVXNlckNvbnRlbnRXb3JsZCBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdv
cmxkSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIEFkZCBTUEkgd3JhcHBlci4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojp1
c2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Ojp1c2VyU3R5bGVTaGVldHMpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcmVnaXN0ZXJp
bmcgdGhlIHdvcmxkcyB3aXRoIHRoZSBhc3NvY2lhdGVkIFdlYkNvbnRlbnRQcm9jZXNzZXMgYW5k
IHRoZW4gdXNpbmcKKyAgICAgICAgdGhlaXIgaWRlbnRpZmllcnMgdG8gbWFwIHVzZXIgc2NyaXB0
cyB0byB0aGUgY29ycmVjdCB3b3JsZC4KKyAgICAgICAgCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKC1bV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbmFtZV0pOgorICAgICAgICBFeHBvc2UgdGhlIG5hbWUg
cHJvcGVydHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRXb3JsZENvcHlO
YW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuaDoKKyAgICAgICAgRXhwb3NlIHRoZSBuYW1lIHByb3BlcnR5LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWxsV29ybGRzKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjp+SW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
OmNvcmVXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
OmNsZWFyV3JhcHBlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOjpuYW1lKToKKyAgICAgICAgQWRkIHRoZSBuYW1lIHByb3BlcnR5IGFuZCBk
byBzb21lIGRyaXZlLWJ5IFJlZlB0ciAtPiBSZWYgY29udmVyc2lvbnMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnVzZXJDb250ZW50Q29udHJvbGxlcnMpOgorICAgICAgICAoV2ViS2l0Ojp3
b3JsZE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0
T3JDcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6On5X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50V29ybGRzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyQ29udGVudFdvcmxkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNl
clNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFk
ZFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgVHJhY2sgYW5k
IHVzZSB3b3JsZHMgcGFzc2VkIGZyb20gdGhlIFVJUHJvY2Vzcy4KKwogMjAxNi0wMi0yNSAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBIb29rIHVwIGZ1bGxzY3JlZW5N
YXlSZXR1cm5Ub0lubGluZSgpIGluIFdLUGFnZVVJQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKICAgICAgICAgVXNlckNv
bnRlbnRFeHRlbnNpb24sCiAgICAgICAgIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUsCisgICAg
ICAgIFVzZXJDb250ZW50V29ybGQsCiAgICAgICAgIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjaywK
ICAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIFZpYnJhdGlvbiwK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkocmV2aXNpb24g
MTk3MTQzKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQAogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tVc2Vy
U3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJu
YWwuaCIKIApAQCAtMjEyLDYgKzIxMywxMCBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXpl
X3Qgc2l6ZSwgVHlwCiAgICAgICAgIHdyYXBwZXIgPSBbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZSBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpVc2VyQ29udGVu
dFdvcmxkOgorICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdOwor
ICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6VXNlclNjcmlwdDoKICAgICAgICAgd3Jh
cHBlciA9IFtXS1VzZXJTY3JpcHQgYWxsb2NdOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNv
bnRlbnRXb3JsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgi
CisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIEFQSSB7CisK
K3N0YXRpYyBjb25zdCB1aW50NjRfdCBub3JtYWxXb3JsZElkZW50aWZlciA9IDE7CisKK3N0YXRp
YyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBp
ZGVudGlmaWVyID0gbm9ybWFsV29ybGRJZGVudGlmZXI7CisKKyAgICByZXR1cm4gKytpZGVudGlm
aWVyOworfQorCitSZWY8VXNlckNvbnRlbnRXb3JsZD4gVXNlckNvbnRlbnRXb3JsZDo6d29ybGRX
aXRoTmFtZShjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBVc2VyQ29udGVudFdvcmxkKG5hbWUpKTsKK30KKworVXNlckNvbnRlbnRXb3JsZCYgVXNl
ckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKQoreworICAgIHN0YXRpYyBVc2VyQ29udGVudFdv
cmxkKiB3b3JsZCA9IG5ldyBVc2VyQ29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seTo6Tm9y
bWFsV29ybGQpOworICAgIHJldHVybiAqd29ybGQ7Cit9CisKK1VzZXJDb250ZW50V29ybGQ6OlVz
ZXJDb250ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCisgICAgOiBtX2lkZW50aWZp
ZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30KKworVXNl
ckNvbnRlbnRXb3JsZDo6VXNlckNvbnRlbnRXb3JsZChGb3JOb3JtYWxXb3JsZE9ubHkpCisgICAg
OiBtX2lkZW50aWZpZXIobm9ybWFsV29ybGRJZGVudGlmZXIpCisgICAgLCBtX25hbWUoQVNDSUlM
aXRlcmFsKCJOb3JtYWwgV29ybGQiKSkKK3sKK30KKworVXNlckNvbnRlbnRXb3JsZDo6flVzZXJD
b250ZW50V29ybGQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdv
cmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQVBJVXNlckNvbnRlbnRXb3JsZF9oCisjZGVmaW5lIEFQSVVzZXJDb250ZW50V29ybGRfaAor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBVc2VyQ29udGVudFdvcmxkIGZpbmFsIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRXb3JsZD4g
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VXNlckNvbnRlbnRXb3JsZD4gd29ybGRXaXRoTmFt
ZShjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHN0YXRpYyBVc2VyQ29udGVudFdvcmxkJiBub3Jt
YWxXb3JsZCgpOworCisgICAgdmlydHVhbCB+VXNlckNvbnRlbnRXb3JsZCgpOworCisgICAgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICB1aW50
NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZh
dGU6CisgICAgVXNlckNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOworCisgICAgZW51
bSBjbGFzcyBGb3JOb3JtYWxXb3JsZE9ubHkgeyBOb3JtYWxXb3JsZCB9OworICAgIFVzZXJDb250
ZW50V29ybGQoRm9yTm9ybWFsV29ybGRPbmx5KTsKKworICAgIHVpbnQ2NF90IG1faWRlbnRpZmll
cjsKKyAgICBXVEY6OlN0cmluZyBtX25hbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKwor
CisjZW5kaWYgLy8gQVBJVXNlckNvbnRlbnRXb3JsZF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAkocmV2aXNpb24gMTk3MTQzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQVBJVXNlclNjcmlwdF9oCiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyU2NyaXB0Lmg+CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtMzUsMjAgKzM2LDI1
IEBAIGNsYXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW0KIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQpCisg
ICAgc3RhdGljIFJlZjxVc2VyU2NyaXB0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2Vy
U2NyaXB0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVXNlclNjcmlwdChXVEZNb3ZlKHVzZXJTY3JpcHQpKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJTY3JpcHQoV1RGTW92ZSh1c2VyU2NyaXB0KSwg
d29ybGQpKTsKICAgICB9CiAKLSAgICBVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNl
clNjcmlwdCkKKyAgICBVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCwg
QVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKICAgICAgICAgOiBtX3VzZXJTY3JpcHQodXNl
clNjcmlwdCkKKyAgICAgICAgLCBtX3dvcmxkKHdvcmxkKQogICAgIHsKICAgICB9CiAKICAgICBj
b25zdCBXZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91
c2VyU2NyaXB0OyB9Ci0KKyAgICAKKyAgICBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdv
cmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVz
ZXJDb250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgCiBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQgbV91c2VyU2NyaXB0OworICAgIFJlZjxVc2VyQ29u
dGVudFdvcmxkPiBtX3dvcmxkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAko
cmV2aXNpb24gMTk3MTQzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNl
clNjcmlwdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgV0tUeXBlSUQg
V0tVc2VyU2NyaXB0R2V0VHlwZUlEKCkKIAogV0tVc2VyU2NyaXB0UmVmIFdLVXNlclNjcmlwdENy
ZWF0ZVdpdGhTb3VyY2UoV0tTdHJpbmdSZWYgc291cmNlUmVmLCBfV0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lLCBib29sIGZvck1haW5GcmFtZU9ubHkpCiB7Ci0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsg
dG9XVEZTdHJpbmcoc291cmNlUmVmKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVS
TCgpLCB7IH0sIHsgfSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwg
Zm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29y
ZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJkFQ
STo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyB0b1dURlN0cmluZyhz
b3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9
LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpLmxlYWtSZWYo
KSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNlclNjcmlwdENvcHlTb3VyY2UoV0tVc2VyU2NyaXB0
UmVmIHVzZXJTY3JpcHRSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlclNjcmlwdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2aXNpb24gMTk3MTQzKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVc2Vy
U2NyaXB0SW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFs
LmgiCisKICNpZiBXS19BUElfRU5BQkxFRAogCiBAaW1wbGVtZW50YXRpb24gV0tVc2VyU2NyaXB0
CkBAIC0zNSw3ICszNyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJp
bmcKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0Pihz
ZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2Vy
U2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMg
fSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+
KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVz
ZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1l
cyB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CkBAIC02OSw0ICs3MSwzNyBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAog
CiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJTY3JpcHQgKFdLUHJpdmF0ZSkKKworc3Rh
dGljIFZlY3RvcjxXVEY6OlN0cmluZz4gdG9TdHJpbmdWZWN0b3IoTlNBcnJheTxOU1N0cmluZyAq
PiAqaW5wdXQpCit7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiB2ZWN0b3I7CisKKyAgICBOU1VJ
bnRlZ2VyIHNpemUgPSBpbnB1dC5jb3VudDsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVy
biB2ZWN0b3I7CisKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAg
ICBmb3IgKE5TU3RyaW5nICpzdHJpbmcgOiBpbnB1dCkKKyAgICAgICAgdmVjdG9yLnVuY2hlY2tl
ZEFwcGVuZChzdHJpbmcpOworICAgIHJldHVybiB2ZWN0b3I7Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNl
clNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09M
KWZvck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICop
bGVnYWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxl
Z2FjeUJsYWNrbGlzdCB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNl
ckNvbnRlbnRXb3JsZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6
OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3Vy
Y2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNrbGlzdCksIEFQSTo6
dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5G
cmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVj
dEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29u
dGVudFdvcmxkCit7CisgICAgcmV0dXJuIEFQSTo6d3JhcHBlcihfdXNlclNjcmlwdC0+dXNlckNv
bnRlbnRXb3JsZCgpKTsKK30KKworQGVuZAorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdEludGVybmFs
LmgJKHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyU2NyaXB0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIldL
VXNlclNjcmlwdC5oIgorI2ltcG9ydCAiV0tVc2VyU2NyaXB0UHJpdmF0ZS5oIgogCiAjaWYgV0tf
QVBJX0VOQUJMRUQKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJTY3JpcHRQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHRQcml2YXRlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdFByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0
L1dLVXNlclNjcmlwdC5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KKworQGNsYXNzIF9XS1VzZXJDb250ZW50V29ybGQ7CisKK0BpbnRlcmZhY2UgV0tV
c2VyU2NyaXB0IChXS1ByaXZhdGUpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6
KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRp
bWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkg
bGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxl
Z2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCB1c2Vy
Q29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19B
VkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgX1dLVXNlckNvbnRlbnRXb3JsZCAqX3VzZXJDb250ZW50V29ybGQgV0tfQVZB
SUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworCitAZW5kCisKK05TX0FTU1VNRV9OT05O
VUxMX0VORAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlckNvbnRlbnRXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdl
YktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJB
KQorQGludGVyZmFjZSBfV0tVc2VyQ29udGVudFdvcmxkIDogTlNPYmplY3QKKworKyAoX1dLVXNl
ckNvbnRlbnRXb3JsZCAqKXdvcmxkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKKysgKF9XS1Vz
ZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZDsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVM
TF9FTkQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1t
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tV
c2VyQ29udGVudFdvcmxkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJ
bnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGltcGxlbWVudGF0aW9uIF9XS1Vz
ZXJDb250ZW50V29ybGQKKworKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxkV2l0aE5hbWU6
KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbd3JhcHBlcihBUEk6OlVzZXJDb250ZW50
V29ybGQ6OndvcmxkV2l0aE5hbWUobmFtZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisK
KysgKF9XS1VzZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAoreworICAgIHJldHVybiB3cmFw
cGVyKEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7Cit9CisKKy0gKHZvaWQp
ZGVhbGxvYworeworICAgIF91c2VyQ29udGVudFdvcmxkLT5+VXNlckNvbnRlbnRXb3JsZCgpOwor
CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBy
ZXR1cm4gX3VzZXJDb250ZW50V29ybGQtPm5hbWUoKTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2Jq
ZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0
Cit7CisgICAgcmV0dXJuICpfdXNlckNvbnRlbnRXb3JsZDsKK30KKworQGVuZAorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRX
b3JsZEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZEludGVy
bmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgIl9XS1VzZXJDb250ZW50V29ybGQuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBv
cnQgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBBUEkgeworCitpbmxpbmUgX1dLVXNlckNvbnRlbnRXb3JsZCAqd3JhcHBlcihVc2VyQ29u
dGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxkKQoreworICAgIEFTU0VSVChbdXNlckNvbnRlbnRX
b3JsZC53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLVXNlckNvbnRlbnRXb3JsZCBjbGFzc11d
KTsKKyAgICByZXR1cm4gKF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkLndy
YXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIF9XS1VzZXJDb250ZW50V29ybGQgKCkgPFdL
T2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlVzZXJDb250
ZW50V29ybGQ+IF91c2VyQ29udGVudFdvcmxkOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24gMTk3MTQz
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAKICNpbmNsdWRlICJBUElB
cnJheS5oIgorI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElV
c2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCkBAIC03NCw5ICs3NSwxNCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRQCiAKICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIAotICAgIFZlY3RvcjxXZWJDb3JlOjpV
c2VyU2NyaXB0PiB1c2VyU2NyaXB0czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBT
dHJpbmc+PiB1c2VyQ29udGVudFdvcmxkczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHdvcmxkIDog
bV91c2VyQ29udGVudFdvcmxkcykKKyAgICAgICAgdXNlckNvbnRlbnRXb3JsZHMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKHdvcmxkLmtleS0+aWRlbnRpZmllcigpLCB3b3JsZC5rZXktPm5hbWUoKSkp
OworICAgIHdlYlByb2Nlc3NQcm94eS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHModXNlckNvbnRlbnRXb3Js
ZHMpLCBtX2lkZW50aWZpZXIpOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgV2Vi
Q29yZTo6VXNlclNjcmlwdD4+IHVzZXJTY3JpcHRzOwogICAgIGZvciAoY29uc3QgYXV0byYgdXNl
clNjcmlwdCA6IG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzT2ZUeXBlPEFQSTo6VXNlclNjcmlwdD4o
KSkKLSAgICAgICAgdXNlclNjcmlwdHMuYXBwZW5kKHVzZXJTY3JpcHQtPnVzZXJTY3JpcHQoKSk7
CisgICAgICAgIHVzZXJTY3JpcHRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih1c2VyU2NyaXB0LT51
c2VyQ29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LT51c2VyU2NyaXB0KCkp
KTsKICAgICB3ZWJQcm9jZXNzUHJveHkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHVzZXJTY3JpcHRzKSwgbV9pZGVu
dGlmaWVyKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxl
U2hlZXRzOwpAQCAtMTA3LDI2ICsxMTMsNDUgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtbwogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRV
c2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKIHsKKyAgICBSZWY8QVBJOjpV
c2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwor
CisgICAgaWYgKHdvcmxkLnB0cigpICE9ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdv
cmxkKCkpIHsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VzZXJDb250ZW50V29ybGRzLmFk
ZCh3b3JsZC5wdHIoKSk7CisgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAg
ICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAg
ICAgICAgICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFp
cih3b3JsZC0+aWRlbnRpZmllcigpLCB3b3JsZC0+bmFtZSgpKSB9KSwgbV9pZGVudGlmaWVyKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5k
KCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHVzZXJTY3JpcHQudXNl
clNjcmlwdCgpIH0pLCBtX2lkZW50aWZpZXIpOworICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlw
dHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJT
Y3JpcHQoKSkgfSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoY29uc3QgQVBJOjpVc2VyU2NyaXB0JiB1c2Vy
U2NyaXB0KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCiB7CisgICAgUmVmPEFQSTo6VXNlckNv
bnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKKwogICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHBy
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVVc2VyU2NyaXB0KHsgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkudXJsKCkuc3Ry
aW5nKCkgfSksIG1faWRlbnRpZmllcik7CisgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0
KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpLnVybCgpLnN0cmlu
ZygpKSwgbV9pZGVudGlmaWVyKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVt
b3ZlQWxsKCZ1c2VyU2NyaXB0KTsKKworICAgIGlmICh3b3JsZC5wdHIoKSAhPSAmQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKSB7CisgICAgICAgIGlmIChtX3VzZXJDb250ZW50
V29ybGRzLnJlbW92ZSgmdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCkpKSB7CisgICAgICAg
ICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAg
ICAgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkKHdvcmxkLT5pZGVudGlmaWVy
KCkpLCBtX2lkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiB7Ci0gICAgbV91
c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwotCiAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
Y3JpcHRzKCksIG1faWRlbnRpZmllcik7CisgICAgICAgIHByb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2Ny
aXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkuaWRlbnRpZmllcigpKSwg
bV9pZGVudGlmaWVyKTsKKworICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsK
IH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hl
ZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNpb24gMTk3MTQzKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgpAQCAtMzksNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEFycmF5Owor
Y2xhc3MgVXNlckNvbnRlbnRXb3JsZDsKIGNsYXNzIFVzZXJDb250ZW50RXh0ZW5zaW9uOwogY2xh
c3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwpAQCAtNzMsNyArNzUsNyBAQCBw
dWJsaWM6CiAKICAgICBBUEk6OkFycmF5JiB1c2VyU2NyaXB0cygpIHsgcmV0dXJuIG1fdXNlclNj
cmlwdHMuZ2V0KCk7IH0KICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0Jik7
Ci0gICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KGNvbnN0IEFQSTo6VXNlclNjcmlwdCYpOworICAg
IHZvaWQgcmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsKICAgICB2b2lkIHJlbW92
ZUFsbFVzZXJTY3JpcHRzKCk7CiAKICAgICBBUEk6OkFycmF5JiB1c2VyU3R5bGVTaGVldHMoKSB7
IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0cy5nZXQoKTsgfQpAQCAtMTAyLDYgKzEwNCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclNjcmlwdHM7CiAgICAgUmVmPEFQSTo6
QXJyYXk+IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOworICAgIEhh
c2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiBtX3VzZXJDb250ZW50
V29ybGRzOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBIYXNoTWFwPFN0
cmluZywgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+PiBtX3VzZXJDb250ZW50RXh0
ZW5zaW9uczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA3NCw2ICsx
MDc0LDEyIEBACiAJCTdDODVGRDdDMTkzNDE1QTgwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0Rl
ZmluaXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Qzg1RkQ3QjE5MzQxNUE4MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5o
ICovOyB9OwogCQk3Qzg1RkQ3RjE5MzQxNjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODVG
RDdEMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwICovOyB9OwogCQk3
Qzg1RkQ4MDE5MzQxNjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg1RkQ3RTE5MzQxNjY1MDAw
MTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi87IH07CisJCTdDODgyREY3MUM3RTk5NjUw
MDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkRGMzFDN0U5OTVFMDA2QkY3MzEgLyogX1dLVXNl
ckNvbnRlbnRXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdDODgyREY4MUM3RTk5NkMwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxk
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJE
RjQxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGQubW0gKi87IH07CisJCTdD
ODgyREY5MUM3RTk5NkYwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyREY1MUM3
RTk5NUUwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaCAqLzsgfTsKKwkJ
N0M4ODJERkExQzdFOTk3MzAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyREY2MUM3RTk5NUUw
MDZCRjczMSAvKiBXS1VzZXJTY3JpcHRQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0M4ODJERkQxQzdFOTlBODAwNkJGNzMxIC8qIEFQ
SVVzZXJDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDODgyREZDMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxk
LmggKi87IH07CisJCTdDODgyREZFMUM3RTk5QUMwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdv
cmxkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODgyREZCMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmNwcCAqLzsgfTsK
IAkJN0M4OUQyOTQxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjkyMUE2NzEyMkYwMDNB
NUZERSAvKiBBUElVc2VyU2NyaXB0LmggKi87IH07CiAJCTdDODlEMjk3MUE2NzUzQjIwMDNBNUZE
RSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDI5NTFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNv
bmZpZ3VyYXRpb24uY3BwICovOyB9OwogCQk3Qzg5RDI5ODFBNjc1M0IyMDAzQTVGREUgLyogQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDODlEMjk2MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlv
bi5oICovOyB9OwpAQCAtMzA3Niw2ICszMDgyLDEyIEBACiAJCTdDODVGRDdCMTkzNDE1QTgwMDAx
NzdDNCAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M4NUZEN0QxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2Vz
S2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcmVmZXJl
bmNlc0tleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg1RkQ3RTE5MzQx
NjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Qzg4MkRGMzFDN0U5OTVFMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2VyQ29udGVudFdvcmxkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODgyREY0MUM3RTk5NUUwMDZCRjczMSAv
KiBfV0tVc2VyQ29udGVudFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gX1dLVXNlckNvbnRlbnRXb3JsZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0M4ODJERjUxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGRJbnRl
cm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2VyQ29udGVudFdv
cmxkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4ODJERjYxQzdF
OTk1RTAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tVc2VyU2NyaXB0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3Qzg4MkRGQjFDN0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3Js
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElVc2VyQ29udGVu
dFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4ODJERkMxQzdFOTlB
NjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRXb3JsZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVc2VyU2NyaXB0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlE
Mjk2MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDk2OCw2ICs0OTgwLDkgQEAKIAkJCQk3Qzg5RDJCODFBNkIw
RjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIuaCAqLywKIAkJCQk3Qzg5RDJCNzFB
NkIwRjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIubW0gKi8sCiAJCQkJN0M4OUQy
QkIxQTZCMEY1QjAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCAqLywK
KwkJCQk3Qzg4MkRGMzFDN0U5OTVFMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5oICov
LAorCQkJCTdDODgyREY0MUM3RTk5NUUwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLm1t
ICovLAorCQkJCTdDODgyREY1MUM3RTk5NUUwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxk
SW50ZXJuYWwuaCAqLywKIAkJCQkyRDg3ODYxQjFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0
eWxlU2hlZXQuaCAqLywKIAkJCQkyRDg3ODYxQzFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0
eWxlU2hlZXQubW0gKi8sCiAJCQkJMkQ4Nzg2MUYxQkRCNTdGNTAwRDAyQUJCIC8qIF9XS1VzZXJT
dHlsZVNoZWV0SW50ZXJuYWwuaCAqLywKQEAgLTUwMzQsNiArNTA0OSw3IEBACiAJCQkJMUFBRjA4
OTkxOTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5oICovLAogCQkJCTFBQUYwODk4MTky
NjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQubW0gKi8sCiAJCQkJMUFBRjA4OUMxOTI2N0ZD
ODAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdEludGVybmFsLmggKi8sCisJCQkJN0M4ODJERjYxQzdF
OTk1RTAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCAqLywKIAkJCQkxQTQ4MzJDQTFB
OUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBNDgzMkM5
MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLm1tICovLAogCQkJCTFBNDgz
MkNEMUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCAqLywK
QEAgLTU5MjgsNiArNTk0NCw4IEBACiAJCQkJN0M4OUQyQjIxQTZCMDY4QzAwM0E1RkRFIC8qIEFQ
SVVzZXJDb250ZW50RXh0ZW5zaW9uLmggKi8sCiAJCQkJN0MzQTA2QTUxQUFCOTAzRTAwOUQ3NEJB
IC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwICovLAogCQkJCTdDM0EwNkE2MUFB
QjkwM0UwMDlENzRCQSAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmggKi8sCisJCQkJ
N0M4ODJERkIxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuY3BwICovLAor
CQkJCTdDODgyREZDMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggKi8s
CiAJCQkJN0M4OUQyQTUxQTY3ODlFQTAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuY3BwICovLAog
CQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmggKi8sCiAJCQkJ
MkQ4Nzg2MjExQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmNwcCAqLywKQEAg
LTcxNTEsNiArNzE2OSw3IEBACiAJCQkJMUEzREQyMDYxMjVFNUEyRjAwNDUxNUU2IC8qIEFQSUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2RTg4NEUxQTEzQ0FERjAwNUU5MEZDIC8qIEFQ
SUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTU3OEI4MzEyMDlFQ0VG
MDBBMzdDNEEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M4ODJERjkxQzdFOTk2
RjAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODM4OTFCNjMxQTY4QjM0MjAwMzBGMzg2IC8qIEFQSURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJ
RGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3RDM2QzExOERBNTEzRjAwRDlENjU5
IC8qIEFQSURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTc1MDYsNiArNzUyNSw3
IEBACiAJCQkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3MkJBMUUxMUU2NDkwNzAwMUVCNEVBIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RDJDQUUxMkQ1MTUzQjAw
M0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTdD
ODgyREZEMUM3RTk5QTgwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjUwNzI4MTI0MzI5QUEwMDU5NTVBRSAvKiBX
ZWJDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDc1MTBGNDM3OEQw
MDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNzY0Niw2ICs3
NjY2LDcgQEAKIAkJCQk1MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNw
YWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUM1MTJDOTE5MDY1NkU1MDA0NDg5MTQgLyogV2Vi
UXVpY2tMb29rSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwNDE1MEMz
NTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDODgy
REY3MUM3RTk5NjUwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VM
b2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBX
ZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTc2ODQsNiArNzcw
NSw3IEBACiAJCQkJMzdDNEMwOEQxODE0QUM1QzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M0QzA5NTE4MTRCOUU2MDAzNjg4QjkgLyogV0tCYWNr
Rm9yd2FyZExpc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNTIzNzAxQzczOUQ0
MjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0M4ODJERkExQzdFOTk3MzAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3QzRDMDg3MTgxNDlDNUIwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QzRDMDg5MTgxNDlGMjMwMDM2ODhCOSAv
KiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2
NDZDMUQxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oIGluIEhl
YWRlcnMgKi8sCkBAIC04ODQ0LDYgKzg4NjYsNyBAQAogCQkJCTMxQTY3RTBDMTY1QjJBOTkwMDZD
QkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QThFRjRDQzEyNTI0MDM3MDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMkQ5MUE2MTI4MUQ3MzkwMDFFQjk2MiAvKiBQbHVnaW5Db250cm9s
bGVyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk3Qzg4MkRGRTFDN0U5OUFDMDA2QkY3
MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThFRjk2
RTEyNTJBRjZCMDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTc5NzdGMTM3RUU4MkMwMEY5N0Q0NSAvKiBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzRjhDOTAxNzNB
RjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
ODg4OSw2ICs4OTEyLDcgQEAKIAkJCQkxQUIxNkFFMTE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJE
MTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTNENzVCMTY1MUI0NEYwMDg3MTNE
MCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4ODJERjgx
QzdFOTk2QzAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGQubW0gaW4gU291cmNlcyAqLywK
IAkJCQkwRjBDMzY1ODE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTJEREUwQUZCMTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVM
YXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNjQ5RjFB
MUZGOUM2MDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
Lm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZC5jcHAJKHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDkgKzQzLDkgQEAgc3RhdGljIFdvcmxkTWFwJiBhbGxXb3JsZHMoKQogICAg
IHJldHVybiBtYXA7CiB9CiAKLVJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKQorUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ+IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChT
Y3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3Js
ZCgpLCBuYW1lKSk7CiB9CiAKIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4g
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKQEAgLTU2LDMxICs1NiwzNyBAQCBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ+IEluCiAgICAgaWYgKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIGV4aXN0aW5nV29y
bGQgPSBhbGxXb3JsZHMoKS5nZXQoJndvcmxkKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nV29y
bGQ7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQo
JndvcmxkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkKHdvcmxkLCBTdHJpbmcoKSkpOwogfQogCiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpCiB7Ci0gICAgc3RhdGljIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkID0gYWRvcHRSZWYobmV3IEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQoJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSkubGVha1JlZigpOworICAg
IHN0YXRpYyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCA9IGFkb3B0UmVmKG5ldyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBTdHJpbmco
KSkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gd29ybGQ7CiB9CiAKLUluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQoUGFzc1JlZlB0cjxET01XcmFwcGVy
V29ybGQ+IHdvcmxkKQorSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6SW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgOiBtX3dvcmxkKHdvcmxkKQorICAgICwgbV9uYW1lKG5hbWUpCiB7Ci0gICAgQVNTRVJUKCFh
bGxXb3JsZHMoKS5jb250YWlucyhtX3dvcmxkLmdldCgpKSk7Ci0gICAgYWxsV29ybGRzKCkuYWRk
KG1fd29ybGQuZ2V0KCksIHRoaXMpOworICAgIEFTU0VSVCghYWxsV29ybGRzKCkuY29udGFpbnMo
bV93b3JsZC5wdHIoKSkpOworICAgIGFsbFdvcmxkcygpLmFkZChtX3dvcmxkLnB0cigpLCB0aGlz
KTsKIH0KIAogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6fkluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQoKQogewotICAgIEFTU0VSVChhbGxXb3JsZHMoKS5jb250YWlucyhtX3dvcmxkLmdldCgp
KSk7Ci0gICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29ybGQuZ2V0KCkpOworICAgIEFTU0VSVChh
bGxXb3JsZHMoKS5jb250YWlucyhtX3dvcmxkLnB0cigpKSk7CisgICAgYWxsV29ybGRzKCkucmVt
b3ZlKG1fd29ybGQucHRyKCkpOwogfQogCi1ET01XcmFwcGVyV29ybGQmIEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ6OmNvcmVXb3JsZCgpIGNvbnN0Citjb25zdCBET01XcmFwcGVyV29ybGQmIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNvcmVXb3JsZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICptX3dvcmxkLmdldCgpOworICAgIHJldHVybiBtX3dvcmxkOworfQorCitET01XcmFwcGVyV29y
bGQmIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNvcmVXb3JsZCgpCit7CisgICAgcmV0dXJu
IG1fd29ybGQ7CiB9CiAgICAgCiB2b2lkIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNsZWFy
V3JhcHBlcnMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgJ
KHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7
CkBAIC0zOCwyMSArMzksMjUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpCdW5kbGVTY3JpcHRXb3JsZD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkPiBjcmVhdGUoY29uc3QgU3RyaW5nJiA9IFN0cmluZygpKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0ZShX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKICAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogbm9ybWFsV29ybGQoKTsKIAogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQoKTsKIAotICAgIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYgY29yZVdvcmxkKCkg
Y29uc3Q7CisgICAgY29uc3QgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJiBjb3JlV29ybGQoKSBj
b25zdDsKKyAgICBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmIGNvcmVXb3JsZCgpOwogCiAgICAg
dm9pZCBjbGVhcldyYXBwZXJzKCk7CiAgICAgdm9pZCBtYWtlQWxsU2hhZG93Um9vdHNPcGVuKCk7
CiAKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwog
cHJpdmF0ZToKLSAgICBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RE9NV3JhcHBlcldvcmxkPik7CisgICAgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CisgICAgUmVmPFdlYkNvcmU6OkRPTVdyYXBw
ZXJXb3JsZD4gbV93b3JsZDsKKyAgICBTdHJpbmcgbV9uYW1lOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLmgJKHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJblNjcmlwdFdvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKDEwXzEwLCA4XzApCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKXdvcmxkOwogKyAoV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilub3JtYWxXb3Js
ZDsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFt
ZTsKKwogLSAodm9pZCljbGVhcldyYXBwZXJzOwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5T
Y3JpcHRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbQko
cmV2aXNpb24gMTk3MTQzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDYgKzU2LDExIEBAIC0gKHZvaWQpY2xlYXJXcmFwcGVycwogICAgIF93b3Js
ZC0+Y2xlYXJXcmFwcGVycygpOwogfQogCistIChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1
cm4gX3dvcmxkLT5uYW1lKCk7Cit9CisKIC0gKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmKV9z
Y3JpcHRXb3JsZAogewogICAgIHJldHVybiAqX3dvcmxkOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwCShyZXZpc2lvbiAxOTcxNDMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29y
bGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywzICs1Nyw4IEBAIHZvaWQgV0tCdW5kbGVTY3Jp
cHRXb3JsZE1ha2VBbGxTaGFkb3dSb28KIHsKICAgICB0b0ltcGwoc2NyaXB0V29ybGRSZWYpLT5t
YWtlQWxsU2hhZG93Um9vdHNPcGVuKCk7CiB9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlU2NyaXB0
V29ybGRDb3B5TmFtZShXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmKQorewor
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2NyaXB0V29ybGRSZWYpLT5uYW1lKCkpOwor
fQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVNjcmlwdFdvcmxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmgJKHJldmlzaW9u
IDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBA
IFdLX0VYUE9SVCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGwKIFdLX0VYUE9SVCBXS0J1
bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpOwogV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVTY3JpcHRXb3JsZENsZWFyV3JhcHBlcnMoV0tCdW5kbGVTY3Jp
cHRXb3JsZFJlZiBzY3JpcHRXb3JsZCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNjcmlwdFdv
cmxkTWFrZUFsbFNoYWRvd1Jvb3RzT3BlbihXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdv
cmxkKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ29weU5hbWUo
V0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MTk3MTQzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgogI2luY2x1
ZGUgIldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtNTYsNiArNTcsMTUgQEAgc3RhdGljIEhhc2hNYXA8
dWludDY0X3QsIFdlYlVzZXJDb250ZW50QwogICAgIHJldHVybiB1c2VyQ29udGVudENvbnRyb2xs
ZXJzOwogfQogCit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4sIHVuc2lnbmVkPj4gV29ybGRNYXA7CisKK3N0YXRpYyBX
b3JsZE1hcCYgd29ybGRNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JsZE1h
cD4gbWFwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4g
eyB7IDEsIHN0ZDo6bWFrZV9wYWlyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdv
cmxkKCksIDEpIH0gfSk7CisKKyAgICByZXR1cm4gbWFwOworfQorCiBQYXNzUmVmUHRyPFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0
ZSh1aW50NjRfdCBpZGVudGlmaWVyKQogewogICAgIGF1dG8mIHVzZXJDb250ZW50Q29udHJvbGxl
clB0ciA9IHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwpAQCAtODQsMjAgKzk0LDY3IEBAIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6fldlYlVzZXJDb250ZW4KICAgICB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkucmVtb3Zl
KG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNlclNjcmlwdD4mIHVzZXJTY3JpcHRz
KQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMo
Y29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mIHdvcmxkcykKK3sKKyAg
ICBmb3IgKGF1dG8gd29ybGQgOiB3b3JsZHMpIHsKKyAgICAgICAgQVNTRVJUKHdvcmxkLmZpcnN0
KTsKKyAgICAgICAgQVNTRVJUKHdvcmxkLmZpcnN0ICE9IDEpOworCisgICAgICAgIHdvcmxkTWFw
KCkuZW5zdXJlKHdvcmxkLmZpcnN0LCBbd29ybGRdIHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSh3b3JsZC5zZWNvbmQpLCAxKTsgfSk7Cisg
ICAgfQorfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlckNvbnRl
bnRXb3JsZCh1aW50NjRfdCB3b3JsZElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKHdvcmxkSWRl
bnRpZmllcik7CisgICAgQVNTRVJUKHdvcmxkSWRlbnRpZmllciAhPSAxKTsKKworICAgIGF1dG8g
aXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKKyAgICBpZiAoaXQgPT0gd29y
bGRNYXAoKS5lbmQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUg
YSBVc2VyQ29udGVudFdvcmxkIChpZD0lbGx1KSB0aGF0IGlzIGRvZXMgbm90IGV4aXN0LiIsIHdv
cmxkSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpdC0+dmFsdWUu
c2Vjb25kLS07CisgICAgCisgICAgaWYgKCFpdC0+dmFsdWUuc2Vjb25kKQorICAgICAgICB3b3Js
ZE1hcCgpLnJlbW92ZShpdCk7Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjph
ZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpV
c2VyU2NyaXB0Pj4mIHVzZXJTY3JpcHRzKQogewotICAgIGZvciAoY29uc3QgYXV0byYgdXNlclNj
cmlwdCA6IHVzZXJTY3JpcHRzKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRk
VXNlclNjcmlwdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpVc2VyU2NyaXB0Pih1c2VyU2NyaXB0KSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB1c2Vy
U2NyaXB0V29ybGRQYWlyIDogdXNlclNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBpdCA9IHdvcmxk
TWFwKCkuZmluZCh1c2VyU2NyaXB0V29ybGRQYWlyLmZpcnN0KTsKKyAgICAgICAgaWYgKGl0ID09
IHdvcmxkTWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRv
IGFkZCBhIFVzZXJTY3JpcHQgdG8gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lbGx1KSB0aGF0IGRv
ZXMgbm90IGV4aXN0LiIsIHVzZXJTY3JpcHRXb3JsZFBhaXIuZmlyc3QpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkVXNlclNjcmlwdChpdC0+dmFsdWUuZmlyc3QtPmNvcmVXb3JsZCgpLCBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OlVzZXJTY3JpcHQ+KHVzZXJTY3JpcHRXb3JsZFBhaXIuc2Vjb25kKSk7Cisg
ICAgfQogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlw
dChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpyZW1vdmVVc2VyU2NyaXB0KHVpbnQ2NF90IHdvcmxkSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCiB7Ci0gICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJT
Y3JpcHQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSk7Cisg
ICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOworICAgIGlmIChp
dCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRv
IHJlbW92ZSBhIFVzZXJTY3JpcHQgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSVsbHUpIHRo
YXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU2NyaXB0KGl0
LT52YWx1ZS5maXJzdC0+Y29yZVdvcmxkKCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSk7CiB9CiAK
LXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCit2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdHModWludDY0
X3Qgd29ybGRJZGVudGlmaWVyKQogewotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1v
dmVVc2VyU2NyaXB0cyhtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBpdCA9IHdv
cmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOworICAgIGlmIChpdCA9PSB3b3JsZE1hcCgp
LmVuZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNl
clNjcmlwdHMgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSVsbHUpIHRoYXQgZG9lcyBub3Qg
ZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU2NyaXB0cyhpdC0+dmFsdWUuZmly
c3QtPmNvcmVXb3JsZCgpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFk
ZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+JiB1
c2VyU3R5bGVTaGVldHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ7CiBjbGFzcyBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhOwogY2xhc3MgV2ViVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5OwogCkBAIC01Miw5ICs1MywxMiBAQCBwcml2
YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpV
c2VyU2NyaXB0PiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZyk7Ci0gICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOworICAgIHZvaWQgYWRk
VXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5n
Pj4mKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGQodWludDY0X3QpOworCisgICAg
dm9pZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJD
b3JlOjpVc2VyU2NyaXB0Pj4mKTsKKyAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQodWludDY0X3Qg
d29ybGRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgdm9pZCByZW1v
dmVBbGxVc2VyU2NyaXB0cyh1aW50NjRfdCB3b3JsZElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBh
ZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0PiYp
OwogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDE5NzE0MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw5ICsyNCwxMiBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlciB7Ci0gICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHRzKTsKLSAgICBSZW1vdmVVc2VyU2NyaXB0KFN0cmluZyB1cmwpOwotICAgIFJl
bW92ZUFsbFVzZXJTY3JpcHRzKCk7CisgICAgQWRkVXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHN0
ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4gd29ybGRzKTsKKyAgICBSZW1vdmVVc2VyQ29udGVu
dFdvcmxkKHVpbnQ2NF90IHdvcmxkSWRlbnRpZmllcik7CisKKyAgICBBZGRVc2VyU2NyaXB0cyhW
ZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4gdXNlclNjcmlw
dHMpOworICAgIFJlbW92ZVVzZXJTY3JpcHQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCBTdHJp
bmcgdXJsKTsKKyAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cyh1aW50NjRfdCB3b3JsZElkZW50aWZp
ZXIpOwogCiAgICAgQWRkVXNlclN0eWxlU2hlZXRzKFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldD4gdXNlclN0eWxlU2hlZXRzKTsKICAgICBSZW1vdmVVc2VyU3R5bGVTaGVldChTdHJpbmcg
dXJsKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE5NzE0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIwIEBACisyMDE2LTAyLTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWxsb3cgV0tVc2VyU2NyaXB0cyB0byBiZSBydW4gaW4gaXNvbGF0ZWQgd29y
bGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL19XS1VzZXJDb250ZW50V29y
bGQubW06IEFkZGVkLgorICAgICAgICAoLVtTaW1wbGVEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlz
aE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW1VzZXJDb250ZW50V29ybGRSZW1vdGVPYmplY3Qg
ZGlkT2JzZXJ2ZU5vcm1hbFdvcmxkXSk6CisgICAgICAgICgtW1VzZXJDb250ZW50V29ybGRSZW1v
dGVPYmplY3QgZGlkT2JzZXJ2ZVdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbTogQWRk
ZWQuCisgICAgICAgICgtW19XS1VzZXJDb250ZW50V29ybGRQbHVnSW4gd2ViUHJvY2Vzc1BsdWdJ
bjpkaWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW19XS1Vz
ZXJDb250ZW50V29ybGRQbHVnSW4gd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOmluU2NyaXB0V29ybGQ6XSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvX1dLVXNlckNvbnRlbnRX
b3JsZFByb3RvY29sLmg6IEFkZGVkLgorCiAyMDE2LTAyLTI1ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgdGVtcGxhdGUgUmVmQ291
bnRlciBpbnN0ZWFkIG9mIFJlZkNvdW50ZXI6OlRva2VuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTk3MTQzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDYgQEAKIAkJMUE2MzQ3OUYxODNENzJBNDAwNUIxNzA3IC8qIGFsbC1jb250ZW50LWluLW9uZS1p
ZnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0QzRDE5QjE3QjFBN0IwMDBDN0M0MTUgLyogYWxsLWNvbnRlbnQtaW4tb25lLWlm
cmFtZS5odG1sICovOyB9OwogCQkxQTdFOEIzNjE4MTIwQjJGMDBBRUI3NEEgLyogRnJhZ21lbnRO
YXZpZ2F0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE3RThCMzUxODEyMDkzNjAwQUVCNzRBIC8qIEZyYWdtZW50TmF2aWdhdGlv
bi5odG1sICovOyB9OwogCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUgLyogMTgtY2hhcmFjdGVy
cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMwNDVGOTQ2MTM4NUMyRjgwMEMwRjNDRCAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgKi87IH07
Ci0JCTFBQUQxOUY3MUM3Q0UyMDMwMDgzMUU0NyAvKiBDb2RpbmcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcg
LyogQ29kaW5nLm1tICovOyB9OwogCQkxQURCRUZFMzEzMEM2QUExMDBENjFEMTkgLyogc2ltcGxl
LWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFEQkVGQkMxMzBDNkEwMTAwRDYxRDE5IC8qIHNp
bXBsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sICovOyB9OwogCQkxQUVERTIyNjEzRTVF
N0U3MDBFNjJGRTggLyogSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFREUyMjQxM0U1RTdBMDAwRTYy
RkU4IC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJMUNCOUJDMzgx
QTY3NDgyMzAwRkU1Njc4IC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCOUJDMzcxQTY3NDgyMzAwRkU1Njc4IC8qIFdlYWtQdHIu
Y3BwICovOyB9OwpAQCAtODksNiArODgsOCBAQAogCQk3QzQ4NkJBMTFBQTEyNTY3MDAzRjZGOUIg
LyogYnVuZGxlLWZpbGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzQ4NkJBMDFBQTEyNTRCMDAzRjZGOUIgLyogYnVuZGxlLWZpbGUu
aHRtbCAqLzsgfTsKIAkJN0M1NEE0QkUxQUExMUNDQTAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhh
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzU0QTRCQzFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlLmNwcCAqLzsgfTsK
IAkJN0M1NEE0QzExQUExMUNFNDAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhhbmRsZV9CdW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1NEE0
QkYxQUExMUNFNDAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhhbmRsZV9CdW5kbGUuY3BwICovOyB9
OworCQk3Qzg4MkRGMjFDN0Q1MzE3MDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyREYwMUM3
RDUzMTcwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLm1tICovOyB9OworCQk3Qzg4MkUw
MTFDN0ZDNDU2MDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyREZGMUM3RkM0NTYw
MDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tICovOyB9OwogCQk3Qzg5RDJB
QzFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJBQTFBNjlCODBEMDAzQTVG
REUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi87IH07CiAJCTdDOUVEOThCMTdBMTlGNEIw
MEU0REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUVEOThBMTdBMTlE
MDYwMEU0REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sICovOyB9Owog
CQk3Q0IxODRDNjFBQTNGMjEwMDA2NkVERkQgLyogQ29udGVudEV4dGVuc2lvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTg0QzQxQUEzRjIx
MDAwNjZFREZEIC8qIENvbnRlbnRFeHRlbnNpb25zLmNwcCAqLzsgfTsKQEAgLTQ5MSw3ICs0OTIs
NiBAQAogCQkxQTdFOEIzMzE4MTIwOERFMDBBRUI3NEEgLyogRnJhZ21lbnROYXZpZ2F0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnJhZ21lbnROYXZpZ2F0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTdFOEIzNTE4MTIwOTM2MDBB
RUI3NEEgLyogRnJhZ21lbnROYXZpZ2F0aW9uLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBGcmFnbWVudE5hdmlnYXRpb24uaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0aW9uYWwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25hbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFBQUQxOUY1MUM3Q0UyMDMwMDgzMUU0NyAvKiBDb2RpbmcubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2RpbmcubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQkMzREVEMTg5OUJFNkQwMDRGMDYyNiAvKiBOYXZpZ2F0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF2aWdhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFEQkVGQUQxMzBDNjg5QzAwRDYx
RDE5IC8qIEZvcmNlUmVwYWludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb3JjZVJlcGFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQURC
RUZCQzEzMEM2QTAxMDBENjFEMTkgLyogc2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBv
c2l0aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI1LDYgKzYyNSw5
IEBACiAJCTdDNkJCRDhBMTlDRUE1NDMwMEMxRjVFMCAvKiBDb3VudGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb3VudGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzZCQkQ4QjE5Q0VBNjMwMDBDMUY1RTAgLyogQ291bnRlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ291bnRlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Qzc0RDQyRDE4ODIyOEYzMDBFNUVENTcgLyogU3RyaW5nVmlldy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdWaWV3LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4ODJERjAxQzdENTMxNzAwNkJGNzMxIC8q
IF9XS1VzZXJDb250ZW50V29ybGQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBfV0tVc2VyQ29udGVudFdvcmxkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3Qzg4MkRGRjFDN0ZDNDU2MDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZFBsdWdJ
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1VzZXJDb250
ZW50V29ybGRQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODgyRTAy
MUM3RkNCQTkwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVXNlckNvbnRlbnRXb3JsZFByb3RvY29sLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMkFBMUE2OUI4MEQwMDNBNUZERSAv
KiBXS1BhZ2VDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzhEREFBOTE3MzVERTFEMDBFQTVBQzAgLyogQ2xvc2VUaGVuVGVybWluYXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENsb3NlVGhlblRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDOUVEOThBMTdBMTlEMDYwMEU0REMzMyAvKiBhdHRyaWJ1dGVkU3Ry
aW5nU3RyaWtldGhyb3VnaC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRo
cm91Z2guaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0OSwyMCArOTUyLDIy
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVz
b3VyY2VzICovLAogCQkJCTdDRUZBOTY0MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLm1tICovLAorCQkJCTdDODgyREYwMUM3RDUzMTcwMDZCRjczMSAvKiBf
V0tVc2VyQ29udGVudFdvcmxkLm1tICovLAorCQkJCTdDODgyREZGMUM3RkM0NTYwMDZCRjczMSAv
KiBfV0tVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tICovLAorCQkJCTdDODgyRTAyMUM3RkNCQTkw
MDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaCAqLywKKwkJCQlBMURGNzQz
MDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovLAog
CQkJCTJERDM1NTM1MUJEMDgzNzgwMDVERjRBNyAvKiBBdXRvTGF5b3V0SW50ZWdyYXRpb24ubW0g
Ki8sCiAJCQkJQTEzRUJCQUMxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnMubW0g
Ki8sCiAJCQkJQTEzRUJCQUUxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnNQbHVn
SW4ubW0gKi8sCiAJCQkJQTE4QUE4Q0MxQzNGQTIxODAwOUIyQjk3IC8qIENvbnRlbnRGaWx0ZXJp
bmcuaCAqLywKIAkJCQlBMTRGQzU4NjFCODk5MUI2MDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmlu
Zy5tbSAqLywKIAkJCQlBMTRGQzU4OTFCODk5MjcxMDBEMTA3RUIgLyogQ29udGVudEZpbHRlcmlu
Z1BsdWdJbi5tbSAqLywKLQkJCQkxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcgLyogQ29kaW5nLm1t
ICovLAogCQkJCUExQTRGRTVEMThERDNEQjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLywKIAkJ
CQkyRDgxMDRDQjFCRUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKIAkJCQkyRDFG
RTBBRjFBRDQ2NUMxMDA2Q0Q5RTYgLyogRml4ZWRMYXlvdXRTaXplLm1tICovLAogCQkJCTM3RDM2
RUQ2MUFGNDJFQ0QwMEJBRjVEOSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbSAqLywKIAkJ
CQk1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi8sCiAJCQkJMUFC
QzNERUQxODk5QkU2RDAwNEYwNjI2IC8qIE5hdmlnYXRpb24ubW0gKi8sCi0JCQkJQTFERjc0MzAx
QzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLywKIAkJ
CQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1tICovLAog
CQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5tbSAqLywKIAkJCQkz
N0QzNkYzMTFCMDA0REQ0MDBCQUY1RDkgLyogUHJvdmlzaW9uYWxVUkxDaGFuZ2UubW0gKi8sCkBA
IC0xODA3LDYgKzE4MTIsNyBAQAogCQkJCTdDQ0U3RUQyMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdWJy
ZXNvdXJjZUVycm9yQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBODFBNDExQTE5
MDA0NDdDNEMgLyogU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93Lm0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0Y0OTFBNDExQjhFMDA0NDdDNEMgLyogVGVtcG9yYXJ5Q2hhbmdlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdDODgyREYyMUM3RDUzMTcwMDZCRjczMSAvKiBfV0tVc2Vy
Q29udGVudFdvcmxkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTYxQTQxMUFFNjAwNDQ3
QzRDIC8qIFRlcm1pbmF0ZVR3aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE5MUE0
MTFBMUQwMDQ0N0M0QyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFQUUxQTQxMUEzNDAwNDQ3QzRDIC8qIFRlc3RzQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE4NjYsNyArMTg3Miw2IEBACiAJCQkJQ0Q4OUQwM0Ex
QzRFREIyQTAwMDQwQTA0IC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMUM0RkI2RTFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29rLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0E1NjIzMTExQUQ1QUYzRTAwOTZCOTIwIC8qIE1lbnVUeXBlc0Zvck1vdXNlRXZl
bnRzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBQUQxOUY3MUM3Q0UyMDMwMDgzMUU0NyAvKiBD
b2RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjA3ODZBMzFDNTg4MzBGMDBEMTU5RTMgLyog
SW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNEY4MUNDMUJERkZEMzcwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxQ0I0QUQ4MUIzQTA3OUMwMEMxQjFDNiAvKiBNb2RhbEFsZXJ0
c1NQSS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE4ODQsNiArMTg4OSw3IEBACiAJCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQk3Qzg4MkUwMTFDN0ZDNDU2MDA2QkY3MzEgLyogX1dLVXNlckNvbnRl
bnRXb3JsZFBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExM0VCQkFBMUI4NzQyOEQwMDA5
NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0RjgxQ0Yx
QkRGRkQ1MzAwNEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTEzRUJCQjAxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnNQ
bHVnSW4ubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQko
cmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL19X
S1VzZXJDb250ZW50V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0
cmFzLmgiCisjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaCIKKyNpbXBvcnQg
PFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNv
bnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlclNjcmlwdFBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tVc2VyQ29udGVudFdvcmxkLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQu
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIGJvb2wgaXNEb25lV2l0aE5h
dmlnYXRpb247CisKK0BpbnRlcmZhY2UgU2ltcGxlRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTaW1wbGVEZWxlZ2F0ZQor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246
KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9
IHRydWU7Cit9CitAZW5kCisKKworVEVTVChfV0tVc2VyQ29udGVudFdvcmxkLCBOb3JtYWxXb3Js
ZCkKK3sKKyAgICBSZXRhaW5QdHI8V0tVc2VyU2NyaXB0PiBiYXNpY1VzZXJTY3JpcHQgPSBhZG9w
dE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIiIgaW5qZWN0aW9uVGlt
ZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9u
bHk6WUVTXSk7CisgICAgRVhQRUNUX0VRKFtiYXNpY1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29y
bGRdLCBbX1dLVXNlckNvbnRlbnRXb3JsZCBub3JtYWxXb3JsZF0pOworfQorCitURVNUKF9XS1Vz
ZXJDb250ZW50V29ybGQsIE5vcm1hbFdvcmxkVXNlclNjcmlwdCkKK3sKKyAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8V0tVc2VyU2Ny
aXB0PiB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhT
b3VyY2U6QCJ3aW5kb3cuc2V0RnJvbVVzZXJTY3JpcHQgPSB0cnVlOyIgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6
WUVTXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkVXNl
clNjcmlwdDp1c2VyU2NyaXB0LmdldCgpXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwor
CisgICAgUmV0YWluUHRyPFNpbXBsZURlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1w
bGVEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxi
b2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJMOm5pbF07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7Cisg
ICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuc2V0
RnJvbVVzZXJTY3JpcHQgPyAndmFyaWFibGUgYWNjZXNzaWJsZScgOiAndmFyaWFibGUgaW5hY2Nl
c3NpYmxlJzsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXN1bHQsIEAidmFyaWFibGUgYWNjZXNzaWJsZSIpOworCisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoX1dLVXNlckNvbnRlbnRXb3JsZCwgSXNv
bGF0ZWRXb3JsZCkKK3sKKyAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gaXNvbGF0
ZWRXb3JsZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQi
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2lzb2xhdGVkV29ybGQgbmFtZV0sIEAiVGVzdFdvcmxk
Iik7CisKKyAgICBSZXRhaW5QdHI8V0tVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gYWRvcHROUyhb
W1dLVXNlclNjcmlwdCBhbGxvY10gX2luaXRXaXRoU291cmNlOkAiIiBpbmplY3Rpb25UaW1lOldL
VXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZ
RVMgbGVnYWN5V2hpdGVsaXN0OkBbXSBsZWdhY3lCbGFja2xpc3Q6QFtdIHVzZXJDb250ZW50V29y
bGQ6aXNvbGF0ZWRXb3JsZC5nZXQoKV0pOworICAgIEVYUEVDVF9FUShbdXNlclNjcmlwdCBfdXNl
ckNvbnRlbnRXb3JsZF0sIGlzb2xhdGVkV29ybGQuZ2V0KCkpOworfQorCitURVNUKF9XS1VzZXJD
b250ZW50V29ybGQsIElzb2xhdGVkV29ybGRVc2VyU2NyaXB0KQoreworICAgIFJldGFpblB0cjxX
S1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxfV0tVc2VyQ29u
dGVudFdvcmxkPiBpc29sYXRlZFdvcmxkID0gW19XS1VzZXJDb250ZW50V29ybGQgd29ybGRXaXRo
TmFtZTpAIlRlc3RXb3JsZCJdOworICAgIFJldGFpblB0cjxXS1VzZXJTY3JpcHQ+IHVzZXJTY3Jp
cHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJ3aW5k
b3cuc2V0RnJvbVVzZXJTY3JpcHQgPSB0cnVlOyIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdo
aXRlbGlzdDpAW10gbGVnYWN5QmxhY2tsaXN0OkBbXSB1c2VyQ29udGVudFdvcmxkOmlzb2xhdGVk
V29ybGQuZ2V0KCldKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisKKyAgICBSZXRhaW5QdHI8U2ltcGxlRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHRO
UyhbW1NpbXBsZURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VV
Ukw6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0
aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgX19ibG9jayBi
b29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndp
bmRvdy5zZXRGcm9tVXNlclNjcmlwdCA/ICd2YXJpYWJsZSBhY2Nlc3NpYmxlJyA6ICd2YXJpYWJs
ZSBpbmFjY2Vzc2libGUnOyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3VsdCwgQCJ2YXJpYWJsZSBpbmFjY2Vzc2libGUiKTsKKworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitzdGF0aWMgYm9vbCBkaWRPYnNl
cnZlTm9ybWFsV29ybGQ7CitzdGF0aWMgYm9vbCBkaWRPYnNlcnZlV29ybGRXaXRoTmFtZTsKKwor
QGludGVyZmFjZSBVc2VyQ29udGVudFdvcmxkUmVtb3RlT2JqZWN0IDogTlNPYmplY3QgPFVzZXJD
b250ZW50V29ybGRQcm90b2NvbD4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFVzZXJDb250ZW50
V29ybGRSZW1vdGVPYmplY3QKKworLSAodm9pZClkaWRPYnNlcnZlTm9ybWFsV29ybGQKK3sKKyAg
ICBkaWRPYnNlcnZlTm9ybWFsV29ybGQgPSB0cnVlOworfQorCistICh2b2lkKWRpZE9ic2VydmVX
b3JsZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJU
ZXN0V29ybGQiLCBuYW1lKTsKKyAgICBkaWRPYnNlcnZlV29ybGRXaXRoTmFtZSA9IHRydWU7Cit9
CisKK0BlbmQKKworVEVTVChfV0tVc2VyQ29udGVudFdvcmxkLCBJc29sYXRlZFdvcmxkUGx1Z0lu
KQoreworICAgIE5TU3RyaW5nICogY29uc3QgdGVzdFBsdWdJbkNsYXNzTmFtZSA9IEAiX1dLVXNl
ckNvbnRlbnRXb3JsZFBsdWdJbiI7CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB0
ZXN0d2Via2l0YXBpX2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTp0ZXN0UGx1
Z0luQ2xhc3NOYW1lXSk7CisgICAgCisgICAgUmV0YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+
IGlzb2xhdGVkV29ybGQgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVz
dFdvcmxkIl07CisgICAgUmV0YWluUHRyPFdLVXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0
TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIF9pbml0V2l0aFNvdXJjZTpAIndpbmRvdy5zZXRGcm9t
VXNlclNjcmlwdCA9IHRydWU7IiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRp
bWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0OkBb
XSBsZWdhY3lCbGFja2xpc3Q6QFtdIHVzZXJDb250ZW50V29ybGQ6aXNvbGF0ZWRXb3JsZC5nZXQo
KV0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJT
Y3JpcHQ6dXNlclNjcmlwdC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKwor
ICAgIFJldGFpblB0cjxVc2VyQ29udGVudFdvcmxkUmVtb3RlT2JqZWN0PiBvYmplY3QgPSBhZG9w
dE5TKFtbVXNlckNvbnRlbnRXb3JsZFJlbW90ZU9iamVjdCBhbGxvY10gaW5pdF0pOworICAgIF9X
S1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVy
ZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKFVzZXJDb250
ZW50V29ybGRQcm90b2NvbCldOworICAgIFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnld
IHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6b2JqZWN0LmdldCgpIGludGVyZmFjZTppbnRlcmZhY2Vd
OworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3Vu
ZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkaWRPYnNlcnZlTm9ybWFsV29ybGQpOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkT2JzZXJ2ZVdvcmxkV2l0aE5hbWUpOworfQorCisjZW5kaWYKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL19XS1VzZXJDb250ZW50V29y
bGRQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbQkocmV2aXNpb24gMCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL19XS1VzZXJDb250ZW50V29ybGRQ
bHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRQcm90b2NvbC5oIgor
I2ltcG9ydCA8V2ViS2l0L1dLQ29ubmVjdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJv
Y2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkxv
YWREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworQGludGVyZmFjZSBfV0tVc2VyQ29udGVudFdvcmxkUGx1Z0luIDogTlNPYmpl
Y3QgPFdLV2ViUHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gX1dLVXNlckNvbnRlbnRXb3JsZFBsdWdJbiB7CisgICAg
UmV0YWluUHRyPFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4gX2Jy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V0tXZWJQcm9jZXNzUGx1Z0lu
Q29udHJvbGxlcj4gX3BsdWdJbkNvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPGlkIDxVc2VyQ29u
dGVudFdvcmxkUHJvdG9jb2w+PiBfcmVtb3RlT2JqZWN0OworfQorCistICh2b2lkKXdlYlByb2Nl
c3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVy
IGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9sbGVyCit7CisgICAg
QVNTRVJUKCFfYnJvd3NlckNvbnRleHRDb250cm9sbGVyKTsKKyAgICBBU1NFUlQoIV9wbHVnSW5D
b250cm9sbGVyKTsKKyAgICBfYnJvd3NlckNvbnRleHRDb250cm9sbGVyID0gYnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOworICAgIF9wbHVnSW5Db250cm9sbGVyID0gcGx1Z0luQ29udHJvbGxlcjsK
KworICAgIF9XS1JlbW90ZU9iamVjdEludGVyZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9i
amVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29s
KFVzZXJDb250ZW50V29ybGRQcm90b2NvbCldOworICAgIF9yZW1vdGVPYmplY3QgPSBbW2Jyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlbW90ZU9iamVjdFBy
b3h5V2l0aEludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAgW19icm93c2VyQ29udGV4dENvbnRy
b2xsZXIgc2V0TG9hZERlbGVnYXRlOnNlbGZdOworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciopY29udHJvbGxlciBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1l
OihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkICopc2NyaXB0V29ybGQKK3sKKyAgICBpZiAoc2NyaXB0V29y
bGQgPT0gW1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5vcm1hbFdvcmxkXSkgeworICAg
ICAgICBbX3JlbW90ZU9iamVjdCBkaWRPYnNlcnZlTm9ybWFsV29ybGRdOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgW19yZW1vdGVPYmplY3QgZGlkT2JzZXJ2ZVdvcmxkV2l0aE5hbWU6
c2NyaXB0V29ybGQubmFtZV07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9fV0tVc2VyQ29u
dGVudFdvcmxkUHJvdG9jb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9fV0tVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL19XS1VzZXJDb250
ZW50V29ybGRQcm90b2NvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5B
QkxFRAorCitAcHJvdG9jb2wgVXNlckNvbnRlbnRXb3JsZFByb3RvY29sIDxOU09iamVjdD4KKwor
LSAodm9pZClkaWRPYnNlcnZlTm9ybWFsV29ybGQ7CistICh2b2lkKWRpZE9ic2VydmVXb3JsZFdp
dGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CisKK0BlbmQKKworI2VuZGlmCg==
</data>
<flag name="review"
          id="297031"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>