diff --git a/config.toml b/config.toml index 49401fc..c50f703 100644 --- a/config.toml +++ b/config.toml @@ -1,7 +1,7 @@ baseURL = "/" languageCode = "en" defaultContentLanguage = "en" # en / zh-cn / ... (This field determines which i18n file to use) -title = "Ren Zhenyu's Website " +title = "Zhenyu Ren's Website " preserveTaxonomyNames = true enableRobotsTXT = true enableEmoji = true @@ -21,7 +21,7 @@ googleAnalytics = "" # UA-XXXXXXXX-X copyright = "" # default: author.name ↓ # 默认为下面配置的author.name ↓ [author] # essential # 必需 - name = "Ren Zhenyu" + name = "Zhenyu Ren" [sitemap] # essential # 必需 changefreq = "weekly" @@ -34,20 +34,20 @@ copyright = "" # default: author.name ↓ # 默认为下面配 identifier = "home" url = "/" [[menu.main]] - name = "Archives" + name = "Blogs" weight = 20 identifier = "archives" url = "/post/" -[[menu.main]] - name = "Tags" - weight = 30 - identifier = "tags" - url = "/tags/" -[[menu.main]] - name = "Categories" - weight = 40 - identifier = "categories" - url = "/categories/" +# [[menu.main]] +# name = "Tags" +# weight = 30 +# identifier = "tags" +# url = "/tags/" +# [[menu.main]] +# name = "Categories" +# weight = 40 +# identifier = "categories" +# url = "/categories/" [params] version = "4.x" # Used to give a friendly message when you have an incompatible update @@ -64,9 +64,9 @@ copyright = "" # default: author.name ↓ # 默认为下面配 gitRepo = "https://github.com/rzy0901/rzy0901.github.io" # site info (optional) # 站点信息(可选,不需要的可以直接注释掉) - logoTitle = "Ren Zhenyu" # default: the title value # 默认值: 上面设置的title值 - keywords = ["Ren Zhenyu","blog"] - description = "Ren Zhenyu's Website." + logoTitle = "Zhenyu Ren" # default: the title value # 默认值: 上面设置的title值 + keywords = ["Zhenyu Ren","blog"] + description = "Zhenyu Ren's Website." # paginate of archives, tags and categories # 归档、标签、分类每页显示的文章数目,建议修改为一个较大的值 archivePaginate = 50 diff --git a/content/_index.markdown b/content/_index.markdown index 55daf28..d6e2db0 100644 --- a/content/_index.markdown +++ b/content/_index.markdown @@ -18,7 +18,7 @@ enabelGithubFork: true -Hi, this is Ren Zhenyu (任振裕, Ren is my family name). 🌏 +Hi, this is REN Zhenyu (任振裕, REN is my family name). 🌏 diff --git a/content/cv.assets/channel_simulation.png b/content/cv.assets/channel_simulation.png deleted file mode 100644 index 6eb68a5..0000000 Binary files a/content/cv.assets/channel_simulation.png and /dev/null differ diff --git a/content/cv.md b/content/cv.md index 97a3e9a..7594b0d 100644 --- a/content/cv.md +++ b/content/cv.md @@ -7,10 +7,11 @@ hideHeaderAndFooter: false weight: 100000 --- -# Resume for Zhenyu REN (任振裕) [[CV.pdf]](/cv.assets/CV.pdf) +## Resume for Zhenyu Ren (任振裕) [[CV.pdf]](/cv.assets/CV.pdf) -
- Profile img +
+ Profile img +
Zhenyu Ren (任振裕)
@@ -22,10 +23,10 @@ weight: 100000
  • I'm a master in the Department of Electrical and Electronics Engineering at - Southern University of Science and Technology (SUSTech). + Southern University of Science and Technology (SUSTech). I am currently studying in - LAb of WirelesS communications and System Optimization (LASSO) - and being supervised by Prof. Wang Rui. + LAb of WirelesS communications and System Optimization (LASSO) + and being supervised by Prof. WANG Rui.
  • My research interest focuses on: Wireless Communication & Sensing; Channel Modeling. @@ -39,66 +40,38 @@ weight: 100000 + Southern University of Science and Technology | Master September. 2022 - July. 2025 (expected) - Majoring in Electronic science and technology, supervised by Prof. [Wang Rui](https://eee.sustech.edu.cn/p/wangrui/index.html). GPA: (3.5/4.0). + Majoring in Electronic science and technology, supervised by Prof. [WANG Rui](http://lasso.eee.sustech.edu.cn/). GPA: (3.44/4.0). + Huawei Technology, Wireless Technology Laboratory | Research Intern June. 2021 - June. 2022 - Supervised by Dr. [Tony Han Xiao](https://scholar.google.com/citations?hl=en&user=cqvSehcAAAAJ). Internship Certificate: [[pdf]](/cv.assets/intern_huawei_proof.pdf). + Supervised by Dr. [Tony HAN Xiao](https://scholar.google.com/citations?hl=en&user=cqvSehcAAAAJ). Internship Certificate: [[pdf]](/cv.assets/intern_huawei_proof.pdf). + Southern University of Science and Technology | Bachelor September. 2018 - July. 2022 - Majoring in Communication Engineering, supervised by Prof. [Wang Rui](https://eee.sustech.edu.cn/p/wangrui/index.html). GPA: (3.69/4.00), ranked 5/26. + Majoring in Communication Engineering, supervised by Prof. [WANG Rui](http://lasso.eee.sustech.edu.cn/). GPA: (3.69/4.00), ranked 5/26. ## Publications & Patents -Publications (One ongoing): -+ **Ren, Zhenyu**, Guoliang Li, Chenqing Ji, Chao Yu, Shuai Wang, and Rui Wang. "CASTER: A Computer-Vision-Assisted Wireless Channel Simulator for Gesture Recognition." arXiv preprint arXiv:2311.07169 (2023). **(Revise and Resubmit, IEEE Open Journal of the Communications Society).** +### Publications + +
    +
    +
    + IEEE OJ-COMS | SYSTEM +
    + CASTER +
    Keywords: Wireless hand gesture recognition, channel model, simulation-to-reality inference, mmWave system.
    +
    +
    +

    Zhenyu Ren, Guoliang Li, Chenqing Ji, Chao Yu, Shuai Wang, and Rui Wang. “CASTER: A Computer-Vision-Assisted Wireless Channel Simulator for Gesture Recognition,” in IEEE Open Journal of the Communications Society, vol. 5, pp. 3185-3195, 2024 (Current impact factor: 7.9, JCR Q1).
    [Paper] | [GitHub] | [Project Page] (with three video demos). +

    +
    +
    -Patents (One ongoing): +### Patents + **任振裕**,陈万里,王锐,余潮,“无线信道仿真方法、装置、计算机设备及存储介质”,专利申请号:2023110356420,南方科技大学,申请日:2023.08.16(发明专利)。 -## Projects & Software - -Note: You can look up my [GitHub](https://github.com/rzy0901) for my full project lists. - - - - - - - - - - - - - - - - - - -
    Project NameDescriptionResource
    -
    - System of CASTER Channel Simulator and Wireless Gesture Recognition. -
    - [rzy0901/testSpectrogram] is a repository containing raw code related to wireless channel simulation, human/hand pose extraction, gesture spectrogram generation, and real-time gesture recognition based on millimeter-wave passive sensing and communication systems. - - [Arxiv]
    - [Code]
    - [Video] -
    - image-20220510230834702
    - UG Graduate Thesis. (Wi-Fi Based Indoor Near Field Imaging.) -
    - This project was done during my internship of Huawei WT Lab.
    - An impressive experiment based on AD9361 and digital-controlled rail (driven by C++ or MATLAB function) is also given. -
    - [Thesis]
    - [Slides] -
    - ## Awards + 2023年广东省挑战杯省级二等奖; @@ -109,4 +82,4 @@ Note: You can look up my [GitHub](https://github.com/rzy0901) for my full projec + 2020年全国大学生数学建模大赛省级一等奖; -
    LAST UPDATED: March, 2024
    \ No newline at end of file +
    LAST UPDATED: June, 2024
    \ No newline at end of file diff --git a/content/about.md b/content/links.md similarity index 96% rename from content/about.md rename to content/links.md index 48058be..5d2ad39 100644 --- a/content/about.md +++ b/content/links.md @@ -7,6 +7,8 @@ weight: 50 If you like my theme, take a look at: [How to use this website?](/post/usage/) +Collections of [Tags]({{% rooturl %}}tags/) and [Categories]({{% rooturl %}}categories/) for my technical blogs. + Website status (It takes several seconds to show): diff --git a/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.content b/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.content index c20addd..f542fcd 100644 --- a/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.content +++ b/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.content @@ -1 +1 @@ -@charset "UTF-8";@media print{.header{display:none!important}.post-toc{display:none!important}.utterances{display:none!important}.back-to-top{display:none!important}.footer{display:none!important}.post-footer{display:none!important}.post-meta{display:none!important}.post-copyright{display:none!important}.copy-code{display:none!important}}@media print{.personal-info{display:block}}@media not print{.personal-info{display:none}}@font-face{font-family:chancery;src:url(../fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(../fonts/chancery/apple-chancery-webfont.eot?#iefix)format("embedded-opentype"),url(../fonts/chancery/apple-chancery-webfont.woff2)format("woff2"),url(../fonts/chancery/apple-chancery-webfont.woff)format("woff"),url(../fonts/chancery/apple-chancery-webfont.ttf)format("truetype"),url(../fonts/chancery/apple-chancery-webfont.svg#apple-chancery)format("svg");font-weight:lighter;font-style:normal;font-display:swap}/*!normalize.css v3.0.2 | MIT License | git.io/normalize*/html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:16px;box-sizing:border-box}body{padding:0;margin:0;font-family:source sans pro,helvetica neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;color:#34495e;background:#fefefe;scroll-behavior:smooth;border-top:3px solid #0047ab}@media screen and (max-width:1000px){body{border-top:0}}::selection{background:#0047ab;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:#34495e;text-decoration:none}h1{font-size:26px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:24px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h3{font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:16px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h5{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h6{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.container{margin:0 auto;width:1000px}@media screen and (max-width:1000px){.container{width:100%;box-shadow:-1px -5px 5px #cacaca}}.content-wrapper{padding:0 20px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-family:iconfont;src:url(../fonts/iconfont/iconfont.eot);src:url(../fonts/iconfont/iconfont.eot#iefix)format("embedded-opentype"),url(../fonts/iconfont/iconfont.woff)format("woff"),url(../fonts/iconfont/iconfont.ttf)format("truetype"),url(../fonts/iconfont/iconfont.svg#iconfont)format("svg");font-display:swap}.post .post-content details.admonition summary:after,.post .post-content .admonition .admonition-title:before,.iconfont{font-family:iconfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-text-stroke-width:.2px;cursor:pointer;letter-spacing:0;font-feature-settings:"liga";font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-bilibili:before{content:"\e900";font-size:.9em;position:relative;top:-4px}.icon-instagram:before{font-size:.95em;content:"\e611";position:relative;top:1px}.icon-douban:before{content:"\e610";position:relative;top:2px}.icon-tumblr:before{content:"\e69f";font-size:.85em;position:relative;top:-2px}.icon-linkedin:before{content:"\e60d";position:relative;top:-2px}.icon-twitter:before{content:"\e600"}.icon-weibo:before{content:"\e602";position:relative;top:2px}.icon-stack-overflow:before{content:"\e902";font-size:.85em;position:relative;top:-4px}.icon-email:before{content:"\e605";position:relative;top:-2px}.icon-facebook:before{content:"\e601";font-size:.95em;position:relative;top:-2px}.icon-gitlab:before{content:"\e901";font-size:.9em;position:relative;top:-4px}.icon-github:before{content:"\e606";position:relative;top:-1px}.icon-rss:before{content:"\e604"}.icon-google:before{content:"\e609";position:relative;top:2px}.icon-zhihu:before{content:"\e607";font-size:.9em}.icon-pocket:before{content:"\e856";position:relative;top:2px}.icon-heart:before{content:"\e608"}.icon-right:before{content:"\e60a"}.icon-left:before{content:"\e60b"}.icon-up:before{content:"\e60c"}.icon-close:before{content:"\e60f"}.icon-link:before{content:"\e909"}.header{padding:20px}.header:before,.header:after{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left}.header .logo-wrapper .logo{font-size:48px;font-family:chancery,cursive,LiSu,sans-serif}@media screen and (max-width:1000px){.header .logo-wrapper{display:none}}.header .site-navbar{float:right}.header .site-navbar .menu{display:inline-block;position:relative;padding-left:0;padding-right:25px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#0047ab;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.header .site-navbar .menu .menu-item.active:before,.header .site-navbar .menu .menu-item:active:before,.header .site-navbar .menu .menu-item:focus:before,.header .site-navbar .menu .menu-item:hover:before{right:0;left:0}.header .site-navbar .menu .menu-item-link{font-size:18px}@media screen and (max-width:1000px){.header .site-navbar{display:none}}.header .language-selector{float:right}@media screen and (max-width:1000px){.header{padding:50px 0 0;text-align:center}.header .language-selector{display:none}}.posts{margin-bottom:20px;border-bottom:1px solid #e6e6e6}.post{padding:1.5em 0}.post+.post{border-top:1px solid #e6e6e6}.post .post-header{margin-bottom:20px}.post .post-header .post-title{margin:0;font-size:27px;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#0047ab;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a::before{content:'·'}.post .post-header .post-meta .post-category a:hover{color:#0047ab}.post .post-header .post-meta .more-meta::before{content:'·'}.post .post-toc{position:absolute;width:200px;margin-left:985px;padding:10px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;border-radius:5px;background:rgba(240,242,245,.6);box-shadow:1px 1px 2px rgba(0,0,0,.125);word-wrap:break-word;box-sizing:border-box}.post .post-toc .post-toc-title{margin:0 10px;font-size:20px;font-weight:400;text-transform:uppercase}.post .post-toc .post-toc-content{font-size:15px}.post .post-toc .post-toc-content.always-active ul{display:block}.post .post-toc .post-toc-content>nav>ul{margin:10px 0}.post .post-toc .post-toc-content ul{padding-left:20px;list-style:square}.post .post-toc .post-toc-content ul ul{padding-left:15px;display:none}.post .post-toc .post-toc-content ul .has-active>ul{display:block}.post .post-toc .post-toc-content .toc-link.active{color:#0047ab}@media screen and (max-width:1385px){.post .post-toc{display:none}}.post .post-content{word-wrap:break-word}.post .post-content h1{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h1 .anchor:hover{border-bottom:initial}.post .post-content h1 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h1 .anchor .icon-link:before{vertical-align:middle}.post .post-content h1:hover .icon-link{visibility:visible}.post .post-content h2{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h2 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h2 .anchor:hover{border-bottom:initial}.post .post-content h2 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h2 .anchor .icon-link:before{vertical-align:middle}.post .post-content h2:hover .icon-link{visibility:visible}.post .post-content h3{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h3 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h3 .anchor:hover{border-bottom:initial}.post .post-content h3 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h3 .anchor .icon-link:before{vertical-align:middle}.post .post-content h3:hover .icon-link{visibility:visible}.post .post-content h4{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h4 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h4 .anchor:hover{border-bottom:initial}.post .post-content h4 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h4 .anchor .icon-link:before{vertical-align:middle}.post .post-content h4:hover .icon-link{visibility:visible}.post .post-content h5{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h5 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h5 .anchor:hover{border-bottom:initial}.post .post-content h5 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h5 .anchor .icon-link:before{vertical-align:middle}.post .post-content h5:hover .icon-link{visibility:visible}.post .post-content h6{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h6 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h6 .anchor:hover{border-bottom:initial}.post .post-content h6 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h6 .anchor .icon-link:before{vertical-align:middle}.post .post-content h6:hover .icon-link{visibility:visible}.post .post-content a{color:#0047ab;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #0047ab}.post .post-content a.fancybox{border:0}.post .post-content blockquote{margin:2em 0;padding:10px 20px;position:relative;color:rgba(52,73,94,.8);background-color:rgba(0,71,171,5%);border-left:3px solid rgba(0,71,171,.3);box-shadow:1px 1px 2px rgba(0,0,0,.125)}.post .post-content blockquote p{margin:0}.post .post-content img{display:inline-block;max-width:100%}.post .post-content .table-wrapper{overflow-x:auto}.post .post-content .table-wrapper>table{max-width:100%;margin:10px 0;border-spacing:0;box-shadow:2px 2px 3px rgba(0,0,0,.125)}.post .post-content .table-wrapper>table thead{background:#f0f2f5}.post .post-content .table-wrapper>table th,.post .post-content .table-wrapper>table td{padding:5px 15px;border:1px double #e7eaef}.post .post-content .table-wrapper>table tr:hover{background-color:#f0f2f5}.post .post-content code,.post .post-content pre{padding:7px;font-size:.9em;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#f0f2f5}.post .post-content code{padding:3px 5px;border-radius:4px;color:#c7254e}.post .post-content pre>code{display:block}.post .post-content figure.highlight{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative}.post .post-content figure.highlight table{position:relative}.post .post-content figure.highlight table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#e7eaef;content:'Code'}.post .post-content figure.highlight.language-bash>table::after{content:"Bash"}.post .post-content figure.highlight.language-c>table::after{content:"C"}.post .post-content figure.highlight.language-cs>table::after{content:"C#"}.post .post-content figure.highlight.language-cpp>table::after{content:"C++"}.post .post-content figure.highlight.language-css>table::after{content:"CSS"}.post .post-content figure.highlight.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content figure.highlight.language-html>table::after{content:"HTML"}.post .post-content figure.highlight.language-xml>table::after{content:"XML"}.post .post-content figure.highlight.language-http>table::after{content:"HTTP"}.post .post-content figure.highlight.language-json>table::after{content:"JSON"}.post .post-content figure.highlight.language-java>table::after{content:"Java"}.post .post-content figure.highlight.language-js>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-javascript>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-makefile>table::after{content:"Makefile"}.post .post-content figure.highlight.language-markdown>table::after{content:"Markdown"}.post .post-content figure.highlight.language-objectivec>table::after{content:"Objective-C"}.post .post-content figure.highlight.language-php>table::after{content:"PHP"}.post .post-content figure.highlight.language-perl>table::after{content:"Perl"}.post .post-content figure.highlight.language-python>table::after{content:"Python"}.post .post-content figure.highlight.language-ruby>table::after{content:"Ruby"}.post .post-content figure.highlight.language-sql>table::after{content:"SQL"}.post .post-content figure.highlight.language-shell>table::after{content:"Shell"}.post .post-content figure.highlight.language-erlang>table::after{content:"Erlang"}.post .post-content figure.highlight.language-go>table::after{content:"Go"}.post .post-content figure.highlight.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content figure.highlight.language-groovy>table::after{content:"Groovy"}.post .post-content figure.highlight.language-haskell>table::after{content:"Haskell"}.post .post-content figure.highlight.language-kotlin>table::after{content:"Kotlin"}.post .post-content figure.highlight.language-clojure>table::after{content:"Clojure"}.post .post-content figure.highlight.language-less>table::after{content:"Less"}.post .post-content figure.highlight.language-lisp>table::after{content:"Lisp"}.post .post-content figure.highlight.language-lua>table::after{content:"Lua"}.post .post-content figure.highlight.language-matlab>table::after{content:"Matlab"}.post .post-content figure.highlight.language-rust>table::after{content:"Rust"}.post .post-content figure.highlight.language-scss>table::after{content:"Scss"}.post .post-content figure.highlight.language-scala>table::after{content:"Scala"}.post .post-content figure.highlight.language-swift>table::after{content:"Swift"}.post .post-content figure.highlight.language-typescript>table::after{content:"TypeScript"}.post .post-content figure.highlight.language-yml>table::after{content:"YAML"}.post .post-content figure.highlight.language-yaml>table::after{content:"YAML"}.post .post-content figure.highlight.language-toml>table::after{content:"TOML"}.post .post-content figure.highlight.language-diff>table::after{content:"Diff"}.post .post-content figure.highlight .code pre{margin:0;padding:30px 10px 10px}.post .post-content figure.highlight .gutter{width:10px;color:#cacaca}.post .post-content figure.highlight .gutter pre{margin:0;padding:30px 7px 10px}.post .post-content figure.highlight .line{height:1em}.post .post-content figure.highlight table,.post .post-content figure.highlight tr,.post .post-content figure.highlight td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content figure.highlight .code .hljs-comment,.post .post-content figure.highlight .code .hljs-quote{color:#93a1a1}.post .post-content figure.highlight .code .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-tag,.post .post-content figure.highlight .code .hljs-addition{color:#859900}.post .post-content figure.highlight .code .hljs-number,.post .post-content figure.highlight .code .hljs-string,.post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,.post .post-content figure.highlight .code .hljs-literal,.post .post-content figure.highlight .code .hljs-doctag,.post .post-content figure.highlight .code .hljs-regexp{color:#2aa198}.post .post-content figure.highlight .code .hljs-title,.post .post-content figure.highlight .code .hljs-section,.post .post-content figure.highlight .code .hljs-name,.post .post-content figure.highlight .code .hljs-selector-id,.post .post-content figure.highlight .code .hljs-selector-class{color:#268bd2}.post .post-content figure.highlight .code .hljs-attribute,.post .post-content figure.highlight .code .hljs-attr,.post .post-content figure.highlight .code .hljs-variable,.post .post-content figure.highlight .code .hljs-template-variable,.post .post-content figure.highlight .code .hljs-class .hljs-title,.post .post-content figure.highlight .code .hljs-type{color:#b58900}.post .post-content figure.highlight .code .hljs-symbol,.post .post-content figure.highlight .code .hljs-bullet,.post .post-content figure.highlight .code .hljs-subst,.post .post-content figure.highlight .code .hljs-meta,.post .post-content figure.highlight .code .hljs-meta .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-attr,.post .post-content figure.highlight .code .hljs-selector-pseudo,.post .post-content figure.highlight .code .hljs-link{color:#cb4b16}.post .post-content figure.highlight .code .hljs-built_in,.post .post-content figure.highlight .code .hljs-deletion{color:#dc322f}.post .post-content figure.highlight .code .hljs-formula{background:#eee8d5}.post .post-content figure.highlight .code .hljs-emphasis{font-style:italic}.post .post-content figure.highlight .code .hljs-strong{font-weight:700}.post .post-content .highlight>.chroma{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#f0f2f5}.post .post-content .highlight>.chroma code{padding:0}.post .post-content .highlight>.chroma table{position:relative}.post .post-content .highlight>.chroma table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#e7eaef;content:'Code'}.post .post-content .highlight>.chroma.language-bash>table::after{content:"Bash"}.post .post-content .highlight>.chroma.language-c>table::after{content:"C"}.post .post-content .highlight>.chroma.language-cs>table::after{content:"C#"}.post .post-content .highlight>.chroma.language-cpp>table::after{content:"C++"}.post .post-content .highlight>.chroma.language-css>table::after{content:"CSS"}.post .post-content .highlight>.chroma.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content .highlight>.chroma.language-html>table::after{content:"HTML"}.post .post-content .highlight>.chroma.language-xml>table::after{content:"XML"}.post .post-content .highlight>.chroma.language-http>table::after{content:"HTTP"}.post .post-content .highlight>.chroma.language-json>table::after{content:"JSON"}.post .post-content .highlight>.chroma.language-java>table::after{content:"Java"}.post .post-content .highlight>.chroma.language-js>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-javascript>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-makefile>table::after{content:"Makefile"}.post .post-content .highlight>.chroma.language-markdown>table::after{content:"Markdown"}.post .post-content .highlight>.chroma.language-objectivec>table::after{content:"Objective-C"}.post .post-content .highlight>.chroma.language-php>table::after{content:"PHP"}.post .post-content .highlight>.chroma.language-perl>table::after{content:"Perl"}.post .post-content .highlight>.chroma.language-python>table::after{content:"Python"}.post .post-content .highlight>.chroma.language-ruby>table::after{content:"Ruby"}.post .post-content .highlight>.chroma.language-sql>table::after{content:"SQL"}.post .post-content .highlight>.chroma.language-shell>table::after{content:"Shell"}.post .post-content .highlight>.chroma.language-erlang>table::after{content:"Erlang"}.post .post-content .highlight>.chroma.language-go>table::after{content:"Go"}.post .post-content .highlight>.chroma.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content .highlight>.chroma.language-groovy>table::after{content:"Groovy"}.post .post-content .highlight>.chroma.language-haskell>table::after{content:"Haskell"}.post .post-content .highlight>.chroma.language-kotlin>table::after{content:"Kotlin"}.post .post-content .highlight>.chroma.language-clojure>table::after{content:"Clojure"}.post .post-content .highlight>.chroma.language-less>table::after{content:"Less"}.post .post-content .highlight>.chroma.language-lisp>table::after{content:"Lisp"}.post .post-content .highlight>.chroma.language-lua>table::after{content:"Lua"}.post .post-content .highlight>.chroma.language-matlab>table::after{content:"Matlab"}.post .post-content .highlight>.chroma.language-rust>table::after{content:"Rust"}.post .post-content .highlight>.chroma.language-scss>table::after{content:"Scss"}.post .post-content .highlight>.chroma.language-scala>table::after{content:"Scala"}.post .post-content .highlight>.chroma.language-swift>table::after{content:"Swift"}.post .post-content .highlight>.chroma.language-typescript>table::after{content:"TypeScript"}.post .post-content .highlight>.chroma.language-yml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-yaml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-toml>table::after{content:"TOML"}.post .post-content .highlight>.chroma.language-diff>table::after{content:"Diff"}.post .post-content .highlight>.chroma .lntd{line-height:1em}.post .post-content .highlight>.chroma .lntd:first-child{width:10px}.post .post-content .highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.post .post-content .highlight>.chroma .lntd:last-child{vertical-align:top}.post .post-content .highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.post .post-content .highlight>.chroma table,.post .post-content .highlight>.chroma tr,.post .post-content .highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma .lnt{color:#cacaca}.post .post-content .highlight>.chroma .hl{display:block;width:100%;background-color:#ffc}.post .post-content .highlight>.chroma .k{color:#859900}.post .post-content .highlight>.chroma .kc{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .kd{color:#859900}.post .post-content .highlight>.chroma .kn{color:#dc322f;font-weight:700}.post .post-content .highlight>.chroma .kp{color:#859900}.post .post-content .highlight>.chroma .kr{color:#859900}.post .post-content .highlight>.chroma .kt{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .n{color:#268bd2}.post .post-content .highlight>.chroma .na{color:#268bd2}.post .post-content .highlight>.chroma .nb{color:#cb4b16}.post .post-content .highlight>.chroma .bp{color:#268bd2}.post .post-content .highlight>.chroma .nc{color:#cb4b16}.post .post-content .highlight>.chroma .no{color:#268bd2}.post .post-content .highlight>.chroma .nd{color:#268bd2}.post .post-content .highlight>.chroma .ni{color:#268bd2}.post .post-content .highlight>.chroma .ne{color:#268bd2}.post .post-content .highlight>.chroma .nf{color:#268bd2}.post .post-content .highlight>.chroma .fm{color:#268bd2}.post .post-content .highlight>.chroma .nl{color:#268bd2}.post .post-content .highlight>.chroma .nn{color:#268bd2}.post .post-content .highlight>.chroma .nx{color:#268bd2}.post .post-content .highlight>.chroma .py{color:#268bd2}.post .post-content .highlight>.chroma .nt{color:#268bd2;font-weight:700}.post .post-content .highlight>.chroma .nv{color:#268bd2}.post .post-content .highlight>.chroma .vc{color:#268bd2}.post .post-content .highlight>.chroma .vg{color:#268bd2}.post .post-content .highlight>.chroma .vi{color:#268bd2}.post .post-content .highlight>.chroma .vm{color:#268bd2}.post .post-content .highlight>.chroma .l{color:#2aa198}.post .post-content .highlight>.chroma .ld{color:#2aa198}.post .post-content .highlight>.chroma .s{color:#2aa198}.post .post-content .highlight>.chroma .sa{color:#2aa198}.post .post-content .highlight>.chroma .sb{color:#2aa198}.post .post-content .highlight>.chroma .sc{color:#2aa198}.post .post-content .highlight>.chroma .dl{color:#2aa198}.post .post-content .highlight>.chroma .sd{color:#2aa198}.post .post-content .highlight>.chroma .s2{color:#2aa198}.post .post-content .highlight>.chroma .se{color:#2aa198}.post .post-content .highlight>.chroma .sh{color:#2aa198}.post .post-content .highlight>.chroma .si{color:#2aa198}.post .post-content .highlight>.chroma .sx{color:#2aa198}.post .post-content .highlight>.chroma .sr{color:#2aa198}.post .post-content .highlight>.chroma .s1{color:#2aa198}.post .post-content .highlight>.chroma .ss{color:#2aa198}.post .post-content .highlight>.chroma .m{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mb{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mf{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mh{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mi{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .il{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mo{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .ow{color:#859900}.post .post-content .highlight>.chroma .c{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .ch{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cm{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .c1{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cp{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cpf{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .g{color:#d33682}.post .post-content .highlight>.chroma .gd{color:#b58900}.post .post-content .highlight>.chroma .ge{color:#d33682}.post .post-content .highlight>.chroma .gr{color:#d33682}.post .post-content .highlight>.chroma .gh{color:#d33682}.post .post-content .highlight>.chroma .gi{color:#859900}.post .post-content .highlight>.chroma .go{color:#d33682}.post .post-content .highlight>.chroma .gp{color:#d33682}.post .post-content .highlight>.chroma .gs{color:#d33682}.post .post-content .highlight>.chroma .gu{color:#d33682}.post .post-content .highlight>.chroma .gt{color:#d33682}.post .post-content .copy-code{position:absolute;right:0;z-index:2;font-size:.9em!important;padding:0 1.5rem!important;color:#b1b1b1;font-family:Arial;font-weight:700;cursor:pointer;user-select:none}.post .post-content .admonition{box-shadow:0 2px 2px rgba(0,0,0,.14),0 1px 5px rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:relative;margin:.9765em 0;padding:0 .75rem;border-left:.25rem solid #448aff;border-radius:.125rem;overflow:auto}.post .post-content .admonition .admonition-title{margin:0 -.75rem;padding:.5rem .75rem .5rem 2.5rem;border-bottom:.1rem solid rgba(68,138,255,.1);background-color:rgba(68,138,255,.1);font-weight:700}.post .post-content .admonition .admonition-title:before{cursor:auto;position:absolute;left:.75rem;top:.75rem}.post .post-content .admonition.note{border-left-color:#448aff}.post .post-content .admonition.note .admonition-title:before{color:#448aff;content:"\e903"}.post .post-content .admonition.abstract{border-left-color:#00b0ff}.post .post-content .admonition.abstract .admonition-title{background-color:rgba(0,176,255,.1)}.post .post-content .admonition.abstract .admonition-title:before{color:#00b0ff;content:"\e9bb"}.post .post-content .admonition.info{border-left-color:#00b8d4}.post .post-content .admonition.info .admonition-title{background-color:rgba(0,184,212,.1)}.post .post-content .admonition.info .admonition-title:before{color:#00b8d4;content:"\ea0c"}.post .post-content .admonition.tip{border-left-color:#00bfa5}.post .post-content .admonition.tip .admonition-title{background-color:rgba(0,191,165,.1)}.post .post-content .admonition.tip .admonition-title:before{color:#00bfa5;content:"\e906"}.post .post-content .admonition.success{border-left-color:#00c853}.post .post-content .admonition.success .admonition-title{background-color:rgba(0,200,83,.1)}.post .post-content .admonition.success .admonition-title:before{color:#00c853;content:"\ea10"}.post .post-content .admonition.question{border-left-color:#64dd17}.post .post-content .admonition.question .admonition-title{background-color:rgba(100,221,23,.1)}.post .post-content .admonition.question .admonition-title:before{color:#64dd17;content:"\ea09"}.post .post-content .admonition.warning{border-left-color:#ff9100}.post .post-content .admonition.warning .admonition-title{background-color:rgba(255,145,0,.1)}.post .post-content .admonition.warning .admonition-title:before{color:#ff9100;content:"\ea07"}.post .post-content .admonition.failure{border-left-color:#ff5252}.post .post-content .admonition.failure .admonition-title{background-color:rgba(255,82,82,.1)}.post .post-content .admonition.failure .admonition-title:before{color:#ff5252;content:"\ea0f"}.post .post-content .admonition.danger{border-left-color:#ff1744}.post .post-content .admonition.danger .admonition-title{background-color:rgba(255,23,68,.1)}.post .post-content .admonition.danger .admonition-title:before{color:#ff1744;content:"\e905"}.post .post-content .admonition.bug{border-left-color:#f50057}.post .post-content .admonition.bug .admonition-title{background-color:rgba(245,0,87,.1)}.post .post-content .admonition.bug .admonition-title:before{color:#f50057;content:"\e907"}.post .post-content .admonition.example{border-left-color:#651fff}.post .post-content .admonition.example .admonition-title{background-color:rgba(101,31,255,.1)}.post .post-content .admonition.example .admonition-title:before{color:#651fff;content:"\e9b9"}.post .post-content .admonition.quote{border-left-color:#9e9e9e}.post .post-content .admonition.quote .admonition-title{background-color:rgba(158,158,158,.1)}.post .post-content .admonition.quote .admonition-title:before{color:#9e9e9e;content:"\e904"}.post .post-content .admonition:last-child{margin-bottom:.75rem}.post .post-content details.admonition summary{display:block;outline:none;cursor:pointer}.post .post-content details.admonition summary::-webkit-details-marker{display:none}.post .post-content details.admonition summary:after{position:absolute;top:.75rem;right:.75rem;color:rgba(0,0,0,.26);content:"\e908"}.post .post-content details.admonition[open]>summary:after{transform:rotate(180deg)}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more .read-more-link{color:#0047ab;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #0047ab}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;box-shadow:inset 0 -1px #b5b5b5;font-size:.8em;line-height:1.25;font-family:sfmono-regular,liberation mono,roboto mono,Menlo,Monaco,Consolas,courier new,Courier,monospace;color:#4a4a4a}.post .post-content dl dt::after{content:':'}.post .post-content figure.center{text-align:center}.post .post-content figure.right{text-align:right}.post .post-content figure.left{text-align:left}.post .post-content figure figcaption h4{color:#b5b5b5;font-size:.9rem}.post .post-content hr{margin:1rem 0;position:relative;border-top:2px dashed #0047ab;border-bottom:none}.post .post-content .footnote-ref>a{font-weight:700;margin-left:3px}.post .post-content .footnote-ref>a:before{content:"["}.post .post-content .footnote-ref>a:after{content:"]"}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .post-content .align-center{text-align:center}.post .post-content .align-right{text-align:right}.post .post-content .align-left{text-align:left}.post .post-content .MJXc-display{overflow-x:auto;overflow-y:hidden;padding-right:1px}.post .post-copyright{margin-top:20px;padding-top:10px;border-top:1px dashed #e6e6e6}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#0047ab;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #0047ab}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-reward{margin-top:20px;padding-top:10px;text-align:center;border-top:1px dashed #e6e6e6}.post .post-reward .reward-button{margin:15px 0;padding:3px 7px;display:inline-block;color:#0047ab;border:1px solid #0047ab;border-radius:5px;cursor:pointer}.post .post-reward .reward-button:hover{color:#fefefe;background-color:#0047ab;transition:.5s}.post .post-reward #reward:checked~.qr-code{display:block}.post .post-reward #reward:checked~.reward-button{display:none}.post .post-reward .qr-code{display:none}.post .post-reward .qr-code .qr-code-image{display:inline-block;min-width:200px;width:40%;margin-top:15px}.post .post-reward .qr-code .qr-code-image span{display:inline-block;width:100%;margin:8px 0}.post .post-reward .qr-code .image{width:200px;height:200px}.post .post-footer{margin-top:20px;border-top:1px solid #e6e6e6;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{padding:15px 0}.post .post-footer .post-tags a{margin-right:5px;color:#0047ab;word-break:break-all}.post .post-footer .post-tags a::before{content:'#'}.post .post-footer .post-nav{margin:1em 0}.post .post-footer .post-nav:before,.post .post-footer .post-nav:after{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .prev,.post .post-footer .post-nav .next{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#0047ab;transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#0047ab;transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:1000px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.post .post-outdated .hint{position:relative;margin-top:20px;margin-bottom:20px;padding:5px 10px;border-left:4px solid #42acf3;background-color:#eff5ff;border-color:#42acf3}.post .post-outdated .warn{position:relative;margin-top:20px;margin-bottom:20px;padding:5px 10px;border-left:4px solid #f9cf63;background-color:#ffffc0;border-color:#f9cf63}.pagination{margin:2em 0}.pagination:before,.pagination:after{content:" ";display:table}.pagination:after{clear:both}.pagination .prev,.pagination .next{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#0047ab;transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#0047ab;transform:translateX(4px)}.footer{margin-top:2em}.footer .social-links{text-align:center}.footer .social-links .iconfont{font-size:30px}.footer .social-links .iconfont+.iconfont{margin-left:10px}.footer .social-links .iconfont:hover{color:#0047ab}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#0047ab}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px;margin:4px}.archive{margin:2em 0;max-width:550px}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.tag,.archive .archive-title.category{margin:15px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:15px 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:3px 20px;border-left:1px solid #cacaca}.archive .archive-post .archive-post-time{margin-right:10px;color:#8a8a8a}.archive .archive-post .archive-post-title .archive-post-link{color:#0047ab}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{border-left:3px solid #0047ab;transition:.2s ease-out;transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#003278}@media screen and (max-width:1000px){.archive{margin-left:auto;margin-right:auto}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}}.terms{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.terms .terms-title{display:inline-block;font-size:18px;color:#0047ab;border-bottom:2px solid #0047ab}.terms .terms-tags{margin:10px 0}.terms .terms-tags .terms-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.terms .terms-tags .terms-link .terms-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#0047ab;font-size:12px}.terms .terms-tags .terms-link:active,.terms .terms-tags .terms-link:focus,.terms .terms-tags .terms-link:hover{color:#0047ab;transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-menu .language-selector{padding-left:30px}.slideout-panel{position:relative;z-index:1;background-color:#fefefe;min-height:100vh}.slideout-open,.slideout-open body,.slideout-open .slideout-panel{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;box-shadow:0 2px 2px #cacaca;text-align:center;transition:transform 300ms ease;z-index:99}.mobile-navbar.fixed-open{transform:translate3d(180px,0,0)}.mobile-navbar .mobile-header-logo{display:inline-block}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:chancery,cursive,LiSu,sans-serif}.mobile-navbar .mobile-navbar-icon{color:#0047ab;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;transition:background .5s;box-shadow:0 2px 2px #cacaca}@keyframes clickfirst{0%{transform:translateY(6px)rotate(0)}100%{transform:translateY(0)rotate(45deg)}}@keyframes clickmid{0%{opacity:1}100%{opacity:0}}@keyframes clicklast{0%{transform:translateY(-6px)rotate(0)}100%{transform:translateY(0)rotate(-45deg)}}@keyframes outfirst{0%{transform:translateY(0)rotate(-45deg)}100%{transform:translateY(-6px)rotate(0)}}@keyframes outmid{0%{opacity:0}100%{opacity:1}}@keyframes outlast{0%{transform:translateY(0)rotate(45deg)}100%{transform:translateY(6px)rotate(0)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px)/2);top:calc((100% - 1px)/2);width:20px;height:1px;background-color:#0047ab}.mobile-navbar .mobile-navbar-icon span:nth-child(1){transform:translateY(6px)rotate(0)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){transform:translateY(-6px)rotate(0)}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:outlast}.mobile-menu{background-color:rgba(240,242,245,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f0f2f5}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f0f2f5}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#0047ab}@media screen and (max-width:1000px){.mobile-navbar{display:block}}.mobile-dark-icon{width:50px;height:50px;float:right;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-pack:center;-webkit-box-align:center;display:-moz-box;-moz-box-orient:horizontal;-moz-box-pack:center;-moz-box-align:center;display:-o-box;-o-box-orient:horizontal;-o-box-pack:center;-o-box-align:center;display:-ms-box;-ms-box-orient:horizontal;-ms-box-pack:center;-ms-box-align:center;display:box;box-orient:horizontal;box-pack:center;box-align:center}.back-to-top{display:none;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s;z-index:10;background-color:rgba(0,71,171,5%);position:fixed;right:10px;bottom:10px;height:30px;width:50px;text-align:center;padding-top:20px;border-radius:20%;overflow:hidden}.back-to-top:hover{transform:translateY(-5px)}.back-to-top .icon-up{vertical-align:top}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#0047ab}.language-selector{width:max-content}.language-selector .languages-list{padding:0;background:#e7eaef}.language-selector .languages-list .language-item{display:inline-block;list-style-type:none;text-transform:uppercase;font-family:Athelas,STHeiti,Microsoft Yahei,serif;font-size:18px;padding:0 10px}.language-selector .languages-list .language-item.active{background:#0047ab}.language-selector .languages-list .language-item.active>a{color:#fff} \ No newline at end of file +@charset "UTF-8";@media print{.header{display:none!important}.post-toc{display:none!important}.utterances{display:none!important}.back-to-top{display:none!important}.footer{display:none!important}.post-footer{display:none!important}.post-meta{display:none!important}.post-copyright{display:none!important}.copy-code{display:none!important}}@media print{.personal-info{display:block}}@media not print{.personal-info{display:none}}.paper-box{display:flex;justify-content:left;align-items:center;flex-direction:row;padding:0 2em}@media print{.paper-box .paper-box-image{justify-content:left;min-width:200px;max-width:35%}.paper-box .paper-box-text{justify-content:left;padding-left:2em;max-width:60%}}.paper-box .paper-box-image{justify-content:center;display:flex;flex-direction:column;width:100%}.paper-box .paper-box-image img{max-width:200px;box-shadow:3px 3px 6px #888;object-fit:cover}.paper-box .paper-box-caption{text-align:center;margin-top:10px;font-size:12px;color:#555}.paper-box .paper-box-text{max-width:100%}@media(min-width:48em){.paper-box .paper-box-image{justify-content:left;min-width:200px;max-width:35%}.paper-box .paper-box-text{justify-content:left;padding-left:2em;max-width:60%}}.badge{padding-left:1rem;padding-right:1rem;position:relative;margin-right:auto;color:#fff;background-color:#0047ab;font-size:.8em}@font-face{font-family:chancery;src:url(../fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(../fonts/chancery/apple-chancery-webfont.eot?#iefix)format("embedded-opentype"),url(../fonts/chancery/apple-chancery-webfont.woff2)format("woff2"),url(../fonts/chancery/apple-chancery-webfont.woff)format("woff"),url(../fonts/chancery/apple-chancery-webfont.ttf)format("truetype"),url(../fonts/chancery/apple-chancery-webfont.svg#apple-chancery)format("svg");font-weight:lighter;font-style:normal;font-display:swap}/*!normalize.css v3.0.2 | MIT License | git.io/normalize*/html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:16px;box-sizing:border-box}body{padding:0;margin:0;font-family:source sans pro,helvetica neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;color:#34495e;background:#fefefe;scroll-behavior:smooth;border-top:3px solid #0047ab}@media screen and (max-width:1000px){body{border-top:0}}::selection{background:#0047ab;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:#34495e;text-decoration:none}h1{font-size:26px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:24px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h3{font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:16px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h5{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h6{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.container{margin:0 auto;width:1000px}@media screen and (max-width:1000px){.container{width:100%;box-shadow:-1px -5px 5px #cacaca}}.content-wrapper{padding:0 20px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-family:iconfont;src:url(../fonts/iconfont/iconfont.eot);src:url(../fonts/iconfont/iconfont.eot#iefix)format("embedded-opentype"),url(../fonts/iconfont/iconfont.woff)format("woff"),url(../fonts/iconfont/iconfont.ttf)format("truetype"),url(../fonts/iconfont/iconfont.svg#iconfont)format("svg");font-display:swap}.post .post-content details.admonition summary:after,.post .post-content .admonition .admonition-title:before,.iconfont{font-family:iconfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-text-stroke-width:.2px;cursor:pointer;letter-spacing:0;font-feature-settings:"liga";font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-bilibili:before{content:"\e900";font-size:.9em;position:relative;top:-4px}.icon-instagram:before{font-size:.95em;content:"\e611";position:relative;top:1px}.icon-douban:before{content:"\e610";position:relative;top:2px}.icon-tumblr:before{content:"\e69f";font-size:.85em;position:relative;top:-2px}.icon-linkedin:before{content:"\e60d";position:relative;top:-2px}.icon-twitter:before{content:"\e600"}.icon-weibo:before{content:"\e602";position:relative;top:2px}.icon-stack-overflow:before{content:"\e902";font-size:.85em;position:relative;top:-4px}.icon-email:before{content:"\e605";position:relative;top:-2px}.icon-facebook:before{content:"\e601";font-size:.95em;position:relative;top:-2px}.icon-gitlab:before{content:"\e901";font-size:.9em;position:relative;top:-4px}.icon-github:before{content:"\e606";position:relative;top:-1px}.icon-rss:before{content:"\e604"}.icon-google:before{content:"\e609";position:relative;top:2px}.icon-zhihu:before{content:"\e607";font-size:.9em}.icon-pocket:before{content:"\e856";position:relative;top:2px}.icon-heart:before{content:"\e608"}.icon-right:before{content:"\e60a"}.icon-left:before{content:"\e60b"}.icon-up:before{content:"\e60c"}.icon-close:before{content:"\e60f"}.icon-link:before{content:"\e909"}.header{padding:20px}.header:before,.header:after{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left}.header .logo-wrapper .logo{font-size:48px;font-family:chancery,cursive,LiSu,sans-serif}@media screen and (max-width:1000px){.header .logo-wrapper{display:none}}.header .site-navbar{float:right}.header .site-navbar .menu{display:inline-block;position:relative;padding-left:0;padding-right:25px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#0047ab;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.header .site-navbar .menu .menu-item.active:before,.header .site-navbar .menu .menu-item:active:before,.header .site-navbar .menu .menu-item:focus:before,.header .site-navbar .menu .menu-item:hover:before{right:0;left:0}.header .site-navbar .menu .menu-item-link{font-size:18px}@media screen and (max-width:1000px){.header .site-navbar{display:none}}.header .language-selector{float:right}@media screen and (max-width:1000px){.header{padding:50px 0 0;text-align:center}.header .language-selector{display:none}}.posts{margin-bottom:20px;border-bottom:1px solid #e6e6e6}.post{padding:1.5em 0}.post+.post{border-top:1px solid #e6e6e6}.post .post-header{margin-bottom:20px}.post .post-header .post-title{margin:0;font-size:27px;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#0047ab;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a::before{content:'·'}.post .post-header .post-meta .post-category a:hover{color:#0047ab}.post .post-header .post-meta .more-meta::before{content:'·'}.post .post-toc{position:absolute;width:200px;margin-left:985px;padding:10px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;border-radius:5px;background:rgba(240,242,245,.6);box-shadow:1px 1px 2px rgba(0,0,0,.125);word-wrap:break-word;box-sizing:border-box}.post .post-toc .post-toc-title{margin:0 10px;font-size:20px;font-weight:400;text-transform:uppercase}.post .post-toc .post-toc-content{font-size:15px}.post .post-toc .post-toc-content.always-active ul{display:block}.post .post-toc .post-toc-content>nav>ul{margin:10px 0}.post .post-toc .post-toc-content ul{padding-left:20px;list-style:square}.post .post-toc .post-toc-content ul ul{padding-left:15px;display:none}.post .post-toc .post-toc-content ul .has-active>ul{display:block}.post .post-toc .post-toc-content .toc-link.active{color:#0047ab}@media screen and (max-width:1385px){.post .post-toc{display:none}}.post .post-content{word-wrap:break-word}.post .post-content h1{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h1 .anchor:hover{border-bottom:initial}.post .post-content h1 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h1 .anchor .icon-link:before{vertical-align:middle}.post .post-content h1:hover .icon-link{visibility:visible}.post .post-content h2{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h2 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h2 .anchor:hover{border-bottom:initial}.post .post-content h2 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h2 .anchor .icon-link:before{vertical-align:middle}.post .post-content h2:hover .icon-link{visibility:visible}.post .post-content h3{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h3 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h3 .anchor:hover{border-bottom:initial}.post .post-content h3 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h3 .anchor .icon-link:before{vertical-align:middle}.post .post-content h3:hover .icon-link{visibility:visible}.post .post-content h4{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h4 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h4 .anchor:hover{border-bottom:initial}.post .post-content h4 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h4 .anchor .icon-link:before{vertical-align:middle}.post .post-content h4:hover .icon-link{visibility:visible}.post .post-content h5{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h5 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h5 .anchor:hover{border-bottom:initial}.post .post-content h5 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h5 .anchor .icon-link:before{vertical-align:middle}.post .post-content h5:hover .icon-link{visibility:visible}.post .post-content h6{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h6 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h6 .anchor:hover{border-bottom:initial}.post .post-content h6 .anchor .icon-link{visibility:hidden;font-size:16px;display:contents}.post .post-content h6 .anchor .icon-link:before{vertical-align:middle}.post .post-content h6:hover .icon-link{visibility:visible}.post .post-content a{color:#0047ab;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #0047ab}.post .post-content a.fancybox{border:0}.post .post-content blockquote{margin:2em 0;padding:10px 20px;position:relative;color:rgba(52,73,94,.8);background-color:rgba(0,71,171,5%);border-left:3px solid rgba(0,71,171,.3);box-shadow:1px 1px 2px rgba(0,0,0,.125)}.post .post-content blockquote p{margin:0}.post .post-content img{display:inline-block;max-width:100%}.post .post-content .table-wrapper{overflow-x:auto}.post .post-content .table-wrapper>table{max-width:100%;margin:10px 0;border-spacing:0;box-shadow:2px 2px 3px rgba(0,0,0,.125)}.post .post-content .table-wrapper>table thead{background:#f0f2f5}.post .post-content .table-wrapper>table th,.post .post-content .table-wrapper>table td{padding:5px 15px;border:1px double #e7eaef}.post .post-content .table-wrapper>table tr:hover{background-color:#f0f2f5}.post .post-content code,.post .post-content pre{padding:7px;font-size:.9em;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#f0f2f5}.post .post-content code{padding:3px 5px;border-radius:4px;color:#c7254e}.post .post-content pre>code{display:block}.post .post-content figure.highlight{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative}.post .post-content figure.highlight table{position:relative}.post .post-content figure.highlight table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#e7eaef;content:'Code'}.post .post-content figure.highlight.language-bash>table::after{content:"Bash"}.post .post-content figure.highlight.language-c>table::after{content:"C"}.post .post-content figure.highlight.language-cs>table::after{content:"C#"}.post .post-content figure.highlight.language-cpp>table::after{content:"C++"}.post .post-content figure.highlight.language-css>table::after{content:"CSS"}.post .post-content figure.highlight.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content figure.highlight.language-html>table::after{content:"HTML"}.post .post-content figure.highlight.language-xml>table::after{content:"XML"}.post .post-content figure.highlight.language-http>table::after{content:"HTTP"}.post .post-content figure.highlight.language-json>table::after{content:"JSON"}.post .post-content figure.highlight.language-java>table::after{content:"Java"}.post .post-content figure.highlight.language-js>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-javascript>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-makefile>table::after{content:"Makefile"}.post .post-content figure.highlight.language-markdown>table::after{content:"Markdown"}.post .post-content figure.highlight.language-objectivec>table::after{content:"Objective-C"}.post .post-content figure.highlight.language-php>table::after{content:"PHP"}.post .post-content figure.highlight.language-perl>table::after{content:"Perl"}.post .post-content figure.highlight.language-python>table::after{content:"Python"}.post .post-content figure.highlight.language-ruby>table::after{content:"Ruby"}.post .post-content figure.highlight.language-sql>table::after{content:"SQL"}.post .post-content figure.highlight.language-shell>table::after{content:"Shell"}.post .post-content figure.highlight.language-erlang>table::after{content:"Erlang"}.post .post-content figure.highlight.language-go>table::after{content:"Go"}.post .post-content figure.highlight.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content figure.highlight.language-groovy>table::after{content:"Groovy"}.post .post-content figure.highlight.language-haskell>table::after{content:"Haskell"}.post .post-content figure.highlight.language-kotlin>table::after{content:"Kotlin"}.post .post-content figure.highlight.language-clojure>table::after{content:"Clojure"}.post .post-content figure.highlight.language-less>table::after{content:"Less"}.post .post-content figure.highlight.language-lisp>table::after{content:"Lisp"}.post .post-content figure.highlight.language-lua>table::after{content:"Lua"}.post .post-content figure.highlight.language-matlab>table::after{content:"Matlab"}.post .post-content figure.highlight.language-rust>table::after{content:"Rust"}.post .post-content figure.highlight.language-scss>table::after{content:"Scss"}.post .post-content figure.highlight.language-scala>table::after{content:"Scala"}.post .post-content figure.highlight.language-swift>table::after{content:"Swift"}.post .post-content figure.highlight.language-typescript>table::after{content:"TypeScript"}.post .post-content figure.highlight.language-yml>table::after{content:"YAML"}.post .post-content figure.highlight.language-yaml>table::after{content:"YAML"}.post .post-content figure.highlight.language-toml>table::after{content:"TOML"}.post .post-content figure.highlight.language-diff>table::after{content:"Diff"}.post .post-content figure.highlight .code pre{margin:0;padding:30px 10px 10px}.post .post-content figure.highlight .gutter{width:10px;color:#cacaca}.post .post-content figure.highlight .gutter pre{margin:0;padding:30px 7px 10px}.post .post-content figure.highlight .line{height:1em}.post .post-content figure.highlight table,.post .post-content figure.highlight tr,.post .post-content figure.highlight td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content figure.highlight .code .hljs-comment,.post .post-content figure.highlight .code .hljs-quote{color:#93a1a1}.post .post-content figure.highlight .code .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-tag,.post .post-content figure.highlight .code .hljs-addition{color:#859900}.post .post-content figure.highlight .code .hljs-number,.post .post-content figure.highlight .code .hljs-string,.post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,.post .post-content figure.highlight .code .hljs-literal,.post .post-content figure.highlight .code .hljs-doctag,.post .post-content figure.highlight .code .hljs-regexp{color:#2aa198}.post .post-content figure.highlight .code .hljs-title,.post .post-content figure.highlight .code .hljs-section,.post .post-content figure.highlight .code .hljs-name,.post .post-content figure.highlight .code .hljs-selector-id,.post .post-content figure.highlight .code .hljs-selector-class{color:#268bd2}.post .post-content figure.highlight .code .hljs-attribute,.post .post-content figure.highlight .code .hljs-attr,.post .post-content figure.highlight .code .hljs-variable,.post .post-content figure.highlight .code .hljs-template-variable,.post .post-content figure.highlight .code .hljs-class .hljs-title,.post .post-content figure.highlight .code .hljs-type{color:#b58900}.post .post-content figure.highlight .code .hljs-symbol,.post .post-content figure.highlight .code .hljs-bullet,.post .post-content figure.highlight .code .hljs-subst,.post .post-content figure.highlight .code .hljs-meta,.post .post-content figure.highlight .code .hljs-meta .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-attr,.post .post-content figure.highlight .code .hljs-selector-pseudo,.post .post-content figure.highlight .code .hljs-link{color:#cb4b16}.post .post-content figure.highlight .code .hljs-built_in,.post .post-content figure.highlight .code .hljs-deletion{color:#dc322f}.post .post-content figure.highlight .code .hljs-formula{background:#eee8d5}.post .post-content figure.highlight .code .hljs-emphasis{font-style:italic}.post .post-content figure.highlight .code .hljs-strong{font-weight:700}.post .post-content .highlight>.chroma{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#f0f2f5}.post .post-content .highlight>.chroma code{padding:0}.post .post-content .highlight>.chroma table{position:relative}.post .post-content .highlight>.chroma table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#e7eaef;content:'Code'}.post .post-content .highlight>.chroma.language-bash>table::after{content:"Bash"}.post .post-content .highlight>.chroma.language-c>table::after{content:"C"}.post .post-content .highlight>.chroma.language-cs>table::after{content:"C#"}.post .post-content .highlight>.chroma.language-cpp>table::after{content:"C++"}.post .post-content .highlight>.chroma.language-css>table::after{content:"CSS"}.post .post-content .highlight>.chroma.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content .highlight>.chroma.language-html>table::after{content:"HTML"}.post .post-content .highlight>.chroma.language-xml>table::after{content:"XML"}.post .post-content .highlight>.chroma.language-http>table::after{content:"HTTP"}.post .post-content .highlight>.chroma.language-json>table::after{content:"JSON"}.post .post-content .highlight>.chroma.language-java>table::after{content:"Java"}.post .post-content .highlight>.chroma.language-js>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-javascript>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-makefile>table::after{content:"Makefile"}.post .post-content .highlight>.chroma.language-markdown>table::after{content:"Markdown"}.post .post-content .highlight>.chroma.language-objectivec>table::after{content:"Objective-C"}.post .post-content .highlight>.chroma.language-php>table::after{content:"PHP"}.post .post-content .highlight>.chroma.language-perl>table::after{content:"Perl"}.post .post-content .highlight>.chroma.language-python>table::after{content:"Python"}.post .post-content .highlight>.chroma.language-ruby>table::after{content:"Ruby"}.post .post-content .highlight>.chroma.language-sql>table::after{content:"SQL"}.post .post-content .highlight>.chroma.language-shell>table::after{content:"Shell"}.post .post-content .highlight>.chroma.language-erlang>table::after{content:"Erlang"}.post .post-content .highlight>.chroma.language-go>table::after{content:"Go"}.post .post-content .highlight>.chroma.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content .highlight>.chroma.language-groovy>table::after{content:"Groovy"}.post .post-content .highlight>.chroma.language-haskell>table::after{content:"Haskell"}.post .post-content .highlight>.chroma.language-kotlin>table::after{content:"Kotlin"}.post .post-content .highlight>.chroma.language-clojure>table::after{content:"Clojure"}.post .post-content .highlight>.chroma.language-less>table::after{content:"Less"}.post .post-content .highlight>.chroma.language-lisp>table::after{content:"Lisp"}.post .post-content .highlight>.chroma.language-lua>table::after{content:"Lua"}.post .post-content .highlight>.chroma.language-matlab>table::after{content:"Matlab"}.post .post-content .highlight>.chroma.language-rust>table::after{content:"Rust"}.post .post-content .highlight>.chroma.language-scss>table::after{content:"Scss"}.post .post-content .highlight>.chroma.language-scala>table::after{content:"Scala"}.post .post-content .highlight>.chroma.language-swift>table::after{content:"Swift"}.post .post-content .highlight>.chroma.language-typescript>table::after{content:"TypeScript"}.post .post-content .highlight>.chroma.language-yml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-yaml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-toml>table::after{content:"TOML"}.post .post-content .highlight>.chroma.language-diff>table::after{content:"Diff"}.post .post-content .highlight>.chroma .lntd{line-height:1em}.post .post-content .highlight>.chroma .lntd:first-child{width:10px}.post .post-content .highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.post .post-content .highlight>.chroma .lntd:last-child{vertical-align:top}.post .post-content .highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.post .post-content .highlight>.chroma table,.post .post-content .highlight>.chroma tr,.post .post-content .highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma .lnt{color:#cacaca}.post .post-content .highlight>.chroma .hl{display:block;width:100%;background-color:#ffc}.post .post-content .highlight>.chroma .k{color:#859900}.post .post-content .highlight>.chroma .kc{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .kd{color:#859900}.post .post-content .highlight>.chroma .kn{color:#dc322f;font-weight:700}.post .post-content .highlight>.chroma .kp{color:#859900}.post .post-content .highlight>.chroma .kr{color:#859900}.post .post-content .highlight>.chroma .kt{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .n{color:#268bd2}.post .post-content .highlight>.chroma .na{color:#268bd2}.post .post-content .highlight>.chroma .nb{color:#cb4b16}.post .post-content .highlight>.chroma .bp{color:#268bd2}.post .post-content .highlight>.chroma .nc{color:#cb4b16}.post .post-content .highlight>.chroma .no{color:#268bd2}.post .post-content .highlight>.chroma .nd{color:#268bd2}.post .post-content .highlight>.chroma .ni{color:#268bd2}.post .post-content .highlight>.chroma .ne{color:#268bd2}.post .post-content .highlight>.chroma .nf{color:#268bd2}.post .post-content .highlight>.chroma .fm{color:#268bd2}.post .post-content .highlight>.chroma .nl{color:#268bd2}.post .post-content .highlight>.chroma .nn{color:#268bd2}.post .post-content .highlight>.chroma .nx{color:#268bd2}.post .post-content .highlight>.chroma .py{color:#268bd2}.post .post-content .highlight>.chroma .nt{color:#268bd2;font-weight:700}.post .post-content .highlight>.chroma .nv{color:#268bd2}.post .post-content .highlight>.chroma .vc{color:#268bd2}.post .post-content .highlight>.chroma .vg{color:#268bd2}.post .post-content .highlight>.chroma .vi{color:#268bd2}.post .post-content .highlight>.chroma .vm{color:#268bd2}.post .post-content .highlight>.chroma .l{color:#2aa198}.post .post-content .highlight>.chroma .ld{color:#2aa198}.post .post-content .highlight>.chroma .s{color:#2aa198}.post .post-content .highlight>.chroma .sa{color:#2aa198}.post .post-content .highlight>.chroma .sb{color:#2aa198}.post .post-content .highlight>.chroma .sc{color:#2aa198}.post .post-content .highlight>.chroma .dl{color:#2aa198}.post .post-content .highlight>.chroma .sd{color:#2aa198}.post .post-content .highlight>.chroma .s2{color:#2aa198}.post .post-content .highlight>.chroma .se{color:#2aa198}.post .post-content .highlight>.chroma .sh{color:#2aa198}.post .post-content .highlight>.chroma .si{color:#2aa198}.post .post-content .highlight>.chroma .sx{color:#2aa198}.post .post-content .highlight>.chroma .sr{color:#2aa198}.post .post-content .highlight>.chroma .s1{color:#2aa198}.post .post-content .highlight>.chroma .ss{color:#2aa198}.post .post-content .highlight>.chroma .m{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mb{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mf{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mh{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mi{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .il{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mo{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .ow{color:#859900}.post .post-content .highlight>.chroma .c{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .ch{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cm{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .c1{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cp{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cpf{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .g{color:#d33682}.post .post-content .highlight>.chroma .gd{color:#b58900}.post .post-content .highlight>.chroma .ge{color:#d33682}.post .post-content .highlight>.chroma .gr{color:#d33682}.post .post-content .highlight>.chroma .gh{color:#d33682}.post .post-content .highlight>.chroma .gi{color:#859900}.post .post-content .highlight>.chroma .go{color:#d33682}.post .post-content .highlight>.chroma .gp{color:#d33682}.post .post-content .highlight>.chroma .gs{color:#d33682}.post .post-content .highlight>.chroma .gu{color:#d33682}.post .post-content .highlight>.chroma .gt{color:#d33682}.post .post-content .copy-code{position:absolute;right:0;z-index:2;font-size:.9em!important;padding:0 1.5rem!important;color:#b1b1b1;font-family:Arial;font-weight:700;cursor:pointer;user-select:none}.post .post-content .admonition{box-shadow:0 2px 2px rgba(0,0,0,.14),0 1px 5px rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:relative;margin:.9765em 0;padding:0 .75rem;border-left:.25rem solid #448aff;border-radius:.125rem;overflow:auto}.post .post-content .admonition .admonition-title{margin:0 -.75rem;padding:.5rem .75rem .5rem 2.5rem;border-bottom:.1rem solid rgba(68,138,255,.1);background-color:rgba(68,138,255,.1);font-weight:700}.post .post-content .admonition .admonition-title:before{cursor:auto;position:absolute;left:.75rem;top:.75rem}.post .post-content .admonition.note{border-left-color:#448aff}.post .post-content .admonition.note .admonition-title:before{color:#448aff;content:"\e903"}.post .post-content .admonition.abstract{border-left-color:#00b0ff}.post .post-content .admonition.abstract .admonition-title{background-color:rgba(0,176,255,.1)}.post .post-content .admonition.abstract .admonition-title:before{color:#00b0ff;content:"\e9bb"}.post .post-content .admonition.info{border-left-color:#00b8d4}.post .post-content .admonition.info .admonition-title{background-color:rgba(0,184,212,.1)}.post .post-content .admonition.info .admonition-title:before{color:#00b8d4;content:"\ea0c"}.post .post-content .admonition.tip{border-left-color:#00bfa5}.post .post-content .admonition.tip .admonition-title{background-color:rgba(0,191,165,.1)}.post .post-content .admonition.tip .admonition-title:before{color:#00bfa5;content:"\e906"}.post .post-content .admonition.success{border-left-color:#00c853}.post .post-content .admonition.success .admonition-title{background-color:rgba(0,200,83,.1)}.post .post-content .admonition.success .admonition-title:before{color:#00c853;content:"\ea10"}.post .post-content .admonition.question{border-left-color:#64dd17}.post .post-content .admonition.question .admonition-title{background-color:rgba(100,221,23,.1)}.post .post-content .admonition.question .admonition-title:before{color:#64dd17;content:"\ea09"}.post .post-content .admonition.warning{border-left-color:#ff9100}.post .post-content .admonition.warning .admonition-title{background-color:rgba(255,145,0,.1)}.post .post-content .admonition.warning .admonition-title:before{color:#ff9100;content:"\ea07"}.post .post-content .admonition.failure{border-left-color:#ff5252}.post .post-content .admonition.failure .admonition-title{background-color:rgba(255,82,82,.1)}.post .post-content .admonition.failure .admonition-title:before{color:#ff5252;content:"\ea0f"}.post .post-content .admonition.danger{border-left-color:#ff1744}.post .post-content .admonition.danger .admonition-title{background-color:rgba(255,23,68,.1)}.post .post-content .admonition.danger .admonition-title:before{color:#ff1744;content:"\e905"}.post .post-content .admonition.bug{border-left-color:#f50057}.post .post-content .admonition.bug .admonition-title{background-color:rgba(245,0,87,.1)}.post .post-content .admonition.bug .admonition-title:before{color:#f50057;content:"\e907"}.post .post-content .admonition.example{border-left-color:#651fff}.post .post-content .admonition.example .admonition-title{background-color:rgba(101,31,255,.1)}.post .post-content .admonition.example .admonition-title:before{color:#651fff;content:"\e9b9"}.post .post-content .admonition.quote{border-left-color:#9e9e9e}.post .post-content .admonition.quote .admonition-title{background-color:rgba(158,158,158,.1)}.post .post-content .admonition.quote .admonition-title:before{color:#9e9e9e;content:"\e904"}.post .post-content .admonition:last-child{margin-bottom:.75rem}.post .post-content details.admonition summary{display:block;outline:none;cursor:pointer}.post .post-content details.admonition summary::-webkit-details-marker{display:none}.post .post-content details.admonition summary:after{position:absolute;top:.75rem;right:.75rem;color:rgba(0,0,0,.26);content:"\e908"}.post .post-content details.admonition[open]>summary:after{transform:rotate(180deg)}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more .read-more-link{color:#0047ab;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #0047ab}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;box-shadow:inset 0 -1px #b5b5b5;font-size:.8em;line-height:1.25;font-family:sfmono-regular,liberation mono,roboto mono,Menlo,Monaco,Consolas,courier new,Courier,monospace;color:#4a4a4a}.post .post-content dl dt::after{content:':'}.post .post-content figure.center{text-align:center}.post .post-content figure.right{text-align:right}.post .post-content figure.left{text-align:left}.post .post-content figure figcaption h4{color:#b5b5b5;font-size:.9rem}.post .post-content hr{margin:1rem 0;position:relative;border-top:2px dashed #0047ab;border-bottom:none}.post .post-content .footnote-ref>a{font-weight:700;margin-left:3px}.post .post-content .footnote-ref>a:before{content:"["}.post .post-content .footnote-ref>a:after{content:"]"}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .post-content .align-center{text-align:center}.post .post-content .align-right{text-align:right}.post .post-content .align-left{text-align:left}.post .post-content .MJXc-display{overflow-x:auto;overflow-y:hidden;padding-right:1px}.post .post-copyright{margin-top:20px;padding-top:10px;border-top:1px dashed #e6e6e6}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#0047ab;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #0047ab}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-reward{margin-top:20px;padding-top:10px;text-align:center;border-top:1px dashed #e6e6e6}.post .post-reward .reward-button{margin:15px 0;padding:3px 7px;display:inline-block;color:#0047ab;border:1px solid #0047ab;border-radius:5px;cursor:pointer}.post .post-reward .reward-button:hover{color:#fefefe;background-color:#0047ab;transition:.5s}.post .post-reward #reward:checked~.qr-code{display:block}.post .post-reward #reward:checked~.reward-button{display:none}.post .post-reward .qr-code{display:none}.post .post-reward .qr-code .qr-code-image{display:inline-block;min-width:200px;width:40%;margin-top:15px}.post .post-reward .qr-code .qr-code-image span{display:inline-block;width:100%;margin:8px 0}.post .post-reward .qr-code .image{width:200px;height:200px}.post .post-footer{margin-top:20px;border-top:1px solid #e6e6e6;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{padding:15px 0}.post .post-footer .post-tags a{margin-right:5px;color:#0047ab;word-break:break-all}.post .post-footer .post-tags a::before{content:'#'}.post .post-footer .post-nav{margin:1em 0}.post .post-footer .post-nav:before,.post .post-footer .post-nav:after{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .prev,.post .post-footer .post-nav .next{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#0047ab;transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#0047ab;transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:1000px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.post .post-outdated .hint{position:relative;margin-top:20px;margin-bottom:20px;padding:5px 10px;border-left:4px solid #42acf3;background-color:#eff5ff;border-color:#42acf3}.post .post-outdated .warn{position:relative;margin-top:20px;margin-bottom:20px;padding:5px 10px;border-left:4px solid #f9cf63;background-color:#ffffc0;border-color:#f9cf63}.pagination{margin:2em 0}.pagination:before,.pagination:after{content:" ";display:table}.pagination:after{clear:both}.pagination .prev,.pagination .next{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#0047ab;transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#0047ab;transform:translateX(4px)}.footer{margin-top:2em}.footer .social-links{text-align:center}.footer .social-links .iconfont{font-size:30px}.footer .social-links .iconfont+.iconfont{margin-left:10px}.footer .social-links .iconfont:hover{color:#0047ab}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#0047ab}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px;margin:4px}.archive{margin:2em 0;max-width:550px}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.tag,.archive .archive-title.category{margin:15px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:15px 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:3px 20px;border-left:1px solid #cacaca}.archive .archive-post .archive-post-time{margin-right:10px;color:#8a8a8a}.archive .archive-post .archive-post-title .archive-post-link{color:#0047ab}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{border-left:3px solid #0047ab;transition:.2s ease-out;transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#003278}@media screen and (max-width:1000px){.archive{margin-left:auto;margin-right:auto}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}}.terms{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.terms .terms-title{display:inline-block;font-size:18px;color:#0047ab;border-bottom:2px solid #0047ab}.terms .terms-tags{margin:10px 0}.terms .terms-tags .terms-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.terms .terms-tags .terms-link .terms-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#0047ab;font-size:12px}.terms .terms-tags .terms-link:active,.terms .terms-tags .terms-link:focus,.terms .terms-tags .terms-link:hover{color:#0047ab;transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-menu .language-selector{padding-left:30px}.slideout-panel{position:relative;z-index:1;background-color:#fefefe;min-height:100vh}.slideout-open,.slideout-open body,.slideout-open .slideout-panel{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;box-shadow:0 2px 2px #cacaca;text-align:center;transition:transform 300ms ease;z-index:99}.mobile-navbar.fixed-open{transform:translate3d(180px,0,0)}.mobile-navbar .mobile-header-logo{display:inline-block}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:chancery,cursive,LiSu,sans-serif}.mobile-navbar .mobile-navbar-icon{color:#0047ab;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;transition:background .5s;box-shadow:0 2px 2px #cacaca}@keyframes clickfirst{0%{transform:translateY(6px)rotate(0)}100%{transform:translateY(0)rotate(45deg)}}@keyframes clickmid{0%{opacity:1}100%{opacity:0}}@keyframes clicklast{0%{transform:translateY(-6px)rotate(0)}100%{transform:translateY(0)rotate(-45deg)}}@keyframes outfirst{0%{transform:translateY(0)rotate(-45deg)}100%{transform:translateY(-6px)rotate(0)}}@keyframes outmid{0%{opacity:0}100%{opacity:1}}@keyframes outlast{0%{transform:translateY(0)rotate(45deg)}100%{transform:translateY(6px)rotate(0)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px)/2);top:calc((100% - 1px)/2);width:20px;height:1px;background-color:#0047ab}.mobile-navbar .mobile-navbar-icon span:nth-child(1){transform:translateY(6px)rotate(0)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){transform:translateY(-6px)rotate(0)}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:outlast}.mobile-menu{background-color:rgba(240,242,245,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f0f2f5}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f0f2f5}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#0047ab}@media screen and (max-width:1000px){.mobile-navbar{display:block}}.mobile-dark-icon{width:50px;height:50px;float:right;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-pack:center;-webkit-box-align:center;display:-moz-box;-moz-box-orient:horizontal;-moz-box-pack:center;-moz-box-align:center;display:-o-box;-o-box-orient:horizontal;-o-box-pack:center;-o-box-align:center;display:-ms-box;-ms-box-orient:horizontal;-ms-box-pack:center;-ms-box-align:center;display:box;box-orient:horizontal;box-pack:center;box-align:center}.back-to-top{display:none;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s;z-index:10;background-color:rgba(0,71,171,5%);position:fixed;right:10px;bottom:10px;height:30px;width:50px;text-align:center;padding-top:20px;border-radius:20%;overflow:hidden}.back-to-top:hover{transform:translateY(-5px)}.back-to-top .icon-up{vertical-align:top}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#0047ab}.language-selector{width:max-content}.language-selector .languages-list{padding:0;background:#e7eaef}.language-selector .languages-list .language-item{display:inline-block;list-style-type:none;text-transform:uppercase;font-family:Athelas,STHeiti,Microsoft Yahei,serif;font-size:18px;padding:0 10px}.language-selector .languages-list .language-item.active{background:#0047ab}.language-selector .languages-list .language-item.active>a{color:#fff} \ No newline at end of file diff --git a/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.json b/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.json index ed038cb..ae87f95 100644 --- a/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.json +++ b/resources/_gen/assets/scss/sass/main.scss_48b060fe05b0a273d182ef83c0605941.json @@ -1 +1 @@ -{"Target":"sass/main.min.b9437bc106effc9b3bf0850ba5f2928c9cb3b9f190d8f1db826a7b6e8f050f54.css","MediaType":"text/css","Data":{"Integrity":"sha256-uUN7wQbv/Js78IULpfKSjJyzufGQ2PHbgmp7bo8FD1Q="}} \ No newline at end of file +{"Target":"sass/main.min.ea3652ee430cd1590d6fec4d8fc1b6cf8144a37037378b6042aca081b1012c66.css","MediaType":"text/css","Data":{"Integrity":"sha256-6jZS7kMM0VkNb+xNj8G2z4FEo3A3N4tgQqyggbEBLGY="}} \ No newline at end of file diff --git a/content/cv.assets/CV.pdf b/static/cv.assets/CV.pdf similarity index 82% rename from content/cv.assets/CV.pdf rename to static/cv.assets/CV.pdf index 7abeba0..ebcca27 100644 Binary files a/content/cv.assets/CV.pdf and b/static/cv.assets/CV.pdf differ diff --git a/content/cv.assets/UG_slides.pdf b/static/cv.assets/UG_slides.pdf similarity index 100% rename from content/cv.assets/UG_slides.pdf rename to static/cv.assets/UG_slides.pdf diff --git a/static/cv.assets/channel_simulation.png b/static/cv.assets/channel_simulation.png new file mode 100644 index 0000000..4cfca87 Binary files /dev/null and b/static/cv.assets/channel_simulation.png differ diff --git a/content/cv.assets/email.svg b/static/cv.assets/email.svg similarity index 100% rename from content/cv.assets/email.svg rename to static/cv.assets/email.svg diff --git a/content/cv.assets/github.svg b/static/cv.assets/github.svg similarity index 100% rename from content/cv.assets/github.svg rename to static/cv.assets/github.svg diff --git a/content/cv.assets/image-20220510230834702.png b/static/cv.assets/image-20220510230834702.png similarity index 100% rename from content/cv.assets/image-20220510230834702.png rename to static/cv.assets/image-20220510230834702.png diff --git a/content/cv.assets/intern_huawei_proof.pdf b/static/cv.assets/intern_huawei_proof.pdf similarity index 100% rename from content/cv.assets/intern_huawei_proof.pdf rename to static/cv.assets/intern_huawei_proof.pdf diff --git a/content/cv.assets/main_UG_paper.pdf b/static/cv.assets/main_UG_paper.pdf similarity index 100% rename from content/cv.assets/main_UG_paper.pdf rename to static/cv.assets/main_UG_paper.pdf diff --git a/content/cv.assets/rzy.jpg b/static/cv.assets/rzy.jpg similarity index 100% rename from content/cv.assets/rzy.jpg rename to static/cv.assets/rzy.jpg diff --git a/content/cv.assets/website.svg b/static/cv.assets/website.svg similarity index 100% rename from content/cv.assets/website.svg rename to static/cv.assets/website.svg diff --git a/themes/even/assets/sass/_custom/_custom.scss b/themes/even/assets/sass/_custom/_custom.scss index e9287d1..db367fc 100644 --- a/themes/even/assets/sass/_custom/_custom.scss +++ b/themes/even/assets/sass/_custom/_custom.scss @@ -37,7 +37,7 @@ .copy-code { display: none !important; - } + } } @media print { @@ -50,4 +50,81 @@ .personal-info { display: none; } -} \ No newline at end of file +} + +// paper box from https://github.com/QianrenLi/qianrenli.github.io/blob/main/assets/css/main.scss +.paper-box { + display: flex; + justify-content: left; + align-items: center; + flex-direction: row; + // border-top: 1 px #efefef solid; + // border-bottom: 1 px #efefef solid; + // padding: 2em 0 2em 0 + padding: 0em 2em 0em 2em +} + +@media print { + .paper-box .paper-box-image { + justify-content: left; + min-width: 200px; + max-width: 35%; +} + +.paper-box .paper-box-text { + justify-content: left; + padding-left: 2em; + max-width: 60%; +} +} + +.paper-box .paper-box-image { + justify-content: center; + display: flex; + flex-direction: column; + width: 100%; +} + +.paper-box .paper-box-image img { + max-width: 200px; + box-shadow: 3px 3px 6px #888; + object-fit: cover +} + +.paper-box .paper-box-caption { + text-align: center; + margin-top: 10px; + font-size: 12px; + color: #555; +} + +.paper-box .paper-box-text { + max-width: 100%; +} + +@media (min-width: 48em) { + .paper-box .paper-box-image { + justify-content: left; + min-width: 200px; + max-width: 35%; + } + + .paper-box .paper-box-text { + justify-content: left; + padding-left: 2em; + max-width: 60%; + } +} + +.badge { + padding-left: 1rem; + padding-right: 1rem; + position: relative; + // margin-bottom: -.5em; + // margin-left: -.5em; + margin-right: auto; + color: white; + background-color: #0047AB; + font-size: .8em; +} +// End of paper-box \ No newline at end of file diff --git a/themes/even/layouts/shortcodes/rooturl.html b/themes/even/layouts/shortcodes/rooturl.html new file mode 100644 index 0000000..aed8fb9 --- /dev/null +++ b/themes/even/layouts/shortcodes/rooturl.html @@ -0,0 +1,2 @@ + +{{ "/" | relLangURL }} \ No newline at end of file