<?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>112082</bug_id>
          
          <creation_ts>2013-03-11 17:11:56 -0700</creation_ts>
          <short_desc>REGRESSION(r145435): Still does not compile (Requested by jamesr on #webkit).</short_desc>
          <delta_ts>2013-03-11 17:19:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111138</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jamesr</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852898</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 17:11:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/145435 broke the build:
Still does not compile (Requested by jamesr on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852900</commentid>
    <comment_count>1</comment_count>
      <attachid>192601</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 17:12:25 -0700</bug_when>
    <thetext>Created attachment 192601
ROLLOUT of r145435

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852904</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-11 17:13:56 -0700</bug_when>
    <thetext>FAILED: ../../Source/WebKit/chromium/third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/source/webcore/modules/indexeddb/webcore_remaining.idbleveldbcoding.o.d -DUSE_SKIA -DCHROMIUM_BUILD -DUSE_LIBJPEG_TURBO=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_THREADING -DENABLE_CONFIGURATION_POLICY -DENABLE_INPUT_SPEECH -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DENABLE_GPU=1 -DENABLE_EGLIMAGE=1 -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_BACKGROUND=1 -DENABLE_AUTOMATION=1 -DENABLE_GOOGLE_NOW=1 -DENABLE_LANGUAGE_DETECTION=1 -DENABLE_PRINTING=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_MANAGED_USERS=1 &apos;-DWEBCORE_NAVIGATOR_VENDOR=&quot;Google Inc.&quot;&apos; -DWEBKIT_IMPLEMENTATION=1 &apos;-DWEBCORE_NAVIGATOR_PLATFORM=&quot;MacIntel&quot;&apos; -DWebCascadeList=ChromiumWebCoreObjCWebCascadeList -DWebCoreFlippedView=ChromiumWebCoreObjCWebCoreFlippedView -DWebCoreTextFieldCell=ChromiumWebCoreObjCWebCoreTextFieldCell -DWebScrollbarPrefsObserver=ChromiumWebCoreObjCWebScrollbarPrefsObserver -DWebCoreRenderThemeNotificationObserver=ChromiumWebCoreObjCWebCoreRenderThemeNotificationObserver -DWebFontCache=ChromiumWebCoreObjCWebFontCache -DWebScrollAnimationHelperDelegate=ChromiumWebCoreObjCWebScrollAnimationHelperDelegate -DWebScrollbarPainterControllerDelegate=ChromiumWebCoreObjCWebScrollbarPainterControllerDelegate -DWebScrollbarPainterDelegate=ChromiumWebCoreObjCWebScrollbarPainterDelegate -DWebScrollbarPartAnimation=ChromiumWebCoreObjCWebScrollbarPartAnimation -DENABLE_3D_PLUGIN=1 -DENABLE_BATTERY_STATUS=0 -DENABLE_BLOB=1 -DENABLE_BLOB_SLICE=1 -DENABLE_CANVAS_PATH=1 -DENABLE_CANVAS_PROXY=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSP_NEXT=1 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_CSS3_TEXT_LINE_BREAK=0 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=0 -DENABLE_CSS_DEVICE_ADAPTATION=0 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_SHADERS=1 -DENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED=0 -DENABLE_CSS_VARIABLES=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_CUSTOM_ELEMENTS=1 -DENABLE_CUSTOM_SCHEME_HANDLER=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATA_TRANSFER_ITEMS=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_DEVICE_ORIENTATION=1 -DENABLE_DIALOG_ELEMENT=1 -DENABLE_DIRECTORY_UPLOAD=1 -DENABLE_DOM4_EVENTS_CONSTRUCTOR=1 -DENABLE_DOWNLOAD_ATTRIBUTE=1 -DENABLE_DRAGGABLE_REGION=1 -DENABLE_ENCRYPTED_MEDIA=1 -DENABLE_FILE_SYSTEM=1 -DENABLE_FILTERS=1 -DENABLE_FONT_LOAD_EVENTS=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_GAMEPAD=1 -DENABLE_GEOLOCATION=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=0 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INDEXED_DATABASE=1 -DENABLE_INPUT_TYPE_DATE=1 -DENABLE_INPUT_TYPE_DATETIMELOCAL=1 -DENABLE_INPUT_TYPE_MONTH=1 -DENABLE_INPUT_TYPE_TIME=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_JAVASCRIPT_I18N_API=1 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=0 -DENABLE_LEGACY_WEB_AUDIO=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_LINK_PRERENDER=1 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=1 -DENABLE_MEDIA_STATISTICS=1 -DENABLE_MEDIA_STREAM=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MICRODATA=0 -DENABLE_MOUSE_CURSOR_SCALE=1 -DENABLE_NOSNIFF=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PERFORMANCE_TIMELINE=1 -DENABLE_POINTER_LOCK=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_REQUEST_AUTOCOMPLETE=1 -DENABLE_RESOLUTION_MEDIA_QUERY=0 -DENABLE_RESOURCE_TIMING=1 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_SCRIPTED_SPEECH=1 -DENABLE_SHADOW_DOM=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SPEECH_SYNTHESIS=0 -DENABLE_SQL_DATABASE=1 -DENABLE_STYLE_SCOPED=1 -DENABLE_SUBPIXEL_LAYOUT=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TEMPLATE_ELEMENT=1 -DENABLE_TEXT_AUTOSIZING=1 -DENABLE_THREADED_HTML_PARSER=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_TOUCH_EVENT_TRACKING=1 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_TOUCH_SLIDER=1 -DENABLE_USER_TIMING=1 -DENABLE_V8_SCRIPT_DEBUG_SERVER=1 -DENABLE_VIDEO=1 -DENABLE_VIDEO_TRACK=1 -DENABLE_VIEWPORT=1 -DENABLE_VIEW_MODE_CSS_MEDIA=1 -DENABLE_WEBGL=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=0 -DENABLE_XSLT=1 -DWTF_USE_LEVELDB=1 -DWTF_USE_BUILTIN_UTF8_CODEC=1 -DWTF_USE_OPENTYPE_SANITIZER=1 -DWTF_USE_RTL_SCROLLBAR=1 -DWTF_USE_SKIA_TEXT=1 -DWTF_USE_WEBP=1 -DWTF_USE_WEBKIT_IMAGE_DECODERS=1 -DENABLE_CALENDAR_PICKER=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_INPUT_SPEECH=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INPUT_TYPE_WEEK=1 -DENABLE_INPUT_MULTIPLE_FIELDS_UI=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_MEDIA_CAPTURE=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PAGE_POPUP=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_WEB_AUDIO=1 -DENABLE_8BIT_TEXTRUN=1 -DENABLE_BINDING_INTEGRITY=1 -DENABLE_3D_RENDERING=1 -DENABLE_ACCELERATED_2D_CANVAS=1 -DWTF_USE_ACCELERATED_COMPOSITING=1 -DENABLE_RUBBER_BANDING=1 -DWTF_USE_SKIA_ON_MAC_CHROMIUM=1 -DBUILDING_CHROMIUM__=1 -DWTF_USE_NEW_THEME=1 -DU_USING_ICU_NAMESPACE=0 -DU_STATIC_IMPLEMENTATION -DSK_BUILD_NO_IMAGE_ENCODE -DSK_DEFERRED_CANVAS_USES_GPIPE=1 &apos;-DGR_GL_CUSTOM_SETUP_HEADER=&quot;GrGLConfig_chrome.h&quot;&apos; -DGR_AGGRESSIVE_SHADER_OPTS=1 -DSK_ENABLE_INST_COUNT=0 -DSK_USE_POSIX_THREADS -DCHROME_PNG_WRITE_SUPPORT -DPNG_USER_CONFIG -DLIBXML_STATIC -DLIBXSLT_STATIC -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -D_FORTIFY_SOURCE=2 -I../../Source/WebKit/chromium/third_party/icu/public/common -I../../Source/WebKit/chromium/third_party/icu/public/i18n -I../../Source/WebKit/chromium/third_party/khronos -I../../Source/WebKit/chromium/gpu -I../../Source/WebKit/chromium -I../../Source/WebKit/chromium/third_party -I../../Source/Platform/chromium -Iobj/Source/WebCore/WebCore.gyp/webcore_remaining.gen -I../../Source/WebCore -I../../Source -I../../Source/WebCore/Modules/battery -I../../Source/WebCore/Modules/filesystem -I../../Source/WebCore/Modules/filesystem/chromium -I../../Source/WebCore/Modules/gamepad -I../../Source/WebCore/Modules/geolocation -I../../Source/WebCore/Modules/indexeddb -I../../Source/WebCore/Modules/indexeddb/chromium -I../../Source/WebCore/Modules/mediasource -I../../Source/WebCore/Modules/mediastream -I../../Source/WebCore/Modules/navigatorcontentutils -I../../Source/WebCore/Modules/notifications -I../../Source/WebCore/Modules/proximity -I../../Source/WebCore/Modules/quota -I../../Source/WebCore/Modules/speech -I../../Source/WebCore/Modules/webaudio -I../../Source/WebCore/Modules/webdatabase -I../../Source/WebCore/Modules/webdatabase/chromium -I../../Source/WebCore/Modules/websockets -I../../Source/WebCore/accessibility -I../../Source/WebCore/accessibility/chromium -I../../Source/WebCore/bindings -I../../Source/WebCore/bindings/generic -I../../Source/WebCore/bindings/v8 -I../../Source/WebCore/bindings/v8/custom -I../../Source/WebCore/bridge -I../../Source/WebCore/bridge/jni -I../../Source/WebCore/bridge/jni/v8 -I../../Source/WebCore/css -I../../Source/WebCore/dom -I../../Source/WebCore/dom/default -I../../Source/WebCore/dom/default/chromium -I../../Source/WebCore/editing -I../../Source/WebCore/fileapi -I../../Source/WebCore/history -I../../Source/WebCore/html -I../../Source/WebCore/html/canvas -I../../Source/WebCore/html/parser -I../../Source/WebCore/html/shadow -I../../Source/WebCore/html/track -I../../Source/WebCore/inspector -I../../Source/WebCore/loader -I../../Source/WebCore/loader/appcache -I../../Source/WebCore/loader/archive -I../../Source/WebCore/loader/archive/cf -I../../Source/WebCore/loader/archive/mhtml -I../../Source/WebCore/loader/cache -I../../Source/WebCore/loader/icon -I../../Source/WebCore/mathml -I../../Source/WebCore/page -I../../Source/WebCore/page/animation -I../../Source/WebCore/page/chromium -I../../Source/WebCore/page/scrolling -I../../Source/WebCore/page/scrolling/chromium -I../../Source/WebCore/platform -I../../Source/WebCore/platform/animation -I../../Source/WebCore/platform/audio -I../../Source/WebCore/platform/audio/chromium -I../../Source/WebCore/platform/chromium -I../../Source/WebCore/platform/chromium/support -I../../Source/WebCore/platform/graphics -I../../Source/WebCore/platform/graphics/chromium -I../../Source/WebCore/platform/graphics/chromium/cc -I../../Source/WebCore/platform/graphics/cpu/arm -I../../Source/WebCore/platform/graphics/cpu/arm/filters -I../../Source/WebCore/platform/graphics/filters -I../../Source/WebCore/platform/graphics/filters/skia -I../../Source/WebCore/platform/graphics/gpu -I../../Source/WebCore/platform/graphics/opentype -I../../Source/WebCore/platform/graphics/skia -I../../Source/WebCore/platform/graphics/transforms -I../../Source/WebCore/platform/image-decoders -I../../Source/WebCore/platform/image-decoders/bmp -I../../Source/WebCore/platform/image-decoders/gif -I../../Source/WebCore/platform/image-decoders/ico -I../../Source/WebCore/platform/image-decoders/jpeg -I../../Source/WebCore/platform/image-decoders/png -I../../Source/WebCore/platform/image-decoders/skia -I../../Source/WebCore/platform/image-decoders/webp -I../../Source/WebCore/platform/image-encoders/skia -I../../Source/WebCore/platform/leveldb -I../../Source/WebCore/platform/mediastream -I../../Source/WebCore/platform/mediastream/chromium -I../../Source/WebCore/platform/mock -I../../Source/WebCore/platform/network -I../../Source/WebCore/platform/network/chromium -I../../Source/WebCore/platform/sql -I../../Source/WebCore/platform/text -I../../Source/WebCore/platform/text/transcoder -I../../Source/WebCore/plugins -I../../Source/WebCore/plugins/chromium -I../../Source/WebCore/rendering -I../../Source/WebCore/rendering/mathml -I../../Source/WebCore/rendering/style -I../../Source/WebCore/rendering/svg -I../../Source/WebCore/storage -I../../Source/WebCore/svg -I../../Source/WebCore/svg/animation -I../../Source/WebCore/svg/graphics -I../../Source/WebCore/svg/graphics/filters -I../../Source/WebCore/svg/properties -I../../Source/ThirdParty/glu -I../../Source/WebCore/workers -I../../Source/WebCore/workers/chromium -I../../Source/WebCore/xml -I../../Source/WebCore/xml/parser -I../../Source/WebCore -I../../Source/WebCore/platform/audio/mac -I../../Source/WebCore/platform/cocoa -I../../Source/WebCore/platform/graphics/cg -I../../Source/WebCore/platform/graphics/cocoa -I../../Source/WebCore/platform/graphics/mac -I../../Source/WebCore/platform/mac -I../../Source/WebCore/platform/text/mac -I../../Source/WebCore/platform/graphics/harfbuzz -I../../Source/WebCore/platform/graphics/harfbuzz/ng -I../../Source/WebKit/chromium/third_party/angle/include/GLSLANG -Igen/webkit -Igen/webkit/bindings -I../../Source/WebKit/chromium/third_party/apple_webkit -I../../Source/WTF -I../../Source/JavaScriptCore -I../../Source/WebKit/chromium/skia/config -I../../Source/WebKit/chromium/third_party/skia/src/core -I../../Source/WebKit/chromium/third_party/skia/include/config -I../../Source/WebKit/chromium/third_party/skia/include/core -I../../Source/WebKit/chromium/third_party/skia/include/effects -I../../Source/WebKit/chromium/third_party/skia/include/pdf -I../../Source/WebKit/chromium/third_party/skia/include/gpu -I../../Source/WebKit/chromium/third_party/skia/include/gpu/gl -I../../Source/WebKit/chromium/third_party/skia/include/pipe -I../../Source/WebKit/chromium/third_party/skia/include/ports -I../../Source/WebKit/chromium/third_party/skia/include/utils -I../../Source/WebKit/chromium/skia/ext -I../../Source/WebKit/chromium/third_party/skia/include/utils/mac -I../../Source/WebKit/chromium/third_party/iccjpeg -I../../Source/WebKit/chromium/third_party/libwebp -I../../Source/WebKit/chromium/third_party/libpng -I../../Source/WebKit/chromium/third_party/libxml/mac/include -I../../Source/WebKit/chromium/third_party/libxml/src/include -I../../Source/WebKit/chromium/third_party/libxslt -I../../Source/WebKit/chromium/third_party/npapi -I../../Source/WebKit/chromium/third_party/npapi/bindings -I../../Source/WebKit/chromium/third_party/ots/include -I../../Source/WebKit/chromium/third_party/qcms/src -I../../Source/WebKit/chromium/third_party/sqlite -I../../Source/WebKit/chromium/third_party/zlib -I../../Source/WebKit/chromium/v8/include -I../../Source/WebKit/chromium/third_party/libjpeg_turbo -I../../Source/WebKit/chromium/third_party/leveldatabase/src/include -I../../Source/WebKit/chromium/third_party/leveldatabase/src -I../../Source/WebKit/chromium/third_party/leveldatabase -isysroot /Developer/SDKs/MacOSX10.6.sdk -O3 -gdwarf-2 -fvisibility=hidden -Werror -Wnewline-eof -mmacosx-version-min=10.6 -arch i386 -Wglobal-constructors -Wunused-parameter -Wall -Wendif-labels -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing -Wno-reserved-user-defined-literal -Wno-char-subscripts -Wno-unused-function -Wno-covered-switch-default -Wstring-conversion -Wexit-time-destructors -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics -fcolor-diagnostics -fno-strict-aliasing -std=gnu++11 -include ../../Source/WebCore/WebCorePrefix.h -c ../../Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp -o obj/source/webcore/modules/indexeddb/webcore_remaining.idbleveldbcoding.o
../../Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:1079:65: error: implicit conversion from &apos;const int64_t&apos; (aka &apos;const long long&apos;) to &apos;size_t&apos; (aka &apos;unsigned long&apos;) changes value from 9223372036854775807 to 4294967295 [-Werror,-Wconstant-conversion]
    Vector&lt;char&gt; databaseIdString = encodeIntSafely(databaseId, kMaxDatabaseId);
                                    ~~~~~~~~~~~~~~~             ^~~~~~~~~~~~~~
../../Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:1080:71: error: implicit conversion from &apos;const int64_t&apos; (aka &apos;const long long&apos;) to &apos;size_t&apos; (aka &apos;unsigned long&apos;) changes value from 9223372036854775807 to 4294967295 [-Werror,-Wconstant-conversion]
    Vector&lt;char&gt; objectStoreIdString = encodeIntSafely(objectStoreId, kMaxObjectStoreId);
                                       ~~~~~~~~~~~~~~~                ^~~~~~~~~~~~~~~~~
2 errors generated.
ninja: build stopped: subcommand failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852908</commentid>
    <comment_count>3</comment_count>
      <attachid>192601</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 17:19:01 -0700</bug_when>
    <thetext>Comment on attachment 192601
ROLLOUT of r145435

Clearing flags on attachment: 192601

Committed r145441: &lt;http://trac.webkit.org/changeset/145441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852909</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 17:19:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192601</attachid>
            <date>2013-03-11 17:12:25 -0700</date>
            <delta_ts>2013-03-11 17:19:01 -0700</delta_ts>
            <desc>ROLLOUT of r145435</desc>
            <filename>bug-112082-20130312000824.patch</filename>
            <type>text/plain</type>
            <size>54049</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZjNDkwZWFhNzljMjBh
MjJiMTc5MDRmZTZiZDBkMDlhZmUxMDE3MS4uOTE1MDk4YzZkNmE3OGFlYzAwZGVkMTI2ZWY2ZThm
YjQ1Y2I0MWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTAzLTExICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTQ1NDM1LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xNDU0MzUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMjA4MgorCisgICAgICAgIFN0aWxsIGRvZXMgbm90IGNvbXBpbGUgKFJlcXVl
c3RlZCBieSBqYW1lc3Igb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Z2V0
UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpr
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlWaWFJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhDdXJzb3JPcHRpb25zKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKElEQkJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVJbmRleE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0aW9uOjpEZWxldGVJbmRleE9wZXJhdGlv
bik6CisgICAgICAgIChEZWxldGVJbmRleE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
RGVsZXRlSW5kZXhPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRl
UmFuZ2VPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q2xlYXJPcGVyYXRp
b246OnBlcmZvcm0pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6S2V5UHJlZml4OjpL
ZXlQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6S2V5UHJlZml4
OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6U2NoZW1hVmVy
c2lvbktleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Ok1h
eERhdGFiYXNlSWRLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpEYXRhVmVyc2lvbktleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVs
REJDb2Rpbmc6OkRhdGFiYXNlRnJlZUxpc3RLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFzZU5hbWVLZXk6OmVuY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4TWV0
YURhdGFLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpP
YmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6SW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTmFtZXNLZXk6OmVuY29kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE5hbWVzS2V5OjplbmNvZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVEYXRhS2V5OjplbmNv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RXhpc3RzRW50cnlLZXk6
OmVuY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5o
OgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChLZXlQcmVmaXgpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW5kZXhXcml0ZXI6
OndyaXRlSW5kZXhLZXlzKToKKwogMjAxMy0wMy0xMSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBQcm90ZWN0IGFnYWluc3Qga2V5IHBy
ZWZpeCBvdmVyZmxvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjUyOTY1YjVkNDI0
YWYxYWRmNjkxMmFhNjgxODRhNmM3YTYzODQyZi4uYzg1NDA4YWIxNjdlZWE0ODEzZTFmYmNmZTQw
MTVjZTNjMTA5NDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMy0wMy0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NTQzNS4KKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTQ1NDM1CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwODIKKworICAgICAgICBTdGlsbCBkb2Vz
IG5vdCBjb21waWxlIChSZXF1ZXN0ZWQgYnkgamFtZXNyIG9uICN3ZWJraXQpLgorCisgICAgICAg
ICogdGVzdHMvSURCQmFja2luZ1N0b3JlVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJC
YWNraW5nU3RvcmVUZXN0OjpTZXRVcCk6CisgICAgICAgIChJREJCYWNraW5nU3RvcmVUZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAqIHRlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcDoKKyAg
ICAgICAgKElEQkxldmVsREJDb2RpbmcpOgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZzo6VEVT
VCk6CisKIDIwMTMtMDMtMTEgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluZGV4ZWREQjogUHJvdGVjdCBhZ2FpbnN0IGtleSBwcmVmaXggb3ZlcmZsb3dz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmNwcAppbmRleCAxY2FlMDQ3NDFmYTA5ZWYzNjlkZDU0YmU3YTAwM2U1NzEwNDk1MTZlLi4w
YWJjZmVkODZjNzRhNzE1ZmY2NjU2MzBlODIzZWY3ZDRiNzc0ZWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTYz
NiwxMSArNjM2LDkgQEAgc3RhdGljIGJvb2wgY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlw
ZShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWMKIH0KIAogLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGRvIHNvbWUgZXJyb3IgaGFuZGxpbmcgcmF0aGVyIHRoYW4gcGxvd2luZyBhaGVh
ZCB3aGVuIGJhZCBkYXRhIGlzIGVuY291bnRlcmVkLgotYm9vbCBJREJCYWNraW5nU3RvcmU6Omdl
dE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9i
amVjdFN0b3JlTWFwKiBvYmplY3RTdG9yZXMpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6Z2V0T2Jq
ZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0
U3RvcmVNYXAqIG9iamVjdFN0b3JlcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9y
ZTo6Z2V0T2JqZWN0U3RvcmVzIik7Ci0gICAgaWYgKCFLZXlQcmVmaXg6OmlzVmFsaWREYXRhYmFz
ZUlkKGRhdGFiYXNlSWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+IHN0YXJ0S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNl
SWQsIDEsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQpOwogCkBAIC03MjYsMTEgKzcyNCw5
IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFz
ZUlkLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpPCiAgICAgICAgIH0KIAogICAgICAgICBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG9iamVjdFN0b3JlTmFtZSwgb2JqZWN0U3RvcmVJZCwg
a2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbWF4SW5kZXhJZCk7Ci0gICAgICAgIGlmICghZ2V0SW5k
ZXhlcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAmbWV0YWRhdGEuaW5kZXhlcykpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGdldEluZGV4ZXMoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgJm1ldGFkYXRhLmluZGV4ZXMpOwogICAgICAgICBvYmplY3RTdG9yZXMtPnNl
dChvYmplY3RTdG9yZUlkLCBtZXRhZGF0YSk7CiAgICAgfQotICAgIHJldHVybiB0cnVlOwogfQog
CiBXQVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgc2V0TWF4T2JqZWN0U3RvcmVJZChMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCkKQEAgLTc1NCw4ICs3NTAsNiBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gc3Rh
dGljIGJvb2wgc2V0TWF4T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aQogYm9vbCBJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlIik7Ci0gICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTGV2
ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKICAgICBpZiAo
IXNldE1heE9iamVjdFN0b3JlSWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg1LDggKzc3OSw2IEBAIGJv
b2wgSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvCiBib29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIElEQl9UUkFDRSgiSURC
QmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSIpOwotICAgIGlmICghS2V5UHJlZml4Ojp2
YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7
CiAKICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lOwpAQCAtODA4LDE0ICs4MDAsMTMgQEAgYm9v
bCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW8KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24s
IEluZGV4RnJlZUxpc3RLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwg
SW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQp
KTsKICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIEluZGV4TWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKSwgSW5kZXhNZXRhRGF0YUtl
eTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKTsKIAotICAgIHJldHVy
biBjbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
KTsKKyAgICBjbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJREJCYWNraW5nU3RvcmU6Omdl
dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBW
ZWN0b3I8Y2hhcj4mIHJlY29yZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6
Z2V0UmVjb3JkIik7Ci0gICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTGV2ZWxEQlRyYW5zYWN0
aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjps
ZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKIAogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBsZXZlbGRiS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwga2V5KTsKQEAgLTg3MiwxMCArODYzLDcgQEAgV0FSTl9VTlVTRURfUkVU
VVJOIHN0YXRpYyBib29sIGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGkKIGJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHBycFZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQiKTsKLSAgICBpZiAoIUtleVByZWZp
eDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7Ci0KICAgICBMZXZlbERCVHJhbnNhY3Rp
b24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246Omxl
dmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogICAgIGludDY0X3QgdmVyc2lvbiA9
IC0xOwogICAgIGJvb2wgb2sgPSBnZXROZXdWZXJzaW9uTnVtYmVyKGxldmVsREJUcmFuc2FjdGlv
biwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgdmVyc2lvbik7CkBAIC04OTksMjQgKzg4Nywx
OSBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IElEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmNs
ZWFyT2JqZWN0U3RvcmUiKTsKLSAgICBpZiAoIUtleVByZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBMZXZlbERCVHJh
bnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwotICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBzdGFydEtleSA9IEtleVByZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKS5l
bmNvZGUoKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IEtleVByZWZpeChkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkICsgMSkuZW5jb2RlKCk7CisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IHN0YXJ0S2V5ID0gS2V5UHJlZml4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLmVu
Y29kZSgpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gS2V5UHJlZml4KGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQgKyAxLCAwKS5lbmNvZGUoKTsKIAogICAgIGRlbGV0ZVJhbmdl
KGxldmVsREJUcmFuc2FjdGlvbiwgc3RhcnRLZXksIHN0b3BLZXkpOwotICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikK
K3ZvaWQgSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKQogewogICAg
IElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQiKTsKLSAgICBpZiAoIUtl
eVByZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9
IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJh
bnNhY3Rpb24pOwogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9iamVjdFN0b3JlRGF0YUtleSA9
IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIHJl
Y29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKQEAgLTkyNCwxNCArOTA3LDExIEBAIGJvb2wg
SURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGluCiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlL
ZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIHJl
Y29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKICAgICBsZXZlbERCVHJhbnNhY3Rpb24tPnJl
bW92ZShleGlzdHNFbnRyeUtleSk7Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKIAogYm9vbCBJREJC
YWNraW5nU3RvcmU6OmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90JiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKQogewotICAg
IGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5z
YWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9u
RnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5R2VuZXJhdG9y
Q3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlHZW5lcmF0b3JD
dXJyZW50TnVtYmVyKTsKQEAgLTk4MCw4ICs5NjAsNiBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6
Z2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KgogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50
TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJv
b2wgY2hlY2tDdXJyZW50KQogewotICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAoY2hl
Y2tDdXJyZW50KSB7CkBAIC0xMDAxLDggKzk3OSw2IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpt
YXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFu
CiBib29sIElEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBSZWNvcmRJZGVudGlmaWVyKiBm
b3VuZFJlY29yZElkZW50aWZpZXIsIGJvb2wmIGZvdW5kKQogewogICAgIElEQl9UUkFDRSgiSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlIik7Ci0gICAgaWYgKCFLZXlQcmVm
aXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgZm91bmQgPSBmYWxzZTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVs
REJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFu
c2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsZXZlbGRi
S2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwga2V5KTsKQEAgLTEwNDEsMTEgKzEwMTcsOSBAQCBzdGF0aWMgYm9vbCBjaGVja0luZGV4QW5k
TWV0YURhdGFLZXkoY29uc3QgTGV2ZWxEQkl0ZXJhdG9yKiBpdCwgY29uc3QgVmVjdG9yPGNoYQog
CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBkbyBzb21lIGVycm9yIGhhbmRsaW5nIHJhdGhlciB0
aGFuIHBsb3dpbmcgYWhlYWQgd2hlbiBiYWQgZGF0YSBpcyBlbmNvdW50ZXJlZC4KLWJvb2wgSURC
QmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcCogaW5kZXhlcykKK3Zv
aWQgSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcCogaW5kZXhl
cykKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyIpOwotICAg
IGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IElu
ZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKTsK
ICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkICsgMSwgMCwgMCk7CiAKQEAgLTEwOTQsNyArMTA2
OCw2IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBJREJPCiAKICAgICAgICAgaW5kZXhlcy0+c2V0KGlu
ZGV4SWQsIElEQkluZGV4TWV0YWRhdGEoaW5kZXhOYW1lLCBpbmRleElkLCBrZXlQYXRoLCBpbmRl
eFVuaXF1ZSwgaW5kZXhNdWx0aUVudHJ5KSk7CiAgICAgfQotICAgIHJldHVybiB0cnVlOwogfQog
CiBXQVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgc2V0TWF4SW5kZXhJZChMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQpAQCAtMTEyMiw4ICsxMDk1LDYgQEAgV0FSTl9VTlVT
RURfUkVUVVJOIHN0YXRpYyBib29sIHNldE1heEluZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW4KIGJvb2wgSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlF
bnRyeSkKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgiKTsK
LSAgICBpZiAoIUtleVByZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24q
IGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVs
REJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogICAgIGlmICghc2V0TWF4SW5kZXhJZChs
ZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTQwLDExICsxMTExLDkgQEAgYm9vbCBJREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmU6
OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
KQordm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0
b3JlOjpkZWxldGVJbmRleCIpOwotICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhNZXRhRGF0YVN0YXJ0ID0gSW5kZXhNZXRhRGF0YUtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDApOwpAQCAtMTE1
NCwxNSArMTEyMywxMyBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludAogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBpbmRleERhdGFTdGFydCA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBp
bmRleERhdGFFbmQgPSBJbmRleERhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkKTsKICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24s
IGluZGV4RGF0YVN0YXJ0LCBpbmRleERhdGFFbmQpOwotICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIElEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3Qg
UmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikKK3ZvaWQgSURCQmFja2luZ1N0b3Jl
OjpwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiBy
ZWNvcmRJZGVudGlmaWVyKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRJ
bmRleERhdGFGb3JSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7Ci0gICAgaWYg
KCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKGluZGV4SWQgPj0gTWluaW11bUlu
ZGV4SWQpOwogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5z
YWN0aW9uKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRh
S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURC
S2V5KGtleSksIHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKQEAgLTExNzIsNyArMTEz
OSw2IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhCiAgICAgZGF0YS5hcHBlbmQocmVjb3JkSWRl
bnRpZmllci5wcmltYXJ5S2V5KCkpOwogCiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5wdXQoaW5k
ZXhEYXRhS2V5LCBkYXRhKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZmlu
ZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVxdWFsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgdGFyZ2V0LCBWZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQpA
QCAtMTIyMyw4ICsxMTg5LDYgQEAgc3RhdGljIGJvb2wgdmVyc2lvbkV4aXN0cyhMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGkKIGJvb2wgSURCQmFj
a2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3RvcjxjaGFyPiYgZm91bmRFbmNv
ZGVkUHJpbWFyeUtleSwgYm9vbCYgZm91bmQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5n
U3RvcmU6OmZpbmRLZXlJbkluZGV4Iik7Ci0gICAgQVNTRVJUKEtleVByZWZpeDo6dmFsaWRJZHMo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpOwotCiAgICAgQVNTRVJUKGZvdW5k
RW5jb2RlZFByaW1hcnlLZXkuaXNFbXB0eSgpKTsKICAgICBmb3VuZCA9IGZhbHNlOwogCkBAIC0x
MjY1LDggKzEyMjksNiBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sCiBib29sIElEQkJhY2tpbmdT
dG9yZTo6Z2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSwgUmVmUHRyPElEQktleT4mIHByaW1h
cnlLZXkpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlW
aWFJbmRleCIpOwotICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwogICAgIFZlY3RvcjxjaGFyPiBmb3VuZEVuY29kZWRQcmltYXJ5S2V5OwpA
QCAtMTI4Niw4ICsxMjQ4LDYgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlW
aWFJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2EKIGJvb2wgSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYg
Zm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlzdHMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNr
aW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgiKTsKLSAgICBpZiAoIUtleVByZWZpeDo6dmFsaWRJ
ZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGV4aXN0cyA9IGZhbHNlOwogICAgIFZlY3RvcjxjaGFyPiBmb3VuZEVuY29k
ZWRQcmltYXJ5S2V5OwpAQCAtMTgwMiw5ICsxNzYyLDYgQEAgYm9vbCBvYmplY3RTdG9yZUN1cnNv
ck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUkKIGJvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwotICAgIGlmICghS2V5UHJl
Zml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2Ut
Pmxvd2VyKCk7CiAgICAgYm9vbCB1cHBlckJvdW5kID0gcmFuZ2UgJiYgcmFuZ2UtPnVwcGVyKCk7
CiAgICAgY3Vyc29yT3B0aW9ucy5mb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1
cnNvck5leHROb0R1cGxpY2F0ZSB8fCBkaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JOZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmgKaW5kZXggOWM4ZTM3N2U5OTA4ZDU3MTg2M2I0ODViNDk2ZGZiYmQyOGEzNWJjNS4uZThl
ZTZiNmM4ODBjNjI1ODU4OTU2MDYxNjQ5ZTMyNTdjYTZiNjJiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNp
b24oSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGludDY0X3Qg
aW50VmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKLSAgICBib29sIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQs
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9iamVjdFN0b3JlTWFwKikgV0FSTl9VTlVTRURfUkVUVVJO
OworICAgIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgSURCRGF0YWJh
c2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXAqKTsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2Jq
ZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIApAQCAtODksMTUg
Kzg5LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkgV0FSTl9VTlVTRURf
UkVUVVJOOwogICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJLZXkmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFJlY29yZElkZW50aWZp
ZXIqKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdmlydHVhbCBib29sIGNsZWFyT2JqZWN0U3Rv
cmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdmlydHVhbCBib29s
IGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBX
QVJOX1VOVVNFRF9SRVRVUk47CisgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRLZXlH
ZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCYgY3VycmVudE51
bWJlcikgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZpcnR1YWwgYm9vbCBtYXliZVVwZGF0ZUtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5ld1N0YXRl
LCBib29sIGNoZWNrQ3VycmVudCkgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZpcnR1YWwgYm9v
bCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jiwg
UmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyLCBib29sJiBmb3VuZCkgV0FS
Tl9VTlVTRURfUkVUVVJOOwogCi0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSkgV0FSTl9VTlVTRURfUkVU
VVJOOwotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCkgV0FSTl9VTlVTRURfUkVUVVJOOwotICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRl
eERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAg
dmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBi
b29sIGlzTXVsdGlFbnRyeSk7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRh
Rm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CiAgICAgdmlydHVhbCBib29sIGdldFByaW1hcnlL
ZXlWaWFJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5
JiwgUmVmUHRyPElEQktleT4mIHByaW1hcnlLZXkpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2
aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFy
eUtleSwgYm9vbCYgZXhpc3RzKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKQEAgLTE3OCw3ICsxNzgs
NyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBmaW5kS2V5SW5JbmRleChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+
JiBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LCBib29sJiBmb3VuZCk7Ci0gICAgYm9vbCBnZXRJbmRl
eGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhOjpJbmRleE1hcCopIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICB2b2lkIGdl
dEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIElEQk9i
amVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwKik7CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDc2ZDgzNjhjMTQ5NzYxYjQwZjJmZjg4YTc2
NzA2ZjcxOTc1Y2IyYWQuLjJjMzAzMjBhNTRmMzRjYzIzMjg3MWNkY2Y3YjNjZGFiMWM0N2NjNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xNzksMjIgKzE3OSwyMiBAQCBwcml2YXRlOgog
CiBjbGFzcyBEZWxldGVJbmRleE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBiYWNraW5nU3RvcmUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
SW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVsZXRlSW5kZXhP
cGVyYXRpb24oYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVsZXRlSW5kZXhPcGVyYXRpb24oYmFja2luZ1N0
b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqKTsKIHByaXZhdGU6Ci0gICAgRGVsZXRl
SW5kZXhPcGVyYXRpb24oUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFk
YXRhKQorICAgIERlbGV0ZUluZGV4T3BlcmF0aW9uKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
PiBiYWNraW5nU3RvcmUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQog
ICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX29iamVj
dFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKLSAgICAgICAgLCBtX2luZGV4TWV0YWRhdGEoaW5kZXhN
ZXRhZGF0YSkKKyAgICAgICAgLCBtX2luZGV4SWQoaW5kZXhJZCkKICAgICB7CiAgICAgfQogCiAg
ICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29u
c3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7Ci0gICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSBt
X2luZGV4TWV0YWRhdGE7CisgICAgY29uc3QgaW50NjRfdCBtX2luZGV4SWQ7CiB9OwogCiBjbGFz
cyBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6Ok9wZXJhdGlvbiB7CkBAIC01MzQsOSArNTM0LDEwIEBAIGJvb2wgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6b3BlbkludGVybmFsKCkKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHN1Y2Nl
c3MgPT0gKG1fbWV0YWRhdGEuaWQgIT0gSW52YWxpZElkKSwgInN1Y2Nlc3MgPSAlcywgbV9pZCA9
ICVsbGQiLCBzdWNjZXNzID8gInRydWUiIDogImZhbHNlIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PihtX21ldGFkYXRhLmlkKSk7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChzdWNjZXNzKQotICAgICAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmdldE9iamVj
dFN0b3JlcyhtX21ldGFkYXRhLmlkLCAmbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMpOwotCisgICAg
aWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPmdldE9iamVjdFN0b3Jlcyht
X21ldGFkYXRhLmlkLCAmbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKG1fbWV0YWRhdGEubmFtZSwgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRh
LmludFZlcnNpb24sIG1fbWV0YWRhdGEuaWQpOwogfQogCkBAIC02MzksNyArNjQwLDcgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3QKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5kZXhlcy5jb250
YWlucyhpbmRleElkKSk7CiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0
YSA9IG9iamVjdFN0b3JlLmluZGV4ZXMuZ2V0KGluZGV4SWQpOwogCi0gICAgdHJhbnNhY3Rpb24t
PnNjaGVkdWxlVGFzayhEZWxldGVJbmRleE9wZXJhdGlvbjo6Y3JlYXRlKG1fYmFja2luZ1N0b3Jl
LCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSwgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlv
bjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKKyAgICB0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKERlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUobV9iYWNr
aW5nU3RvcmUsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpLCBEZWxldGVJbmRleEFib3J0T3BlcmF0
aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOwogCiAgICAg
cmVtb3ZlSW5kZXgob2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7CiB9CkBAIC02NDcsMTEgKzY0OCw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgoaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0CiB2b2lkIERlbGV0ZUluZGV4T3BlcmF0aW9uOjpw
ZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogewogICAgIElE
Ql9UUkFDRSgiRGVsZXRlSW5kZXhPcGVyYXRpb24iKTsKLSAgICBib29sIG9rID0gbV9iYWNraW5n
U3RvcmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCB0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4
TWV0YWRhdGEuaWQpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGlu
ZyBpbmRleCAnJXMnLiIsIG1faW5kZXhNZXRhZGF0YS5uYW1lLnV0ZjgoKS5kYXRhKCkpKTsKLSAg
ICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKLSAgICB9CisgICAgbV9iYWNraW5nU3Rv
cmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCB0
cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQp
OwogfQogCiB2b2lkIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCkBAIC0xMDI2LDEwICsxMDIzLDcgQEAgdm9p
ZCBEZWxldGVSYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
KiB0cmFuc2FjdGlvbikKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tp
bmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJh
bnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmpl
Y3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAg
IGlmIChiYWNraW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewotICAgICAgICAgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgYmFja2luZ1N0b3Jl
Q3Vyc29yLT5yZWNvcmRJZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgICAgICAgICAgbV9jYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsICJFcnJvciBkZWxldGluZyBkYXRhIGluIHJhbmdlIikpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYmFja2luZ1N0
b3JlLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBiYWNraW5nU3RvcmVDdXJzb3ItPnJlY29y
ZElkZW50aWZpZXIoKSk7CiAgICAgICAgIH0gd2hpbGUgKGJhY2tpbmdTdG9yZUN1cnNvci0+Y29u
dGludWVGdW5jdGlvbigwKSk7CiAgICAgfQogCkBAIC0xMDUwLDEwICsxMDQ0LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwKIHZvaWQgQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJPYmplY3RT
dG9yZUNsZWFyT3BlcmF0aW9uIik7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y2xlYXJPYmpl
Y3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFz
ZUlkLCBtX29iamVjdFN0b3JlSWQpKSB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCAiRXJyb3IgY2xlYXJpbmcgb2JqZWN0IHN0b3JlIikpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCk7CiAg
ICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IDNmZDI0Y2Ri
OTA2YTgyOGYzMzk5NjA2N2Q5M2E0NDBiNzVjYTI2NzUuLmY4NjI3ZGMzYTBiYTYzMDBjMGFhYmE4
ZDNhMTk4NTk5MTM2ZTBjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCkBAIC05NzMsNjYgKzk3MywxMSBAQCBLZXlQ
cmVmaXg6OktleVByZWZpeCgpCiB7CiB9CiAKLUtleVByZWZpeDo6S2V5UHJlZml4KGludDY0X3Qg
ZGF0YWJhc2VJZCkKLSAgICA6IG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQotICAgICwgbV9vYmpl
Y3RTdG9yZUlkKDApCi0gICAgLCBtX2luZGV4SWQoMCkKLXsKLSAgICBBU1NFUlQoS2V5UHJlZml4
Ojppc1ZhbGlkRGF0YWJhc2VJZChkYXRhYmFzZUlkKSk7Ci19Ci0KLUtleVByZWZpeDo6S2V5UHJl
Zml4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQotICAgIDogbV9k
YXRhYmFzZUlkKGRhdGFiYXNlSWQpCi0gICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJ
ZCkKLSAgICAsIG1faW5kZXhJZCgwKQotewotICAgIEFTU0VSVChLZXlQcmVmaXg6OmlzVmFsaWRE
YXRhYmFzZUlkKGRhdGFiYXNlSWQpKTsKLSAgICBBU1NFUlQoS2V5UHJlZml4Ojppc1ZhbGlkT2Jq
ZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKSk7Ci19Ci0KIEtleVByZWZpeDo6S2V5UHJlZml4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQp
CiAgICAgOiBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVJZChv
YmplY3RTdG9yZUlkKQogICAgICwgbV9pbmRleElkKGluZGV4SWQpCiB7Ci0gICAgQVNTRVJUKEtl
eVByZWZpeDo6aXNWYWxpZERhdGFiYXNlSWQoZGF0YWJhc2VJZCkpOwotICAgIEFTU0VSVChLZXlQ
cmVmaXg6OmlzVmFsaWRPYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpKTsKLSAgICBBU1NFUlQo
S2V5UHJlZml4Ojppc1ZhbGlkSW5kZXhJZChpbmRleElkKSk7Ci19Ci0KLUtleVByZWZpeDo6S2V5
UHJlZml4KFR5cGUgdHlwZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCkKLSAgICA6IG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQotICAg
ICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCi0gICAgLCBtX2luZGV4SWQoaW5kZXhJ
ZCkKLXsKLSAgICBBU1NFUlQodHlwZSA9PSBJbnZhbGlkVHlwZSk7Ci0gICAgQVNTRVJUKEtleVBy
ZWZpeDo6aXNWYWxpZERhdGFiYXNlSWQoZGF0YWJhc2VJZCkpOwotICAgIEFTU0VSVChLZXlQcmVm
aXg6OmlzVmFsaWRPYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpKTsKLX0KLQotCi1LZXlQcmVm
aXggS2V5UHJlZml4OjpjcmVhdGVXaXRoU3BlY2lhbEluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCi17Ci0gICAgQVNTRVJUKEtl
eVByZWZpeDo6aXNWYWxpZERhdGFiYXNlSWQoZGF0YWJhc2VJZCkpOwotICAgIEFTU0VSVChLZXlQ
cmVmaXg6OmlzVmFsaWRPYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpKTsKLSAgICBBU1NFUlQo
aW5kZXhJZCk7Ci0gICAgcmV0dXJuIEtleVByZWZpeChJbnZhbGlkVHlwZSwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7Ci19Ci0KLQotYm9vbCBLZXlQcmVmaXg6OmlzVmFsaWRE
YXRhYmFzZUlkKGludDY0X3QgZGF0YWJhc2VJZCkKLXsKLSAgICByZXR1cm4gKGRhdGFiYXNlSWQg
PiAwKSAmJiAoZGF0YWJhc2VJZCA8IEtleVByZWZpeDo6a01heERhdGFiYXNlSWQpOwotfQotCi1i
b29sIEtleVByZWZpeDo6aXNWYWxpZE9iamVjdFN0b3JlSWQoaW50NjRfdCBvYmplY3RTdG9yZUlk
KQotewotICAgIHJldHVybiAob2JqZWN0U3RvcmVJZCA+IDApICYmIChvYmplY3RTdG9yZUlkIDwg
S2V5UHJlZml4OjprTWF4T2JqZWN0U3RvcmVJZCk7Ci19Ci0KLWJvb2wgS2V5UHJlZml4Ojppc1Zh
bGlkSW5kZXhJZChpbnQ2NF90IGluZGV4SWQpCi17Ci0gICAgcmV0dXJuIChpbmRleElkID49IE1p
bmltdW1JbmRleElkKSAmJiAoaW5kZXhJZCA8IEtleVByZWZpeDo6a01heEluZGV4SWQpOwogfQog
CiBjb25zdCBjaGFyKiBLZXlQcmVmaXg6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3Qg
Y2hhciogbGltaXQsIEtleVByZWZpeCogcmVzdWx0KQpAQCAtMTA1OSwzMyArMTAwNCwyMiBAQCBj
b25zdCBjaGFyKiBLZXlQcmVmaXg6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hh
ciogbGltaXQsIEtleVByZWZpeCogcgogICAgIHJldHVybiBzdGFydDsKIH0KIAotVmVjdG9yPGNo
YXI+IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKQotewotICAgIGNvbnN0IFZlY3RvcjxjaGFyLCA0
PiByZXN1bHQoNCwgMCk7Ci0gICAgQVNTRVJUKGVuY29kZUludGVybmFsKDAsIDAsIDApID09IFZl
Y3RvcjxjaGFyPig0LCAwKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogVmVjdG9yPGNoYXI+
IEtleVByZWZpeDo6ZW5jb2RlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUlkICE9
IEludmFsaWRJZCk7CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJZCAhPSBJbnZhbGlkSWQpOwog
ICAgIEFTU0VSVChtX2luZGV4SWQgIT0gSW52YWxpZElkKTsKLSAgICByZXR1cm4gZW5jb2RlSW50
ZXJuYWwobV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCk7Ci19CiAKLVZl
Y3RvcjxjaGFyPiBLZXlQcmVmaXg6OmVuY29kZUludGVybmFsKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCi17Ci0gICAgVmVjdG9yPGNo
YXI+IGRhdGFiYXNlSWRTdHJpbmcgPSBlbmNvZGVJbnRTYWZlbHkoZGF0YWJhc2VJZCwga01heERh
dGFiYXNlSWQpOwotICAgIFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZUlkU3RyaW5nID0gZW5jb2Rl
SW50U2FmZWx5KG9iamVjdFN0b3JlSWQsIGtNYXhPYmplY3RTdG9yZUlkKTsKLSAgICBWZWN0b3I8
Y2hhcj4gaW5kZXhJZFN0cmluZyA9IGVuY29kZUludFNhZmVseShpbmRleElkLCBrTWF4SW5kZXhJ
ZCk7CisgICAgVmVjdG9yPGNoYXI+IGRhdGFiYXNlSWRTdHJpbmcgPSBlbmNvZGVJbnQobV9kYXRh
YmFzZUlkKTsKKyAgICBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVJZFN0cmluZyA9IGVuY29kZUlu
dChtX29iamVjdFN0b3JlSWQpOworICAgIFZlY3RvcjxjaGFyPiBpbmRleElkU3RyaW5nID0gZW5j
b2RlSW50KG1faW5kZXhJZCk7CisKKyAgICBBU1NFUlQoZGF0YWJhc2VJZFN0cmluZy5zaXplKCkg
PD0gOCk7CisgICAgQVNTRVJUKG9iamVjdFN0b3JlSWRTdHJpbmcuc2l6ZSgpIDw9IDgpOworICAg
IEFTU0VSVChpbmRleElkU3RyaW5nLnNpemUoKSA8PSA0KTsKIAotICAgIEFTU0VSVChkYXRhYmFz
ZUlkU3RyaW5nLnNpemUoKSA8PSBrTWF4RGF0YWJhc2VJZFNpemVCeXRlcyk7Ci0gICAgQVNTRVJU
KG9iamVjdFN0b3JlSWRTdHJpbmcuc2l6ZSgpIDw9IGtNYXhPYmplY3RTdG9yZUlkU2l6ZUJ5dGVz
KTsKLSAgICBBU1NFUlQoaW5kZXhJZFN0cmluZy5zaXplKCkgPD0ga01heEluZGV4SWRTaXplQnl0
ZXMpOwogCi0gICAgdW5zaWduZWQgY2hhciBmaXJzdEJ5dGUgPSAoZGF0YWJhc2VJZFN0cmluZy5z
aXplKCkgLSAxKSA8PCAoa01heE9iamVjdFN0b3JlSWRTaXplQml0cyArIGtNYXhJbmRleElkU2l6
ZUJpdHMpIHwgKG9iamVjdFN0b3JlSWRTdHJpbmcuc2l6ZSgpIC0gMSkgPDwga01heEluZGV4SWRT
aXplQml0cyB8IChpbmRleElkU3RyaW5nLnNpemUoKSAtIDEpOwotICAgIENPTVBJTEVfQVNTRVJU
KGtNYXhEYXRhYmFzZUlkU2l6ZUJpdHMgKyBrTWF4T2JqZWN0U3RvcmVJZFNpemVCaXRzICsga01h
eEluZGV4SWRTaXplQml0cyA9PSBzaXplb2YoZmlyc3RCeXRlKSAqIDgsIENBTlRfRU5DT0RFX0lE
Uyk7CisgICAgdW5zaWduZWQgY2hhciBmaXJzdEJ5dGUgPSAoZGF0YWJhc2VJZFN0cmluZy5zaXpl
KCkgLSAxKSA8PCA1IHwgKG9iamVjdFN0b3JlSWRTdHJpbmcuc2l6ZSgpIC0gMSkgPDwgMiB8IChp
bmRleElkU3RyaW5nLnNpemUoKSAtIDEpOwogICAgIFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5l
QnVmZmVyU2l6ZT4gcmV0OwogICAgIHJldC5hcHBlbmQoZmlyc3RCeXRlKTsKICAgICByZXQuYXBw
ZW5kKGRhdGFiYXNlSWRTdHJpbmcpOwpAQCAtMTEzNCwyMSArMTA2OCwyNCBAQCBLZXlQcmVmaXg6
OlR5cGUgS2V5UHJlZml4Ojp0eXBlKCkgY29uc3QKIAogVmVjdG9yPGNoYXI+IFNjaGVtYVZlcnNp
b25LZXk6OmVuY29kZSgpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5j
b2RlRW1wdHkoKTsKKyAgICBLZXlQcmVmaXggcHJlZml4KDAsIDAsIDApOworICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKFNj
aGVtYVZlcnNpb25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFy
PiBNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUoKQogewotICAgIFZlY3RvcjxjaGFyPiByZXQgPSBL
ZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7CisgICAgS2V5UHJlZml4IHByZWZpeCgwLCAwLCAwKTsK
KyAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwogICAgIHJldC5hcHBlbmQo
ZW5jb2RlQnl0ZShNYXhEYXRhYmFzZUlkVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CiBWZWN0b3I8Y2hhcj4gRGF0YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7Ci0gICAgVmVjdG9yPGNo
YXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKKyAgICBLZXlQcmVmaXggcHJlZml4
KDAsIDAsIDApOworICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CiAgICAg
cmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFWZXJzaW9uVHlwZUJ5dGUpKTsKICAgICByZXR1cm4g
cmV0OwogfQpAQCAtMTE3OSw3ICsxMTE2LDggQEAgY29uc3QgY2hhciogRGF0YWJhc2VGcmVlTGlz
dEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgRGEKIAog
VmVjdG9yPGNoYXI+IERhdGFiYXNlRnJlZUxpc3RLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNl
SWQpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsK
KyAgICBLZXlQcmVmaXggcHJlZml4KDAsIDAsIDApOworICAgIFZlY3RvcjxjaGFyPiByZXQgPSBw
cmVmaXguZW5jb2RlKCk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxp
c3RUeXBlQnl0ZSkpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFiYXNlSWQpKTsK
ICAgICByZXR1cm4gcmV0OwpAQCAtMTIyNiw3ICsxMTY0LDggQEAgY29uc3QgY2hhciogRGF0YWJh
c2VOYW1lS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBE
YXRhYmEKIAogVmVjdG9yPGNoYXI+IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKLSAgICBWZWN0b3I8Y2hh
cj4gcmV0ID0gS2V5UHJlZml4OjplbmNvZGVFbXB0eSgpOworICAgIEtleVByZWZpeCBwcmVmaXgo
MCwgMCwgMCk7CisgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKICAgICBy
ZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKICAgICByZXQuYXBw
ZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7CiAgICAgcmV0LmFwcGVuZChlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKGRhdGFiYXNlTmFtZSkpOwpAQCAtMTI1Myw3ICsxMTkyLDcgQEAg
aW50IERhdGFiYXNlTmFtZUtleTo6Y29tcGFyZShjb25zdCBEYXRhYmFzZU5hbWVLZXkmIG90aGVy
KQogCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0
YWJhc2VJZCwgTWV0YURhdGFUeXBlIG1ldGFEYXRhVHlwZSkKIHsKLSAgICBLZXlQcmVmaXggcHJl
Zml4KGRhdGFiYXNlSWQpOworICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgMCwgMCk7
CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKICAgICByZXQuYXBwZW5k
KGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKQEAgLTEyOTIsNyAr
MTIzMSw3IEBAIGNvbnN0IGNoYXIqIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmRlY29kZShjb25z
dCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsCiAKIFZlY3RvcjxjaGFyPiBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIHVuc2lnbmVkIGNoYXIgbWV0YURhdGFUeXBlKQogewotICAgIEtleVByZWZpeCBw
cmVmaXgoZGF0YWJhc2VJZCk7CisgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCAwLCAw
KTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwogICAgIHJldC5hcHBl
bmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUpKTsKICAgICByZXQuYXBw
ZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CkBAIC0xMzY3LDcgKzEzMDYsNyBAQCBj
b25zdCBjaGFyKiBJbmRleE1ldGFEYXRhS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGxpbWl0LCBJbmRleAogCiBWZWN0b3I8Y2hhcj4gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIHVuc2lnbmVkIGNoYXIgbWV0YURhdGFUeXBlKQogewotICAgIEtleVByZWZpeCBw
cmVmaXgoZGF0YWJhc2VJZCk7CisgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCAwLCAw
KTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwogICAgIHJldC5hcHBl
bmQoZW5jb2RlQnl0ZShJbmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVu
Y29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CkBAIC0xNDMwLDcgKzEzNjksNyBAQCBjb25zdCBj
aGFyKiBPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGxpbWl0LAogCiBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewotICAg
IEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CisgICAgS2V5UHJlZml4IHByZWZpeChkYXRh
YmFzZUlkLCAwLCAwKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwog
ICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsK
ICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CkBAIC0xNDg3LDcg
KzE0MjYsNyBAQCBjb25zdCBjaGFyKiBJbmRleEZyZWVMaXN0S2V5OjpkZWNvZGUoY29uc3QgY2hh
ciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRleAogCiBWZWN0b3I8Y2hhcj4gSW5kZXhG
cmVlTGlzdEtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQpCiB7Ci0gICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlk
KTsKKyAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIDAsIDApOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKElu
ZGV4RnJlZUxpc3RUeXBlQnl0ZSkpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVj
dFN0b3JlSWQpKTsKQEAgLTE1NDMsNyArMTQ4Miw3IEBAIGNvbnN0IGNoYXIqIE9iamVjdFN0b3Jl
TmFtZXNLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIE9i
CiAKIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUoaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAgICBLZXlQcmVmaXgg
cHJlZml4KGRhdGFiYXNlSWQpOworICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgMCwg
MCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKICAgICByZXQuYXBw
ZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKSk7CiAgICAgcmV0LmFwcGVu
ZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0b3JlTmFtZSkpOwpAQCAtMTU4Niw3ICsx
NTI1LDcgQEAgY29uc3QgY2hhciogSW5kZXhOYW1lc0tleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0
YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgSW5kZXhOYW0KIAogVmVjdG9yPGNoYXI+IEluZGV4TmFt
ZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFz
ZUlkKTsKKyAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIDAsIDApOwogICAgIFZlY3Rv
cjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRl
KEluZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9i
amVjdFN0b3JlSWQpKTsKQEAgLTE2MTgsNyArMTU1Nyw3IEBAIGNvbnN0IGNoYXIqIE9iamVjdFN0
b3JlRGF0YUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIE9i
amVjCiAKIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGNoYXI+IGVuY29k
ZWRVc2VyS2V5KQogewotICAgIEtleVByZWZpeCBwcmVmaXgoS2V5UHJlZml4OjpjcmVhdGVXaXRo
U3BlY2lhbEluZGV4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIFNwZWNpYWxJbmRleE51bWJl
cikpOworICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgU3Bl
Y2lhbEluZGV4TnVtYmVyKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgp
OwogICAgIHJldC5hcHBlbmQoZW5jb2RlZFVzZXJLZXkpOwogCkBAIC0xNjYwLDcgKzE1OTksNyBA
QCBjb25zdCBjaGFyKiBFeGlzdHNFbnRyeUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBj
b25zdCBjaGFyKiBlbmQsIEV4aXN0c0VudAogCiBWZWN0b3I8Y2hhcj4gRXhpc3RzRW50cnlLZXk6
OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
VmVjdG9yPGNoYXI+JiBlbmNvZGVkS2V5KQogewotICAgIEtleVByZWZpeCBwcmVmaXgoS2V5UHJl
Zml4OjpjcmVhdGVXaXRoU3BlY2lhbEluZGV4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIFNw
ZWNpYWxJbmRleE51bWJlcikpOworICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0g
cHJlZml4LmVuY29kZSgpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlZEtleSk7CiAgICAgcmV0dXJu
IHJldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJDb2RpbmcuaAppbmRleCBkZGNkNzlhZmY0ZDdlN2NjN2Y2NWNlZGRlODg1NmUyOTRkNGI4ZTU1
Li4wMjRjZGVhYzEzZWM5MzU1MTgyMDJkNjZkZmY1MmVkODU2YmFmODA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC01
NCwxMSArNTQsNiBAQCBWZWN0b3I8Y2hhcj4gbWluSURCS2V5KCk7CiBWZWN0b3I8Y2hhcj4gZW5j
b2RlQm9vbChib29sKTsKIGJvb2wgZGVjb2RlQm9vbChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3Qg
Y2hhciogZW5kKTsKIFZlY3RvcjxjaGFyPiBlbmNvZGVJbnQoaW50NjRfdCk7Ci1pbmxpbmUgVmVj
dG9yPGNoYXI+IGVuY29kZUludFNhZmVseShpbnQ2NF90IG5QYXJhbSwgc2l6ZV90IG1heCkKLXsK
LSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihuUGFyYW0pIDw9IG1heCk7Ci0gICAgcmV0
dXJuIGVuY29kZUludChuUGFyYW0pOwotfQogaW50NjRfdCBkZWNvZGVJbnQoY29uc3QgY2hhciog
YmVnaW4sIGNvbnN0IGNoYXIqIGVuZCk7CiBWZWN0b3I8Y2hhcj4gZW5jb2RlVmFySW50KGludDY0
X3QpOwogY29uc3QgY2hhciogZGVjb2RlVmFySW50KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIq
IGxpbWl0LCBpbnQ2NF90JiBmb3VuZEludCk7CkBAIC04MiwxNCArNzcsMTAgQEAgaW50IGNvbXBh
cmUoY29uc3QgTGV2ZWxEQlNsaWNlJiwgY29uc3QgTGV2ZWxEQlNsaWNlJiwgYm9vbCBpbmRleEtl
eXMgPSBmYWxzZSk7CiBjbGFzcyBLZXlQcmVmaXggewogcHVibGljOgogICAgIEtleVByZWZpeCgp
OwotICAgIGV4cGxpY2l0IEtleVByZWZpeChpbnQ2NF90IGRhdGFiYXNlSWQpOwotICAgIEtleVBy
ZWZpeChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgS2V5
UHJlZml4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQpOwotICAgIHN0YXRpYyBLZXlQcmVmaXggY3JlYXRlV2l0aFNwZWNpYWxJbmRleChp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
KTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGxpbWl0LCBLZXlQcmVmaXgqIHJlc3VsdCk7CiAgICAgVmVjdG9yPGNoYXI+IGVu
Y29kZSgpIGNvbnN0OwotICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlRW1wdHkoKTsKICAg
ICBpbnQgY29tcGFyZShjb25zdCBLZXlQcmVmaXgmIG90aGVyKSBjb25zdDsKIAogICAgIGVudW0g
VHlwZSB7CkBAIC0xMDEsMzQgKzkyLDYgQEAgcHVibGljOgogICAgICAgICBJbnZhbGlkVHlwZQog
ICAgIH07CiAKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhEYXRhYmFzZUlkU2l6ZUJpdHMg
PSAzOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga01heE9iamVjdFN0b3JlSWRTaXplQml0cyA9
IDM7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4SW5kZXhJZFNpemVCaXRzID0gMjsKLQot
ICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga01heERhdGFiYXNlSWRTaXplQnl0ZXMgPSAxVUxMIDw8
IGtNYXhEYXRhYmFzZUlkU2l6ZUJpdHM7IC8vIDgKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtN
YXhPYmplY3RTdG9yZUlkU2l6ZUJ5dGVzID0gMVVMTCA8PCBrTWF4T2JqZWN0U3RvcmVJZFNpemVC
aXRzOyAvLyA4Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4SW5kZXhJZFNpemVCeXRlcyA9
IDFVTEwgPDwga01heEluZGV4SWRTaXplQml0czsgLy8gNAotCi0gICAgc3RhdGljIGNvbnN0IHNp
emVfdCBrTWF4RGF0YWJhc2VJZEJpdHMgPSBrTWF4RGF0YWJhc2VJZFNpemVCeXRlcyAqIDggLSAx
OyAvLyA2MwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga01heE9iamVjdFN0b3JlSWRCaXRzID0g
a01heE9iamVjdFN0b3JlSWRTaXplQnl0ZXMgKiA4IC0gMTsgLy8gNjMKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGtNYXhJbmRleElkQml0cyA9IGtNYXhJbmRleElkU2l6ZUJ5dGVzICogOCAtIDE7
IC8vIDMxCi0KLSAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBrTWF4RGF0YWJhc2VJZCA9ICgxVUxM
IDw8IGtNYXhEYXRhYmFzZUlkQml0cykgLSAxOyAvLyBtYXggc2lnbmVkIGludDY0X3QKLSAgICBz
dGF0aWMgY29uc3QgaW50NjRfdCBrTWF4T2JqZWN0U3RvcmVJZCA9ICgxVUxMIDw8IGtNYXhPYmpl
Y3RTdG9yZUlkQml0cykgLSAxOyAvLyBtYXggc2lnbmVkIGludDY0X3QKLSAgICBzdGF0aWMgY29u
c3QgaW50NjRfdCBrTWF4SW5kZXhJZCA9ICgxVUxMIDw8IGtNYXhJbmRleElkQml0cykgLSAxOyAv
LyBtYXggc2lnbmVkIGludDMyX3QKLQotICAgIHN0YXRpYyBib29sIGlzVmFsaWREYXRhYmFzZUlk
KGludDY0X3QgZGF0YWJhc2VJZCk7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZE9iamVjdFN0b3Jl
SWQoaW50NjRfdCBpbmRleElkKTsKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkSW5kZXhJZChpbnQ2
NF90IGluZGV4SWQpOwotICAgIHN0YXRpYyBib29sIHZhbGlkSWRzKGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCi0gICAgewotICAgICAg
ICByZXR1cm4gaXNWYWxpZERhdGFiYXNlSWQoZGF0YWJhc2VJZCkgJiYgaXNWYWxpZE9iamVjdFN0
b3JlSWQob2JqZWN0U3RvcmVJZCkgJiYgaXNWYWxpZEluZGV4SWQoaW5kZXhJZCk7Ci0gICAgfQot
ICAgIHN0YXRpYyBib29sIHZhbGlkSWRzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzVmFsaWREYXRhYmFzZUlkKGRhdGFi
YXNlSWQpICYmIGlzVmFsaWRPYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpOwotICAgIH0KLQog
ICAgIFR5cGUgdHlwZSgpIGNvbnN0OwogCiAgICAgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CkBAIC0x
MzYsMTEgKzk5LDYgQEAgcHVibGljOgogICAgIGludDY0X3QgbV9pbmRleElkOwogCiAgICAgc3Rh
dGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gLTE7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGlj
IFZlY3RvcjxjaGFyPiBlbmNvZGVJbnRlcm5hbChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKLSAgICAvLyBTcGVjaWFsIGNvbnN0cnVj
dG9yIGZvciBjcmVhdGVXaXRoU3BlY2lhbEluZGV4KCkKLSAgICBLZXlQcmVmaXgoVHlwZSwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7
CiB9OwogCiBjbGFzcyBTY2hlbWFWZXJzaW9uS2V5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKaW5kZXggNWM1ZWQwYzRkZjc0YjMyODcwZTM3NjQ0YThiNDI4YTgwMWE4NGVkYS4uNGZjOGIx
N2YzNDJmY2MwOGJkMWU2YjQwMzkzNWY2YTg4OWUzM2M4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAKQEAgLTY0LDkgKzY0LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpJbmRleFdyaXRlcjo6d3JpdGVJbmRleEtleXMoY29uc3QgSURCQmFja2luZ1N0b3IKIHsKICAg
ICBpbnQ2NF90IGluZGV4SWQgPSBtX2luZGV4TWV0YWRhdGEuaWQ7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2luZGV4S2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICBib29sIG9rID0g
YmFja2luZ1N0b3JlLnB1dEluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0KCksIHJlY29y
ZElkZW50aWZpZXIpOwotICAgICAgICAvLyBUaGlzIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiB2
ZXJpZmllZCBhcyBhIHZhbGlkIHdyaXRlIGR1cmluZyB2ZXJpZnlJbmRleEtleXMuCi0gICAgICAg
IEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKKyAgICAgICAgYmFja2luZ1N0b3JlLnB1dEluZGV4RGF0
YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJ
ZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0KCksIHJlY29yZElkZW50aWZpZXIpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCYWNraW5nU3Rv
cmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmFja2luZ1N0b3Jl
VGVzdC5jcHAKaW5kZXggMDE5N2ExNTVlMjdlOGEwMzE3NTMxMjI1ZDNmNmM0YjIwMDM1MzcwNS4u
NTMwMmUxMmFmYzI3MzVlMWMxNzhhODdiZGQwZWM3MDRmZmE2MWMzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCYWNraW5nU3RvcmVUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJhY2tpbmdTdG9yZVRlc3QuY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAKICNpbmNsdWRlICJJ
REJGYWN0b3J5QmFja2VuZEltcGwuaCIKLSNpbmNsdWRlICJJREJMZXZlbERCQ29kaW5nLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgpAQCAt
MzcsNyArMzYsNiBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIElEQkxldmVsREJDb2Rpbmc6OktleVByZWZpeDsKIAogbmFt
ZXNwYWNlIHsKIApAQCAtNTUsMTMgKzUzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gdXNlZnVs
IGtleXMgYW5kIHZhbHVlcyBkdXJpbmcgdGVzdHMKICAgICAgICAgY29uc3QgY2hhciByYXdWYWx1
ZTFbXSA9ICJ2YWx1ZTEiOwogICAgICAgICBjb25zdCBjaGFyIHJhd1ZhbHVlMltdID0gInZhbHVl
MiI7Ci0gICAgICAgIGNvbnN0IGNoYXIgcmF3VmFsdWUzW10gPSAidmFsdWUzIjsKICAgICAgICAg
bV92YWx1ZTEuYXBwZW5kKHJhd1ZhbHVlMSwgc2l6ZW9mKHJhd1ZhbHVlMSkpOwogICAgICAgICBt
X3ZhbHVlMi5hcHBlbmQocmF3VmFsdWUyLCBzaXplb2YocmF3VmFsdWUyKSk7Ci0gICAgICAgIG1f
dmFsdWUzLmFwcGVuZChyYXdWYWx1ZTMsIHNpemVvZihyYXdWYWx1ZTMpKTsKICAgICAgICAgbV9r
ZXkxID0gSURCS2V5OjpjcmVhdGVOdW1iZXIoOTkpOwogICAgICAgICBtX2tleTIgPSBJREJLZXk6
OmNyZWF0ZVN0cmluZygia2V5MiIpOwotICAgICAgICBtX2tleTMgPSBJREJLZXk6OmNyZWF0ZVN0
cmluZygia2V5MyIpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtNzAsMTAgKzY1LDggQEAgcHJv
dGVjdGVkOgogICAgIC8vIFNhbXBsZSBrZXlzIGFuZCB2YWx1ZXMgdGhhdCBhcmUgY29uc2lzdGVu
dC4KICAgICBSZWZQdHI8SURCS2V5PiBtX2tleTE7CiAgICAgUmVmUHRyPElEQktleT4gbV9rZXky
OwotICAgIFJlZlB0cjxJREJLZXk+IG1fa2V5MzsKICAgICBWZWN0b3I8Y2hhcj4gbV92YWx1ZTE7
CiAgICAgVmVjdG9yPGNoYXI+IG1fdmFsdWUyOwotICAgIFZlY3RvcjxjaGFyPiBtX3ZhbHVlMzsK
IH07CiAKIFRFU1RfRihJREJCYWNraW5nU3RvcmVUZXN0LCBQdXRHZXRDb25zaXN0ZW5jeSkKQEAg
LTEwMywyNiArOTYsMTIgQEAgVEVTVF9GKElEQkJhY2tpbmdTdG9yZVRlc3QsIEhpZ2hJZHMpCiB7
CiAgICAgY29uc3QgaW50NjRfdCBoaWdoRGF0YWJhc2VJZCA9IDFVTEwgPDwgMzU7CiAgICAgY29u
c3QgaW50NjRfdCBoaWdoT2JqZWN0U3RvcmVJZCA9IDFVTEwgPDwgMzk7Ci0gICAgLy8gaW5kZXhJ
ZHMgYXJlIGNhcHBlZCBhdCAzMiBiaXRzIGZvciBzdG9yYWdlIHB1cnBvc2VzLgotICAgIGNvbnN0
IGludDY0X3QgaGlnaEluZGV4SWQgPSAxVUxMIDw8IDI5OwotCi0gICAgY29uc3QgaW50NjRfdCBp
bnZhbGlkSGlnaEluZGV4SWQgPSAxVUxMIDw8IDM3OwotCi0gICAgY29uc3QgUmVmUHRyPElEQktl
eT4gaW5kZXhLZXkgPSBtX2tleTI7Ci0gICAgVmVjdG9yPGNoYXI+IGluZGV4S2V5UmF3ID0gSURC
TGV2ZWxEQkNvZGluZzo6ZW5jb2RlSURCS2V5KCppbmRleEtleSk7CiAgICAgewogICAgICAgICBJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uMShtX2JhY2tpbmdTdG9yZS5n
ZXQoKSk7CiAgICAgICAgIHRyYW5zYWN0aW9uMS5iZWdpbigpOwogICAgICAgICBJREJCYWNraW5n
U3RvcmU6OlJlY29yZElkZW50aWZpZXIgcmVjb3JkOwogICAgICAgICBib29sIG9rID0gbV9iYWNr
aW5nU3RvcmUtPnB1dFJlY29yZCgmdHJhbnNhY3Rpb24xLCBoaWdoRGF0YWJhc2VJZCwgaGlnaE9i
amVjdFN0b3JlSWQsICptX2tleTEuZ2V0KCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fdmFsdWUx
LmRhdGEoKSwgbV92YWx1ZTEuc2l6ZSgpKSwgJnJlY29yZCk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KG9rKTsKLQotICAgICAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5wdXRJbmRleERhdGFGb3JSZWNv
cmQoJnRyYW5zYWN0aW9uMSwgaGlnaERhdGFiYXNlSWQsIGhpZ2hPYmplY3RTdG9yZUlkLCBpbnZh
bGlkSGlnaEluZGV4SWQsICppbmRleEtleSwgcmVjb3JkKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KG9rKTsKLQotICAgICAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5wdXRJbmRleERhdGFGb3JSZWNv
cmQoJnRyYW5zYWN0aW9uMSwgaGlnaERhdGFiYXNlSWQsIGhpZ2hPYmplY3RTdG9yZUlkLCBoaWdo
SW5kZXhJZCwgKmluZGV4S2V5LCByZWNvcmQpOwotICAgICAgICBFWFBFQ1RfVFJVRShvayk7Ci0K
ICAgICAgICAgb2sgPSB0cmFuc2FjdGlvbjEuY29tbWl0KCk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KG9rKTsKICAgICB9CkBAIC0xMzMsNjkgKzExMiwxMiBAQCBURVNUX0YoSURCQmFja2luZ1N0b3Jl
VGVzdCwgSGlnaElkcykKICAgICAgICAgVmVjdG9yPGNoYXI+IHJlc3VsdFZhbHVlOwogICAgICAg
ICBib29sIG9rID0gbV9iYWNraW5nU3RvcmUtPmdldFJlY29yZCgmdHJhbnNhY3Rpb24yLCBoaWdo
RGF0YWJhc2VJZCwgaGlnaE9iamVjdFN0b3JlSWQsICptX2tleTEuZ2V0KCksIHJlc3VsdFZhbHVl
KTsKICAgICAgICAgRVhQRUNUX1RSVUUob2spOwotICAgICAgICBFWFBFQ1RfRVEobV92YWx1ZTEs
IHJlc3VsdFZhbHVlKTsKLQotICAgICAgICBSZWZQdHI8SURCS2V5PiBuZXdQcmltYXJ5S2V5Owot
ICAgICAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgoJnRyYW5z
YWN0aW9uMiwgaGlnaERhdGFiYXNlSWQsIGhpZ2hPYmplY3RTdG9yZUlkLCBpbnZhbGlkSGlnaElu
ZGV4SWQsICppbmRleEtleSwgbmV3UHJpbWFyeUtleSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
ayk7Ci0KLSAgICAgICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0UHJpbWFyeUtleVZpYUluZGV4
KCZ0cmFuc2FjdGlvbjIsIGhpZ2hEYXRhYmFzZUlkLCBoaWdoT2JqZWN0U3RvcmVJZCwgaGlnaElu
ZGV4SWQsICppbmRleEtleSwgbmV3UHJpbWFyeUtleSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9r
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUobmV3UHJpbWFyeUtleS0+aXNFcXVhbChtX2tleTEuZ2V0
KCkpKTsKLQogICAgICAgICBvayA9IHRyYW5zYWN0aW9uMi5jb21taXQoKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUob2spOworICAgICAgICBFWFBFQ1RfRVEobV92YWx1ZTEsIHJlc3VsdFZhbHVlKTsK
ICAgICB9CiB9CiAKLS8vIE1ha2Ugc3VyZSB0aGF0IG90aGVyIGludmFsaWQgaWRzIGRvIG5vdCBj
cmFzaC4KLVRFU1RfRihJREJCYWNraW5nU3RvcmVUZXN0LCBJbnZhbGlkSWRzKQotewotICAgIC8v
IHZhbGlkIGlkcyBmb3IgdXNlIHdoZW4gdGVzdGluZyBpbnZhbGlkIGlkcwotICAgIGNvbnN0IGlu
dDY0X3QgZGF0YWJhc2VJZCA9IDE7Ci0gICAgY29uc3QgaW50NjRfdCBvYmplY3RTdG9yZUlkID0g
MTsKLSAgICBjb25zdCBpbnQ2NF90IGluZGV4SWQgPSBJREJMZXZlbERCQ29kaW5nOjpNaW5pbXVt
SW5kZXhJZDsKLSAgICBjb25zdCBpbnQ2NF90IGludmFsaWRMb3dJbmRleElkID0gMTk7IC8vIGlu
ZGV4SWRzIG11c3QgYmUgPiBJREJMZXZlbERCQ29kaW5nOjpNaW5pbXVtSW5kZXhJZAotCi0gICAg
Y29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X3ZhbHVlMS5kYXRhKCksIG1fdmFsdWUxLnNpemUoKSk7Ci0gICAgVmVjdG9yPGNoYXI+IHJlc3Vs
dFZhbHVlOwotCi0gICAgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjEo
bV9iYWNraW5nU3RvcmUuZ2V0KCkpOwotICAgIHRyYW5zYWN0aW9uMS5iZWdpbigpOwotCi0gICAg
SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIHJlY29yZDsKLSAgICBib29sIG9rID0g
bV9iYWNraW5nU3RvcmUtPnB1dFJlY29yZCgmdHJhbnNhY3Rpb24xLCBkYXRhYmFzZUlkLCBLZXlQ
cmVmaXg6OkludmFsaWRJZCwgKm1fa2V5MS5nZXQoKSwgdmFsdWUsICZyZWNvcmQpOwotICAgIEVY
UEVDVF9GQUxTRShvayk7Ci0gICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+cHV0UmVjb3JkKCZ0cmFu
c2FjdGlvbjEsIGRhdGFiYXNlSWQsIDAsICptX2tleTEuZ2V0KCksIHZhbHVlLCAmcmVjb3JkKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2spOwotICAgIG9rID0gbV9iYWNraW5nU3RvcmUtPnB1dFJlY29y
ZCgmdHJhbnNhY3Rpb24xLCBLZXlQcmVmaXg6OkludmFsaWRJZCwgb2JqZWN0U3RvcmVJZCwgKm1f
a2V5MS5nZXQoKSwgdmFsdWUsICZyZWNvcmQpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0gICAg
b2sgPSBtX2JhY2tpbmdTdG9yZS0+cHV0UmVjb3JkKCZ0cmFuc2FjdGlvbjEsIDAsIG9iamVjdFN0
b3JlSWQsICptX2tleTEuZ2V0KCksIHZhbHVlLCAmcmVjb3JkKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2spOwotCi0gICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0UmVjb3JkKCZ0cmFuc2FjdGlvbjEs
IGRhdGFiYXNlSWQsIEtleVByZWZpeDo6SW52YWxpZElkLCAqbV9rZXkxLmdldCgpLCByZXN1bHRW
YWx1ZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLSAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5n
ZXRSZWNvcmQoJnRyYW5zYWN0aW9uMSwgZGF0YWJhc2VJZCwgMCwgKm1fa2V5MS5nZXQoKSwgcmVz
dWx0VmFsdWUpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0gICAgb2sgPSBtX2JhY2tpbmdTdG9y
ZS0+Z2V0UmVjb3JkKCZ0cmFuc2FjdGlvbjEsIEtleVByZWZpeDo6SW52YWxpZElkLCBvYmplY3RT
dG9yZUlkLCAqbV9rZXkxLmdldCgpLCByZXN1bHRWYWx1ZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9r
KTsKLSAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5nZXRSZWNvcmQoJnRyYW5zYWN0aW9uMSwgMCwg
b2JqZWN0U3RvcmVJZCwgKm1fa2V5MS5nZXQoKSwgcmVzdWx0VmFsdWUpOwotICAgIEVYUEVDVF9G
QUxTRShvayk7Ci0KLSAgICBSZWZQdHI8SURCS2V5PiBuZXdQcmltYXJ5S2V5OwotICAgIG9rID0g
bV9iYWNraW5nU3RvcmUtPmdldFByaW1hcnlLZXlWaWFJbmRleCgmdHJhbnNhY3Rpb24xLCBkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBLZXlQcmVmaXg6OkludmFsaWRJZCwgKm1fa2V5MSwgbmV3
UHJpbWFyeUtleSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9rKTsKLSAgICBvayA9IG1fYmFja2luZ1N0
b3JlLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgoJnRyYW5zYWN0aW9uMSwgZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgaW52YWxpZExvd0luZGV4SWQsICptX2tleTEsIG5ld1ByaW1hcnlLZXkpOwot
ICAgIEVYUEVDVF9GQUxTRShvayk7Ci0gICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0UHJpbWFy
eUtleVZpYUluZGV4KCZ0cmFuc2FjdGlvbjEsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAs
ICptX2tleTEsIG5ld1ByaW1hcnlLZXkpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0KLSAgICBv
ayA9IG1fYmFja2luZ1N0b3JlLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgoJnRyYW5zYWN0aW9uMSwg
S2V5UHJlZml4OjpJbnZhbGlkSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICptX2tleTEsIG5l
d1ByaW1hcnlLZXkpOwotICAgIEVYUEVDVF9GQUxTRShvayk7Ci0gICAgb2sgPSBtX2JhY2tpbmdT
dG9yZS0+Z2V0UHJpbWFyeUtleVZpYUluZGV4KCZ0cmFuc2FjdGlvbjEsIGRhdGFiYXNlSWQsIEtl
eVByZWZpeDo6SW52YWxpZElkLCBpbmRleElkLCAqbV9rZXkxLCBuZXdQcmltYXJ5S2V5KTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2spOwotfQotCiBURVNUX0YoSURCQmFja2luZ1N0b3JlVGVzdCwgQ3Jl
YXRlRGF0YWJhc2UpCiB7CiAgICAgY29uc3QgU3RyaW5nIGRhdGFiYXNlTmFtZSgiZGIxIik7CkBA
IC0yNDQsOCArMTY2LDcgQEAgVEVTVF9GKElEQkJhY2tpbmdTdG9yZVRlc3QsIENyZWF0ZURhdGFi
YXNlKQogICAgICAgICBFWFBFQ1RfRVEoaW50VmVyc2lvbiwgZGF0YWJhc2UuaW50VmVyc2lvbik7
CiAgICAgICAgIEVYUEVDVF9FUShkYXRhYmFzZUlkLCBkYXRhYmFzZS5pZCk7CiAKLSAgICAgICAg
b2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKGRhdGFiYXNlLmlkLCAmZGF0YWJh
c2Uub2JqZWN0U3RvcmVzKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2spOworICAgICAgICBtX2Jh
Y2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKGRhdGFiYXNlLmlkLCAmZGF0YWJhc2Uub2JqZWN0
U3RvcmVzKTsKIAogICAgICAgICBFWFBFQ1RfRVEoMSwgZGF0YWJhc2Uub2JqZWN0U3RvcmVzLnNp
emUoKSk7CiAgICAgICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUgPSBkYXRh
YmFzZS5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCBhNDdiNTkzMjli
OTQyMjAxYTE2MzU3MjY5N2E4ZGY4ZWVjNTg2OTA2Li5lZWZjNjQ4YWQyM2E0NWMyY2M4N2MyNGNi
Y2IzNDIxNjIxZDc0ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAtNDEsMTUgKzQxLDE1IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9OwogCi0gICAgdmlydHVhbCBib29sIGNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUmVjb3JkKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElk
ZW50aWZpZXImKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBj
bGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNv
cmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QmIGN1cnJlbnROdW1iZXIpIE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWF5YmVVcGRhdGVLZXlH
ZW5lcmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3VycmVu
dCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJ
bk9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFJlY29yZElkZW50aWZpZXIqIGZvdW5kUmVjb3Jk
SWRlbnRpZmllciwgYm9vbCYgZm91bmQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5
KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5k
ZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJL
ZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29y
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURF
IHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29yPigpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlQ3Vyc29yKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8Q3Vyc29y
PigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVs
REJDb2RpbmdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCTGV2ZWxE
QkNvZGluZ1Rlc3QuY3BwCmluZGV4IGY0ZTQ1YzcxZjkxMGQ0M2ZhNDVkNWI0MzM3MzMxZDI5NDll
M2I1NzQuLmViMmNjMmFmOTkzMzBhMzkxOGE2N2M0NjBmYzI3ZmNhMTZkMTQwMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3Qu
Y3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgVEVTVChJREJMZXZlbERCQ29kaW5nVGVzdCwgRGVjb2Rl
Qnl0ZSkKICAgICAgICAgRVhQRUNUX0VRKHYuZGF0YSgpICsgdi5zaXplKCksIHApOwogICAgIH0K
IH0KLQorICAgCiBURVNUKElEQkxldmVsREJDb2RpbmdUZXN0LCBFbmNvZGVCb29sKQogewogICAg
IHsKQEAgLTcxMSw3ICs3MTEsNyBAQCBURVNUKElEQkxldmVsREJDb2RpbmdUZXN0LCBDb21wYXJp
c29uVGVzdCkKICAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwg
bWF4SURCS2V5KCksIG1heElEQktleSgpLCAxKSk7CiAgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRh
S2V5OjplbmNvZGUoMSwgMSwgMzEsIG1pbklEQktleSgpLCBtaW5JREJLZXkoKSwgMCkpOwogICAg
IGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDIsIDMwLCBtaW5JREJLZXkoKSwg
bWluSURCS2V5KCksIDApKTsKLSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZU1h
eEtleSgxLCAyLCBJTlQzMl9NQVggLSAxKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5
OjplbmNvZGVNYXhLZXkoMSwgMiwgSU5UMzJfTUFYKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgTGV2ZWxEQlNsaWNlIGtl
eUEoa2V5c1tpXSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>