<?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>43414</bug_id>
          
          <creation_ts>2010-08-03 05:31:52 -0700</creation_ts>
          <short_desc>Web Inspector: use InspectorValue to push resource data to the frontend</short_desc>
          <delta_ts>2010-10-02 14:10:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mitz</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>259388</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-03 05:31:52 -0700</bug_when>
    <thetext>Web Inspector: use InspectorValue to push resource data to the frontend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259397</commentid>
    <comment_count>1</comment_count>
      <attachid>63328</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-03 05:39:58 -0700</bug_when>
    <thetext>Created attachment 63328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259409</commentid>
    <comment_count>2</comment_count>
      <attachid>63328</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-03 06:07:28 -0700</bug_when>
    <thetext>Comment on attachment 63328
Patch

Clearing flags on attachment: 63328

Committed r64547: &lt;http://trac.webkit.org/changeset/64547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259410</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-03 06:07:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288718</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-10-02 14:10:24 -0700</bug_when>
    <thetext>r64547 caused a reproducible crash when loading certain pages with the Web Inspector open and resource tracking turned on. A backtrace looks like this, showing script execution beneath attach() and in particular, initForStyleResolve() clearing m_pendingImageProperties while loadPendingImages() is iterating over it:

#0	0x102c07827 in WebCore::CSSStyleSelector::initForStyleResolve at CSSStyleSelector.cpp:846
#1	0x102be796b in WebCore::CSSStyleSelector::styleForElement at CSSStyleSelector.cpp:1162
#2	0x102d820fe in WebCore::Element::recalcStyle at Element.cpp:931
#3	0x102d8279a in WebCore::Element::recalcStyle at Element.cpp:999
#4	0x102d8279a in WebCore::Element::recalcStyle at Element.cpp:999
#5	0x102d8279a in WebCore::Element::recalcStyle at Element.cpp:999
#6	0x102d8279a in WebCore::Element::recalcStyle at Element.cpp:999
#7	0x102d8279a in WebCore::Element::recalcStyle at Element.cpp:999
#8	0x102d8279a in WebCore::Element::recalcStyle at Element.cpp:999
#9	0x102d8279a in WebCore::Element::recalcStyle at Element.cpp:999
#10	0x102c5a851 in WebCore::Document::recalcStyle at Document.cpp:1492
#11	0x102c5a554 in WebCore::Document::updateStyleIfNeeded at Document.cpp:1536
#12	0x102c53722 in WebCore::Document::updateStyleForAllDocuments at Document.cpp:1552
#13	0x1034f5ca6 in WebCore::ScriptController::executeScript at ScriptControllerBase.cpp:64
#14	0x1034f5d77 in WebCore::ScriptController::executeScript at ScriptControllerBase.cpp:49
#15	0x1024f9f5b in WebInspectorClient::sendMessageToFrontend at WebInspectorClientCF.cpp:119
#16	0x102fe384d in WebCore::InspectorFrontend::updateResource at InspectorFrontend.cpp:314
#17	0x102ff09ca in WebCore::InspectorResource::updateScriptObject at InspectorResource.cpp:335
#18	0x102f8f20d in WebCore::InspectorController::didLoadResourceFromMemoryCache at InspectorController.cpp:932
#19	0x102df2198 in WebCore::FrameLoader::loadedResourceFromMemoryCache at FrameLoader.cpp:3026
#20	0x102adae8c in WebCore::CachedResourceLoader::checkCacheObjectStatus at CachedResourceLoader.cpp:364
#21	0x102adb9e1 in WebCore::CachedResourceLoader::requestResource at CachedResourceLoader.cpp:274
#22	0x102adbc80 in WebCore::CachedResourceLoader::requestImage at CachedResourceLoader.cpp:137
#23	0x102b7861d in WebCore::CSSImageValue::cachedImage at CSSImageValue.cpp:74
#24	0x102b7872b in WebCore::CSSImageValue::cachedImage at CSSImageValue.cpp:64
#25	0x102bc29be in WebCore::CSSStyleSelector::loadPendingImages at CSSStyleSelector.cpp:6853
#26	0x102be8486 in WebCore::CSSStyleSelector::styleForElement at CSSStyleSelector.cpp:1354
#27	0x10330ea29 in WebCore::Node::styleForRenderer at Node.cpp:1358
#28	0x10330ebc1 in WebCore::Node::createRendererIfNeeded at Node.cpp:1335
#29	0x102d82891 in WebCore::Element::attach at Element.cpp:845
#30	0x102e903ed in WebCore::HTMLConstructionSite::attach&lt;WebCore::Element&gt; at HTMLConstructionSite.cpp:111
#31	0x102e8e8ac in WebCore::HTMLConstructionSite::attachToCurrent at HTMLConstructionSite.cpp:234
#32	0x102e8ed24 in WebCore::HTMLConstructionSite::insertHTMLElement at HTMLConstructionSite.cpp:271
#33	0x102f11bea in WebCore::HTMLTreeBuilder::processStartTagForInBody at HTMLTreeBuilder.cpp:772
#34	0x102f0a6dd in WebCore::HTMLTreeBuilder::processStartTag at HTMLTreeBuilder.cpp:1201
#35	0x102f09e81 in WebCore::HTMLTreeBuilder::processToken at HTMLTreeBuilder.cpp:457
#36	0x102f13201 in WebCore::HTMLTreeBuilder::constructTreeFromAtomicToken at HTMLTreeBuilder.cpp:438
#37	0x102f132c2 in WebCore::HTMLTreeBuilder::constructTreeFromToken at HTMLTreeBuilder.cpp:433
#38	0x102e9417e in WebCore::HTMLDocumentParser::pumpTokenizer at HTMLDocumentParser.cpp:223
#39	0x102e9447a in WebCore::HTMLDocumentParser::pumpTokenizerIfPossible at HTMLDocumentParser.cpp:172
#40	0x102e94531 in WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution at HTMLDocumentParser.cpp:434
#41	0x102e946c6 in WebCore::HTMLDocumentParser::executeScriptsWaitingForStylesheets at HTMLDocumentParser.cpp:505
#42	0x102c5cae1 in WebCore::Document::removePendingSheet at Document.cpp:2791
#43	0x102ecf7a2 in WebCore::HTMLLinkElement::sheetLoaded at HTMLLinkElement.cpp:341
#44	0x102c09080 in WebCore::CSSStyleSheet::checkLoaded at CSSStyleSheet.cpp:214
#45	0x102b79f17 in WebCore::CSSImportRule::setCSSStyleSheet at CSSImportRule.cpp:104
#46	0x102ace69d in WebCore::CachedCSSStyleSheet::checkNotify at CachedCSSStyleSheet.cpp:117
#47	0x102ace6ed in WebCore::CachedCSSStyleSheet::error at CachedCSSStyleSheet.cpp:124
#48	0x102aced62 in WebCore::CachedResource::httpStatusCodeError at CachedResource.h:87
#49	0x1032c1552 in WebCore::Loader::Host::didReceiveData at loader.cpp:549
#50	0x103580c67 in WebCore::SubresourceLoader::didReceiveData at SubresourceLoader.cpp:158
#51	0x1034d165d in WebCore::ResourceLoader::didReceiveData at ResourceLoader.cpp:434</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63328</attachid>
            <date>2010-08-03 05:39:58 -0700</date>
            <delta_ts>2010-08-03 06:07:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43414-20100803163953.patch</filename>
            <type>text/plain</type>
            <size>26601</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2QwNGVmM2U0YWZhNzg1MGQzZTZlOTY2ZTgzYWIyNGE4NTMwNjMzMS4uNTM4MjM5ZDY4YmFmZTA2
