<?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>52999</bug_id>
          
          <creation_ts>2011-01-24 02:19:52 -0800</creation_ts>
          <short_desc>Web Inspector: debugger and browser debugger agents should manage sticky breakpoints independently</short_desc>
          <delta_ts>2011-01-25 01:44:59 -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>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>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>338905</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-24 02:19:52 -0800</bug_when>
    <thetext>Web Inspector: debugger and browser debugger agents should manage sticky breakpoints independently.

This is a second step of debugger api refactoring (see bug 52879).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338906</commentid>
    <comment_count>1</comment_count>
      <attachid>79904</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-24 02:20:32 -0800</bug_when>
    <thetext>Created attachment 79904
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338909</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-24 02:22:16 -0800</bug_when>
    <thetext>Attachment 79904 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h:61:  The parameter name &quot;breakpoints&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorDebuggerAgent.h:64:  The parameter name &quot;breakpoints&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 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>338911</commentid>
    <comment_count>3</comment_count>
      <attachid>79906</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-24 02:23:28 -0800</bug_when>
    <thetext>Created attachment 79906
Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338915</commentid>
    <comment_count>4</comment_count>
      <attachid>79904</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-24 02:27:14 -0800</bug_when>
    <thetext>Comment on attachment 79904
Patch.

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

&gt; Source/WebCore/inspector/front-end/BreakpointManager.js:333
&gt; +        InspectorBackend.setAllJavaScriptBreakpoints(allJavaScriptBreakpoints);

Why do we push JavaScript breakpoints to the backend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338917</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-24 02:34:54 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 79904 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79904&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/BreakpointManager.js:333
&gt; &gt; +        InspectorBackend.setAllJavaScriptBreakpoints(allJavaScriptBreakpoints);
&gt; 
&gt; Why do we push JavaScript breakpoints to the backend?

Because JavaScript breakpoints are persisted in localStorage, and we have to sync them with backend when loading inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338944</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-24 04:36:23 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 79904 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79904&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/front-end/BreakpointManager.js:333
&gt; &gt; &gt; +        InspectorBackend.setAllJavaScriptBreakpoints(allJavaScriptBreakpoints);
&gt; &gt; 
&gt; &gt; Why do we push JavaScript breakpoints to the backend?
&gt; 
&gt; Because JavaScript breakpoints are persisted in localStorage, and we have to sync them with backend when loading inspector.

I thought we agreed that there should be no explicit setAllJavaScriptBreakpoints method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338959</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-24 05:14:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 79904 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79904&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/inspector/front-end/BreakpointManager.js:333
&gt; &gt; &gt; &gt; +        InspectorBackend.setAllJavaScriptBreakpoints(allJavaScriptBreakpoints);
&gt; &gt; &gt; 
&gt; &gt; &gt; Why do we push JavaScript breakpoints to the backend?
&gt; &gt; 
&gt; &gt; Because JavaScript breakpoints are persisted in localStorage, and we have to sync them with backend when loading inspector.
&gt; 
&gt; I thought we agreed that there should be no explicit setAllJavaScriptBreakpoints method.

In this change JavaScript breakpoints are separated from browser breakpoints to simplify further refactoring. Later we&apos;ll get rid of setAllBreakpoints protocol methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339551</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-25 01:44:59 -0800</bug_when>
    <thetext>Committed r76581: &lt;http://trac.webkit.org/changeset/76581&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79904</attachid>
            <date>2011-01-24 02:20:32 -0800</date>
            <delta_ts>2011-01-24 02:27:14 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17938</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1N2JkNTk0Li4xMTFiZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDEtMjQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZGVidWdnZXIgYW5kIGJyb3dzZXIgZGVidWdnZXIgYWdlbnRzIHNob3VsZCBtYW5h
