diff --git a/404.html b/404.html new file mode 100644 index 0000000000..9b2b21948a --- /dev/null +++ b/404.html @@ -0,0 +1,21 @@ + + +
这是一个Four-Oh-Four.
+ ← + 工具 博客→ +
+ ← + web iOS→ +
See {@link android.view.Display#FLAG_SECURE} for more details about\n * secure surfaces and secure displays.\n */")]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("public")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("static")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("final")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("int")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token constant"}},[e._v("FLAG_SECURE")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("0x00002000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br"),s("span",{staticClass:"line-number"},[e._v("2")]),s("br"),s("span",{staticClass:"line-number"},[e._v("3")]),s("br"),s("span",{staticClass:"line-number"},[e._v("4")]),s("br"),s("span",{staticClass:"line-number"},[e._v("5")]),s("br"),s("span",{staticClass:"line-number"},[e._v("6")]),s("br"),s("span",{staticClass:"line-number"},[e._v("7")]),s("br"),s("span",{staticClass:"line-number"},[e._v("8")]),s("br")])]),s("div",{staticClass:"language-text line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[e._v("--\nWindow #13 Window{8c106d1 u0 com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.playlet.videodetail.PlayletVideoPlayActivity}:\n mDisplayId=0 rootTaskId=11350 mSession=Session{7a1d86 21483:u0a10517} mClient=android.os.BinderProxy@cea31f8\n mOwnerUid=10517 showForAllUsers=false package=com.ss.android.ugc.aweme appop=NONE\n mAttrs={(0,0)(fillxfill) sim={adjust=nothing forwardNavigation} ty=BASE_APPLICATION hwFlags=#0 isEmuiStyle=0 statusBarColor=#0 navigationBarColor=#ff000000 wanim=0x10302fe\n fl=KEEP_SCREEN_ON LAYOUT_IN_SCREEN SECURE LAYOUT_INSET_DECOR SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS\n pfl=FIT_INSETS_CONTROLLED\n vsysui=LAYOUT_STABLE LAYOUT_FULLSCREEN\n fitSides=}\n Requested w=720 h=1600 mLayoutSeq=25844\n mBaseLayer=21000 mSubLayer=0 mToken=ActivityRecord{70e4774 u0 com.ss.android.ugc.aweme/.playlet.videodetail.PlayletVideoPlayActivity t11350}\n mActivityRecord=ActivityRecord{70e4774 u0 com.ss.android.ugc.aweme/.playlet.videodetail.PlayletVideoPlayActivity t11350}\n mAppDied=false drawnStateEvaluated=true mightAffectAllDrawn=true\n mViewVisibility=0x0 mHaveFrame=true mObscured=false\n mSeq=0 mSystemUiVisibility=0x500\n mGivenContentInsets=[0,0][0,0] mGivenVisibleInsets=[0,0][0,0]\n mFullConfiguration={1.15 ?mcc?mnc [zh_CN_#Hans] ldltr sw360dp w360dp h776dp 320dpi nrml long port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 720, 1600) mAppBounds=Rect(0, 48 - 720, 1600) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} suim:1 fontWeightScale:100changeUserFlag:0 s.1 fontWeightAdjustment=0}\n mLastReportedConfiguration={1.15 ?mcc?mnc [zh_CN_#Hans] ldltr sw360dp w360dp h776dp 320dpi nrml long port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 720, 1600) mAppBounds=Rect(0, 48 - 720, 1600) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} suim:1 fontWeightScale:100changeUserFlag:0 s.1 fontWeightAdjustment=0}\n mHasSurface=true isReadyForDisplay()=true mWindowRemovalAllowed=false\n Frames: containing=[0,0][720,1600] parent=[0,0][720,1600]\n display=[0,0][720,1600]\n content=[0,48][720,1600] visible=[0,48][720,1600]\n decor=[0,0][720,1600]\n mFrame=[0,0][720,1600] last=[0,0][720,1600]\n cutout=DisplayCutout{insets=Rect(0, 48 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(310, 0 - 410, 48), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]}} last=DisplayCutout{insets=Rect(0, 48 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(310, 0 - 410, 48), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]}}\n Cur insets: content=[0,48][0,0] visible=[0,48][0,0] stable=[0,48][0,0] Lst insets: content=[0,48][0,0] visible=[0,48][0,0] stable=[0,48][0,0]\n surface=[0,0][0,0]\n WindowStateAnimator{d0be7e6 com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.playlet.videodetail.PlayletVideoPlayActivity}:\n mSurface=Surface(name=com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.playlet.videodetail.PlayletVideoPlayActivity)/@0x69fceef\n Surface: shown=true layer=0 alpha=1.0 rect=(0.0,0.0) 720 x 1600 transform=(1.0, 0.0, 1.0, 0.0)\n mDrawState=HAS_DRAWN mLastHidden=false\n mEnterAnimationPending=false mSystemDecorRect=[0,0][720,1600] mLastClipRect=[0,0][720,1600]\n--\nWindow #14 Window{13235d u0 com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.detail.ui.DetailActivity}:\n mDisplayId=0 rootTaskId=11350 mSession=Session{7a1d86 21483:u0a10517} mClient=android.os.BinderProxy@9aff934\n mOwnerUid=10517 showForAllUsers=false package=com.ss.android.ugc.aweme appop=NONE\n mAttrs={(0,0)(fillxfill) sim={adjust=nothing forwardNavigation} ty=BASE_APPLICATION hwFlags=#0 isEmuiStyle=0 statusBarColor=#0 navigationBarColor=#ff000000 wanim=0x10302fe\n fl=KEEP_SCREEN_ON LAYOUT_IN_SCREEN SECURE LAYOUT_INSET_DECOR SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS\n pfl=FIT_INSETS_CONTROLLED\n vsysui=LAYOUT_STABLE LAYOUT_FULLSCREEN\n fitSides=}\n Requested w=720 h=1600 mLayoutSeq=25834\n mBaseLayer=21000 mSubLayer=0 mToken=ActivityRecord{4894621 u0 com.ss.android.ugc.aweme/.detail.ui.DetailActivity t11350}\n mActivityRecord=ActivityRecord{4894621 u0 com.ss.android.ugc.aweme/.detail.ui.DetailActivity t11350}\n mAppDied=false drawnStateEvaluated=true mightAffectAllDrawn=true\n mViewVisibility=0x8 mHaveFrame=true mObscured=true\n mSeq=0 mSystemUiVisibility=0x500\n mGivenContentInsets=[0,0][0,0] mGivenVisibleInsets=[0,0][0,0]\n mFullConfiguration={1.15 ?mcc?mnc [zh_CN_#Hans] ldltr sw360dp w360dp h776dp 320dpi nrml long port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 720, 1600) mAppBounds=Rect(0, 48 - 720, 1600) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} suim:1 fontWeightScale:100changeUserFlag:0 s.1 fontWeightAdjustment=0}\n mLastReportedConfiguration={1.15 ?mcc?mnc [zh_CN_#Hans] ldltr sw360dp w360dp h776dp 320dpi nrml long port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 720, 1600) mAppBounds=Rect(0, 48 - 720, 1600) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} suim:1 fontWeightScale:100changeUserFlag:0 s.1 fontWeightAdjustment=0}\n mHasSurface=false isReadyForDisplay()=false mWindowRemovalAllowed=false\n Frames: containing=[0,0][720,1600] parent=[0,0][720,1600]\n display=[0,0][720,1600]\n content=[0,48][720,1600] visible=[0,48][720,1600]\n decor=[0,0][720,1600]\n mFrame=[0,0][720,1600] last=[0,0][720,1600]\n cutout=DisplayCutout{insets=Rect(0, 48 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(310, 0 - 410, 48), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]}} last=DisplayCutout{insets=Rect(0, 48 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(310, 0 - 410, 48), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]}}\n Cur insets: content=[0,48][0,0] visible=[0,48][0,0] stable=[0,48][0,0] Lst insets: content=[0,48][0,0] visible=[0,48][0,0] stable=[0,48][0,0]\n surface=[0,0][0,0]\n WindowStateAnimator{8d3acf7 com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.detail.ui.DetailActivity}:\n mDrawState=NO_SURFACE mLastHidden=true\n mEnterAnimationPending=false mSystemDecorRect=[0,0][720,1600] mLastClipRect=[0,0][720,1600]\n mTmpSize=[0,0][720,1600]\n mForceSeamlesslyRotate=false seamlesslyRotate: pending=null finishedFrameNumber=0\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br"),s("span",{staticClass:"line-number"},[e._v("2")]),s("br"),s("span",{staticClass:"line-number"},[e._v("3")]),s("br"),s("span",{staticClass:"line-number"},[e._v("4")]),s("br"),s("span",{staticClass:"line-number"},[e._v("5")]),s("br"),s("span",{staticClass:"line-number"},[e._v("6")]),s("br"),s("span",{staticClass:"line-number"},[e._v("7")]),s("br"),s("span",{staticClass:"line-number"},[e._v("8")]),s("br"),s("span",{staticClass:"line-number"},[e._v("9")]),s("br"),s("span",{staticClass:"line-number"},[e._v("10")]),s("br"),s("span",{staticClass:"line-number"},[e._v("11")]),s("br"),s("span",{staticClass:"line-number"},[e._v("12")]),s("br"),s("span",{staticClass:"line-number"},[e._v("13")]),s("br"),s("span",{staticClass:"line-number"},[e._v("14")]),s("br"),s("span",{staticClass:"line-number"},[e._v("15")]),s("br"),s("span",{staticClass:"line-number"},[e._v("16")]),s("br"),s("span",{staticClass:"line-number"},[e._v("17")]),s("br"),s("span",{staticClass:"line-number"},[e._v("18")]),s("br"),s("span",{staticClass:"line-number"},[e._v("19")]),s("br"),s("span",{staticClass:"line-number"},[e._v("20")]),s("br"),s("span",{staticClass:"line-number"},[e._v("21")]),s("br"),s("span",{staticClass:"line-number"},[e._v("22")]),s("br"),s("span",{staticClass:"line-number"},[e._v("23")]),s("br"),s("span",{staticClass:"line-number"},[e._v("24")]),s("br"),s("span",{staticClass:"line-number"},[e._v("25")]),s("br"),s("span",{staticClass:"line-number"},[e._v("26")]),s("br"),s("span",{staticClass:"line-number"},[e._v("27")]),s("br"),s("span",{staticClass:"line-number"},[e._v("28")]),s("br"),s("span",{staticClass:"line-number"},[e._v("29")]),s("br"),s("span",{staticClass:"line-number"},[e._v("30")]),s("br"),s("span",{staticClass:"line-number"},[e._v("31")]),s("br"),s("span",{staticClass:"line-number"},[e._v("32")]),s("br"),s("span",{staticClass:"line-number"},[e._v("33")]),s("br"),s("span",{staticClass:"line-number"},[e._v("34")]),s("br"),s("span",{staticClass:"line-number"},[e._v("35")]),s("br"),s("span",{staticClass:"line-number"},[e._v("36")]),s("br"),s("span",{staticClass:"line-number"},[e._v("37")]),s("br"),s("span",{staticClass:"line-number"},[e._v("38")]),s("br"),s("span",{staticClass:"line-number"},[e._v("39")]),s("br"),s("span",{staticClass:"line-number"},[e._v("40")]),s("br"),s("span",{staticClass:"line-number"},[e._v("41")]),s("br"),s("span",{staticClass:"line-number"},[e._v("42")]),s("br"),s("span",{staticClass:"line-number"},[e._v("43")]),s("br"),s("span",{staticClass:"line-number"},[e._v("44")]),s("br"),s("span",{staticClass:"line-number"},[e._v("45")]),s("br"),s("span",{staticClass:"line-number"},[e._v("46")]),s("br"),s("span",{staticClass:"line-number"},[e._v("47")]),s("br"),s("span",{staticClass:"line-number"},[e._v("48")]),s("br"),s("span",{staticClass:"line-number"},[e._v("49")]),s("br"),s("span",{staticClass:"line-number"},[e._v("50")]),s("br"),s("span",{staticClass:"line-number"},[e._v("51")]),s("br"),s("span",{staticClass:"line-number"},[e._v("52")]),s("br"),s("span",{staticClass:"line-number"},[e._v("53")]),s("br"),s("span",{staticClass:"line-number"},[e._v("54")]),s("br"),s("span",{staticClass:"line-number"},[e._v("55")]),s("br"),s("span",{staticClass:"line-number"},[e._v("56")]),s("br"),s("span",{staticClass:"line-number"},[e._v("57")]),s("br"),s("span",{staticClass:"line-number"},[e._v("58")]),s("br"),s("span",{staticClass:"line-number"},[e._v("59")]),s("br"),s("span",{staticClass:"line-number"},[e._v("60")]),s("br"),s("span",{staticClass:"line-number"},[e._v("61")]),s("br"),s("span",{staticClass:"line-number"},[e._v("62")]),s("br"),s("span",{staticClass:"line-number"},[e._v("63")]),s("br"),s("span",{staticClass:"line-number"},[e._v("64")]),s("br")])])])}),[],!1,null,null,null);s.default=t.exports}}]); \ No newline at end of file diff --git a/assets/js/192.b9052a74.js b/assets/js/192.b9052a74.js new file mode 100644 index 0000000000..908a27c8f1 --- /dev/null +++ b/assets/js/192.b9052a74.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[192],{509:function(s,a,t){"use strict";t.r(a);var n=t(4),e=Object(n.a)({},(function(){var s=this,a=s._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h2",{attrs:{id:"vmpeak-与-vmsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vmpeak-与-vmsize"}},[s._v("#")]),s._v(" VMPeak 与 VMSize")]),s._v(" "),a("p",[s._v("在 Android 系统中,VMPeak 和 VMSize 是进程虚拟内存的相关指标,它们对于应用的内存管理和性能有直接影响。了解这些指标对于优化应用的内存使用、特别是在 32 位设备上的优化非常重要。")]),s._v(" "),a("ol",[a("li",[s._v("VMPeak 和 VMSize 的定义")])]),s._v(" "),a("ul",[a("li",[s._v("VMPeak: 进程所使用的虚拟内存的峰值值。这个值表示自进程启动以来,进程虚拟内存使用的最大值。")]),s._v(" "),a("li",[s._v("VMSize: 当前进程所使用的虚拟内存大小。它表示进程当前的虚拟内存使用量,包括代码、数据、堆和栈等。")])]),s._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[s._v("对进程的影响")])]),s._v(" "),a("ul",[a("li",[s._v("内存使用管理:VMPeak 和 VMSize 是进程内存使用的两个重要指标。过高的 VMSize 可能会导致系统内存不足,尤其在设备 RAM 本身较少时,这可能导致系统频繁进行内存交换(swap)或杀死其他后台进程。")]),s._v(" "),a("li",[s._v("性能影响: 高内存使用会影响应用和系统的整体性能。频繁的垃圾回收(GC)和内存管理开销会增加,导致应用响应变慢。")]),s._v(" "),a("li",[s._v("崩溃风险: 如果 VMPeak 超过系统允许的最大虚拟内存(尤其在 32 位设备上,这个上限通常是 4GB),可能会导致内存分配失败,进而引起应用崩溃。")])]),s._v(" "),a("hr"),s._v(" "),a("RText",{attrs:{text:"虚拟地址空间的理论上限"}}),s._v(" "),a("p",[s._v("在 32 位系统上,虚拟地址空间的理论上限是 4 GB(2^32 字节)。但是,由于操作系统和硬件保留了部分地址空间,实际应用程序可用的虚拟地址空间会少于 4 GB。")]),s._v(" "),a("p",[s._v("详细分析")]),s._v(" "),a("ol",[a("li",[s._v("理论最大值:\n32 位地址空间可以表示 4,294,967,296 字节(4 GB)。")]),s._v(" "),a("li",[s._v("实际可用空间:\n内核空间: 在许多 32 位操作系统中,内核和操作系统会占用一部分地址空间。例如,Linux 通常将最高的 1 GB 地址空间保留给内核,这意味着用户态程序可以使用的地址空间大约是 3 GB。\n系统保留和硬件映射: 系统和硬件还会保留部分地址空间用于硬件设备的内存映射和其他用途。")])]),s._v(" "),a("h2",{attrs:{id:"查看-vmsize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#查看-vmsize"}},[s._v("#")]),s._v(" 查看 VmSize")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 获取 pid")]),s._v("\nadb shell "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("ps")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("grep")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("process_name"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 查看 VmSize")]),s._v("\nadb shell "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /proc/"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("pid"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/status "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("grep")]),s._v(" VmSize\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br")])]),a("h2",{attrs:{id:"_32-位设备上的优化建议"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_32-位设备上的优化建议"}},[s._v("#")]),s._v(" 32 位设备上的优化建议")]),s._v(" "),a("p",[s._v("针对 32 位设备,内存限制更为严格,因为它们的虚拟地址空间有限(最大 4GB,但通常系统和其他应用占用一部分,因此实际可用远小于 4GB)。可以采取以下优化措施:")]),s._v(" "),a("p",[s._v("1.内存优化策略:")]),s._v(" "),a("ul",[a("li",[a("p",[s._v("减少内存使用: 优化代码,减少不必要的对象创建和资源加载,特别是大对象和图像资源。")])]),s._v(" "),a("li",[a("p",[s._v("使用高效数据结构: 选择合适的数据结构,避免使用过多的链表、哈希表等占用大量内存的数据结构。")]),s._v(" "),a("p",[s._v("2.资源管理:")])]),s._v(" "),a("li",[a("p",[s._v("按需加载: 使用按需加载技术,只在需要时加载资源。避免在启动时加载所有资源。")])]),s._v(" "),a("li",[a("p",[s._v("释放不需要的资源: 及时释放不再需要的资源,特别是大图片、音频和视频文件。")])]),s._v(" "),a("li",[a("p",[s._v("优化图像: 使用压缩图像格式(如 WebP),并根据设备屏幕分辨率加载适当尺寸的图像。")]),s._v(" "),a("p",[s._v("3.内存分析工具:")])]),s._v(" "),a("li",[a("p",[s._v("使用 Android Profiler: 通过 Android Studio 提供的内存分析工具,监控应用的内存使用,查找和修复内存泄漏。")])]),s._v(" "),a("li",[a("p",[s._v("LeakCanary: 集成内存泄漏检测工具,如 LeakCanary,自动检测和报告内存泄漏。")]),s._v(" "),a("p",[s._v("4.优化代码:")])]),s._v(" "),a("li",[a("p",[s._v("减少全局变量和单例: 避免过多使用全局变量和单例,它们会在整个应用生命周期中占用内存。")])]),s._v(" "),a("li",[a("p",[s._v("优化算法: 确保算法的时间和空间复杂度最低,避免使用高复杂度的算法。")]),s._v(" "),a("p",[s._v("5.垃圾回收优化:")])]),s._v(" "),a("li",[a("p",[s._v("减少临时对象创建: 尽量减少临时对象的创建,减少垃圾回收的频率。")])]),s._v(" "),a("li",[a("p",[s._v("使用池化技术: 对于频繁使用的大对象,使用对象池(object pool)来重用对象,避免频繁的创建和销毁。")])])]),s._v(" "),a("p",[s._v("通过以上措施,可以有效降低 VMPeak 和 VMSize,从而减少崩溃风险,提升应用在 32 位设备上的性能和稳定性。")]),s._v(" "),a("h2",{attrs:{id:"base"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#base"}},[s._v("#")]),s._v(" base")]),s._v(" "),a("h3",{attrs:{id:"获取-cpu-abis"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获取-cpu-abis"}},[s._v("#")]),s._v(" 获取 CPU ABIS")]),s._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 获取支持的cpu abi,返回一个数组。如 ['arm64-v8a', 'armeabi-v7a', 'armeabi']")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("SUPPORTED_ABIS")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 设备的主要 CPU 架构,armeabi-v7a. 可以拿到运行时主CPU架构。 另外也可以通过 ApplicationInfo 对象拿")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CPU_ABI")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 设备的次要 CPU 架构")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("CPU_ABI2")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 通过 ApplicationInfo 对象拿")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("PackageManager")]),s._v(" pm "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("getPackageManager")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("String")]),s._v(" packageName "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("getPackageName")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ApplicationInfo")]),s._v(" ai "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" pm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("getApplicationInfo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("packageName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("PackageManager")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("GET_META_DATA")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("String")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(" supportedABIs"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("VERSION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("SDK_INT")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Build")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("VERSION_CODES")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("LOLLIPOP")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Field")]),s._v(" primaryCpuAbi "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ApplicationInfo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("getField")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"primaryCpuAbi"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n primaryCpuAbi"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("setAccessible")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("AsyncPLog")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("i")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"xxx"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"primaryCpuAbi=%s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" primaryCpuAbi"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("ai"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Field")]),s._v(" secondaryCpuAbi "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("ApplicationInfo")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("getField")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"secondaryCpuAbi"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n secondaryCpuAbi"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("setAccessible")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("AsyncPLog")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("i")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"xxx"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"secondaryCpuAbi=%s"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" secondaryCpuAbi"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("ai"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("catch")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Exception")]),s._v(" e"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n e"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("printStackTrace")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br")])]),a("ul",[a("li",[a("code",[s._v('aapt dump badging your_apk_file.apk | grep "native-code"')]),s._v(": 查看 apk 是 32 位还是 64 位")]),s._v(" "),a("li",[a("code",[s._v('adb shell dumpsys package | grep "cpuAbi"')]),s._v(": 通过 adb 查看架构, not worked")]),s._v(" "),a("li",[a("code",[s._v("adb shell getprop ro.product.cpu.abilist")]),s._v(": 查看系统支持的 cpu 架构")])])],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/193.237b4a17.js b/assets/js/193.237b4a17.js new file mode 100644 index 0000000000..d8f4c884ca --- /dev/null +++ b/assets/js/193.237b4a17.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[193],{510:function(t,e,a){"use strict";a.r(e);var r=a(4),n=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h2",{attrs:{id:"属性"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#属性"}},[t._v("#")]),t._v(" 属性")]),t._v(" "),e("ul",[e("li",[e("code",[t._v("android:angle")]),t._v(": 整型 渐变角度(PS: 当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍)")])]),t._v(" "),e("h2",{attrs:{id:"link"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#link"}},[t._v("#")]),t._v(" link")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://cloud.tencent.com/developer/article/1013183",target:"_blank",rel:"noopener noreferrer"}},[t._v("Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)"),e("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/194.30c04cc5.js b/assets/js/194.30c04cc5.js new file mode 100644 index 0000000000..da39a1e14c --- /dev/null +++ b/assets/js/194.30c04cc5.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[194],{511:function(t,s,a){"use strict";a.r(s);var n=a(4),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"window的softinputmode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#window的softinputmode"}},[t._v("#")]),t._v(" window的SoftInputMode")]),t._v(" "),s("ul",[s("li",[t._v("SOFT_INPUT_ADJUST_PAN")]),t._v(" "),s("li",[t._v("SOFT_INPUT_ADJUST_RESIZE")]),t._v(" "),s("li",[t._v("SOFT_INPUT_STATE_ALWAYS_VISIBLE")]),t._v(" "),s("li",[t._v("SOFT_INPUT_STATE_ALWAYS_HIDDEN")])]),t._v(" "),s("h2",{attrs:{id:"case"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#case"}},[t._v("#")]),t._v(" case")]),t._v(" "),s("h3",{attrs:{id:"软键盘中window的flag设置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#软键盘中window的flag设置"}},[t._v("#")]),t._v(" 软键盘中window的Flag设置")]),t._v(" "),s("blockquote",[s("p",[s("a",{attrs:{href:"https://developer.android.com/reference/android/view/WindowManager.LayoutParams",target:"_blank",rel:"noopener noreferrer"}},[t._v("WindowManager.LayoutParams"),s("OutboundLink")],1)])]),t._v(" "),s("div",{staticClass:"language-java line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-java"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Window")]),t._v(" window "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" dialog"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getWindow")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("window "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setFlags")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WindowManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("FLAG_NOT_TOUCH_MODAL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WindowManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("FLAG_NOT_TOUCH_MODAL")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLayout")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ViewGroup"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("MATCH_PARENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ViewGroup"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("MATCH_PARENT")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setGravity")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Gravity")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("TOP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Build")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("VERSION")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("SDK_INT")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Build")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("VERSION_CODES")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("LOLLIPOP")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addFlags")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WindowManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setStatusBarColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getResources")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getColor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token generics"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSoftInputMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WindowManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("SOFT_INPUT_ADJUST_PAN")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("showEmoji"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("isBottomContainerEmpty"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSoftInputMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WindowManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("SOFT_INPUT_ADJUST_RESIZE")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSoftInputMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WindowManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("SOFT_INPUT_STATE_ALWAYS_VISIBLE")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n window"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSoftInputMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("WindowManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("LayoutParams")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("SOFT_INPUT_STATE_ALWAYS_HIDDEN")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br")])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/195.2ba179e1.js b/assets/js/195.2ba179e1.js new file mode 100644 index 0000000000..fd258e184e --- /dev/null +++ b/assets/js/195.2ba179e1.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[195],{512:function(t,a,r){"use strict";r.r(a);var e=r(4),l=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("blockquote",[a("p",[a("a",{attrs:{href:"https://juejin.cn/post/6981731047855620104",target:"_blank",rel:"noopener noreferrer"}},[t._v("颜色值透明度的百分数对应十六进制表"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("ARGB 依次代表透明度(alpha)、红色(red)、绿色(green)、蓝色(blue)。以颜色值 "),a("code",[t._v("#FF66CC99")]),t._v(" 为例, 其中, FF 是透明度, 66 是红色值, CC 是绿色值, 99 是蓝色值。")]),t._v(" "),a("h2",{attrs:{id:"alpha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alpha"}},[t._v("#")]),t._v(" alpha")]),t._v(" "),a("ul",[a("li",[t._v("透明度分为 256 个等级, 即 0 - 256, 0 就是透明, 255 就是不透明, 透明度 0(透明) –> 255(不透明) 对应着 16 进制 00(透明) –> FF(不透明), 比如: 50% 透明度;50% 也就是 256 的一半即 128, 因为是从 0 开始算的, 所以是 127, 转换成 16 进制就是 7F")]),t._v(" "),a("li",[t._v("透明度和 不透明度 是两个概念, 它们加起来是 1, 或者 100%.")]),t._v(" "),a("li",[t._v("ARGB 中的透明度 alpha, 表示的是不透明度。")])]),t._v(" "),a("h2",{attrs:{id:"link"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#link"}},[t._v("#")]),t._v(" link")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://www.fly63.com/tool/color/",target:"_blank",rel:"noopener noreferrer"}},[t._v("rgb(a)、hex、hsl(a)、hsv(a)颜色转换工具"),a("OutboundLink")],1)])])])}),[],!1,null,null,null);a.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/196.b4d9f14e.js b/assets/js/196.b4d9f14e.js new file mode 100644 index 0000000000..824efd5469 --- /dev/null +++ b/assets/js/196.b4d9f14e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[196],{513:function(_,v,t){"use strict";t.r(v);var e=t(4),l=Object(e.a)({},(function(){var _=this,v=_._self._c;return v("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[v("blockquote",[v("p",[_._v("本方法使用灰度值来辨别白屏")])]),_._v(" "),v("p",[_._v("白色的RGB值为(255, 255, 255), 在灰度转换的情况下, 根据给定的转换公式 "),v("code",[_._v("Gray = (Rx4 + Gx10 + Bx2) >> 8")]),_._v(", 计算得到的灰度值为: "),v("code",[_._v("Gray=(255x4+255x10+255x2)>>8=(1020+2550+510)>>8=4080>>8=15")])]),_._v(" "),v("h2",{attrs:{id:"方案"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#方案"}},[_._v("#")]),_._v(" 方案")]),_._v(" "),v("ul",[v("li",[_._v("根据(x,y,w,h)取出指定区域的图像")]),_._v(" "),v("li",[_._v("将图片每个像素点的(R,G,B)转换为灰度值(0-15), 转换公式如下:\n"),v("code",[_._v("Gray = (Rx4 + Gx10 + Bx2) >> 8")])]),_._v(" "),v("li",[_._v("统计Gray的分布情况, 把各个灰度值的情况上报")]),_._v(" "),v("li",[_._v("为了避免过多上报, 我们会先计算一下白色的占比, 计算公式如下:\n"),v("code",[_._v("whiteRate = GrayArr[15] / TotalPixels")])]),_._v(" "),v("li",[_._v("当whiteRate大于0.9 (配置中心可配web.white_rate_threshold)我们才会上报")]),_._v(" "),v("li",[_._v("我们只能截屏幕可见区域的指定部分, 如果用户有滚动, 那么截取的可能就不是首屏的内容了")])]),_._v(" "),v("h2",{attrs:{id:"检测原理"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#检测原理"}},[_._v("#")]),_._v(" 检测原理")]),_._v(" "),v("p",[_._v("这个白屏检测的原理基于对截取图像的灰度分布进行分析。具体步骤如下:")]),_._v(" "),v("ul",[v("li",[_._v("截取指定区域的图像: 根据给定的区域参数(x,y,w,h), 从屏幕截取指定位置的图像。")]),_._v(" "),v("li",[_._v("将图片每个像素点的(R,G,B)转换为灰度值: 对截取的图像进行灰度转换。"),v("RText",{attrs:{text:"灰度值是图像亮度的表示, 用一个数值表示整个像素的明暗程度"}}),_._v("。根据给定的转换公式 "),v("code",[_._v("Gray = (Rx4 + Gx10 + Bx2) >> 8")]),_._v(", 计算每个像素点的灰度值, 范围为0到15。")],1),_._v(" "),v("li",[_._v("统计灰度值的分布情况: 统计转换后的灰度值的分布情况, 得到每个灰度值出现的次数或比例。")]),_._v(" "),v("li",[_._v("计算白色占比: 根据灰度值的分布情况, 计算白色(灰度值为15)的占比, 即白色像素点在总像素点中的比例。")]),_._v(" "),v("li",[_._v("白屏检测: 当白色占比大于设定的阈值(例如0.9), 即白色像素点占据了大部分图像区域, 认为截取到的内容可能是白屏。")])]),_._v(" "),v("p",[_._v("这种方法的原理是基于白屏通常是整个屏幕大部分区域都是白色的特点。通过分析截取图像的灰度分布情况, 尤其是白色(灰度值最高)的占比, 可以判断当前页面是否呈现出白屏状态。这种方法可以有效避免截取到无效的白屏内容, 并且节省了上报的资源开销。")]),_._v(" "),v("h3",{attrs:{id:"灰度图像公式"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#灰度图像公式"}},[_._v("#")]),_._v(" 灰度图像公式")]),_._v(" "),v("p",[v("code",[_._v("Gray = (Rx4 + Gx10 + Bx2) >> 8")]),_._v(" 是一个用于将彩色图像转换为灰度图像的公式。这个公式通过计算 RGB 三个通道的加权和来得到灰度值,其中绿色通道的权重较大,表明绿色对灰度值的影响最大。")]),_._v(" "),v("p",[_._v("让我们详细分析一下:")]),_._v(" "),v("RText",{attrs:{text:"公式含义: "}}),_._v(" "),v("ul",[v("li",[_._v("R: 表示红色通道的值。")]),_._v(" "),v("li",[_._v("G: 表示绿色通道的值。")]),_._v(" "),v("li",[_._v("B: 表示蓝色通道的值。")]),_._v(" "),v("li",[_._v("Gray: 表示最终的灰度值。")]),_._v(" "),v("li",[v("code",[_._v(">> 8")]),_._v(": 表示右移 8 位,相当于除以 256。")])]),_._v(" "),v("RText",{attrs:{text:"加权平均: "}}),_._v(" "),v("p",[_._v("这个公式将红色、绿色、蓝色三个通道的值按照不同的权重加在一起:")]),_._v(" "),v("ul",[v("li",[_._v("红色的权重是 4。")]),_._v(" "),v("li",[_._v("绿色的权重是 10,比其他两个通道更高,反映了人眼对绿色更为敏感。")]),_._v(" "),v("li",[_._v("蓝色的权重是 2,相对较低。")])]),_._v(" "),v("p",[_._v("将它们加权后除以 256 来得到一个 0 到 15 的灰度值。")]),_._v(" "),v("RText",{attrs:{text:"具体步骤: "}}),_._v(" "),v("ul",[v("li",[_._v("计算加权值: "),v("code",[_._v("Rx4 + Gx10 + Bx2")]),_._v("。")]),_._v(" "),v("li",[_._v("红色的贡献是 "),v("code",[_._v("Rx4")])]),_._v(" "),v("li",[_._v("绿色的贡献是 "),v("code",[_._v("Gx10")])]),_._v(" "),v("li",[_._v("蓝色的贡献是 "),v("code",[_._v("Bx2")])]),_._v(" "),v("li",[_._v("右移 8 位: "),v("code",[_._v(">> 8")]),_._v(",即将计算结果除以 256。右移操作可以快速实现这种整数除法。")])]),_._v(" "),v("RText",{attrs:{text:"理由: "}}),_._v(" "),v("p",[_._v("使用加权平均是因为人眼对不同颜色的敏感度不同,通常对绿色最敏感,对红色次之,对蓝色最不敏感。这个公式中赋予了绿色较大的权重(10),而红色和蓝色的权重较小(4 和 2)。")]),_._v(" "),v("RText",{attrs:{text:"总结: "}}),_._v(" "),v("ul",[v("li",[_._v("红色、绿色 和 蓝色通道按照不同的权重加在一起,计算得到灰度值。")]),_._v(" "),v("li",[_._v("绿色的权重较高,符合人眼的感知特性。")]),_._v(" "),v("li",[_._v("通过位移操作快速实现除法来缩放结果到 0-255 范围内。")])])],1)}),[],!1,null,null,null);v.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/197.5da50f11.js b/assets/js/197.5da50f11.js new file mode 100644 index 0000000000..38dc44a926 --- /dev/null +++ b/assets/js/197.5da50f11.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[197],{515:function(t,a,s){"use strict";s.r(a);var n=s(4),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"getidentifier"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getidentifier"}},[t._v("#")]),t._v(" getIdentifier")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[t._v("val layoutID"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("resources"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getIdentifier")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"activity_main"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"layout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("packageName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContentView")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("layoutID"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContentView")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("R")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("layout"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("activity_main"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br")])]),a("blockquote",[a("p",[t._v("这两种形式在功能上都是设置一个活动(Activity)的布局(layout),但它们在实现和使用场景上有一些区别。")])]),t._v(" "),a("p",[t._v("A. "),a("code",[t._v("setContentView(R.layout.activity_main)")]),t._v(": 这是最常见和直接的方式来设置活动的布局。在编译时,Android 会根据 "),a("code",[t._v("res/layout/activity_main.xml")]),t._v(" 文件生成一个对应的 "),a("code",[t._v("R.layout.activity_main")]),t._v(" 常量。这个常量是一个静态整数 ID,指向布局资源。使用这种方式,代码简洁明了,容易理解和维护。")]),t._v(" "),a("p",[t._v("B. "),a("code",[t._v("setContentView(layoutID)")]),t._v(": 这种方式首先通过 resources.getIdentifier 方法在运行时动态获取资源 ID,然后再将其设置为内容视图。具体实现如下:")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[t._v("val layoutID "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" resources"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("getIdentifier")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"activity_main"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"layout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" packageName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("setContentView")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("layoutID"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br")])]),a("RText",{attrs:{text:"使用场景"}}),t._v(" "),a("ol",[a("li",[t._v("动态资源加载:")])]),t._v(" "),a("ul",[a("li",[t._v("多布局支持: 如果你的应用需要在运行时根据某些条件(例如设备类型、用户设置、语言环境等)动态选择布局文件,可以使用这种方法。例如,可以根据屏幕尺寸加载不同的布局文件。")]),t._v(" "),a("li",[t._v("模块化资源: 在一些复杂项目中,布局文件可能会被动态地添加或移除。在这种情况下,使用字符串资源名称可以提供更灵活的资源管理方式。")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[t._v("国际化和本地化:")])]),t._v(" "),a("ul",[a("li",[t._v("多语言支持: 通过 getIdentifier,可以更方便地在代码中处理不同语言环境下的资源。例如,不同语言环境可能有不同的布局文件命名。")])]),t._v(" "),a("ol",{attrs:{start:"3"}},[a("li",[t._v("插件化和动态更新:")])]),t._v(" "),a("ul",[a("li",[t._v("插件系统: 如果你的应用有插件系统,并且插件的布局文件是动态加载的,那么可以使用这种方法来动态解析和加载插件资源。")]),t._v(" "),a("li",[t._v("热更新: 对于需要从服务器动态获取并加载布局文件的应用,可以在下载新的布局文件后,通过资源名称动态获取其 ID 并设置内容视图。")])]),t._v(" "),a("RText",{attrs:{text:"注意事项:"}}),t._v(" "),a("ul",[a("li",[t._v("性能:resources.getIdentifier 是一个相对耗时的操作,因为它是在运行时解析资源 ID。对于频繁调用的场景,要注意性能开销。")]),t._v(" "),a("li",[t._v("安全性: 动态获取资源 ID 的方式可能会因为资源名称拼写错误或者资源不存在而导致 layoutID 返回 0,从而引发 NullPointerException 或其他错误。因此,需要添加适当的错误处理。")]),t._v(" "),a("li",[t._v("代码可读性: 这种方式的代码可读性较低,维护起来可能不如直接使用 R.layout.activity_main 方便。")])])],1)}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/198.c2a62c56.js b/assets/js/198.c2a62c56.js new file mode 100644 index 0000000000..e0b068fb9e --- /dev/null +++ b/assets/js/198.c2a62c56.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[198],{514:function(e,s,t){"use strict";t.r(s);var a=t(4),i=Object(a.a)({},(function(){var e=this,s=e._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("p",[e._v("Deep Link(深度链接)是一种URL或链接,能够将用户直接引导到移动应用或网页中的特定内容或页面,而不仅仅是打开主页。这种链接提供了一种更直接和便捷的用户体验,特别是在移动应用程序中。")]),e._v(" "),s("h2",{attrs:{id:"分类"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#分类"}},[e._v("#")]),e._v(" 分类")]),e._v(" "),s("p",[e._v("根据具体的实现方式和使用场景,Deep Link 有几种类型:")]),e._v(" "),s("h3",{attrs:{id:"传统深度链接-classic-deep-links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#传统深度链接-classic-deep-links"}},[e._v("#")]),e._v(" 传统深度链接(Classic Deep Links)")]),e._v(" "),s("ul",[s("li",[e._v("功能: 将用户从一个应用程序、网页或其他媒介引导到另一个应用中的特定页面或内容。")]),e._v(" "),s("li",[e._v("局限: 只能在应用已经安装的情况下工作。如果用户未安装该应用,点击深度链接将导致错误或无法打开。")])]),e._v(" "),s("p",[e._v("示例: "),s("code",[e._v("myapp://profile/123")]),e._v(" 可以直接打开应用中的某个用户的个人资料页面,而不是应用的主页。")]),e._v(" "),s("h3",{attrs:{id:"延迟深度链接-deferred-deep-links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#延迟深度链接-deferred-deep-links"}},[e._v("#")]),e._v(" 延迟深度链接(Deferred Deep Links)")]),e._v(" "),s("ul",[s("li",[e._v("功能: 不仅在应用已安装时引导用户到特定内容,还能在应用未安装时,先将用户引导到应用商店下载安装应用,之后再自动跳转到目标内容页面。")]),e._v(" "),s("li",[e._v("优势: 提供了更灵活的体验,即使用户在点击链接时没有安装应用,安装后依然可以访问最初的目标页面。")])]),e._v(" "),s("RText",{attrs:{text:"使用场景"}}),e._v(" "),s("p",[e._v("用户点击了一个推荐或分享链接,未安装该应用时被引导至应用商店安装,安装后能够继续导航到原始推荐的页面。")]),e._v(" "),s("h3",{attrs:{id:"通用链接-universal-links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#通用链接-universal-links"}},[e._v("#")]),e._v(" 通用链接(Universal Links)")]),e._v(" "),s("p",[e._v("功能: 用于在iOS系统中统一处理深度链接。它们可以根据用户设备上的应用状态,决定是打开应用还是加载相应的网页。即使用户没有安装应用,仍然会引导他们到网页版本。\n优势: iOS系统推荐的实现方式,无需使用自定义的 URL 方案,减少了 URL 冲突的风险。")]),e._v(" "),s("p",[e._v("示例: 点击 "),s("code",[e._v("https://example.com/profile/123")]),e._v(",如果用户安装了应用,会在应用中打开个人资料页面;如果未安装应用,则在浏览器中加载网页版本的个人资料页面。")]),e._v(" "),s("h3",{attrs:{id:"应用链接-app-links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#应用链接-app-links"}},[e._v("#")]),e._v(" 应用链接(App Links)")]),e._v(" "),s("ul",[s("li",[e._v("功能: 用于在Android系统中实现类似于iOS通用链接的功能。根据用户的设备和应用状态,决定是否打开移动应用或网页。")]),e._v(" "),s("li",[e._v("优势: 类似于iOS通用链接的功能,在Android上提供了一种更简便的深度链接管理方式。")])]),e._v(" "),s("p",[e._v("示例:")]),e._v(" "),s("ul",[s("li",[e._v("当用户点击 https://example.com/profile/123,如果应用已安装,打开应用中的个人资料页面;如果应用未安装,打开网页。")])]),e._v(" "),s("h2",{attrs:{id:"deep-link的应用场景"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deep-link的应用场景"}},[e._v("#")]),e._v(" Deep Link的应用场景")]),e._v(" "),s("ul",[s("li",[e._v("社交分享: 用户可以将应用中的特定内容(如文章、视频、个人资料等)分享给其他人,点击后直接进入应用的内容页面。")]),e._v(" "),s("li",[e._v("广告推广: 广告商可以使用深度链接将用户从广告引导到应用内的特定产品或优惠页面,从而提高转换率。")]),e._v(" "),s("li",[e._v("电子邮件营销: 邮件中嵌入的深度链接可以引导用户直接打开应用中的相关内容,而不需要额外的导航步骤。")])])],1)}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/199.8b52027d.js b/assets/js/199.8b52027d.js new file mode 100644 index 0000000000..e118af01f5 --- /dev/null +++ b/assets/js/199.8b52027d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[199],{517:function(t,e,n){"use strict";n.r(e);var r=n(4),o=Object(r.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("blockquote",[t("p",[t("a",{attrs:{href:"https://developer.android.com/training/articles/keystore?hl=zh-cn",target:"_blank",rel:"noopener noreferrer"}},[this._v("Android 密钥库系统"),t("OutboundLink")],1)])]),this._v(" "),t("p",[this._v("TODO")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/2.ce95ee6e.js b/assets/js/2.ce95ee6e.js new file mode 100644 index 0000000000..eee770a2aa --- /dev/null +++ b/assets/js/2.ce95ee6e.js @@ -0,0 +1,14 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{252:function(t,e,n){},253:function(t,e,n){},254:function(t,e,n){},255:function(t,e,n){},256:function(t,e,n){},257:function(t,e,n){},258:function(t,e,n){},259:function(t,e,n){},260:function(t,e,n){},261:function(t,e,n){},262:function(t,e,n){},263:function(t,e,n){},264:function(t,e,n){},265:function(t,e,n){},266:function(t,e){t.exports=function(t){return null==t}},267:function(t,e,n){},268:function(t,e,n){},269:function(t,e,n){},270:function(t,e,n){},271:function(t,e,n){},272:function(t,e,n){},273:function(t,e,n){},274:function(t,e,n){},275:function(t,e,n){},276:function(t,e,n){},277:function(t,e,n){},278:function(t,e,n){},279:function(t,e,n){},280:function(t,e,n){},281:function(t,e,n){},282:function(t,e,n){},285:function(t,e,n){"use strict";n.r(e);var r=n(11),i={name:"SidebarGroup",props:["item","open","collapsable","depth"],components:{DropdownTransition:n(286).a},beforeCreate(){this.$options.components.SidebarLinks=n(285).default},methods:{isActive:r.f}},o=(n(312),n(4)),s=Object(o.a)(i,(function(){var t=this,e=t._self._c;return e("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?e("router-link",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):e("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[e("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?e("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),e("DropdownTransition",[t.open||!t.collapsable?e("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,"initial-open-group-index":t.item.initialOpenGroupIndex,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null).exports;function a(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function u(t,e,n,i,o,s=1){return!e||s>o?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const l=Object(r.f)(i,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header level"+e.level},[a(t,n+"#"+e.slug,e.title,l),u(t,e.children,n,i,o,s+1)])}))}var l={functional:!0,props:["item","sidebarDepth"],render(t,{parent:{$page:e,$site:n,$route:i,$themeConfig:o,$themeLocaleConfig:s},props:{item:l,sidebarDepth:c}}){const h=Object(r.f)(i,l.path),p="auto"===l.type?h||l.children.some(t=>Object(r.f)(i,l.basePath+"#"+t.slug)):h,f="external"===l.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,l.path,l.title||l.path):a(t,l.path,l.title||l.path,p),g=[e.frontmatter.sidebarDepth,c,s.sidebarDepth,o.sidebarDepth,1].find(t=>void 0!==t),d=s.displayAllHeaders||o.displayAllHeaders;if("auto"===l.type)return[f,u(t,l.children,l.basePath,i,g)];if((p||d)&&l.headers&&!r.e.test(l.path)){return[f,u(t,Object(r.d)(l.headers),l.path,i,g)]}return f}};n(313);function c(t,e){return"group"===e.type&&e.children.some(e=>"group"===e.type?c(t,e):"page"===e.type&&Object(r.f)(t,e.path))}var h={name:"SidebarLinks",components:{SidebarGroup:s,SidebarLink:Object(o.a)(l,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth","initialOpenGroupIndex"],data(){return{openGroupIndex:this.initialOpenGroupIndex||0}},created(){this.refreshIndex()},watch:{$route(){this.refreshIndex()}},methods:{refreshIndex(){const t=function(t,e){for(let n=0;n-1&&(this.openGroupIndex=t)},toggleGroup(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive(t){return Object(r.f)(this.$route,t.regularPath)}}},p=Object(o.a)(h,(function(){var t=this,e=t._self._c;return t.items.length?e("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(n,r){return e("li",{key:r},["group"===n.type?e("SidebarGroup",{attrs:{item:n,open:r===t.openGroupIndex,collapsable:n.collapsable||n.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(r)}}}):e("SidebarLink",{attrs:{sidebarDepth:t.sidebarDepth,item:n}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=p.exports},286:function(t,e,n){"use strict";var r={name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}},i=(n(298),n(4)),o=Object(i.a)(r,(function(){return(0,this._self._c)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=o.exports},288:function(t,e,n){"use strict";n(252)},289:function(t,e,n){"use strict";n(253)},290:function(t,e,n){"use strict";n(254)},291:function(t,e,n){"use strict";n(255)},292:function(t,e,n){"use strict";n(256)},293:function(t,e,n){"use strict";n(257)},294:function(t,e,n){"use strict";n(258)},295:function(t,e,n){"use strict";n(259)},296:function(t,e,n){"use strict";n(260)},297:function(t,e,n){"use strict";n(261)},298:function(t,e,n){"use strict";n(262)},299:function(t,e,n){"use strict";n(263)},300:function(t,e,n){"use strict";n(264)},301:function(t,e,n){"use strict";n(265)},302:function(t,e,n){"use strict";n(267)},303:function(t,e,n){var r=n(13),i=n(5),o=n(12);t.exports=function(t){return"string"==typeof t||!i(t)&&o(t)&&"[object String]"==r(t)}},304:function(t,e,n){"use strict";n(268)},305:function(t,e,n){"use strict";n(269)},306:function(t,e,n){"use strict";n(270)},307:function(t,e,n){"use strict";n(271)},308:function(t,e,n){"use strict";n(272)},309:function(t,e,n){"use strict";n(273)},310:function(t,e,n){"use strict";n(274)},311:function(t,e,n){"use strict";n(275)},312:function(t,e,n){"use strict";n(276)},313:function(t,e,n){"use strict";n(277)},314:function(t,e,n){"use strict";n(278)},315:function(t,e,n){"use strict";n(279)},316:function(t,e,n){"use strict";n(280)},317:function(t,e,n){"use strict";n(281)},318:function(t,e,n){(function(t){var r; +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(){var i="Expected a function",o="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],a="[object Arguments]",u="[object Array]",l="[object Boolean]",c="[object Date]",h="[object Error]",p="[object Function]",f="[object GeneratorFunction]",g="[object Map]",d="[object Number]",v="[object Object]",m="[object RegExp]",y="[object Set]",_="[object String]",b="[object Symbol]",w="[object WeakMap]",k="[object ArrayBuffer]",P="[object DataView]",C="[object Float32Array]",T="[object Float64Array]",x="[object Int8Array]",S="[object Int16Array]",L="[object Int32Array]",A="[object Uint8Array]",B="[object Uint16Array]",M="[object Uint32Array]",E=/\b__p \+= '';/g,O=/\b(__p \+=) '' \+/g,I=/(__e\(.*?\)|\b__t\)) \+\n'';/g,D=/&(?:amp|lt|gt|quot|#39);/g,$=/[&<>"']/g,Y=RegExp(D.source),j=RegExp($.source),X=/<%-([\s\S]+?)%>/g,N=/<%([\s\S]+?)%>/g,U=/<%=([\s\S]+?)%>/g,R=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,z=/^\w*$/,H=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,W=/[\\^$.*+?()[\]{}|]/g,F=RegExp(W.source),q=/^\s+/,G=/\s/,K=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Q=/\{\n\/\* \[wrapped with (.+)\] \*/,V=/,? & /,Z=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,J=/[()=,{}\[\]\/\s]/,tt=/\\(\\)?/g,et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,nt=/\w*$/,rt=/^[-+]0x[0-9a-f]+$/i,it=/^0b[01]+$/i,ot=/^\[object .+?Constructor\]$/,st=/^0o[0-7]+$/i,at=/^(?:0|[1-9]\d*)$/,ut=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,lt=/($^)/,ct=/['\n\r\u2028\u2029\\]/g,ht="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",pt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ft="[\\ud800-\\udfff]",gt="["+pt+"]",dt="["+ht+"]",vt="\\d+",mt="[\\u2700-\\u27bf]",yt="[a-z\\xdf-\\xf6\\xf8-\\xff]",_t="[^\\ud800-\\udfff"+pt+vt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",bt="\\ud83c[\\udffb-\\udfff]",wt="[^\\ud800-\\udfff]",kt="(?:\\ud83c[\\udde6-\\uddff]){2}",Pt="[\\ud800-\\udbff][\\udc00-\\udfff]",Ct="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Tt="(?:"+yt+"|"+_t+")",xt="(?:"+Ct+"|"+_t+")",St="(?:"+dt+"|"+bt+")"+"?",Lt="[\\ufe0e\\ufe0f]?"+St+("(?:\\u200d(?:"+[wt,kt,Pt].join("|")+")[\\ufe0e\\ufe0f]?"+St+")*"),At="(?:"+[mt,kt,Pt].join("|")+")"+Lt,Bt="(?:"+[wt+dt+"?",dt,kt,Pt,ft].join("|")+")",Mt=RegExp("['’]","g"),Et=RegExp(dt,"g"),Ot=RegExp(bt+"(?="+bt+")|"+Bt+Lt,"g"),It=RegExp([Ct+"?"+yt+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[gt,Ct,"$"].join("|")+")",xt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[gt,Ct+Tt,"$"].join("|")+")",Ct+"?"+Tt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Ct+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",vt,At].join("|"),"g"),Dt=RegExp("[\\u200d\\ud800-\\udfff"+ht+"\\ufe0e\\ufe0f]"),$t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Yt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],jt=-1,Xt={};Xt[C]=Xt[T]=Xt[x]=Xt[S]=Xt[L]=Xt[A]=Xt["[object Uint8ClampedArray]"]=Xt[B]=Xt[M]=!0,Xt[a]=Xt[u]=Xt[k]=Xt[l]=Xt[P]=Xt[c]=Xt[h]=Xt[p]=Xt[g]=Xt[d]=Xt[v]=Xt[m]=Xt[y]=Xt[_]=Xt[w]=!1;var Nt={};Nt[a]=Nt[u]=Nt[k]=Nt[P]=Nt[l]=Nt[c]=Nt[C]=Nt[T]=Nt[x]=Nt[S]=Nt[L]=Nt[g]=Nt[d]=Nt[v]=Nt[m]=Nt[y]=Nt[_]=Nt[b]=Nt[A]=Nt["[object Uint8ClampedArray]"]=Nt[B]=Nt[M]=!0,Nt[h]=Nt[p]=Nt[w]=!1;var Ut={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Rt=parseFloat,zt=parseInt,Ht="object"==typeof global&&global&&global.Object===Object&&global,Wt="object"==typeof self&&self&&self.Object===Object&&self,Ft=Ht||Wt||Function("return this")(),qt=e&&!e.nodeType&&e,Gt=qt&&"object"==typeof t&&t&&!t.nodeType&&t,Kt=Gt&&Gt.exports===qt,Qt=Kt&&Ht.process,Vt=function(){try{var t=Gt&&Gt.require&&Gt.require("util").types;return t||Qt&&Qt.binding&&Qt.binding("util")}catch(t){}}(),Zt=Vt&&Vt.isArrayBuffer,Jt=Vt&&Vt.isDate,te=Vt&&Vt.isMap,ee=Vt&&Vt.isRegExp,ne=Vt&&Vt.isSet,re=Vt&&Vt.isTypedArray;function ie(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function oe(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function he(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function Ie(t,e){for(var n=t.length;n--&&be(e,t[n],0)>-1;);return n}function De(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}var $e=Te({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Ye=Te({"&":"&","<":"<",">":">",'"':""","'":"'"});function je(t){return"\\"+Ut[t]}function Xe(t){return Dt.test(t)}function Ne(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function Ue(t,e){return function(n){return t(e(n))}}function Re(t,e){for(var n=-1,r=t.length,i=0,s=[];++n",""":'"',"'":"'"});var Ke=function t(e){var n,r=(e=null==e?Ft:Ke.defaults(Ft.Object(),e,Ke.pick(Ft,Yt))).Array,G=e.Date,ht=e.Error,pt=e.Function,ft=e.Math,gt=e.Object,dt=e.RegExp,vt=e.String,mt=e.TypeError,yt=r.prototype,_t=pt.prototype,bt=gt.prototype,wt=e["__core-js_shared__"],kt=_t.toString,Pt=bt.hasOwnProperty,Ct=0,Tt=(n=/[^.]+$/.exec(wt&&wt.keys&&wt.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",xt=bt.toString,St=kt.call(gt),Lt=Ft._,At=dt("^"+kt.call(Pt).replace(W,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Bt=Kt?e.Buffer:void 0,Ot=e.Symbol,Dt=e.Uint8Array,Ut=Bt?Bt.allocUnsafe:void 0,Ht=Ue(gt.getPrototypeOf,gt),Wt=gt.create,qt=bt.propertyIsEnumerable,Gt=yt.splice,Qt=Ot?Ot.isConcatSpreadable:void 0,Vt=Ot?Ot.iterator:void 0,me=Ot?Ot.toStringTag:void 0,Te=function(){try{var t=to(gt,"defineProperty");return t({},"",{}),t}catch(t){}}(),Qe=e.clearTimeout!==Ft.clearTimeout&&e.clearTimeout,Ve=G&&G.now!==Ft.Date.now&&G.now,Ze=e.setTimeout!==Ft.setTimeout&&e.setTimeout,Je=ft.ceil,tn=ft.floor,en=gt.getOwnPropertySymbols,nn=Bt?Bt.isBuffer:void 0,rn=e.isFinite,on=yt.join,sn=Ue(gt.keys,gt),an=ft.max,un=ft.min,ln=G.now,cn=e.parseInt,hn=ft.random,pn=yt.reverse,fn=to(e,"DataView"),gn=to(e,"Map"),dn=to(e,"Promise"),vn=to(e,"Set"),mn=to(e,"WeakMap"),yn=to(gt,"create"),_n=mn&&new mn,bn={},wn=Lo(fn),kn=Lo(gn),Pn=Lo(dn),Cn=Lo(vn),Tn=Lo(mn),xn=Ot?Ot.prototype:void 0,Sn=xn?xn.valueOf:void 0,Ln=xn?xn.toString:void 0;function An(t){if(Ws(t)&&!Is(t)&&!(t instanceof On)){if(t instanceof En)return t;if(Pt.call(t,"__wrapped__"))return Ao(t)}return new En(t)}var Bn=function(){function t(){}return function(e){if(!Hs(e))return{};if(Wt)return Wt(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function Mn(){}function En(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}function On(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function In(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function Vn(t,e,n,r,i,o){var s,u=1&e,h=2&e,w=4&e;if(n&&(s=i?n(t,r,i,o):n(t)),void 0!==s)return s;if(!Hs(t))return t;var E=Is(t);if(E){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&Pt.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!u)return yi(t,s)}else{var O=ro(t),I=O==p||O==f;if(js(t))return pi(t,u);if(O==v||O==a||I&&!i){if(s=h||I?{}:oo(t),!u)return h?function(t,e){return _i(t,no(t),e)}(t,function(t,e){return t&&_i(e,ka(e),t)}(s,t)):function(t,e){return _i(t,eo(t),e)}(t,qn(s,t))}else{if(!Nt[O])return i?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case k:return fi(t);case l:case c:return new r(+t);case P:return function(t,e){var n=e?fi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case C:case T:case x:case S:case L:case A:case"[object Uint8ClampedArray]":case B:case M:return gi(t,n);case g:return new r;case d:case _:return new r(t);case m:return function(t){var e=new t.constructor(t.source,nt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case y:return new r;case b:return i=t,Sn?gt(Sn.call(i)):{}}var i}(t,O,u)}}o||(o=new jn);var D=o.get(t);if(D)return D;o.set(t,s),Qs(t)?t.forEach((function(r){s.add(Vn(r,e,n,r,t,o))})):Fs(t)&&t.forEach((function(r,i){s.set(i,Vn(r,e,n,i,t,o))}));var $=E?void 0:(w?h?qi:Fi:h?ka:wa)(t);return se($||t,(function(r,i){$&&(r=t[i=r]),Hn(s,i,Vn(r,e,n,i,t,o))})),s}function Zn(t,e,n){var r=n.length;if(null==t)return!r;for(t=gt(t);r--;){var i=n[r],o=e[i],s=t[i];if(void 0===s&&!(i in t)||!o(s))return!1}return!0}function Jn(t,e,n){if("function"!=typeof t)throw new mt(i);return wo((function(){t.apply(void 0,n)}),e)}function tr(t,e,n,r){var i=-1,o=ce,s=!0,a=t.length,u=[],l=e.length;if(!a)return u;n&&(e=pe(e,Be(n))),r?(o=he,s=!1):e.length>=200&&(o=Ee,s=!1,e=new Yn(e));t:for(;++i-1},Dn.prototype.set=function(t,e){var n=this.__data__,r=Wn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},$n.prototype.clear=function(){this.size=0,this.__data__={hash:new In,map:new(gn||Dn),string:new In}},$n.prototype.delete=function(t){var e=Zi(this,t).delete(t);return this.size-=e?1:0,e},$n.prototype.get=function(t){return Zi(this,t).get(t)},$n.prototype.has=function(t){return Zi(this,t).has(t)},$n.prototype.set=function(t,e){var n=Zi(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},Yn.prototype.add=Yn.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},Yn.prototype.has=function(t){return this.__data__.has(t)},jn.prototype.clear=function(){this.__data__=new Dn,this.size=0},jn.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},jn.prototype.get=function(t){return this.__data__.get(t)},jn.prototype.has=function(t){return this.__data__.has(t)},jn.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Dn){var r=n.__data__;if(!gn||r.length<199)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new $n(r)}return n.set(t,e),this.size=n.size,this};var er=ki(lr),nr=ki(cr,!0);function rr(t,e){var n=!0;return er(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function ir(t,e,n){for(var r=-1,i=t.length;++r0&&n(a)?e>1?sr(a,e-1,n,r,i):fe(i,a):r||(i[i.length]=a)}return i}var ar=Pi(),ur=Pi(!0);function lr(t,e){return t&&ar(t,e,wa)}function cr(t,e){return t&&ur(t,e,wa)}function hr(t,e){return le(e,(function(e){return Us(t[e])}))}function pr(t,e){for(var n=0,r=(e=ui(e,t)).length;null!=t&&ne}function vr(t,e){return null!=t&&Pt.call(t,e)}function mr(t,e){return null!=t&&e in gt(t)}function yr(t,e,n){for(var i=n?he:ce,o=t[0].length,s=t.length,a=s,u=r(s),l=1/0,c=[];a--;){var h=t[a];a&&e&&(h=pe(h,Be(e))),l=un(h.length,l),u[a]=!n&&(e||o>=120&&h.length>=120)?new Yn(a&&h):void 0}h=t[0];var p=-1,f=u[0];t:for(;++p=a)return u;var l=n[r];return u*("desc"==l?-1:1)}}return t.index-e.index}(t,e,n)}))}function Ir(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)a!==t&&Gt.call(a,u,1),Gt.call(t,u,1);return t}function $r(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;ao(i)?Gt.call(t,i,1):ti(t,i)}}return t}function Yr(t,e){return t+tn(hn()*(e-t+1))}function jr(t,e){var n="";if(!t||e<1||e>9007199254740991)return n;do{e%2&&(n+=t),(e=tn(e/2))&&(t+=t)}while(e);return n}function Xr(t,e){return ko(vo(t,e,qa),t+"")}function Nr(t){return Nn(Ba(t))}function Ur(t,e){var n=Ba(t);return To(n,Qn(e,0,n.length))}function Rr(t,e,n,r){if(!Hs(t))return t;for(var i=-1,o=(e=ui(e,t)).length,s=o-1,a=t;null!=a&&++io?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var s=r(o);++i>>1,s=t[o];null!==s&&!Zs(s)&&(n?s<=e:s=200){var l=e?null:ji(t);if(l)return ze(l);s=!1,i=Ee,u=new Yn}else u=e?[]:a;t:for(;++r=r?t:Fr(t,e,n)}var hi=Qe||function(t){return Ft.clearTimeout(t)};function pi(t,e){if(e)return t.slice();var n=t.length,r=Ut?Ut(n):new t.constructor(n);return t.copy(r),r}function fi(t){var e=new t.constructor(t.byteLength);return new Dt(e).set(new Dt(t)),e}function gi(t,e){var n=e?fi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function di(t,e){if(t!==e){var n=void 0!==t,r=null===t,i=t==t,o=Zs(t),s=void 0!==e,a=null===e,u=e==e,l=Zs(e);if(!a&&!l&&!o&&t>e||o&&s&&u&&!a&&!l||r&&s&&u||!n&&u||!i)return 1;if(!r&&!o&&!l&&t1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(i--,o):void 0,s&&uo(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),e=gt(e);++r-1?i[o?e[s]:s]:void 0}}function Li(t){return Wi((function(e){var n=e.length,r=n,o=En.prototype.thru;for(t&&e.reverse();r--;){var s=e[r];if("function"!=typeof s)throw new mt(i);if(o&&!a&&"wrapper"==Ki(s))var a=new En([],!0)}for(r=a?r:n;++r1&&_.reverse(),h&&la))return!1;var l=o.get(t),c=o.get(e);if(l&&c)return l==e&&c==t;var h=-1,p=!0,f=2&n?new Yn:void 0;for(o.set(t,e),o.set(e,t);++h-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(K,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return se(s,(function(n){var r="_."+n[0];e&n[1]&&!ce(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(Q);return e?e[1].split(V):[]}(r),n)))}function Co(t){var e=0,n=0;return function(){var r=ln(),i=16-(r-n);if(n=r,i>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function To(t,e){var n=-1,r=t.length,i=r-1;for(e=void 0===e?r:e;++n1?t[e-1]:void 0;return n="function"==typeof n?(t.pop(),n):void 0,Ko(t,n)}));function ns(t){var e=An(t);return e.__chain__=!0,e}function rs(t,e){return e(t)}var is=Wi((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return Kn(e,t)};return!(e>1||this.__actions__.length)&&r instanceof On&&ao(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:rs,args:[i],thisArg:void 0}),new En(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(void 0),t}))):this.thru(i)}));var os=bi((function(t,e,n){Pt.call(t,n)?++t[n]:Gn(t,n,1)}));var ss=Si(Oo),as=Si(Io);function us(t,e){return(Is(t)?se:er)(t,Vi(e,3))}function ls(t,e){return(Is(t)?ae:nr)(t,Vi(e,3))}var cs=bi((function(t,e,n){Pt.call(t,n)?t[n].push(e):Gn(t,n,[e])}));var hs=Xr((function(t,e,n){var i=-1,o="function"==typeof e,s=$s(t)?r(t.length):[];return er(t,(function(t){s[++i]=o?ie(e,t,n):_r(t,e,n)})),s})),ps=bi((function(t,e,n){Gn(t,n,e)}));function fs(t,e){return(Is(t)?pe:Lr)(t,Vi(e,3))}var gs=bi((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var ds=Xr((function(t,e){if(null==t)return[];var n=e.length;return n>1&&uo(t,e[0],e[1])?e=[]:n>2&&uo(e[0],e[1],e[2])&&(e=[e[0]]),Or(t,sr(e,1),[])})),vs=Ve||function(){return Ft.Date.now()};function ms(t,e,n){return e=n?void 0:e,Ni(t,128,void 0,void 0,void 0,void 0,e=t&&null==e?t.length:e)}function ys(t,e){var n;if("function"!=typeof e)throw new mt(i);return t=ia(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=void 0),n}}var _s=Xr((function(t,e,n){var r=1;if(n.length){var i=Re(n,Qi(_s));r|=32}return Ni(t,r,e,n,i)})),bs=Xr((function(t,e,n){var r=3;if(n.length){var i=Re(n,Qi(bs));r|=32}return Ni(e,r,t,n,i)}));function ws(t,e,n){var r,o,s,a,u,l,c=0,h=!1,p=!1,f=!0;if("function"!=typeof t)throw new mt(i);function g(e){var n=r,i=o;return r=o=void 0,c=e,a=t.apply(i,n)}function d(t){return c=t,u=wo(m,e),h?g(t):a}function v(t){var n=t-l;return void 0===l||n>=e||n<0||p&&t-c>=s}function m(){var t=vs();if(v(t))return y(t);u=wo(m,function(t){var n=e-(t-l);return p?un(n,s-(t-c)):n}(t))}function y(t){return u=void 0,f&&r?g(t):(r=o=void 0,a)}function _(){var t=vs(),n=v(t);if(r=arguments,o=this,l=t,n){if(void 0===u)return d(l);if(p)return hi(u),u=wo(m,e),g(l)}return void 0===u&&(u=wo(m,e)),a}return e=sa(e)||0,Hs(n)&&(h=!!n.leading,s=(p="maxWait"in n)?an(sa(n.maxWait)||0,e):s,f="trailing"in n?!!n.trailing:f),_.cancel=function(){void 0!==u&&hi(u),c=0,r=l=o=u=void 0},_.flush=function(){return void 0===u?a:y(vs())},_}var ks=Xr((function(t,e){return Jn(t,1,e)})),Ps=Xr((function(t,e,n){return Jn(t,sa(e)||0,n)}));function Cs(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new mt(i);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=t.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Cs.Cache||$n),n}function Ts(t){if("function"!=typeof t)throw new mt(i);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Cs.Cache=$n;var xs=li((function(t,e){var n=(e=1==e.length&&Is(e[0])?pe(e[0],Be(Vi())):pe(sr(e,1),Be(Vi()))).length;return Xr((function(r){for(var i=-1,o=un(r.length,n);++i=e})),Os=br(function(){return arguments}())?br:function(t){return Ws(t)&&Pt.call(t,"callee")&&!qt.call(t,"callee")},Is=r.isArray,Ds=Zt?Be(Zt):function(t){return Ws(t)&&gr(t)==k};function $s(t){return null!=t&&zs(t.length)&&!Us(t)}function Ys(t){return Ws(t)&&$s(t)}var js=nn||su,Xs=Jt?Be(Jt):function(t){return Ws(t)&&gr(t)==c};function Ns(t){if(!Ws(t))return!1;var e=gr(t);return e==h||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!Gs(t)}function Us(t){if(!Hs(t))return!1;var e=gr(t);return e==p||e==f||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Rs(t){return"number"==typeof t&&t==ia(t)}function zs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}function Hs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Ws(t){return null!=t&&"object"==typeof t}var Fs=te?Be(te):function(t){return Ws(t)&&ro(t)==g};function qs(t){return"number"==typeof t||Ws(t)&&gr(t)==d}function Gs(t){if(!Ws(t)||gr(t)!=v)return!1;var e=Ht(t);if(null===e)return!0;var n=Pt.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&kt.call(n)==St}var Ks=ee?Be(ee):function(t){return Ws(t)&&gr(t)==m};var Qs=ne?Be(ne):function(t){return Ws(t)&&ro(t)==y};function Vs(t){return"string"==typeof t||!Is(t)&&Ws(t)&&gr(t)==_}function Zs(t){return"symbol"==typeof t||Ws(t)&&gr(t)==b}var Js=re?Be(re):function(t){return Ws(t)&&zs(t.length)&&!!Xt[gr(t)]};var ta=Di(Sr),ea=Di((function(t,e){return t<=e}));function na(t){if(!t)return[];if($s(t))return Vs(t)?Fe(t):yi(t);if(Vt&&t[Vt])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Vt]());var e=ro(t);return(e==g?Ne:e==y?ze:Ba)(t)}function ra(t){return t?(t=sa(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ia(t){var e=ra(t),n=e%1;return e==e?n?e-n:e:0}function oa(t){return t?Qn(ia(t),0,4294967295):0}function sa(t){if("number"==typeof t)return t;if(Zs(t))return NaN;if(Hs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Hs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Ae(t);var n=it.test(t);return n||st.test(t)?zt(t.slice(2),n?2:8):rt.test(t)?NaN:+t}function aa(t){return _i(t,ka(t))}function ua(t){return null==t?"":Zr(t)}var la=wi((function(t,e){if(po(e)||$s(e))_i(e,wa(e),t);else for(var n in e)Pt.call(e,n)&&Hn(t,n,e[n])})),ca=wi((function(t,e){_i(e,ka(e),t)})),ha=wi((function(t,e,n,r){_i(e,ka(e),t,r)})),pa=wi((function(t,e,n,r){_i(e,wa(e),t,r)})),fa=Wi(Kn);var ga=Xr((function(t,e){t=gt(t);var n=-1,r=e.length,i=r>2?e[2]:void 0;for(i&&uo(e[0],e[1],i)&&(r=1);++n1),e})),_i(t,qi(t),n),r&&(n=Vn(n,7,zi));for(var i=e.length;i--;)ti(n,e[i]);return n}));var xa=Wi((function(t,e){return null==t?{}:function(t,e){return Ir(t,e,(function(e,n){return ma(t,n)}))}(t,e)}));function Sa(t,e){if(null==t)return{};var n=pe(qi(t),(function(t){return[t]}));return e=Vi(e),Ir(t,n,(function(t,n){return e(t,n[0])}))}var La=Xi(wa),Aa=Xi(ka);function Ba(t){return null==t?[]:Me(t,wa(t))}var Ma=Ti((function(t,e,n){return e=e.toLowerCase(),t+(n?Ea(e):e)}));function Ea(t){return Na(ua(t).toLowerCase())}function Oa(t){return(t=ua(t))&&t.replace(ut,$e).replace(Et,"")}var Ia=Ti((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),Da=Ti((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),$a=Ci("toLowerCase");var Ya=Ti((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var ja=Ti((function(t,e,n){return t+(n?" ":"")+Na(e)}));var Xa=Ti((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),Na=Ci("toUpperCase");function Ua(t,e,n){return t=ua(t),void 0===(e=n?void 0:e)?function(t){return $t.test(t)}(t)?function(t){return t.match(It)||[]}(t):function(t){return t.match(Z)||[]}(t):t.match(e)||[]}var Ra=Xr((function(t,e){try{return ie(t,void 0,e)}catch(t){return Ns(t)?t:new ht(t)}})),za=Wi((function(t,e){return se(e,(function(e){e=So(e),Gn(t,e,_s(t[e],t))})),t}));function Ha(t){return function(){return t}}var Wa=Li(),Fa=Li(!0);function qa(t){return t}function Ga(t){return Cr("function"==typeof t?t:Vn(t,1))}var Ka=Xr((function(t,e){return function(n){return _r(n,t,e)}})),Qa=Xr((function(t,e){return function(n){return _r(t,n,e)}}));function Va(t,e,n){var r=wa(e),i=hr(e,r);null!=n||Hs(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=hr(e,wa(e)));var o=!(Hs(n)&&"chain"in n&&!n.chain),s=Us(t);return se(i,(function(n){var r=e[n];t[n]=r,s&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=yi(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,fe([this.value()],arguments))})})),t}function Za(){}var Ja=Ei(pe),tu=Ei(ue),eu=Ei(ve);function nu(t){return lo(t)?Ce(So(t)):function(t){return function(e){return pr(e,t)}}(t)}var ru=Ii(),iu=Ii(!0);function ou(){return[]}function su(){return!1}var au=Mi((function(t,e){return t+e}),0),uu=Yi("ceil"),lu=Mi((function(t,e){return t/e}),1),cu=Yi("floor");var hu,pu=Mi((function(t,e){return t*e}),1),fu=Yi("round"),gu=Mi((function(t,e){return t-e}),0);return An.after=function(t,e){if("function"!=typeof e)throw new mt(i);return t=ia(t),function(){if(--t<1)return e.apply(this,arguments)}},An.ary=ms,An.assign=la,An.assignIn=ca,An.assignInWith=ha,An.assignWith=pa,An.at=fa,An.before=ys,An.bind=_s,An.bindAll=za,An.bindKey=bs,An.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Is(t)?t:[t]},An.chain=ns,An.chunk=function(t,e,n){e=(n?uo(t,e,n):void 0===e)?1:an(ia(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var o=0,s=0,a=r(Je(i/e));oi?0:i+n),(r=void 0===r||r>i?i:ia(r))<0&&(r+=i),r=n>r?0:oa(r);n>>0)?(t=ua(t))&&("string"==typeof e||null!=e&&!Ks(e))&&!(e=Zr(e))&&Xe(t)?ci(Fe(t),0,n):t.split(e,n):[]},An.spread=function(t,e){if("function"!=typeof t)throw new mt(i);return e=null==e?0:an(ia(e),0),Xr((function(n){var r=n[e],i=ci(n,0,e);return r&&fe(i,r),ie(t,this,i)}))},An.tail=function(t){var e=null==t?0:t.length;return e?Fr(t,1,e):[]},An.take=function(t,e,n){return t&&t.length?Fr(t,0,(e=n||void 0===e?1:ia(e))<0?0:e):[]},An.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Fr(t,(e=r-(e=n||void 0===e?1:ia(e)))<0?0:e,r):[]},An.takeRightWhile=function(t,e){return t&&t.length?ni(t,Vi(e,3),!1,!0):[]},An.takeWhile=function(t,e){return t&&t.length?ni(t,Vi(e,3)):[]},An.tap=function(t,e){return e(t),t},An.throttle=function(t,e,n){var r=!0,o=!0;if("function"!=typeof t)throw new mt(i);return Hs(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),ws(t,e,{leading:r,maxWait:e,trailing:o})},An.thru=rs,An.toArray=na,An.toPairs=La,An.toPairsIn=Aa,An.toPath=function(t){return Is(t)?pe(t,So):Zs(t)?[t]:yi(xo(ua(t)))},An.toPlainObject=aa,An.transform=function(t,e,n){var r=Is(t),i=r||js(t)||Js(t);if(e=Vi(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Hs(t)&&Us(o)?Bn(Ht(t)):{}}return(i?se:lr)(t,(function(t,r,i){return e(n,t,r,i)})),n},An.unary=function(t){return ms(t,1)},An.union=Wo,An.unionBy=Fo,An.unionWith=qo,An.uniq=function(t){return t&&t.length?Jr(t):[]},An.uniqBy=function(t,e){return t&&t.length?Jr(t,Vi(e,2)):[]},An.uniqWith=function(t,e){return e="function"==typeof e?e:void 0,t&&t.length?Jr(t,void 0,e):[]},An.unset=function(t,e){return null==t||ti(t,e)},An.unzip=Go,An.unzipWith=Ko,An.update=function(t,e,n){return null==t?t:ei(t,e,ai(n))},An.updateWith=function(t,e,n,r){return r="function"==typeof r?r:void 0,null==t?t:ei(t,e,ai(n),r)},An.values=Ba,An.valuesIn=function(t){return null==t?[]:Me(t,ka(t))},An.without=Qo,An.words=Ua,An.wrap=function(t,e){return Ss(ai(e),t)},An.xor=Vo,An.xorBy=Zo,An.xorWith=Jo,An.zip=ts,An.zipObject=function(t,e){return oi(t||[],e||[],Hn)},An.zipObjectDeep=function(t,e){return oi(t||[],e||[],Rr)},An.zipWith=es,An.entries=La,An.entriesIn=Aa,An.extend=ca,An.extendWith=ha,Va(An,An),An.add=au,An.attempt=Ra,An.camelCase=Ma,An.capitalize=Ea,An.ceil=uu,An.clamp=function(t,e,n){return void 0===n&&(n=e,e=void 0),void 0!==n&&(n=(n=sa(n))==n?n:0),void 0!==e&&(e=(e=sa(e))==e?e:0),Qn(sa(t),e,n)},An.clone=function(t){return Vn(t,4)},An.cloneDeep=function(t){return Vn(t,5)},An.cloneDeepWith=function(t,e){return Vn(t,5,e="function"==typeof e?e:void 0)},An.cloneWith=function(t,e){return Vn(t,4,e="function"==typeof e?e:void 0)},An.conformsTo=function(t,e){return null==e||Zn(t,e,wa(e))},An.deburr=Oa,An.defaultTo=function(t,e){return null==t||t!=t?e:t},An.divide=lu,An.endsWith=function(t,e,n){t=ua(t),e=Zr(e);var r=t.length,i=n=void 0===n?r:Qn(ia(n),0,r);return(n-=e.length)>=0&&t.slice(n,i)==e},An.eq=Bs,An.escape=function(t){return(t=ua(t))&&j.test(t)?t.replace($,Ye):t},An.escapeRegExp=function(t){return(t=ua(t))&&F.test(t)?t.replace(W,"\\$&"):t},An.every=function(t,e,n){var r=Is(t)?ue:rr;return n&&uo(t,e,n)&&(e=void 0),r(t,Vi(e,3))},An.find=ss,An.findIndex=Oo,An.findKey=function(t,e){return ye(t,Vi(e,3),lr)},An.findLast=as,An.findLastIndex=Io,An.findLastKey=function(t,e){return ye(t,Vi(e,3),cr)},An.floor=cu,An.forEach=us,An.forEachRight=ls,An.forIn=function(t,e){return null==t?t:ar(t,Vi(e,3),ka)},An.forInRight=function(t,e){return null==t?t:ur(t,Vi(e,3),ka)},An.forOwn=function(t,e){return t&&lr(t,Vi(e,3))},An.forOwnRight=function(t,e){return t&&cr(t,Vi(e,3))},An.get=va,An.gt=Ms,An.gte=Es,An.has=function(t,e){return null!=t&&io(t,e,vr)},An.hasIn=ma,An.head=$o,An.identity=qa,An.includes=function(t,e,n,r){t=$s(t)?t:Ba(t),n=n&&!r?ia(n):0;var i=t.length;return n<0&&(n=an(i+n,0)),Vs(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&be(t,e,n)>-1},An.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:ia(n);return i<0&&(i=an(r+i,0)),be(t,e,i)},An.inRange=function(t,e,n){return e=ra(e),void 0===n?(n=e,e=0):n=ra(n),function(t,e,n){return t>=un(e,n)&&t=-9007199254740991&&t<=9007199254740991},An.isSet=Qs,An.isString=Vs,An.isSymbol=Zs,An.isTypedArray=Js,An.isUndefined=function(t){return void 0===t},An.isWeakMap=function(t){return Ws(t)&&ro(t)==w},An.isWeakSet=function(t){return Ws(t)&&"[object WeakSet]"==gr(t)},An.join=function(t,e){return null==t?"":on.call(t,e)},An.kebabCase=Ia,An.last=No,An.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ia(n))<0?an(r+i,0):un(i,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):_e(t,ke,i,!0)},An.lowerCase=Da,An.lowerFirst=$a,An.lt=ta,An.lte=ea,An.max=function(t){return t&&t.length?ir(t,qa,dr):void 0},An.maxBy=function(t,e){return t&&t.length?ir(t,Vi(e,2),dr):void 0},An.mean=function(t){return Pe(t,qa)},An.meanBy=function(t,e){return Pe(t,Vi(e,2))},An.min=function(t){return t&&t.length?ir(t,qa,Sr):void 0},An.minBy=function(t,e){return t&&t.length?ir(t,Vi(e,2),Sr):void 0},An.stubArray=ou,An.stubFalse=su,An.stubObject=function(){return{}},An.stubString=function(){return""},An.stubTrue=function(){return!0},An.multiply=pu,An.nth=function(t,e){return t&&t.length?Er(t,ia(e)):void 0},An.noConflict=function(){return Ft._===this&&(Ft._=Lt),this},An.noop=Za,An.now=vs,An.pad=function(t,e,n){t=ua(t);var r=(e=ia(e))?We(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Oi(tn(i),n)+t+Oi(Je(i),n)},An.padEnd=function(t,e,n){t=ua(t);var r=(e=ia(e))?We(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=hn();return un(t+i*(e-t+Rt("1e-"+((i+"").length-1))),e)}return Yr(t,e)},An.reduce=function(t,e,n){var r=Is(t)?ge:xe,i=arguments.length<3;return r(t,Vi(e,4),n,i,er)},An.reduceRight=function(t,e,n){var r=Is(t)?de:xe,i=arguments.length<3;return r(t,Vi(e,4),n,i,nr)},An.repeat=function(t,e,n){return e=(n?uo(t,e,n):void 0===e)?1:ia(e),jr(ua(t),e)},An.replace=function(){var t=arguments,e=ua(t[0]);return t.length<3?e:e.replace(t[1],t[2])},An.result=function(t,e,n){var r=-1,i=(e=ui(e,t)).length;for(i||(i=1,t=void 0);++r9007199254740991)return[];var n=4294967295,r=un(t,4294967295);t-=4294967295;for(var i=Le(r,e=Vi(e));++n=o)return t;var a=n-We(r);if(a<1)return r;var u=s?ci(s,0,a).join(""):t.slice(0,a);if(void 0===i)return u+r;if(s&&(a+=u.length-a),Ks(i)){if(t.slice(a).search(i)){var l,c=u;for(i.global||(i=dt(i.source,ua(nt.exec(i))+"g")),i.lastIndex=0;l=i.exec(c);)var h=l.index;u=u.slice(0,void 0===h?a:h)}}else if(t.indexOf(Zr(i),a)!=a){var p=u.lastIndexOf(i);p>-1&&(u=u.slice(0,p))}return u+r},An.unescape=function(t){return(t=ua(t))&&Y.test(t)?t.replace(D,Ge):t},An.uniqueId=function(t){var e=++Ct;return ua(t)+e},An.upperCase=Xa,An.upperFirst=Na,An.each=us,An.eachRight=ls,An.first=$o,Va(An,(hu={},lr(An,(function(t,e){Pt.call(An.prototype,e)||(hu[e]=t)})),hu),{chain:!1}),An.VERSION="4.17.21",se(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){An[t].placeholder=An})),se(["drop","take"],(function(t,e){On.prototype[t]=function(n){n=void 0===n?1:an(ia(n),0);var r=this.__filtered__&&!e?new On(this):this.clone();return r.__filtered__?r.__takeCount__=un(n,r.__takeCount__):r.__views__.push({size:un(n,4294967295),type:t+(r.__dir__<0?"Right":"")}),r},On.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),se(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=1==n||3==n;On.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Vi(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),se(["head","last"],(function(t,e){var n="take"+(e?"Right":"");On.prototype[t]=function(){return this[n](1).value()[0]}})),se(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");On.prototype[t]=function(){return this.__filtered__?new On(this):this[n](1)}})),On.prototype.compact=function(){return this.filter(qa)},On.prototype.find=function(t){return this.filter(t).head()},On.prototype.findLast=function(t){return this.reverse().find(t)},On.prototype.invokeMap=Xr((function(t,e){return"function"==typeof t?new On(this):this.map((function(n){return _r(n,t,e)}))})),On.prototype.reject=function(t){return this.filter(Ts(Vi(t)))},On.prototype.slice=function(t,e){t=ia(t);var n=this;return n.__filtered__&&(t>0||e<0)?new On(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),void 0!==e&&(n=(e=ia(e))<0?n.dropRight(-e):n.take(e-t)),n)},On.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},On.prototype.toArray=function(){return this.take(4294967295)},lr(On.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=An[r?"take"+("last"==e?"Right":""):e],o=r||/^find/.test(e);i&&(An.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,a=e instanceof On,u=s[0],l=a||Is(e),c=function(t){var e=i.apply(An,fe([t],s));return r&&h?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(a=l=!1);var h=this.__chain__,p=!!this.__actions__.length,f=o&&!h,g=a&&!p;if(!o&&l){e=g?e:new On(this);var d=t.apply(e,s);return d.__actions__.push({func:rs,args:[c],thisArg:void 0}),new En(d,h)}return f&&g?t.apply(this,s):(d=this.thru(c),f?r?d.value()[0]:d.value():d)})})),se(["pop","push","shift","sort","splice","unshift"],(function(t){var e=yt[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);An.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(Is(i)?i:[],t)}return this[n]((function(n){return e.apply(Is(n)?n:[],t)}))}})),lr(On.prototype,(function(t,e){var n=An[e];if(n){var r=n.name+"";Pt.call(bn,r)||(bn[r]=[]),bn[r].push({name:e,func:n})}})),bn[Ai(void 0,2).name]=[{name:"wrapper",func:void 0}],On.prototype.clone=function(){var t=new On(this.__wrapped__);return t.__actions__=yi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=yi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=yi(this.__views__),t},On.prototype.reverse=function(){if(this.__filtered__){var t=new On(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},On.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=Is(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?void 0:this.__values__[this.__index__++]}},An.prototype.plant=function(t){for(var e,n=this;n instanceof Mn;){var r=Ao(n);r.__index__=0,r.__values__=void 0,e?i.__wrapped__=r:e=r;var i=r;n=n.__wrapped__}return i.__wrapped__=t,e},An.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof On){var e=t;return this.__actions__.length&&(e=new On(this)),(e=e.reverse()).__actions__.push({func:rs,args:[Ho],thisArg:void 0}),new En(e,this.__chain__)}return this.thru(Ho)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return ri(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,Vt&&(An.prototype[Vt]=function(){return this}),An}();Ft._=Ke,void 0===(r=function(){return Ke}.call(e,n,e,t))||(t.exports=r)}).call(this)}).call(this,n(48)(t))},319:function(t,e,n){"use strict";n(282)},322:function(t,e,n){"use strict";n.r(e);var r=n(11),i={props:{item:{required:!0}},computed:{link(){return Object(r.c)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link}},methods:{isExternal:r.g,isMailto:r.h,isTel:r.i,focusoutAction(){this.$emit("focusout")}}},o=n(4),s=Object(o.a)(i,(function(){var t=this,e=t._self._c;return t.isExternal(t.link)?e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),e("OutboundLink")],1):e("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction.apply(null,arguments)}}},[t._v(t._s(t.item.text))])}),[],!1,null,null,null).exports,a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)};function u(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var l=function(){return(l=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0,m=function(){if("string"==typeof g){var t=/os (\d\d?_\d(_\d)?)/.exec(g);if(!t)return!1;var e=t[1].split("_").map((function(t){return parseInt(t,10)}));return!!(13===e[0]&&e[1]>=4)}return!1}(),y=!1;if(f){try{var _={};Object.defineProperty(_,"passive",{get:function(){y=!0}}),window.addEventListener("test-passive",(function(){}),_)}catch(t){}}function b(){return window.performance&&window.performance.now&&window.performance.timing?window.performance.now()+window.performance.timing.navigationStart:+new Date}var w=function(t,e){for(var n in e)t[n]=e[n];return t};function k(t){return null==t}function P(t,e,n){return tn?n:t}var C=f&&document.createElement("div").style,T=function(){if(!f)return!1;for(var t=0,e=[{key:"standard",value:"transform"},{key:"webkit",value:"webkitTransform"},{key:"Moz",value:"MozTransform"},{key:"O",value:"OTransform"},{key:"ms",value:"msTransform"}];tdocument.documentElement.clientWidth-u||a>document.documentElement.clientHeight-u||s0?-1:n<0?1:0},o=i(e.x,t.x),s=i(e.y,t.y),a=n.x-r.x,u=n.y-r.y;return o*a<=0&&s*u<=0})(t,e,o,r)&&n.hooks.trigger(n.hooks.eventTypes.move,o),n.pending||(n.callStopWhenPending?n.callStopWhenPending=!1:n.hooks.trigger(n.hooks.eventTypes.end,o)),r=o,n.pending&&(n.timer=F(i))};this.callStopWhenPending&&this.setCallStop(!1),q(this.timer),i()},e.prototype.transitionTime=function(t){void 0===t&&(t=0),this.style[Y.transitionDuration]=t+"ms",this.hooks.trigger(this.hooks.eventTypes.time,t)},e.prototype.transitionTimingFunction=function(t){this.style[Y.transitionTimingFunction]=t,this.hooks.trigger(this.hooks.eventTypes.timeFunction,t)},e.prototype.transitionProperty=function(){this.style[Y.transitionProperty]=Y.transform},e.prototype.move=function(t,e,n,r){this.setPending(n>0),this.transitionTimingFunction(r),this.transitionProperty(),this.transitionTime(n),this.translate(e);var i=3===this.options.probeType;n&&i&&this.startProbe(t,e),n||(this._reflow=this.content.offsetHeight,i&&this.hooks.trigger(this.hooks.eventTypes.move,e),this.hooks.trigger(this.hooks.eventTypes.end,e))},e.prototype.doStop=function(){var t=this.pending;if(this.setForceStopped(!1),this.setCallStop(!1),t){this.setPending(!1),q(this.timer);var e=this.translater.getComputedPosition(),n=e.x,r=e.y;this.transitionTime(),this.translate({x:n,y:r}),this.setForceStopped(!0),this.setCallStop(!0),this.hooks.trigger(this.hooks.eventTypes.forceStop,{x:n,y:r})}return t},e.prototype.stop=function(){this.doStop()&&this.hooks.trigger(this.hooks.eventTypes.callStop)},e}(nt),it=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return u(e,t),e.prototype.move=function(t,e,n,r){if(!n)return this.translate(e),3===this.options.probeType&&this.hooks.trigger(this.hooks.eventTypes.move,e),void this.hooks.trigger(this.hooks.eventTypes.end,e);this.animate(t,e,n,r)},e.prototype.animate=function(t,e,n,r){var i=this,o=b(),s=o+n,a=3===this.options.probeType,u=function(){var l=b();if(l>=s)return i.translate(e),a&&i.hooks.trigger(i.hooks.eventTypes.move,e),void i.hooks.trigger(i.hooks.eventTypes.end,e);var c=r(l=(l-o)/n),h={};Object.keys(e).forEach((function(n){var r=t[n],i=e[n];h[n]=(i-r)*c+r})),i.translate(h),a&&i.hooks.trigger(i.hooks.eventTypes.move,h),i.pending&&(i.timer=F(u)),i.pending||(i.callStopWhenPending?i.callStopWhenPending=!1:i.hooks.trigger(i.hooks.eventTypes.end,e))};this.setPending(!0),this.callStopWhenPending&&this.setCallStop(!1),q(this.timer),u()},e.prototype.doStop=function(){var t=this.pending;if(this.setForceStopped(!1),this.setCallStop(!1),t){this.setPending(!1),q(this.timer);var e=this.translater.getComputedPosition();this.setForceStopped(!0),this.setCallStop(!0),this.hooks.trigger(this.hooks.eventTypes.forceStop,e)}return t},e.prototype.stop=function(){this.doStop()&&this.hooks.trigger(this.hooks.eventTypes.callStop)},e}(nt);var ot,st,at,ut,lt=function(){function t(t,e,n){this.wrapper=t,this.options=n,this.hooks=new Q(["beforeComputeBoundary","computeBoundary","momentum","end","ignoreHasScroll"]),this.refresh(e)}return t.prototype.start=function(){this.dist=0,this.setMovingDirection(0),this.setDirection(0)},t.prototype.move=function(t){return t=this.hasScroll?t:0,this.setMovingDirection(t),this.performDampingAlgorithm(t,this.options.outOfBoundaryDampingFactor)},t.prototype.setMovingDirection=function(t){this.movingDirection=t>0?-1:t<0?1:0},t.prototype.setDirection=function(t){this.direction=t>0?-1:t<0?1:0},t.prototype.performDampingAlgorithm=function(t,e){var n=this.currentPos+t;return(n>this.minScrollPos||nthis.minScrollPos&&this.options.bounces[0]||nthis.minScrollPos?this.minScrollPos:this.maxScrollPos),n},t.prototype.end=function(t){var e={duration:0},n=Math.abs(this.currentPos-this.startPos);if(this.options.momentum&&tthis.options.momentumLimitDistance){var r=-1===this.direction&&this.options.bounces[0]||1===this.direction&&this.options.bounces[1]?this.wrapperSize:0;e=this.hasScroll?this.momentum(this.currentPos,this.startPos,t,this.maxScrollPos,this.minScrollPos,r,this.options):{destination:this.currentPos,duration:0}}else this.hooks.trigger(this.hooks.eventTypes.end,e);return e},t.prototype.momentum=function(t,e,n,r,i,o,s){void 0===s&&(s=this.options);var a=t-e,u=Math.abs(a)/n,l=s.deceleration,c=s.swipeBounceTime,h=s.swipeTime,p={destination:t+u*u/l*(a<0?-1:1),duration:Math.min(h,2*u/l),rate:15};return this.hooks.trigger(this.hooks.eventTypes.momentum,p,a),p.destinationi&&(p.destination=o?Math.min(i+o/4,i+o/p.rate*u):i,p.duration=c),p.destination=Math.round(p.destination),p},t.prototype.updateDirection=function(){var t=this.currentPos-this.absStartPos;this.setDirection(t)},t.prototype.refresh=function(t){var e=this.options.rect,n=e.size,r=e.position,i="static"===window.getComputedStyle(this.wrapper,null).position,o=X(this.wrapper);this.wrapperSize=this.wrapper["width"===n?"clientWidth":"clientHeight"],this.setContent(t);var s=X(this.content);this.contentSize=s[n],this.relativeOffset=s[r],i&&(this.relativeOffset-=o[r]),this.computeBoundary(),this.setDirection(0)},t.prototype.setContent=function(t){t!==this.content&&(this.content=t,this.resetState())},t.prototype.resetState=function(){this.currentPos=0,this.startPos=0,this.dist=0,this.setDirection(0),this.setMovingDirection(0),this.resetStartPos()},t.prototype.computeBoundary=function(){this.hooks.trigger(this.hooks.eventTypes.beforeComputeBoundary);var t={minScrollPos:0,maxScrollPos:this.wrapperSize-this.contentSize};t.maxScrollPos<0&&(t.maxScrollPos-=this.relativeOffset,0===this.options.specifiedIndexAsContent&&(t.minScrollPos=-this.relativeOffset)),this.hooks.trigger(this.hooks.eventTypes.computeBoundary,t),this.minScrollPos=t.minScrollPos,this.maxScrollPos=t.maxScrollPos,this.hasScroll=this.options.scrollable&&this.maxScrollPosthis.minScrollPos?t=this.minScrollPos:te+this.directionLockThreshold?this.directionLocked="horizontal":e>=t+this.directionLockThreshold?this.directionLocked="vertical":this.directionLocked="none")},t.prototype.handleEventPassthrough=function(t){var e=ht[this.directionLocked];if(e){if(this.eventPassthrough===e.yes)return ct.yes(t);if(this.eventPassthrough===e.no)return ct.no(t)}return!1},t}(),ft=function(){function t(t,e,n,r,i){this.hooks=new Q(["start","beforeMove","scrollStart","scroll","beforeEnd","end","scrollEnd","contentNotMoved","detectMovingDirection","coordinateTransformation"]),this.scrollBehaviorX=t,this.scrollBehaviorY=e,this.actionsHandler=n,this.animater=r,this.options=i,this.directionLockAction=new pt(i.directionLockThreshold,i.freeScroll,i.eventPassthrough),this.enabled=!0,this.bindActionsHandler()}return t.prototype.bindActionsHandler=function(){var t=this;this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.start,(function(e){return!t.enabled||t.handleStart(e)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.move,(function(e){var n=e.deltaX,r=e.deltaY,i=e.e;if(!t.enabled)return!0;var o=function(t,e,n){return 2===n?[e,-t]:3===n?[-t,-e]:4===n?[-e,t]:[t,e]}(n,r,t.options.quadrant),s={deltaX:o[0],deltaY:o[1]};return t.hooks.trigger(t.hooks.eventTypes.coordinateTransformation,s),t.handleMove(s.deltaX,s.deltaY,i)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.end,(function(e){return!t.enabled||t.handleEnd(e)})),this.actionsHandler.hooks.on(this.actionsHandler.hooks.eventTypes.click,(function(e){t.enabled&&!e._constructed&&t.handleClick(e)}))},t.prototype.handleStart=function(t){var e=b();this.fingerMoved=!1,this.contentMoved=!1,this.startTime=e,this.directionLockAction.reset(),this.scrollBehaviorX.start(),this.scrollBehaviorY.start(),this.animater.doStop(),this.scrollBehaviorX.resetStartPos(),this.scrollBehaviorY.resetStartPos(),this.hooks.trigger(this.hooks.eventTypes.start,t)},t.prototype.handleMove=function(t,e,n){if(!this.hooks.trigger(this.hooks.eventTypes.beforeMove,n)){var r=this.scrollBehaviorX.getAbsDist(t),i=this.scrollBehaviorY.getAbsDist(e),o=b();if(this.checkMomentum(r,i,o))return!0;if(this.directionLockAction.checkMovingDirection(r,i,n))return this.actionsHandler.setInitiated(),!0;var s=this.directionLockAction.adjustDelta(t,e),a=this.scrollBehaviorX.getCurrentPos(),u=this.scrollBehaviorX.move(s.deltaX),l=this.scrollBehaviorY.getCurrentPos(),c=this.scrollBehaviorY.move(s.deltaY);if(!this.hooks.trigger(this.hooks.eventTypes.detectMovingDirection)){this.fingerMoved||(this.fingerMoved=!0);var h=u!==a||c!==l;this.contentMoved||h||this.hooks.trigger(this.hooks.eventTypes.contentNotMoved),!this.contentMoved&&h&&(this.contentMoved=!0,this.hooks.trigger(this.hooks.eventTypes.scrollStart)),this.contentMoved&&h&&(this.animater.translate({x:u,y:c}),this.dispatchScroll(o))}}},t.prototype.dispatchScroll=function(t){t-this.startTime>this.options.momentumLimitTime&&(this.startTime=t,this.scrollBehaviorX.updateStartPos(),this.scrollBehaviorY.updateStartPos(),1===this.options.probeType&&this.hooks.trigger(this.hooks.eventTypes.scroll,this.getCurrentPos())),this.options.probeType>1&&this.hooks.trigger(this.hooks.eventTypes.scroll,this.getCurrentPos())},t.prototype.checkMomentum=function(t,e,n){return n-this.endTime>this.options.momentumLimitTime&&e