NDdhNGU3ZmE1MWI5YzY3NTBiYTI4NjI3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wOC0wMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2UgSW5zcGVjdG9y
VmFsdWUgdG8gcHVzaCByZXNvdXJjZSBkYXRhIHRvIHRoZSBmcm9udGVuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0MTQKKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RGcm9udGVuZCk6IGRlc3Ryb3kgcmVtb3RlIGZyb250ZW5kIG9iamVjdCBhbG9uZyB3aXRo
IHRoZSBvbGQgaW5zcGVjdG9yIGZyb250ZW5kCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Om1haW5SZXNvdXJj
ZUZpcmVkRE9NQ29udGVudEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2Ny
aXB0SW1wb3J0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSGVh
ZGVyc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclRpbWluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRh
dGVSZXNvdXJjZSk6CisKIDIwMTAtMDgtMDIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuaWRsCmluZGV4IDI1ZGUyYjMwMWE2ZGUyNDQyOTFhMTdmNGNhMWU4M2JjZWI0NDNk
OWYuLmM3N2Q2YmQ1NTQ4NzBlMjM3N2RkNDBiNTFkM2Y1OWY1YmI3ZjM4ODQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmlkbApAQCAtNDQsNiArNDQsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtu
b3RpZnldIHZvaWQgc2V0RG9jdW1lbnQob3V0IFZhbHVlIHJvb3QpOwogICAgICAgICBbbm90aWZ5
XSB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KG91dCB1bnNpZ25lZCBsb25n
IGNvdW50KTsKICAgICAgICAgW25vdGlmeV0gdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVh
dENvdW50KG91dCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICAgICAgW25vdGlmeV0gdm9pZCB1
cGRhdGVSZXNvdXJjZShvdXQgVmFsdWUgcmVzb3VyY2UpOworICAgICAgICBbbm90aWZ5XSB2b2lk
IHJlbW92ZVJlc291cmNlKG91dCB1bnNpZ25lZCBsb25nIHJlc291cmNlSWQpOwogI2lmIGRlZmlu
ZWQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSCiAgICAgICAgIFtub3RpZnldIHZvaWQgcGF1c2VkU2NyaXB0KG91dCBWYWx1ZSBjYWxsRnJh
bWVzKTsKICAgICAgICAgW25vdGlmeV0gdm9pZCByZXN1bWVkU2NyaXB0KCk7CkBAIC02Miw3ICs2
NCw3IEBAIG1vZHVsZSBjb3JlIHsKIAogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lk
IGVuYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwogICAgICAgICBbaGFu
ZGxlcj1Db250cm9sbGVyXSB2b2lkIGRpc2FibGVSZXNvdXJjZVRyYWNraW5nKGluIGJvb2xlYW4g
YWx3YXlzKTsKLSAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBnZXRSZXNvdXJjZUNv
bnRlbnQoaW4gbG9uZyBjYWxsSWQsIGluIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAg
ICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KGluIGxvbmcg
Y2FsbElkLCBpbiB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcgY29udGVudCk7
CiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgcmVsb2FkUGFnZSgpOwogCiAgICAg
ICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgc3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDVkODFhYzMxMjJi
MGFiZTlhYjk4YWQ5NGZjMGVhYzY4NjE0OTZhNTMuLjFjNjQwMGMzNWQ4ZWE0NzMyZWI4MTgxNmZk
MTlkNzk1OWNhYzliMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC01OTUsNiArNTk1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25u
ZWN0RnJvbnRlbmQoKQogICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fZnJvbnRlbmQuY2xlYXIoKTsKKyAgICBtX3JlbW90ZUZyb250ZW5kLmNsZWFyKCk7CiAKICAg
ICBjb25uZWN0ZWRGcm9udGVuZENvdW50LS07CiAgICAgaWYgKCFjb25uZWN0ZWRGcm9udGVuZENv
dW50KQpAQCAtNjYxLDcgKzY2Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cG9wdWxh
dGVTY3JpcHRPYmplY3RzKCkKIAogICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2Vz
RW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KQotICAg
ICAgICBpdC0+c2Vjb25kLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7Cisg
ICAgICAgIGl0LT5zZWNvbmQtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3JlbW90ZUZyb250ZW5kLmdl
dCgpKTsKIAogICAgIG1fZG9tQWdlbnQtPnNldERvY3VtZW50KG1faW5zcGVjdGVkUGFnZS0+bWFp
bkZyYW1lKCktPmRvY3VtZW50KCkpOwogCkBAIC03MzMsOCArNzM0LDggQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpwcnVuZVJlc291cmNlcyhSZXNvdXJjZXNNYXAqIHJlc291cmNlTWFwLCBE
b2N1bWVudExvYWQKIAogICAgICAgICBpZiAoIWxvYWRlclRvS2VlcCB8fCAhcmVzb3VyY2UtPmlz
U2FtZUxvYWRlcihsb2FkZXJUb0tlZXApKSB7CiAgICAgICAgICAgICByZW1vdmVSZXNvdXJjZShy
ZXNvdXJjZSk7Ci0gICAgICAgICAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgICAgICAgICBy
ZXNvdXJjZS0+cmVsZWFzZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAg
ICAgIGlmIChtX3JlbW90ZUZyb250ZW5kKQorICAgICAgICAgICAgICAgIHJlc291cmNlLT5yZWxl
YXNlU2NyaXB0T2JqZWN0KG1fcmVtb3RlRnJvbnRlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtNzk1LDcgKzc5Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29t
bWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIC8vIFdlIGRv
bid0IGFkZCB0aGUgbWFpbiByZXNvdXJjZSB1bnRpbCBpdHMgbG9hZCBpcyBjb21taXR0ZWQuIFRo
aXMgaXMKICAgICAgICAgICAgICAgICAvLyBuZWVkZWQgdG8ga2VlcCB0aGUgbG9hZCBmb3IgYSB1
c2VyLWVudGVyZWQgVVJMIGZyb20gc2hvd2luZyB1cCBpbiB0aGUKICAgICAgICAgICAgICAgICAv
LyBsaXN0IG9mIHJlc291cmNlcyBmb3IgdGhlIHBhZ2UgdGhleSBhcmUgbmF2aWdhdGluZyBhd2F5
IGZyb20uCi0gICAgICAgICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVj
dChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+dXBk
YXRlU2NyaXB0T2JqZWN0KG1fcmVtb3RlRnJvbnRlbmQuZ2V0KCkpOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLyBQYWdlcyBsb2FkZWQgZnJvbSB0aGUgcGFnZSBjYWNo
ZSBhcmUgY29tbWl0dGVkIGJlZm9yZQogICAgICAgICAgICAgICAgIC8vIG1fbWFpblJlc291cmNl
IGlzIHRoZSByaWdodCByZXNvdXJjZSBmb3IgdGhpcyBsb2FkLCBzbyB3ZQpAQCAtOTA2LDggKzkw
Nyw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAKICAgICBhZGRSZXNvdXJjZShyZXNvdXJj
ZS5nZXQoKSk7CiAKLSAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0
ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICBpZiAobV9yZW1vdGVGcm9udGVu
ZCkKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3JlbW90ZUZyb250ZW5k
LmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppZGVudGlmaWVyRm9ySW5p
dGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC05MzAsOCArOTMxLDggQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLAogCiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkp
OwogCi0gICAgaWYgKG1fZnJvbnRlbmQgJiYgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5pc0xvYWRp
bmdGcm9tQ2FjaGVkUGFnZSgpICYmIHJlc291cmNlID09IG1fbWFpblJlc291cmNlKQotICAgICAg
ICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgIGlm
IChtX3JlbW90ZUZyb250ZW5kICYmIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nRnJv
bUNhY2hlZFBhZ2UoKSAmJiByZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSkKKyAgICAgICAgcmVz
b3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3JlbW90ZUZyb250ZW5kLmdldCgpKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZERPTUNvbnRlbnRFdmVu
dChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCkBAIC05NDMsOCArOTQ0
LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZERPTUNvbnRl
bnRFdmVudChEb2N1bWVudExvYWRlciogbG9hZGUKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPm1h
cmtET01Db250ZW50RXZlbnRUaW1lKCk7CiAgICAgICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAg
ICAgICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmRpZE1hcmtET01Db250ZW50RXZlbnQoKTsKLSAg
ICAgICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+dXBkYXRl
U2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICBpZiAobV9yZW1vdGVGcm9u
dGVuZCkKKyAgICAgICAgICAgIG1fbWFpblJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9y
ZW1vdGVGcm9udGVuZC5nZXQoKSk7CiAgICAgfQogfQogCkBAIC05NTcsOCArOTU4LDggQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZExvYWRFdmVudChEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBjb24KICAgICAgICAgbV9tYWluUmVzb3VyY2UtPm1hcmtMb2FkRXZl
bnRUaW1lKCk7CiAgICAgICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAgICAgICAgICAgICBtX3Rp
bWVsaW5lQWdlbnQtPmRpZE1hcmtMb2FkRXZlbnQoKTsKLSAgICAgICAgaWYgKG1fZnJvbnRlbmQp
Ci0gICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRl
bmQuZ2V0KCkpOworICAgICAgICBpZiAobV9yZW1vdGVGcm9udGVuZCkKKyAgICAgICAgICAgIG1f
bWFpblJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9yZW1vdGVGcm9udGVuZC5nZXQoKSk7
CiAgICAgfQogfQogCkBAIC0xMDA1LDggKzEwMDYsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVx
dQogICAgIHJlc291cmNlLT5zdGFydFRpbWluZygpOwogICAgIHJlc291cmNlLT51cGRhdGVSZXF1
ZXN0KHJlcXVlc3QpOwogCi0gICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291cmNlICYmIG1f
ZnJvbnRlbmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVu
ZC5nZXQoKSk7CisgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291cmNlICYmIG1fcmVtb3Rl
RnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9yZW1vdGVG
cm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCkBAIC0xMDE3LDggKzEwMTgsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
cwogICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IHJlc291cmNlID0gZ2V0VHJhY2tl
ZFJlc291cmNlKGlkZW50aWZpZXIpKSB7CiAgICAgICAgIHJlc291cmNlLT51cGRhdGVSZXNwb25z
ZShyZXNwb25zZSk7CiAKLSAgICAgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291cmNlICYm
IG1fZnJvbnRlbmQpCi0gICAgICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
ZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICBpZiAocmVzb3VyY2UgIT0gbV9tYWluUmVzb3VyY2Ug
JiYgbV9yZW1vdGVGcm9udGVuZCkKKyAgICAgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRP
YmplY3QobV9yZW1vdGVGcm9udGVuZC5nZXQoKSk7CiAgICAgfQogICAgIGlmIChyZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICAvLyBUaGUgdWdseSBjb2RlIGJlbG93
IGlzIGR1ZSB0byB0aGF0IFN0cmluZzo6Zm9ybWF0KCkgaXMgbm90IHV0Zjgtc2FmZSBhdCB0aGUg
bW9tZW50LgpAQCAtMTAzOSw4ICsxMDQwLDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludAogCiAg
ICAgcmVzb3VyY2UtPmFkZExlbmd0aChsZW5ndGhSZWNlaXZlZCk7CiAKLSAgICBpZiAocmVzb3Vy
Y2UgIT0gbV9tYWluUmVzb3VyY2UgJiYgbV9mcm9udGVuZCkKLSAgICAgICAgcmVzb3VyY2UtPnVw
ZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICBpZiAocmVzb3VyY2UgIT0g
bV9tYWluUmVzb3VyY2UgJiYgbV9yZW1vdGVGcm9udGVuZCkKKyAgICAgICAgcmVzb3VyY2UtPnVw
ZGF0ZVNjcmlwdE9iamVjdChtX3JlbW90ZUZyb250ZW5kLmdldCgpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKQEAgLTEwNTgsOCArMTA1OSw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAgICAgcmVzb3VyY2UtPmVuZFRp
bWluZygpOwogCiAgICAgLy8gTm8gbmVlZCB0byBtdXRlIHRoaXMgZXZlbnQgZm9yIG1haW4gcmVz
b3VyY2Ugc2luY2UgaXQgaGFwcGVucyBhZnRlciBkaWQgY29tbWl0IGxvYWQuCi0gICAgaWYgKG1f
ZnJvbnRlbmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVu
ZC5nZXQoKSk7CisgICAgaWYgKG1fcmVtb3RlRnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51
cGRhdGVTY3JpcHRPYmplY3QobV9yZW1vdGVGcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEwODMsOCArMTA4NCw4IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjCiAgICAgcmVzb3VyY2UtPmVuZFRpbWluZygpOwogCiAgICAgLy8g
Tm8gbmVlZCB0byBtdXRlIHRoaXMgZXZlbnQgZm9yIG1haW4gcmVzb3VyY2Ugc2luY2UgaXQgaGFw
cGVucyBhZnRlciBkaWQgY29tbWl0IGxvYWQuCi0gICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAg
IHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisgICAgaWYg
KG1fcmVtb3RlRnJvbnRlbmQpCisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3Qo
bV9yZW1vdGVGcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQpAQCAtMTEwNCw4
ICsxMTA1LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGkKIAogICAgIHJlc291cmNlLT5zZXRP
dmVycmlkZUNvbnRlbnQoc291cmNlU3RyaW5nLCBJbnNwZWN0b3JSZXNvdXJjZTo6WEhSKTsKIAot
ICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgIGlmIChtX3JlbW90ZUZyb250ZW5kKQorICAgICAgICBy
ZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fcmVtb3RlRnJvbnRlbmQuZ2V0KCkpOwogfQog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCkBAIC0xMTE5LDggKzExMjAs
OCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJgogCiAgICAgcmVzb3VyY2UtPnNldE92ZXJyaWRl
Q29udGVudChTY3JpcHRTdHJpbmcoc291cmNlU3RyaW5nKSwgSW5zcGVjdG9yUmVzb3VyY2U6OlNj
cmlwdCk7CiAKLSAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNj
cmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICBpZiAobV9yZW1vdGVGcm9udGVuZCkK
KyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3JlbW90ZUZyb250ZW5kLmdl
dCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVSZXNvdXJjZVRyYWNr
aW5nKGJvb2wgYWx3YXlzLCBib29sIHJlbG9hZCkKQEAgLTIxODIsMTQgKzIxODMsMTIgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVBbGxTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCgp
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0UmVzb3VyY2VDb250ZW50KGxvbmcgY2Fs
bElkLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kKQor
ICAgIGlmICghbV9yZW1vdGVGcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRy
PEluc3BlY3RvclJlc291cmNlPiByZXNvdXJjZSA9IG1fcmVzb3VyY2VzLmdldChpZGVudGlmaWVy
KTsKLSAgICBpZiAocmVzb3VyY2UpCi0gICAgICAgIG1fZnJvbnRlbmQtPmRpZEdldFJlc291cmNl
Q29udGVudChjYWxsSWQsIHJlc291cmNlLT5zb3VyY2VTdHJpbmcoKSk7Ci0gICAgZWxzZQotICAg
ICAgICBtX2Zyb250ZW5kLT5kaWRHZXRSZXNvdXJjZUNvbnRlbnQoY2FsbElkLCAiIik7CisgICAg
U3RyaW5nIGNvbnRlbnQgPSByZXNvdXJjZSA/IHJlc291cmNlLT5zb3VyY2VTdHJpbmcoKSA6IFN0
cmluZygpOworICAgIG1fcmVtb3RlRnJvbnRlbmQtPmRpZEdldFJlc291cmNlQ29udGVudChjYWxs
SWQsIGNvbnRlbnQpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlbG9hZFBhZ2Uo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCmluZGV4IDhjZmQ3MzAxM2Yw
NGJjODM3YTQ4YzRhZjIyY2RhZmUxMDE3NTE0YmUuLjI5NmYwMDg3OGMzZjFkMjFlMjM5Njk4MGYx
NTRkMjFlZWIyYTJiN2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAK
QEAgLTEwMyw2MyArMTAzLDYgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVTZXNz
aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKICAgICBmdW5jdGlvbi5jYWxsKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJl
ZENvdW50KHVuc2lnbmVkIGNvdW50KQotewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX3dlYkluc3BlY3RvciwgImRpc3BhdGNoIik7IAotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KCJ1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCIpOwotICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGNvdW50KTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7Ci19Ci0KLXZvaWQgSW5z
cGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVz
c2FnZU9iaikKLXsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0
b3IsICJkaXNwYXRjaCIpOyAKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgiYWRkQ29uc29s
ZU1lc3NhZ2UiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXNzYWdlT2JqKTsKLSAg
ICBmdW5jdGlvbi5jYWxsKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNv
bnNvbGVNZXNzYWdlUmVwZWF0Q291bnQodW5zaWduZWQgY291bnQpCi17Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsgCi0gICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoInVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQiKTsK
LSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjb3VudCk7Ci0gICAgZnVuY3Rpb24uY2FsbCgp
OwotfQotCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjpjbGVhckNvbnNvbGVNZXNzYWdlcygpCi17
Ci0gICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJjbGVhckNvbnNvbGVNZXNzYWdlcyIpOwotfQotCi1i
b29sIEluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFNjcmlwdE9iamVjdCYgcmVzb3VyY2VPYmopCi17Ci0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsgCi0gICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoInVwZGF0ZVJlc291cmNlIik7Ci0gICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoaWRlbnRpZmllcik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQocmVz
b3VyY2VPYmopOwotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgZnVuY3Rpb24u
Y2FsbChoYWRFeGNlcHRpb24pOwotICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOwotfQotCi12b2lk
IEluc3BlY3RvckZyb250ZW5kOjpyZW1vdmVSZXNvdXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCi17Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAi
ZGlzcGF0Y2giKTsgCi0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoInJlbW92ZVJlc291cmNl
Iik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaWRlbnRpZmllcik7Ci0gICAgZnVuY3Rp
b24uY2FsbCgpOwotfQotCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRSZXNvdXJjZUNv
bnRlbnQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgY29udGVudCkKLXsKLSAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIpOwotICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KCJkaWRHZXRSZXNvdXJjZUNvbnRlbnQiKTsKLSAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChjYWxsSWQpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGNvbnRlbnQpOwotICAgIGZ1bmN0aW9uLmNhbGwoKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6dXBkYXRlRm9jdXNlZE5vZGUobG9uZyBub2RlSWQpCiB7CiAgICAgU2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCAyZDM3ZGQzYzFkNTQ3ZjBkODQ0MDkyNzcxODJk
NDdmNjUyZmJjNGNlLi4zODQ2YmQ0NWVkY2UxZGZmZDlkYWIwZmRlOTZlOTA1ZjdjNjgyYmJmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTY3LDE1ICs2Nyw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwb3B1bGF0ZUFwcGxpY2F0aW9uU2V0dGlu
Z3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncyk7CiAgICAgICAgIHZvaWQgcG9wdWxhdGVTZXNzaW9u
U2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncyk7CiAKLSAgICAgICAgdm9pZCB1cGRhdGVD
b25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCh1bnNpZ25lZCBjb3VudCk7Ci0gICAgICAgIHZvaWQg
YWRkQ29uc29sZU1lc3NhZ2UoY29uc3QgU2NyaXB0T2JqZWN0JiBtZXNzYWdlT2JqKTsKLSAgICAg
ICAgdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZVJlcGVhdENvdW50KHVuc2lnbmVkIGNvdW50KTsK
LSAgICAgICAgdm9pZCBjbGVhckNvbnNvbGVNZXNzYWdlcygpOwotCi0gICAgICAgIGJvb2wgdXBk
YXRlUmVzb3VyY2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRPYmplY3Qm
IHJlc291cmNlT2JqKTsKLSAgICAgICAgdm9pZCByZW1vdmVSZXNvdXJjZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpOwotICAgICAgICB2b2lkIGRpZEdldFJlc291cmNlQ29udGVudChsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKLQogICAgICAgICB2b2lkIHVwZGF0ZUZvY3Vz
ZWROb2RlKGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9pZCBzaG93UGFuZWwoaW50IHBhbmVsKTsK
ICAgICAgICAgdm9pZCBwb3B1bGF0ZUludGVyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2UuY3BwCmluZGV4IDY5NjE4YzNiODBlMTA2OGJiYzJmOWJmNDdkOGEyZWMwZmQz
NjQ0YTcuLjkyNTlkNzllZTVlNWZmNzFhNzcxYjZkNWY4MmRmZGY2YTc4OTA2ODggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQAogI2lu
Y2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckZyb250ZW5kLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTE0Niw4MCArMTQ2LDEwMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX2NoYW5nZXMuc2V0
KFR5cGVDaGFuZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoU2Ny
aXB0T2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCitzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkSGVhZGVyc09iamVjdChjb25zdCBIVFRQ
SGVhZGVyTWFwJiBoZWFkZXJzKQogeworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVj
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgb2JqZWN0LT5zZXQoaXQtPmZpcnN0LnN0cmluZygpLCBpdC0+c2Vjb25kKTsKKyAgICAg
ICAgb2JqZWN0LT5zZXRTdHJpbmcoaXQtPmZpcnN0LnN0cmluZygpLCBpdC0+c2Vjb25kKTsKICAg
ICB9CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBk
YXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3N0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JUaW1pbmcoUmVzb3VyY2VMb2Fk
VGltaW5nKiB0aW1pbmcpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk9iamVj
dCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAganNvbk9iamVjdC0+c2V0TnVtYmVy
KCJyZXF1ZXN0VGltZSIsIHRpbWluZy0+cmVxdWVzdFRpbWUpOworICAgIGpzb25PYmplY3QtPnNl
dE51bWJlcigicHJveHlTdGFydCIsIHRpbWluZy0+cHJveHlTdGFydCk7CisgICAganNvbk9iamVj
dC0+c2V0TnVtYmVyKCJwcm94eUVuZCIsIHRpbWluZy0+cHJveHlFbmQpOworICAgIGpzb25PYmpl
Y3QtPnNldE51bWJlcigiZG5zU3RhcnQiLCB0aW1pbmctPmRuc1N0YXJ0KTsKKyAgICBqc29uT2Jq
ZWN0LT5zZXROdW1iZXIoImRuc0VuZCIsIHRpbWluZy0+ZG5zRW5kKTsKKyAgICBqc29uT2JqZWN0
LT5zZXROdW1iZXIoImNvbm5lY3RTdGFydCIsIHRpbWluZy0+Y29ubmVjdFN0YXJ0KTsKKyAgICBq
c29uT2JqZWN0LT5zZXROdW1iZXIoImNvbm5lY3RFbmQiLCB0aW1pbmctPmNvbm5lY3RFbmQpOwor
ICAgIGpzb25PYmplY3QtPnNldE51bWJlcigic3NsU3RhcnQiLCB0aW1pbmctPnNzbFN0YXJ0KTsK
KyAgICBqc29uT2JqZWN0LT5zZXROdW1iZXIoInNzbEVuZCIsIHRpbWluZy0+c3NsRW5kKTsKKyAg
ICBqc29uT2JqZWN0LT5zZXROdW1iZXIoInNlbmRTdGFydCIsIHRpbWluZy0+c2VuZFN0YXJ0KTsK
KyAgICBqc29uT2JqZWN0LT5zZXROdW1iZXIoInNlbmRFbmQiLCB0aW1pbmctPnNlbmRFbmQpOwor
ICAgIGpzb25PYmplY3QtPnNldE51bWJlcigicmVjZWl2ZUhlYWRlcnNFbmQiLCB0aW1pbmctPnJl
Y2VpdmVIZWFkZXJzRW5kKTsKKyAgICByZXR1cm4ganNvbk9iamVjdDsKK30KKworCit2b2lkIElu
c3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoUmVtb3RlSW5zcGVjdG9yRnJvbnRl
bmQqIGZyb250ZW5kKQogewogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKE5vQ2hhbmdlKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0T2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVu
ZC0+bmV3U2NyaXB0T2JqZWN0KCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk9i
amVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAganNvbk9iamVjdC0+c2V0TnVt
YmVyKCJpZCIsIG1faWRlbnRpZmllcik7CiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoUmVx
dWVzdENoYW5nZSkpIHsKLSAgICAgICAganNvbk9iamVjdC5zZXQoInVybCIsIG1fcmVxdWVzdFVS
TC5zdHJpbmcoKSk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJkb2N1bWVudFVSTCIsIG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKLSAgICAgICAganNvbk9iamVjdC5zZXQo
Imhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKLSAgICAgICAganNvbk9iamVjdC5zZXQoInBh
dGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKLSAgICAgICAganNvbk9iamVjdC5zZXQoImxhc3RQ
YXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkpOwotICAgICAg
ICBTY3JpcHRPYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0
KCk7Ci0gICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVxdWVzdEhlYWRlcnMsIG1fcmVx
dWVzdEhlYWRlckZpZWxkcyk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0SGVhZGVy
cyIsIHJlcXVlc3RIZWFkZXJzKTsKLSAgICAgICAganNvbk9iamVjdC5zZXQoIm1haW5SZXNvdXJj
ZSIsIG1faXNNYWluUmVzb3VyY2UpOwotICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdE1l
dGhvZCIsIG1fcmVxdWVzdE1ldGhvZCk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0
Rm9ybURhdGEiLCBtX3JlcXVlc3RGb3JtRGF0YSk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJk
aWRSZXF1ZXN0Q2hhbmdlIiwgdHJ1ZSk7CisgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygi
dXJsIiwgbV9yZXF1ZXN0VVJMLnN0cmluZygpKTsKKyAgICAgICAganNvbk9iamVjdC0+c2V0U3Ry
aW5nKCJkb2N1bWVudFVSTCIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsK
KyAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKCJob3N0IiwgbV9yZXF1ZXN0VVJMLmhvc3Qo
KSk7CisgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZygicGF0aCIsIG1fcmVxdWVzdFVSTC5w
YXRoKCkpOworICAgICAgICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoImxhc3RQYXRoQ29tcG9uZW50
IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZXF1ZXN0SGVhZGVycyA9IGJ1aWxkSGVhZGVyc09iamVjdChtX3JlcXVl
c3RIZWFkZXJGaWVsZHMpOworICAgICAgICBqc29uT2JqZWN0LT5zZXQoInJlcXVlc3RIZWFkZXJz
IiwgcmVxdWVzdEhlYWRlcnMpOworICAgICAgICBqc29uT2JqZWN0LT5zZXRCb29sKCJtYWluUmVz
b3VyY2UiLCBtX2lzTWFpblJlc291cmNlKTsKKyAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5n
KCJyZXF1ZXN0TWV0aG9kIiwgbV9yZXF1ZXN0TWV0aG9kKTsKKyAgICAgICAganNvbk9iamVjdC0+
c2V0U3RyaW5nKCJyZXF1ZXN0Rm9ybURhdGEiLCBtX3JlcXVlc3RGb3JtRGF0YSk7CisgICAgICAg
IGpzb25PYmplY3QtPnNldEJvb2woImRpZFJlcXVlc3RDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAK
ICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXNwb25zZUNoYW5nZSkpIHsKLSAgICAgICAg
anNvbk9iamVjdC5zZXQoIm1pbWVUeXBlIiwgbV9taW1lVHlwZSk7Ci0gICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAg
ICBqc29uT2JqZWN0LnNldCgiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENvbnRl
bnRMZW5ndGgpOwotICAgICAgICBqc29uT2JqZWN0LnNldCgic3RhdHVzQ29kZSIsIG1fcmVzcG9u
c2VTdGF0dXNDb2RlKTsKLSAgICAgICAganNvbk9iamVjdC5zZXQoInN0YXR1c1RleHQiLCBtX3Jl
c3BvbnNlU3RhdHVzVGV4dCk7Ci0gICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25zZUhlYWRlcnMg
PSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7Ci0gICAgICAgIHBvcHVsYXRlSGVhZGVyc09i
amVjdCgmcmVzcG9uc2VIZWFkZXJzLCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzKTsKLSAgICAgICAg
anNvbk9iamVjdC5zZXQoInJlc3BvbnNlSGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7Ci0gICAg
ICAgIGpzb25PYmplY3Quc2V0KCJjb25uZWN0aW9uSUQiLCBtX2Nvbm5lY3Rpb25JRCk7Ci0gICAg
ICAgIGpzb25PYmplY3Quc2V0KCJjb25uZWN0aW9uUmV1c2VkIiwgbV9jb25uZWN0aW9uUmV1c2Vk
KTsKLSAgICAgICAganNvbk9iamVjdC5zZXQoImNhY2hlZCIsIG1fY2FjaGVkKTsKKyAgICAgICAg
anNvbk9iamVjdC0+c2V0U3RyaW5nKCJtaW1lVHlwZSIsIG1fbWltZVR5cGUpOworICAgICAgICBq
c29uT2JqZWN0LT5zZXRTdHJpbmcoInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxl
bmFtZSk7CisgICAgICAgIGpzb25PYmplY3QtPnNldE51bWJlcigiZXhwZWN0ZWRDb250ZW50TGVu
Z3RoIiwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgICBqc29uT2JqZWN0LT5zZXRO
dW1iZXIoInN0YXR1c0NvZGUiLCBtX3Jlc3BvbnNlU3RhdHVzQ29kZSk7CisgICAgICAgIGpzb25P
YmplY3QtPnNldFN0cmluZygic3RhdHVzVGV4dCIsIG1fcmVzcG9uc2VTdGF0dXNUZXh0KTsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VIZWFkZXJzID0gYnVpbGRIZWFk
ZXJzT2JqZWN0KG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOworICAgICAgICBqc29uT2JqZWN0LT5z
ZXQoInJlc3BvbnNlSGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7CisgICAgICAgIGpzb25PYmpl
Y3QtPnNldE51bWJlcigiY29ubmVjdGlvbklEIiwgbV9jb25uZWN0aW9uSUQpOworICAgICAgICBq
c29uT2JqZWN0LT5zZXRCb29sKCJjb25uZWN0aW9uUmV1c2VkIiwgbV9jb25uZWN0aW9uUmV1c2Vk
KTsKKyAgICAgICAganNvbk9iamVjdC0+c2V0Qm9vbCgiY2FjaGVkIiwgbV9jYWNoZWQpOwogICAg
ICAgICBpZiAobV9sb2FkVGltaW5nICYmICFtX2NhY2hlZCkKLSAgICAgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZyhmcm9udGVuZCwgbV9sb2FkVGlt
aW5nLmdldCgpKSk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRSZXNwb25zZUNoYW5nZSIs
IHRydWUpOworICAgICAgICAgICAganNvbk9iamVjdC0+c2V0KCJ0aW1pbmciLCBidWlsZE9iamVj
dEZvclRpbWluZyhtX2xvYWRUaW1pbmcuZ2V0KCkpKTsKKyAgICAgICAganNvbk9iamVjdC0+c2V0
Qm9vbCgiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFu
Z2VzLmhhc0NoYW5nZShUeXBlQ2hhbmdlKSkgewotICAgICAgICBqc29uT2JqZWN0LnNldCgidHlw
ZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgpKSk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJk
aWRUeXBlQ2hhbmdlIiwgdHJ1ZSk7CisgICAgICAgIGpzb25PYmplY3QtPnNldE51bWJlcigidHlw
ZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgpKSk7CisgICAgICAgIGpzb25PYmplY3QtPnNldEJv
b2woImRpZFR5cGVDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhh
c0NoYW5nZShMZW5ndGhDaGFuZ2UpKSB7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXNvdXJj
ZVNpemUiLCBtX2xlbmd0aCk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRMZW5ndGhDaGFu
Z2UiLCB0cnVlKTsKKyAgICAgICAganNvbk9iamVjdC0+c2V0TnVtYmVyKCJyZXNvdXJjZVNpemUi
LCBtX2xlbmd0aCk7CisgICAgICAgIGpzb25PYmplY3QtPnNldEJvb2woImRpZExlbmd0aENoYW5n
ZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKENvbXBsZXRp
b25DaGFuZ2UpKSB7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJmYWlsZWQiLCBtX2ZhaWxlZCk7
Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJmaW5pc2hlZCIsIG1fZmluaXNoZWQpOwotICAgICAg
ICBqc29uT2JqZWN0LnNldCgiZGlkQ29tcGxldGlvbkNoYW5nZSIsIHRydWUpOworICAgICAgICBq
c29uT2JqZWN0LT5zZXRCb29sKCJmYWlsZWQiLCBtX2ZhaWxlZCk7CisgICAgICAgIGpzb25PYmpl
Y3QtPnNldEJvb2woImZpbmlzaGVkIiwgbV9maW5pc2hlZCk7CisgICAgICAgIGpzb25PYmplY3Qt
PnNldEJvb2woImRpZENvbXBsZXRpb25DaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAo
bV9jaGFuZ2VzLmhhc0NoYW5nZShUaW1pbmdDaGFuZ2UpKSB7CiAgICAgICAgIGlmIChtX3N0YXJ0
VGltZSA+IDApCi0gICAgICAgICAgICBqc29uT2JqZWN0LnNldCgic3RhcnRUaW1lIiwgbV9zdGFy
dFRpbWUpOworICAgICAgICAgICAganNvbk9iamVjdC0+c2V0TnVtYmVyKCJzdGFydFRpbWUiLCBt
X3N0YXJ0VGltZSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lID4gMCkKLSAg
ICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXNwb25zZVJlY2VpdmVkVGltZSIsIG1fcmVzcG9u
c2VSZWNlaXZlZFRpbWUpOworICAgICAgICAgICAganNvbk9iamVjdC0+c2V0TnVtYmVyKCJyZXNw
b25zZVJlY2VpdmVkVGltZSIsIG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUpOwogICAgICAgICBpZiAo
bV9lbmRUaW1lID4gMCkKLSAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJlbmRUaW1lIiwgbV9l
bmRUaW1lKTsKKyAgICAgICAgICAgIGpzb25PYmplY3QtPnNldE51bWJlcigiZW5kVGltZSIsIG1f
ZW5kVGltZSk7CiAgICAgICAgIGlmIChtX2xvYWRFdmVudFRpbWUgPiAwKQotICAgICAgICAgICAg
anNvbk9iamVjdC5zZXQoImxvYWRFdmVudFRpbWUiLCBtX2xvYWRFdmVudFRpbWUpOworICAgICAg
ICAgICAganNvbk9iamVjdC0+c2V0TnVtYmVyKCJsb2FkRXZlbnRUaW1lIiwgbV9sb2FkRXZlbnRU
aW1lKTsKICAgICAgICAgaWYgKG1fZG9tQ29udGVudEV2ZW50VGltZSA+IDApCi0gICAgICAgICAg
ICBqc29uT2JqZWN0LnNldCgiZG9tQ29udGVudEV2ZW50VGltZSIsIG1fZG9tQ29udGVudEV2ZW50
VGltZSk7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRUaW1pbmdDaGFuZ2UiLCB0cnVlKTsK
KyAgICAgICAgICAgIGpzb25PYmplY3QtPnNldE51bWJlcigiZG9tQ29udGVudEV2ZW50VGltZSIs
IG1fZG9tQ29udGVudEV2ZW50VGltZSk7CisgICAgICAgIGpzb25PYmplY3QtPnNldEJvb2woImRp
ZFRpbWluZ0NoYW5nZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hh
bmdlKFJlZGlyZWN0c0NoYW5nZSkpIHsKQEAgLTIyNywxMSArMjQ3LDExIEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpCiAgICAgICAgICAgICBtX3JlZGlyZWN0c1tpXS0+dXBkYXRlU2NyaXB0T2JqZWN0KGZyb250
ZW5kKTsKICAgICB9CiAKLSAgICBpZiAoZnJvbnRlbmQtPnVwZGF0ZVJlc291cmNlKG1faWRlbnRp
ZmllciwganNvbk9iamVjdCkpCi0gICAgICAgIG1fY2hhbmdlcy5jbGVhckFsbCgpOworICAgIGZy
b250ZW5kLT51cGRhdGVSZXNvdXJjZShqc29uT2JqZWN0KTsKKyAgICBtX2NoYW5nZXMuY2xlYXJB
bGwoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6cmVsZWFzZVNjcmlwdE9iamVjdChJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit2b2lkIEluc3BlY3RvclJlc291cmNlOjpyZWxl
YXNlU2NyaXB0T2JqZWN0KFJlbW90ZUluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKICAg
ICBtX2NoYW5nZXMuc2V0QWxsKCk7CiAKQEAgLTM5MCwyNCArNDEwLDYgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZTo6YWRkTGVuZ3RoKGludCBsZW5ndGhSZWNlaXZlZCkKICAgICBtX2NoYW5nZXMu
c2V0KFRpbWluZ0NoYW5nZSk7CiB9CiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JSZXNvdXJjZTo6
YnVpbGRPYmplY3RGb3JUaW1pbmcoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBSZXNvdXJj
ZUxvYWRUaW1pbmcqIHRpbWluZykKLXsKLSAgICBTY3JpcHRPYmplY3QganNvbk9iamVjdCA9IGZy
b250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKLSAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdFRp
bWUiLCB0aW1pbmctPnJlcXVlc3RUaW1lKTsKLSAgICBqc29uT2JqZWN0LnNldCgicHJveHlTdGFy
dCIsIHRpbWluZy0+cHJveHlTdGFydCk7Ci0gICAganNvbk9iamVjdC5zZXQoInByb3h5RW5kIiwg
dGltaW5nLT5wcm94eUVuZCk7Ci0gICAganNvbk9iamVjdC5zZXQoImRuc1N0YXJ0IiwgdGltaW5n
LT5kbnNTdGFydCk7Ci0gICAganNvbk9iamVjdC5zZXQoImRuc0VuZCIsIHRpbWluZy0+ZG5zRW5k
KTsKLSAgICBqc29uT2JqZWN0LnNldCgiY29ubmVjdFN0YXJ0IiwgdGltaW5nLT5jb25uZWN0U3Rh
cnQpOwotICAgIGpzb25PYmplY3Quc2V0KCJjb25uZWN0RW5kIiwgdGltaW5nLT5jb25uZWN0RW5k
KTsKLSAgICBqc29uT2JqZWN0LnNldCgic3NsU3RhcnQiLCB0aW1pbmctPnNzbFN0YXJ0KTsKLSAg
ICBqc29uT2JqZWN0LnNldCgic3NsRW5kIiwgdGltaW5nLT5zc2xFbmQpOwotICAgIGpzb25PYmpl
Y3Quc2V0KCJzZW5kU3RhcnQiLCB0aW1pbmctPnNlbmRTdGFydCk7Ci0gICAganNvbk9iamVjdC5z
ZXQoInNlbmRFbmQiLCB0aW1pbmctPnNlbmRFbmQpOwotICAgIGpzb25PYmplY3Quc2V0KCJyZWNl
aXZlSGVhZGVyc0VuZCIsIHRpbWluZy0+cmVjZWl2ZUhlYWRlcnNFbmQpOwotICAgIHJldHVybiBq
c29uT2JqZWN0OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKaW5kZXggNDhl
MWEyMDU5N2UwZWRjODg1MThkZTU3OTZlNzU0OWM3NjA2OWRhYi4uNGMxMmVhMDE1N2ZiMDU3OTBj
MjI1NDU4NjM3YTg3MGE0MzUwYWMzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZS5oCkBAIC0zMyw4ICszMyw2IEBACiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgotI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgiCiAKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KQEAgLTQ3LDggKzQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiAgICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7Ci0gICAgY2xh
c3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgUmVtb3Rl
SW5zcGVjdG9yRnJvbnRlbmQ7CiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5nOwogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNzgs
OCArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5JbnNwZWN0b3JSZXNvdXJj
ZSgpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IGFwcGVuZFJlZGly
ZWN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVkaXJlY3RVUkwpOwot
ICAgICAgICB2b2lkIHVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpOwotICAgICAgICB2b2lkIHJlbGVhc2VTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKTsKKyAgICAgICAgdm9pZCB1cGRhdGVTY3JpcHRPYmplY3QoUmVtb3RlSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKKyAgICAgICAgdm9pZCByZWxlYXNlU2NyaXB0T2JqZWN0
KFJlbW90ZUluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCk7CiAKICAgICAgICAgdm9pZCB1cGRh
dGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2b2lkIHVwZGF0ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTE1MSw4ICsxNDksNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKCkgY29uc3Q7
CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0OwogCi0gICAg
ICAgIFNjcmlwdE9iamVjdCBidWlsZE9iamVjdEZvclRpbWluZyhJbnNwZWN0b3JGcm9udGVuZCos
IFJlc291cmNlTG9hZFRpbWluZyopOwotCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlm
aWVyOwogICAgICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fbG9hZGVyOwogICAgICAgICBS
ZWZQdHI8RnJhbWU+IG1fZnJhbWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcwppbmRleCA0YmIzMGM3NjMxMjg0MWU0YjhjODU3ZTMyNzNiNTQwY2EyZTRmODljLi45YjRi
NTI1NDg0NzgyNjAxZWIzNDIxOTE1Y2ZmYmFjYzQ1ZWU1MjgyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTExNDQsOCArMTE0NCw5IEBAIFdlYkluc3BlY3Rv
ci5zZWxlY3RET01TdG9yYWdlID0gZnVuY3Rpb24obykKICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnN0b3JhZ2Uuc2VsZWN0RE9NU3RvcmFnZShvKTsKIH0KIAotV2ViSW5zcGVjdG9yLnVwZGF0ZVJl
c291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKK1dlYkluc3BlY3Rvci51cGRh
dGVSZXNvdXJjZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7CisgICAgdmFyIGlkZW50aWZpZXIgPSBw
YXlsb2FkLmlkOwogICAgIHZhciByZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VzW2lkZW50aWZpZXJd
OwogICAgIGlmICghcmVzb3VyY2UpIHsKICAgICAgICAgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVj
dG9yLlJlc291cmNlKGlkZW50aWZpZXIsIHBheWxvYWQudXJsKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>