Z2Ugc3RpY2t5IGJyZWFrcG9pbnRzIGluZGVwZW5kZW50bHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjk5OQorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRDb21taXRMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjplbmFibGVEZWJ1Z2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnNldEFsbEJyb3dzZXJCcmVha3BvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6aW5zcGVjdGVk
VVJMQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudDo6cmVzdG9yZVN0aWNreUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QWxsSmF2YVNjcmlwdEJyZWFrcG9pbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdG9yZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdGF0ZTo6SW5zcGVjdG9yU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fcHJvamVjdENo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlw
ZS5fc2F2ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUuX3B1c2hCcmVha3BvaW50c1RvQmFja2VuZCk6CisKIDIwMTEtMDEtMjEg
IFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5p
ZGwKaW5kZXggY2YwODg1Zi4uZmQ1MGM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5pZGwKQEAgLTI0Miw4ICsyNDIsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtkb21h
aW49SW5zcGVjdG9yXSB2b2lkIGVuYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3YXlzKTsKICAg
ICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4g
YWx3YXlzKTsKIAotICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBzZXRBbGxCcm93c2Vy
QnJlYWtwb2ludHMoaW4gT2JqZWN0IGJyZWFrcG9pbnRzKTsKLQogICAgICAgICBbbm90aWZ5LCBk
b21haW49RGVidWdnZXJdIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCk7CiAgICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CiAKQEAgLTI1
Myw5ICsyNTEsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2
b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9p
ZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAorICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2
b2lkIHNldEFsbEphdmFTY3JpcHRCcmVha3BvaW50cyhpbiBPYmplY3QgYnJlYWtwb2ludHMpOwog
ICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHNldEJyZWFrcG9pbnQoaW4gU3RyaW5nIHNv
dXJjZUlELCBpbiB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgaW4gU3RyaW5nIGNvbmRpdGlvbiwg
aW4gYm9vbGVhbiBlbmFibGVkLCBvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IHVuc2lnbmVk
IGludCBhY3R1YWxMaW5lTnVtYmVyKTsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBy
ZW1vdmVCcmVha3BvaW50KGluIFN0cmluZyBicmVha3BvaW50SWQpOwogCisgICAgICAgIFtkb21h
aW49QnJvd3NlckRlYnVnZ2VyXSB2b2lkIHNldEFsbEJyb3dzZXJCcmVha3BvaW50cyhpbiBPYmpl
Y3QgYnJlYWtwb2ludHMpOwogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBz
ZXRET01CcmVha3BvaW50KGluIGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwogICAgICAgICBb
ZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCByZW1vdmVET01CcmVha3BvaW50KGluIGxvbmcg
bm9kZUlkLCBpbiBsb25nIHR5cGUpOwogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0g
dm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChpbiBTdHJpbmcgZXZlbnROYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDYwYzNmZjgu
LmU1ZjI2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cApAQCAtNjQ0LDkgKzY0NCwxMCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDb21taXRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgewotICAgICAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5jbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCk7CisgICAgICAgICAgICBLVVJMIHVybCA9
IGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpOworICAgICAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybCk7CiAgICAgICAgICAgICBpZiAobV9icm93c2Vy
RGVidWdnZXJBZ2VudCkKLSAgICAgICAgICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5p
bnNwZWN0ZWRVUkxDaGFuZ2VkKGluc3BlY3RlZFVSTCgpKTsKKyAgICAgICAgICAgICAgICBtX2Jy
b3dzZXJEZWJ1Z2dlckFnZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybCk7CiAgICAgICAgIH0K
ICNlbmRpZgogCkBAIC0xMDUyLDcgKzEwNTMsNiBAQCB2b2lkIEluc3BlY3RvckFnZW50OjplbmFi
bGVEZWJ1Z2dlcihib29sIGFsd2F5cykKIAogICAgIG1fZGVidWdnZXJBZ2VudCA9IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSh0aGlzLCBtX2Zyb250ZW5kLmdldCgpKTsKICAgICBtX2Jy
b3dzZXJEZWJ1Z2dlckFnZW50ID0gSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0
ZSh0aGlzKTsKLSAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGluc3BlY3RlZFVSTCgpKTsKIAogICAgIG1fZnJvbnRlbmQtPmRlYnVnZ2VyV2FzRW5hYmxlZCgp
OwogfQpAQCAtMTM5MCw2ICsxMzkwLDEzIEBAIEtVUkwgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3Rl
ZFVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT51cmwoKTsKIH0KIAorS1VSTCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMV2l0
aG91dEZyYWdtZW50KCkgY29uc3QKK3sKKyAgICBLVVJMIHVybCA9IGluc3BlY3RlZFVSTCgpOwor
ICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gdXJsOworfQor
CiB2b2lkIEluc3BlY3RvckFnZW50OjpyZWxvYWRQYWdlKCkKIHsKICAgICAvLyBGSVhNRTogV2h5
IGRvIHdlIHNldCB0aGUgdXNlciBnZXN0dXJlIGluZGljYXRvciBoZXJlPwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCBiMjUyYTIwLi4zZWExNDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtMTI4LDYgKzEyOCw3
IEBAIHB1YmxpYzoKIAogICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2luc3BlY3RlZFBhZ2U7IH0KICAgICBLVVJMIGluc3BlY3RlZFVSTCgpIGNvbnN0OworICAgIEtV
UkwgaW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCByZWxvYWRQ
YWdlKCk7CiAKICAgICB2b2lkIHJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3Qg
U3RyaW5nJiBpbnNwZWN0b3JDb29raWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggN2VlN2U4
MS4uNjZkM2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC03MSwxNiArNzEsMjAgQEAgSW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3Rl
ZFVSTENoYW5nZWQoY29uc3QgS1VSTCYgdXJsKQordm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudDo6c2V0QWxsQnJvd3NlckJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBicmVha3BvaW50cykKK3sKKyAgICBtX2luc3BlY3RvckFnZW50LT5zdGF0ZSgpLT5zZXRP
YmplY3QoSW5zcGVjdG9yU3RhdGU6OmJyb3dzZXJCcmVha3BvaW50cywgYnJlYWtwb2ludHMpOwor
ICAgIGluc3BlY3RlZFVSTENoYW5nZWQobV9pbnNwZWN0b3JBZ2VudC0+aW5zcGVjdGVkVVJMV2l0
aG91dEZyYWdtZW50KCkpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIG1fZXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CiAgICAgbV9YSFJCcmVha3BvaW50cy5jbGVhcigp
OwogICAgIG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0eVVSTCA9IGZhbHNlOwogCiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYWxsQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvckFnZW50LT5z
dGF0ZSgpLT5nZXRPYmplY3QoSW5zcGVjdG9yU3RhdGU6OmJyb3dzZXJCcmVha3BvaW50cyk7Ci0g
ICAgS1VSTCB1cmxDb3B5ID0gdXJsOwotICAgIHVybENvcHkucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7Ci0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBicmVha3BvaW50cyA9IGFsbEJyZWFr
cG9pbnRzLT5nZXRBcnJheSh1cmxDb3B5KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJy
ZWFrcG9pbnRzID0gYWxsQnJlYWtwb2ludHMtPmdldEFycmF5KHVybCk7CiAgICAgaWYgKCFicmVh
a3BvaW50cykKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
cmVha3BvaW50cy0+bGVuZ3RoKCk7ICsraSkKQEAgLTg5LDEwICs5Myw2IEBAIHZvaWQgSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgS1VSTCYg
dXJsKQogCiB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZXN0b3JlU3RpY2t5
QnJlYWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCkKIHsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBl
LCAoIkV2ZW50TGlzdGVuZXIiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGph
dmFTY3JpcHRCcmVha3BvaW50VHlwZSwgKCJKUyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgeGhyQnJlYWtwb2ludFR5cGUsICgiWEhSIikpOwotCiAgICAgaWYgKCFicmVha3Bv
aW50KQogICAgICAgICByZXR1cm47CiAgICAgU3RyaW5nIHR5cGU7CkBAIC0xMDUsMjUgKzEwNSwx
NCBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZXN0b3JlU3RpY2t5QnJl
YWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3RvcgogICAgIGlmICghY29uZGl0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBldmVudExpc3RlbmVyQnJlYWtwb2ludFR5cGUp
IHsKKyAgICBpZiAodHlwZSA9PSBldmVudExpc3RlbmVyTmF0aXZlQnJlYWtwb2ludFR5cGUpIHsK
ICAgICAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBTdHJp
bmcgZXZlbnROYW1lOwogICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJldmVudE5h
bWUiLCAmZXZlbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc2V0RXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnQoZXZlbnROYW1lKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gamF2
YVNjcmlwdEJyZWFrcG9pbnRUeXBlICYmIG1faW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQo
KSkgewotICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3Ry
aW5nKCJ1cmwiLCAmdXJsKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZG91YmxlIGxp
bmVOdW1iZXI7Ci0gICAgICAgIGlmICghY29uZGl0aW9uLT5nZXROdW1iZXIoImxpbmVOdW1iZXIi
LCAmbGluZU51bWJlcikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBqYXZh
U2NyaXB0Q29uZGl0aW9uOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJjb25k
aXRpb24iLCAmamF2YVNjcmlwdENvbmRpdGlvbikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQoKS0+c2V0U3RpY2t5QnJlYWtwb2lu
dCh1cmwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lTnVtYmVyKSwgamF2YVNjcmlwdENvbmRp
dGlvbiwgZW5hYmxlZCk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IHhockJyZWFrcG9pbnRUeXBl
KSB7CisgICAgfSBlbHNlIGlmICh0eXBlID09IHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlKSB7CiAg
ICAgICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RyaW5n
IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggNmM4OTNhNC4uN2MwMjlmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50LmgKQEAgLTQ2LDcgKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3Mg
S1VSTDsKIGNsYXNzIE5vZGU7CiAKIGNsYXNzIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
IHsKQEAgLTU5LDcgKzU4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQoKTsKIAotICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBLVVJMJik7CisgICAgdm9pZCBzZXRBbGxCcm93c2VyQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKTsKKyAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5n
ZWQoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgLy8gQnJvd3NlckRlYnVnZ2VyIEFQSSBmb3Ig
SW5zcGVjdG9yRnJvbnRlbmQKICAgICB2b2lkIHNldFhIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5n
JiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDJmZmFhODMuLmYxZWY3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCkBAIC01NSw2
ICs1Niw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQo
SW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJCiAgICAgLCBtX2Zyb250ZW5kKGZyb250
ZW5kKQogICAgICwgbV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQogICAgICwgbV9qYXZhU2NyaXB0UGF1
c2VTY2hlZHVsZWQoZmFsc2UpCisgICAgLCBtX2JyZWFrcG9pbnRzUmVzdG9yZWQoZmFsc2UpCiB7
CiB9CiAKQEAgLTc5LDYgKzgxLDUwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVh
Y3RpdmF0ZUJyZWFrcG9pbnRzKCkKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZGVh
Y3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QWxsSmF2YVNjcmlwdEJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
cmVha3BvaW50cykKK3sKKyAgICBtX2luc3BlY3RvckFnZW50LT5zdGF0ZSgpLT5zZXRPYmplY3Qo
SW5zcGVjdG9yU3RhdGU6OmphdmFTY3JpcHRCcmVha3BvaW50cywgYnJlYWtwb2ludHMpOworICAg
IGlmICghbV9icmVha3BvaW50c1Jlc3RvcmVkKSB7CisgICAgICAgIHJlc3RvcmVCcmVha3BvaW50
cyhtX2luc3BlY3RvckFnZW50LT5pbnNwZWN0ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSk7CisgICAg
ICAgIG1fYnJlYWtwb2ludHNSZXN0b3JlZCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmwp
Cit7CisgICAgbV9zY3JpcHRJRFRvQ29udGVudC5jbGVhcigpOworICAgIG1fdXJsVG9Tb3VyY2VJ
RHMuY2xlYXIoKTsKKyAgICByZXN0b3JlQnJlYWtwb2ludHModXJsKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0b3JlQnJlYWtwb2ludHMoY29uc3QgU3RyaW5nJiBpbnNw
ZWN0ZWRVUkwpCit7CisgICAgbV9zdGlja3lCcmVha3BvaW50cy5jbGVhcigpOworCisgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYWxsQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvckFnZW50LT5z
dGF0ZSgpLT5nZXRPYmplY3QoSW5zcGVjdG9yU3RhdGU6OmphdmFTY3JpcHRCcmVha3BvaW50cyk7
CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBicmVha3BvaW50cyA9IGFsbEJyZWFrcG9pbnRz
LT5nZXRBcnJheShpbnNwZWN0ZWRVUkwpOworICAgIGlmICghYnJlYWtwb2ludHMpCisgICAgICAg
IHJldHVybjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMtPmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCA9
IGJyZWFrcG9pbnRzLT5nZXQoaSktPmFzT2JqZWN0KCk7CisgICAgICAgIGlmICghYnJlYWtwb2lu
dCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBp
ZiAoIWJyZWFrcG9pbnQtPmdldFN0cmluZygidXJsIiwgJnVybCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgZG91YmxlIGxpbmVOdW1iZXI7CisgICAgICAgIGlmICghYnJlYWtwb2lu
dC0+Z2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgJmxpbmVOdW1iZXIpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIFN0cmluZyBjb25kaXRpb247CisgICAgICAgIGlmICghYnJlYWtwb2lu
dC0+Z2V0U3RyaW5nKCJjb25kaXRpb24iLCAmY29uZGl0aW9uKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgICAgIGlmICghYnJlYWtwb2ludC0+Z2V0
Qm9vbGVhbigiZW5hYmxlZCIsICZlbmFibGVkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBzZXRTdGlja3lCcmVha3BvaW50KHVybCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmVO
dW1iZXIpLCBjb25kaXRpb24sIGVuYWJsZWQpOworICAgIH0KK30KKwogdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRTdGlja3lCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVkKQog
ewogICAgIEhhc2hNYXA8U3RyaW5nLCBTY3JpcHRCcmVha3BvaW50cz46Oml0ZXJhdG9yIGl0ID0g
bV9zdGlja3lCcmVha3BvaW50cy5maW5kKHVybCk7CkBAIC0xODcsMTMgKzIzMyw2IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmdldENvbXBsZXRpb25z
T25DYWxsRnJhbWUoY2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0b3JDb21t
YW5kTGluZUFQSSwgcmVzdWx0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
bGVhckZvclBhZ2VOYXZpZ2F0aW9uKCkKLXsKLSAgICBtX3NjcmlwdElEVG9Db250ZW50LmNsZWFy
KCk7Ci0gICAgbV91cmxUb1NvdXJjZUlEcy5jbGVhcigpOwotICAgIG1fc3RpY2t5QnJlYWtwb2lu
dHMuY2xlYXIoKTsKLX0KLQogUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRTY3Jp
cHRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCmluZGV4IGMxNmIzOGYuLjk0Y2E5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjEsNiArNjEsOSBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0RlYnVnZ2VyQWx3YXlzRW5hYmxlZCgpOwogCisg
ICAgdm9pZCBzZXRBbGxKYXZhU2NyaXB0QnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJyZWFrcG9pbnRzKTsKKyAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJiB1cmwpOworCiAgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCiAgICAgdm9pZCBh
Y3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAgICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsK
QEAgLTgxLDggKzg0LDYgQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiogcmVzdWx0KTsKICAgICB2b2lkIGdldENvbXBsZXRpb25zT25DYWxsRnJhbWUoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGJvb2wgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiByZXN1bHQpOwogCi0gICAgdm9pZCBjbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCk7Ci0KIHBy
aXZhdGU6CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnNwZWN0b3JBZ2VudCosIEluc3Bl
Y3RvckZyb250ZW5kKik7CiAKQEAgLTkzLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUGF1c2UoU2NyaXB0U3RhdGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGlu
dWUoKTsKIAorICAgIHZvaWQgcmVzdG9yZUJyZWFrcG9pbnRzKGNvbnN0IFN0cmluZyYgaW5zcGVj
dGVkVVJMKTsKICAgICB2b2lkIHJlc3RvcmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVu
YWJsZWQpOwogCiAgICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CkBAIC0xMDYs
NiArMTA4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0QnJlYWtwb2lu
dHM+IG1fc3RpY2t5QnJlYWtwb2ludHM7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9i
cmVha1Byb2dyYW1EZXRhaWxzOwogICAgIGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7
CisgICAgYm9vbCBtX2JyZWFrcG9pbnRzUmVzdG9yZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAppbmRl
eCBkYmE5ZTRkLi5jMWI2ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdGF0ZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAgSW5zcGVjdG9yU3RhdGU6Okluc3BlY3RvclN0
YXRlKEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIHJlZ2lzdGVyQm9vbGVhbih1c2VySW5p
dGlhdGVkUHJvZmlsaW5nLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29sZWFuKHRpbWVsaW5lUHJv
ZmlsZXJFbmFibGVkLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29sZWFuKHNlYXJjaGluZ0Zvck5v
ZGUsIGZhbHNlKTsKKyAgICByZWdpc3Rlck9iamVjdChqYXZhU2NyaXB0QnJlYWtwb2ludHMpOwog
ICAgIHJlZ2lzdGVyT2JqZWN0KGJyb3dzZXJCcmVha3BvaW50cyk7CiAgICAgcmVnaXN0ZXJCb29s
ZWFuKGNvbnNvbGVNZXNzYWdlc0VuYWJsZWQsIGZhbHNlKTsKICAgICByZWdpc3RlckJvb2xlYW4o
bW9uaXRvcmluZ1hIUiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3RhdGUuaAppbmRleCA2ZTEyNjczOS4uMjAxNzMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0YXRlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBz
ZWFyY2hpbmdGb3JOb2RlLAogICAgICAgICBjb25zb2xlTWVzc2FnZXNFbmFibGVkLAogICAgICAg
ICB1c2VySW5pdGlhdGVkUHJvZmlsaW5nLAorICAgICAgICBqYXZhU2NyaXB0QnJlYWtwb2ludHMs
CiAgICAgICAgIGJyb3dzZXJCcmVha3BvaW50cywKICAgICAgICAgcmVzb3VyY2VBZ2VudEVuYWJs
ZWQsCiAgICAgICAgIGxhc3RQcm9wZXJ0eUlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRleCBkOTQzZDViLi42
NTU2YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Jy
ZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQnJlYWtwb2ludE1hbmFnZXIuanMKQEAgLTM0LDcgKzM0LDYgQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAgIHZhciBicmVha3BvaW50cyA9IFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5maW5kU2V0dGluZ0ZvckFsbFByb2plY3RzKCJuYXRpdmVCcmVha3Bv
aW50cyIpOwogICAgIGZvciAodmFyIHByb2plY3RJZCBpbiBicmVha3BvaW50cykKICAgICAgICAg
dGhpcy5fc3RpY2t5QnJlYWtwb2ludHNbcHJvamVjdElkXSA9IHRoaXMuX3ZhbGlkYXRlQnJlYWtw
b2ludHMoYnJlYWtwb2ludHNbcHJvamVjdElkXSk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5zZXRB
bGxCcm93c2VyQnJlYWtwb2ludHModGhpcy5fc3RpY2t5QnJlYWtwb2ludHMpOwogCiAgICAgdGhp
cy5fYnJlYWtwb2ludHMgPSB7fTsKICAgICB0aGlzLl9kb21CcmVha3BvaW50c1Jlc3RvcmVkID0g
ZmFsc2U7CkBAIC0yNDUsNiArMjQ0LDExIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNlIGlmIChicmVha3BvaW50LnR5cGUgPT09
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50VHlwZXMuWEhSKQogICAg
ICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC5jb25kaXRp
b24udXJsLCBicmVha3BvaW50LmVuYWJsZWQsIHRydWUpOwogICAgICAgICB9CisKKyAgICAgICAg
aWYgKCF0aGlzLl9icmVha3BvaW50c1B1c2hlZFRvRnJvbnRlbmQpIHsKKyAgICAgICAgICAgIHRo
aXMuX3B1c2hCcmVha3BvaW50c1RvQmFja2VuZCgpOworICAgICAgICAgICAgdGhpcy5fYnJlYWtw
b2ludHNQdXNoZWRUb0Zyb250ZW5kID0gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBy
ZXN0b3JlRE9NQnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKQEAgLTMwMyw3ICszMDcsMzEgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLnNldHRpbmdzLm5hdGl2ZUJyZWFrcG9pbnRzID0gYnJlYWtwb2ludHM7CiAKICAgICAg
ICAgdGhpcy5fc3RpY2t5QnJlYWtwb2ludHNbV2ViSW5zcGVjdG9yLnNldHRpbmdzLnByb2plY3RJ
ZF0gPSBicmVha3BvaW50czsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRBbGxCcm93c2Vy
QnJlYWtwb2ludHModGhpcy5fc3RpY2t5QnJlYWtwb2ludHMpOworICAgICAgICB0aGlzLl9wdXNo
QnJlYWtwb2ludHNUb0JhY2tlbmQoKTsKKyAgICB9LAorCisgICAgX3B1c2hCcmVha3BvaW50c1Rv
QmFja2VuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGFsbEphdmFTY3JpcHRCcmVh
a3BvaW50cyA9IHt9OworICAgICAgICB2YXIgYWxsQnJvd3NlckJyZWFrcG9pbnRzID0ge307Cisg
ICAgICAgIGZvciAodmFyIHByb2plY3RJZCBpbiB0aGlzLl9zdGlja3lCcmVha3BvaW50cykgewor
ICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fc3RpY2t5QnJlYWtwb2ludHNbcHJv
amVjdElkXTsKKyAgICAgICAgICAgIHZhciBqYXZhU2NyaXB0QnJlYWtwb2ludHMgPSBbXTsKKyAg
ICAgICAgICAgIHZhciBicm93c2VyQnJlYWtwb2ludHMgPSBbXTsKKyAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYnJlYWtwb2ludHNbaV0udHlwZSA9PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIuQnJlYWtwb2ludFR5cGVzLkpTKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb25kaXRp
b24gPSBicmVha3BvaW50c1tpXS5jb25kaXRpb247CisgICAgICAgICAgICAgICAgICAgIGphdmFT
Y3JpcHRCcmVha3BvaW50cy5wdXNoKHsgdXJsOiBjb25kaXRpb24udXJsLCBsaW5lTnVtYmVyOiBj
b25kaXRpb24ubGluZU51bWJlciwgY29uZGl0aW9uOiBjb25kaXRpb24uY29uZGl0aW9uLCBlbmFi
bGVkOiBicmVha3BvaW50c1tpXS5lbmFibGVkIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBicm93c2VyQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50c1tp
XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoamF2YVNjcmlwdEJyZWFrcG9pbnRz
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICBhbGxKYXZhU2NyaXB0QnJlYWtwb2ludHNbcHJvamVj
dElkXSA9IGphdmFTY3JpcHRCcmVha3BvaW50czsKKyAgICAgICAgICAgIGlmIChicm93c2VyQnJl
YWtwb2ludHMubGVuZ3RoKQorICAgICAgICAgICAgICAgIGFsbEJyb3dzZXJCcmVha3BvaW50c1tw
cm9qZWN0SWRdID0gYnJvd3NlckJyZWFrcG9pbnRzOworICAgICAgICB9CisgICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuc2V0QWxsSmF2YVNjcmlwdEJyZWFrcG9pbnRzKGFsbEphdmFTY3JpcHRCcmVh
a3BvaW50cyk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0QWxsQnJvd3NlckJyZWFrcG9p
bnRzKGFsbEJyb3dzZXJCcmVha3BvaW50cyk7CiAgICAgfSwKIAogICAgIF92YWxpZGF0ZUJyZWFr
cG9pbnRzOiBmdW5jdGlvbihwZXJzaXN0ZW50QnJlYWtwb2ludHMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79906</attachid>
            <date>2011-01-24 02:23:28 -0800</date>
            <delta_ts>2011-01-24 06:29:10 -0800</delta_ts>
            <desc>Fix style.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17914</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1N2JkNTk0Li4xMTFiZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDEtMjQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZGVidWdnZXIgYW5kIGJyb3dzZXIgZGVidWdnZXIgYWdlbnRzIHNob3VsZCBtYW5h
Z2Ugc3RpY2t5IGJyZWFrcG9pbnRzIGluZGVwZW5kZW50bHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjk5OQorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpkaWRDb21taXRMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjplbmFibGVEZWJ1Z2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnNldEFsbEJyb3dzZXJCcmVha3BvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6aW5zcGVjdGVk
VVJMQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudDo6cmVzdG9yZVN0aWNreUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QWxsSmF2YVNjcmlwdEJyZWFrcG9pbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdG9yZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdGF0ZTo6SW5zcGVjdG9yU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fcHJvamVjdENo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlw
ZS5fc2F2ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUuX3B1c2hCcmVha3BvaW50c1RvQmFja2VuZCk6CisKIDIwMTEtMDEtMjEg
IFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5p
ZGwKaW5kZXggY2YwODg1Zi4uZmQ1MGM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5pZGwKQEAgLTI0Miw4ICsyNDIsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtkb21h
aW49SW5zcGVjdG9yXSB2b2lkIGVuYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3YXlzKTsKICAg
ICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZGlzYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4g
YWx3YXlzKTsKIAotICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBzZXRBbGxCcm93c2Vy
QnJlYWtwb2ludHMoaW4gT2JqZWN0IGJyZWFrcG9pbnRzKTsKLQogICAgICAgICBbbm90aWZ5LCBk
b21haW49RGVidWdnZXJdIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCk7CiAgICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CiAKQEAgLTI1
Myw5ICsyNTEsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2
b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9p
ZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAorICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2
b2lkIHNldEFsbEphdmFTY3JpcHRCcmVha3BvaW50cyhpbiBPYmplY3QgYnJlYWtwb2ludHMpOwog
ICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHNldEJyZWFrcG9pbnQoaW4gU3RyaW5nIHNv
dXJjZUlELCBpbiB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgaW4gU3RyaW5nIGNvbmRpdGlvbiwg
aW4gYm9vbGVhbiBlbmFibGVkLCBvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IHVuc2lnbmVk
IGludCBhY3R1YWxMaW5lTnVtYmVyKTsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBy
ZW1vdmVCcmVha3BvaW50KGluIFN0cmluZyBicmVha3BvaW50SWQpOwogCisgICAgICAgIFtkb21h
aW49QnJvd3NlckRlYnVnZ2VyXSB2b2lkIHNldEFsbEJyb3dzZXJCcmVha3BvaW50cyhpbiBPYmpl
Y3QgYnJlYWtwb2ludHMpOwogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBz
ZXRET01CcmVha3BvaW50KGluIGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwogICAgICAgICBb
ZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCByZW1vdmVET01CcmVha3BvaW50KGluIGxvbmcg
bm9kZUlkLCBpbiBsb25nIHR5cGUpOwogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0g
dm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChpbiBTdHJpbmcgZXZlbnROYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDYwYzNmZjgu
LmU1ZjI2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cApAQCAtNjQ0LDkgKzY0NCwxMCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDb21taXRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkgewotICAgICAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5jbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCk7CisgICAgICAgICAgICBLVVJMIHVybCA9
IGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpOworICAgICAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybCk7CiAgICAgICAgICAgICBpZiAobV9icm93c2Vy
RGVidWdnZXJBZ2VudCkKLSAgICAgICAgICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5p
bnNwZWN0ZWRVUkxDaGFuZ2VkKGluc3BlY3RlZFVSTCgpKTsKKyAgICAgICAgICAgICAgICBtX2Jy
b3dzZXJEZWJ1Z2dlckFnZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybCk7CiAgICAgICAgIH0K
ICNlbmRpZgogCkBAIC0xMDUyLDcgKzEwNTMsNiBAQCB2b2lkIEluc3BlY3RvckFnZW50OjplbmFi
bGVEZWJ1Z2dlcihib29sIGFsd2F5cykKIAogICAgIG1fZGVidWdnZXJBZ2VudCA9IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSh0aGlzLCBtX2Zyb250ZW5kLmdldCgpKTsKICAgICBtX2Jy
b3dzZXJEZWJ1Z2dlckFnZW50ID0gSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0
ZSh0aGlzKTsKLSAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGluc3BlY3RlZFVSTCgpKTsKIAogICAgIG1fZnJvbnRlbmQtPmRlYnVnZ2VyV2FzRW5hYmxlZCgp
OwogfQpAQCAtMTM5MCw2ICsxMzkwLDEzIEBAIEtVUkwgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3Rl
ZFVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT51cmwoKTsKIH0KIAorS1VSTCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMV2l0
aG91dEZyYWdtZW50KCkgY29uc3QKK3sKKyAgICBLVVJMIHVybCA9IGluc3BlY3RlZFVSTCgpOwor
ICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gdXJsOworfQor
CiB2b2lkIEluc3BlY3RvckFnZW50OjpyZWxvYWRQYWdlKCkKIHsKICAgICAvLyBGSVhNRTogV2h5
IGRvIHdlIHNldCB0aGUgdXNlciBnZXN0dXJlIGluZGljYXRvciBoZXJlPwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCBiMjUyYTIwLi4zZWExNDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtMTI4LDYgKzEyOCw3
IEBAIHB1YmxpYzoKIAogICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2luc3BlY3RlZFBhZ2U7IH0KICAgICBLVVJMIGluc3BlY3RlZFVSTCgpIGNvbnN0OworICAgIEtV
UkwgaW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCByZWxvYWRQ
YWdlKCk7CiAKICAgICB2b2lkIHJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3Qg
U3RyaW5nJiBpbnNwZWN0b3JDb29raWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggN2VlN2U4
MS4uNjZkM2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC03MSwxNiArNzEsMjAgQEAgSW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3Rl
ZFVSTENoYW5nZWQoY29uc3QgS1VSTCYgdXJsKQordm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudDo6c2V0QWxsQnJvd3NlckJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBicmVha3BvaW50cykKK3sKKyAgICBtX2luc3BlY3RvckFnZW50LT5zdGF0ZSgpLT5zZXRP
YmplY3QoSW5zcGVjdG9yU3RhdGU6OmJyb3dzZXJCcmVha3BvaW50cywgYnJlYWtwb2ludHMpOwor
ICAgIGluc3BlY3RlZFVSTENoYW5nZWQobV9pbnNwZWN0b3JBZ2VudC0+aW5zcGVjdGVkVVJMV2l0
aG91dEZyYWdtZW50KCkpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIG1fZXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CiAgICAgbV9YSFJCcmVha3BvaW50cy5jbGVhcigp
OwogICAgIG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0eVVSTCA9IGZhbHNlOwogCiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYWxsQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvckFnZW50LT5z
dGF0ZSgpLT5nZXRPYmplY3QoSW5zcGVjdG9yU3RhdGU6OmJyb3dzZXJCcmVha3BvaW50cyk7Ci0g
ICAgS1VSTCB1cmxDb3B5ID0gdXJsOwotICAgIHVybENvcHkucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7Ci0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBicmVha3BvaW50cyA9IGFsbEJyZWFr
cG9pbnRzLT5nZXRBcnJheSh1cmxDb3B5KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJy
ZWFrcG9pbnRzID0gYWxsQnJlYWtwb2ludHMtPmdldEFycmF5KHVybCk7CiAgICAgaWYgKCFicmVh
a3BvaW50cykKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
cmVha3BvaW50cy0+bGVuZ3RoKCk7ICsraSkKQEAgLTg5LDEwICs5Myw2IEBAIHZvaWQgSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgS1VSTCYg
dXJsKQogCiB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZXN0b3JlU3RpY2t5
QnJlYWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCkKIHsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBl
LCAoIkV2ZW50TGlzdGVuZXIiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGph
dmFTY3JpcHRCcmVha3BvaW50VHlwZSwgKCJKUyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgeGhyQnJlYWtwb2ludFR5cGUsICgiWEhSIikpOwotCiAgICAgaWYgKCFicmVha3Bv
aW50KQogICAgICAgICByZXR1cm47CiAgICAgU3RyaW5nIHR5cGU7CkBAIC0xMDUsMjUgKzEwNSwx
NCBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZXN0b3JlU3RpY2t5QnJl
YWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3RvcgogICAgIGlmICghY29uZGl0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBldmVudExpc3RlbmVyQnJlYWtwb2ludFR5cGUp
IHsKKyAgICBpZiAodHlwZSA9PSBldmVudExpc3RlbmVyTmF0aXZlQnJlYWtwb2ludFR5cGUpIHsK
ICAgICAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBTdHJp
bmcgZXZlbnROYW1lOwogICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJldmVudE5h
bWUiLCAmZXZlbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc2V0RXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnQoZXZlbnROYW1lKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gamF2
YVNjcmlwdEJyZWFrcG9pbnRUeXBlICYmIG1faW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQo
KSkgewotICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3Ry
aW5nKCJ1cmwiLCAmdXJsKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZG91YmxlIGxp
bmVOdW1iZXI7Ci0gICAgICAgIGlmICghY29uZGl0aW9uLT5nZXROdW1iZXIoImxpbmVOdW1iZXIi
LCAmbGluZU51bWJlcikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBqYXZh
U2NyaXB0Q29uZGl0aW9uOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJjb25k
aXRpb24iLCAmamF2YVNjcmlwdENvbmRpdGlvbikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQtPmRlYnVnZ2VyQWdlbnQoKS0+c2V0U3RpY2t5QnJlYWtwb2lu
dCh1cmwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lTnVtYmVyKSwgamF2YVNjcmlwdENvbmRp
dGlvbiwgZW5hYmxlZCk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IHhockJyZWFrcG9pbnRUeXBl
KSB7CisgICAgfSBlbHNlIGlmICh0eXBlID09IHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlKSB7CiAg
ICAgICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RyaW5n
IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggNmM4OTNhNC4uMDY3NmMzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50LmgKQEAgLTQ2LDcgKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3Mg
S1VSTDsKIGNsYXNzIE5vZGU7CiAKIGNsYXNzIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
IHsKQEAgLTU5LDcgKzU4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQoKTsKIAotICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBLVVJMJik7CisgICAgdm9pZCBzZXRBbGxCcm93c2VyQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KTsKKyAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3Ry
aW5nJiB1cmwpOwogCiAgICAgLy8gQnJvd3NlckRlYnVnZ2VyIEFQSSBmb3IgSW5zcGVjdG9yRnJv
bnRlbmQKICAgICB2b2lkIHNldFhIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDJmZmFhODMuLmYxZWY3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCkBAIC01NSw2ICs1Niw3IEBAIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yQWdl
bnQqIGluc3BlY3RvckFnZW50LCBJCiAgICAgLCBtX2Zyb250ZW5kKGZyb250ZW5kKQogICAgICwg
bV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQogICAgICwgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQo
ZmFsc2UpCisgICAgLCBtX2JyZWFrcG9pbnRzUmVzdG9yZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTc5
LDYgKzgxLDUwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVhY3RpdmF0ZUJyZWFr
cG9pbnRzKCkKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZGVhY3RpdmF0ZUJyZWFr
cG9pbnRzKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QWxsSmF2YVNj
cmlwdEJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50cykK
K3sKKyAgICBtX2luc3BlY3RvckFnZW50LT5zdGF0ZSgpLT5zZXRPYmplY3QoSW5zcGVjdG9yU3Rh
dGU6OmphdmFTY3JpcHRCcmVha3BvaW50cywgYnJlYWtwb2ludHMpOworICAgIGlmICghbV9icmVh
a3BvaW50c1Jlc3RvcmVkKSB7CisgICAgICAgIHJlc3RvcmVCcmVha3BvaW50cyhtX2luc3BlY3Rv
ckFnZW50LT5pbnNwZWN0ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSk7CisgICAgICAgIG1fYnJlYWtw
b2ludHNSZXN0b3JlZCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgbV9z
Y3JpcHRJRFRvQ29udGVudC5jbGVhcigpOworICAgIG1fdXJsVG9Tb3VyY2VJRHMuY2xlYXIoKTsK
KyAgICByZXN0b3JlQnJlYWtwb2ludHModXJsKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZXN0b3JlQnJlYWtwb2ludHMoY29uc3QgU3RyaW5nJiBpbnNwZWN0ZWRVUkwpCit7
CisgICAgbV9zdGlja3lCcmVha3BvaW50cy5jbGVhcigpOworCisgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gYWxsQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvckFnZW50LT5zdGF0ZSgpLT5nZXRP
YmplY3QoSW5zcGVjdG9yU3RhdGU6OmphdmFTY3JpcHRCcmVha3BvaW50cyk7CisgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBicmVha3BvaW50cyA9IGFsbEJyZWFrcG9pbnRzLT5nZXRBcnJheShp
bnNwZWN0ZWRVUkwpOworICAgIGlmICghYnJlYWtwb2ludHMpCisgICAgICAgIHJldHVybjsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMtPmxlbmd0aCgpOyArK2kpIHsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRz
LT5nZXQoaSktPmFzT2JqZWN0KCk7CisgICAgICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBpZiAoIWJyZWFrcG9p
bnQtPmdldFN0cmluZygidXJsIiwgJnVybCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgZG91YmxlIGxpbmVOdW1iZXI7CisgICAgICAgIGlmICghYnJlYWtwb2ludC0+Z2V0TnVtYmVy
KCJsaW5lTnVtYmVyIiwgJmxpbmVOdW1iZXIpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIFN0cmluZyBjb25kaXRpb247CisgICAgICAgIGlmICghYnJlYWtwb2ludC0+Z2V0U3RyaW5n
KCJjb25kaXRpb24iLCAmY29uZGl0aW9uKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBib29sIGVuYWJsZWQ7CisgICAgICAgIGlmICghYnJlYWtwb2ludC0+Z2V0Qm9vbGVhbigiZW5h
YmxlZCIsICZlbmFibGVkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzZXRTdGlj
a3lCcmVha3BvaW50KHVybCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmVOdW1iZXIpLCBjb25k
aXRpb24sIGVuYWJsZWQpOworICAgIH0KK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRTdGlja3lCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVkKQogewogICAgIEhhc2hN
YXA8U3RyaW5nLCBTY3JpcHRCcmVha3BvaW50cz46Oml0ZXJhdG9yIGl0ID0gbV9zdGlja3lCcmVh
a3BvaW50cy5maW5kKHVybCk7CkBAIC0xODcsMTMgKzIzMyw2IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Z2V0Q29tcGxldGlvbnNPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjCiAgICAgICAgIGluamVjdGVkU2NyaXB0LmdldENvbXBsZXRpb25zT25DYWxsRnJhbWUo
Y2FsbEZyYW1lSWQsIGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0b3JDb21tYW5kTGluZUFQSSwg
cmVzdWx0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckZvclBhZ2VO
YXZpZ2F0aW9uKCkKLXsKLSAgICBtX3NjcmlwdElEVG9Db250ZW50LmNsZWFyKCk7Ci0gICAgbV91
cmxUb1NvdXJjZUlEcy5jbGVhcigpOwotICAgIG1fc3RpY2t5QnJlYWtwb2ludHMuY2xlYXIoKTsK
LX0KLQogUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Y3VycmVudENhbGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRTY3JpcHRTdGF0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IGMxNmIzOGYuLjE0ZGYwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNjEsNiArNjEsOSBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgYm9vbCBpc0RlYnVnZ2VyQWx3YXlzRW5hYmxlZCgpOwogCisgICAgdm9pZCBzZXRB
bGxKYXZhU2NyaXB0QnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKKyAg
ICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmwpOworCiAgICAgLy8g
UGFydCBvZiB0aGUgcHJvdG9jb2wuCiAgICAgdm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAg
ICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKQEAgLTgxLDggKzg0LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKICAgICB2b2lkIGdl
dENvbXBsZXRpb25zT25DYWxsRnJhbWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbGxG
cmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGJvb2wgaW5jbHVkZUluc3BlY3RvckNv
bW1hbmRMaW5lQVBJLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwogCi0gICAgdm9p
ZCBjbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCk7Ci0KIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudChJbnNwZWN0b3JBZ2VudCosIEluc3BlY3RvckZyb250ZW5kKik7CiAKQEAgLTkz
LDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoU2NyaXB0U3Rh
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKTsKIAorICAgIHZvaWQgcmVzdG9y
ZUJyZWFrcG9pbnRzKGNvbnN0IFN0cmluZyYgaW5zcGVjdGVkVVJMKTsKICAgICB2b2lkIHJlc3Rv
cmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQpOwogCiAgICAgSW5zcGVjdG9y
QWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CkBAIC0xMDYsNiArMTA4LDcgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPFN0cmluZywgU2NyaXB0QnJlYWtwb2ludHM+IG1fc3RpY2t5QnJlYWtwb2ludHM7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9icmVha1Byb2dyYW1EZXRhaWxzOwogICAg
IGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7CisgICAgYm9vbCBtX2JyZWFrcG9pbnRz
UmVzdG9yZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAppbmRleCBkYmE5ZTRkLi5jMWI2ODIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKQEAgLTQyLDYgKzQy
LDcgQEAgSW5zcGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKEluc3BlY3RvckNsaWVudCogY2xp
ZW50KQogICAgIHJlZ2lzdGVyQm9vbGVhbih1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSk7
CiAgICAgcmVnaXN0ZXJCb29sZWFuKHRpbWVsaW5lUHJvZmlsZXJFbmFibGVkLCBmYWxzZSk7CiAg
ICAgcmVnaXN0ZXJCb29sZWFuKHNlYXJjaGluZ0Zvck5vZGUsIGZhbHNlKTsKKyAgICByZWdpc3Rl
ck9iamVjdChqYXZhU2NyaXB0QnJlYWtwb2ludHMpOwogICAgIHJlZ2lzdGVyT2JqZWN0KGJyb3dz
ZXJCcmVha3BvaW50cyk7CiAgICAgcmVnaXN0ZXJCb29sZWFuKGNvbnNvbGVNZXNzYWdlc0VuYWJs
ZWQsIGZhbHNlKTsKICAgICByZWdpc3RlckJvb2xlYW4obW9uaXRvcmluZ1hIUiwgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaAppbmRleCA2ZTEyNjczOS4u
MjAxNzMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmgKQEAg
LTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBzZWFyY2hpbmdGb3JOb2RlLAogICAgICAg
ICBjb25zb2xlTWVzc2FnZXNFbmFibGVkLAogICAgICAgICB1c2VySW5pdGlhdGVkUHJvZmlsaW5n
LAorICAgICAgICBqYXZhU2NyaXB0QnJlYWtwb2ludHMsCiAgICAgICAgIGJyb3dzZXJCcmVha3Bv
aW50cywKICAgICAgICAgcmVzb3VyY2VBZ2VudEVuYWJsZWQsCiAgICAgICAgIGxhc3RQcm9wZXJ0
eUlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFr
cG9pbnRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVh
a3BvaW50TWFuYWdlci5qcwppbmRleCBkOTQzZDViLi42NTU2YzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMK
QEAgLTM0LDcgKzM0LDYgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rp
b24oKQogICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5maW5kU2V0
dGluZ0ZvckFsbFByb2plY3RzKCJuYXRpdmVCcmVha3BvaW50cyIpOwogICAgIGZvciAodmFyIHBy
b2plY3RJZCBpbiBicmVha3BvaW50cykKICAgICAgICAgdGhpcy5fc3RpY2t5QnJlYWtwb2ludHNb
cHJvamVjdElkXSA9IHRoaXMuX3ZhbGlkYXRlQnJlYWtwb2ludHMoYnJlYWtwb2ludHNbcHJvamVj
dElkXSk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5zZXRBbGxCcm93c2VyQnJlYWtwb2ludHModGhp
cy5fc3RpY2t5QnJlYWtwb2ludHMpOwogCiAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsKICAg
ICB0aGlzLl9kb21CcmVha3BvaW50c1Jlc3RvcmVkID0gZmFsc2U7CkBAIC0yNDUsNiArMjQ0LDEx
IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBlbHNlIGlmIChicmVha3BvaW50LnR5cGUgPT09IFdlYkluc3BlY3Rvci5CcmVha3BvaW50
TWFuYWdlci5CcmVha3BvaW50VHlwZXMuWEhSKQogICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0
ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC5jb25kaXRpb24udXJsLCBicmVha3BvaW50LmVuYWJs
ZWQsIHRydWUpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9icmVha3BvaW50c1B1
c2hlZFRvRnJvbnRlbmQpIHsKKyAgICAgICAgICAgIHRoaXMuX3B1c2hCcmVha3BvaW50c1RvQmFj
a2VuZCgpOworICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNQdXNoZWRUb0Zyb250ZW5kID0g
dHJ1ZTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICByZXN0b3JlRE9NQnJlYWtwb2ludHM6IGZ1
bmN0aW9uKCkKQEAgLTMwMyw3ICszMDcsMzEgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLm5hdGl2ZUJy
ZWFrcG9pbnRzID0gYnJlYWtwb2ludHM7CiAKICAgICAgICAgdGhpcy5fc3RpY2t5QnJlYWtwb2lu
dHNbV2ViSW5zcGVjdG9yLnNldHRpbmdzLnByb2plY3RJZF0gPSBicmVha3BvaW50czsKLSAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5zZXRBbGxCcm93c2VyQnJlYWtwb2ludHModGhpcy5fc3RpY2t5
QnJlYWtwb2ludHMpOworICAgICAgICB0aGlzLl9wdXNoQnJlYWtwb2ludHNUb0JhY2tlbmQoKTsK
KyAgICB9LAorCisgICAgX3B1c2hCcmVha3BvaW50c1RvQmFja2VuZDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIGFsbEphdmFTY3JpcHRCcmVha3BvaW50cyA9IHt9OworICAgICAgICB2
YXIgYWxsQnJvd3NlckJyZWFrcG9pbnRzID0ge307CisgICAgICAgIGZvciAodmFyIHByb2plY3RJ
ZCBpbiB0aGlzLl9zdGlja3lCcmVha3BvaW50cykgeworICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnRzID0gdGhpcy5fc3RpY2t5QnJlYWtwb2ludHNbcHJvamVjdElkXTsKKyAgICAgICAgICAgIHZh
ciBqYXZhU2NyaXB0QnJlYWtwb2ludHMgPSBbXTsKKyAgICAgICAgICAgIHZhciBicm93c2VyQnJl
YWtwb2ludHMgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2lu
dHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludHNbaV0udHlw
ZSA9PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludFR5cGVzLkpTKSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBjb25kaXRpb24gPSBicmVha3BvaW50c1tpXS5jb25k
aXRpb247CisgICAgICAgICAgICAgICAgICAgIGphdmFTY3JpcHRCcmVha3BvaW50cy5wdXNoKHsg
dXJsOiBjb25kaXRpb24udXJsLCBsaW5lTnVtYmVyOiBjb25kaXRpb24ubGluZU51bWJlciwgY29u
ZGl0aW9uOiBjb25kaXRpb24uY29uZGl0aW9uLCBlbmFibGVkOiBicmVha3BvaW50c1tpXS5lbmFi
bGVkIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBicm93
c2VyQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50c1tpXSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoamF2YVNjcmlwdEJyZWFrcG9pbnRzLmxlbmd0aCkKKyAgICAgICAgICAgICAg
ICBhbGxKYXZhU2NyaXB0QnJlYWtwb2ludHNbcHJvamVjdElkXSA9IGphdmFTY3JpcHRCcmVha3Bv
aW50czsKKyAgICAgICAgICAgIGlmIChicm93c2VyQnJlYWtwb2ludHMubGVuZ3RoKQorICAgICAg
ICAgICAgICAgIGFsbEJyb3dzZXJCcmVha3BvaW50c1twcm9qZWN0SWRdID0gYnJvd3NlckJyZWFr
cG9pbnRzOworICAgICAgICB9CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0QWxsSmF2YVNj
cmlwdEJyZWFrcG9pbnRzKGFsbEphdmFTY3JpcHRCcmVha3BvaW50cyk7CisgICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuc2V0QWxsQnJvd3NlckJyZWFrcG9pbnRzKGFsbEJyb3dzZXJCcmVha3BvaW50
cyk7CiAgICAgfSwKIAogICAgIF92YWxpZGF0ZUJyZWFrcG9pbnRzOiBmdW5jdGlvbihwZXJzaXN0
ZW50QnJlYWtwb2ludHMpCg==
</data>
<flag name="review"
          id="71364"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>