1222 lines
35 KiB
HTML
1222 lines
35 KiB
HTML
<!DOCTYPE html><html><head><meta charset="utf-8"><style>body {
|
||
width: 45em;
|
||
border: 1px solid #ddd;
|
||
outline: 1300px solid #fff;
|
||
margin: 16px auto;
|
||
}
|
||
|
||
body .markdown-body
|
||
{
|
||
padding: 30px;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: fontawesome-mini;
|
||
src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
|
||
}
|
||
|
||
@font-face {
|
||
font-family: octicons-anchor;
|
||
src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
|
||
}
|
||
|
||
.markdown-body {
|
||
font-family: sans-serif;
|
||
-ms-text-size-adjust: 100%;
|
||
-webkit-text-size-adjust: 100%;
|
||
color: #333333;
|
||
overflow: hidden;
|
||
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
|
||
font-size: 16px;
|
||
line-height: 1.6;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
.markdown-body a {
|
||
background: transparent;
|
||
}
|
||
|
||
.markdown-body a:active,
|
||
.markdown-body a:hover {
|
||
outline: 0;
|
||
}
|
||
|
||
.markdown-body b,
|
||
.markdown-body strong {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.markdown-body mark {
|
||
background: #ff0;
|
||
color: #000;
|
||
font-style: italic;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.markdown-body sub,
|
||
.markdown-body sup {
|
||
font-size: 75%;
|
||
line-height: 0;
|
||
position: relative;
|
||
vertical-align: baseline;
|
||
}
|
||
.markdown-body sup {
|
||
top: -0.5em;
|
||
}
|
||
.markdown-body sub {
|
||
bottom: -0.25em;
|
||
}
|
||
|
||
.markdown-body h1 {
|
||
font-size: 2em;
|
||
margin: 0.67em 0;
|
||
}
|
||
|
||
.markdown-body img {
|
||
border: 0;
|
||
}
|
||
|
||
.markdown-body hr {
|
||
-moz-box-sizing: content-box;
|
||
box-sizing: content-box;
|
||
height: 0;
|
||
}
|
||
|
||
.markdown-body pre {
|
||
overflow: auto;
|
||
}
|
||
|
||
.markdown-body code,
|
||
.markdown-body kbd,
|
||
.markdown-body pre,
|
||
.markdown-body samp {
|
||
font-family: monospace, monospace;
|
||
font-size: 1em;
|
||
}
|
||
|
||
.markdown-body input {
|
||
color: inherit;
|
||
font: inherit;
|
||
margin: 0;
|
||
}
|
||
|
||
.markdown-body html input[disabled] {
|
||
cursor: default;
|
||
}
|
||
|
||
.markdown-body input {
|
||
line-height: normal;
|
||
}
|
||
|
||
.markdown-body input[type="checkbox"] {
|
||
box-sizing: border-box;
|
||
padding: 0;
|
||
}
|
||
|
||
.markdown-body table {
|
||
border-collapse: collapse;
|
||
border-spacing: 0;
|
||
}
|
||
|
||
.markdown-body td,
|
||
.markdown-body th {
|
||
padding: 0;
|
||
}
|
||
|
||
.markdown-body .codehilitetable {
|
||
border: 0;
|
||
border-spacing: 0;
|
||
}
|
||
|
||
.markdown-body .codehilitetable tr {
|
||
border: 0;
|
||
}
|
||
|
||
.markdown-body .codehilitetable pre,
|
||
.markdown-body div.codehilite {
|
||
margin: 0;
|
||
}
|
||
|
||
.markdown-body .linenos,
|
||
.markdown-body .code,
|
||
.markdown-body .codehilitetable td {
|
||
border: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
.markdown-body td:not(.linenos) .linenodiv {
|
||
padding: 0 !important;
|
||
}
|
||
|
||
.markdown-body .code {
|
||
width: 100%;
|
||
}
|
||
|
||
.markdown-body .linenos div pre,
|
||
.markdown-body .linenodiv pre,
|
||
.markdown-body .linenodiv {
|
||
border: 0;
|
||
-webkit-border-radius: 0;
|
||
-moz-border-radius: 0;
|
||
border-radius: 0;
|
||
-webkit-border-top-left-radius: 3px;
|
||
-webkit-border-bottom-left-radius: 3px;
|
||
-moz-border-radius-topleft: 3px;
|
||
-moz-border-radius-bottomleft: 3px;
|
||
border-top-left-radius: 3px;
|
||
border-bottom-left-radius: 3px;
|
||
}
|
||
|
||
.markdown-body .code div pre,
|
||
.markdown-body .code div {
|
||
border: 0;
|
||
-webkit-border-radius: 0;
|
||
-moz-border-radius: 0;
|
||
border-radius: 0;
|
||
-webkit-border-top-right-radius: 3px;
|
||
-webkit-border-bottom-right-radius: 3px;
|
||
-moz-border-radius-topright: 3px;
|
||
-moz-border-radius-bottomright: 3px;
|
||
border-top-right-radius: 3px;
|
||
border-bottom-right-radius: 3px;
|
||
}
|
||
|
||
.markdown-body * {
|
||
-moz-box-sizing: border-box;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.markdown-body input {
|
||
font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.markdown-body a {
|
||
color: #4183c4;
|
||
text-decoration: none;
|
||
}
|
||
|
||
.markdown-body a:hover,
|
||
.markdown-body a:focus,
|
||
.markdown-body a:active {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.markdown-body hr {
|
||
height: 0;
|
||
margin: 15px 0;
|
||
overflow: hidden;
|
||
background: transparent;
|
||
border: 0;
|
||
border-bottom: 1px solid #ddd;
|
||
}
|
||
|
||
.markdown-body hr:before,
|
||
.markdown-body hr:after {
|
||
display: table;
|
||
content: " ";
|
||
}
|
||
|
||
.markdown-body hr:after {
|
||
clear: both;
|
||
}
|
||
|
||
.markdown-body h1,
|
||
.markdown-body h2,
|
||
.markdown-body h3,
|
||
.markdown-body h4,
|
||
.markdown-body h5,
|
||
.markdown-body h6 {
|
||
margin-top: 15px;
|
||
margin-bottom: 15px;
|
||
line-height: 1.1;
|
||
}
|
||
|
||
.markdown-body h1 {
|
||
font-size: 30px;
|
||
}
|
||
|
||
.markdown-body h2 {
|
||
font-size: 21px;
|
||
}
|
||
|
||
.markdown-body h3 {
|
||
font-size: 16px;
|
||
}
|
||
|
||
.markdown-body h4 {
|
||
font-size: 14px;
|
||
}
|
||
|
||
.markdown-body h5 {
|
||
font-size: 12px;
|
||
}
|
||
|
||
.markdown-body h6 {
|
||
font-size: 11px;
|
||
}
|
||
|
||
.markdown-body blockquote {
|
||
margin: 0;
|
||
}
|
||
|
||
.markdown-body ul,
|
||
.markdown-body ol {
|
||
padding: 0;
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.markdown-body ol ol,
|
||
.markdown-body ul ol {
|
||
list-style-type: lower-roman;
|
||
}
|
||
|
||
.markdown-body ul ul ol,
|
||
.markdown-body ul ol ol,
|
||
.markdown-body ol ul ol,
|
||
.markdown-body ol ol ol {
|
||
list-style-type: lower-alpha;
|
||
}
|
||
|
||
.markdown-body dd {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.markdown-body code,
|
||
.markdown-body pre,
|
||
.markdown-body samp {
|
||
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||
font-size: 12px;
|
||
}
|
||
|
||
.markdown-body pre {
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.markdown-body kbd {
|
||
background-color: #e7e7e7;
|
||
background-image: -moz-linear-gradient(#fefefe, #e7e7e7);
|
||
background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
|
||
background-image: linear-gradient(#fefefe, #e7e7e7);
|
||
background-repeat: repeat-x;
|
||
border-radius: 2px;
|
||
border: 1px solid #cfcfcf;
|
||
color: #000;
|
||
padding: 3px 5px;
|
||
line-height: 10px;
|
||
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||
display: inline-block;
|
||
}
|
||
|
||
.markdown-body>*:first-child {
|
||
margin-top: 0 !important;
|
||
}
|
||
|
||
.markdown-body>*:last-child {
|
||
margin-bottom: 0 !important;
|
||
}
|
||
|
||
.markdown-body .headeranchor-link {
|
||
position: absolute;
|
||
top: 0;
|
||
bottom: 0;
|
||
left: 0;
|
||
display: block;
|
||
padding-right: 6px;
|
||
padding-left: 30px;
|
||
margin-left: -30px;
|
||
}
|
||
|
||
.markdown-body .headeranchor-link:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.markdown-body h1,
|
||
.markdown-body h2,
|
||
.markdown-body h3,
|
||
.markdown-body h4,
|
||
.markdown-body h5,
|
||
.markdown-body h6 {
|
||
position: relative;
|
||
margin-top: 1em;
|
||
margin-bottom: 16px;
|
||
font-weight: bold;
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.markdown-body h1 .headeranchor,
|
||
.markdown-body h2 .headeranchor,
|
||
.markdown-body h3 .headeranchor,
|
||
.markdown-body h4 .headeranchor,
|
||
.markdown-body h5 .headeranchor,
|
||
.markdown-body h6 .headeranchor {
|
||
display: none;
|
||
color: #000;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.markdown-body h1:hover .headeranchor-link,
|
||
.markdown-body h2:hover .headeranchor-link,
|
||
.markdown-body h3:hover .headeranchor-link,
|
||
.markdown-body h4:hover .headeranchor-link,
|
||
.markdown-body h5:hover .headeranchor-link,
|
||
.markdown-body h6:hover .headeranchor-link {
|
||
height: 1em;
|
||
padding-left: 8px;
|
||
margin-left: -30px;
|
||
line-height: 1;
|
||
text-decoration: none;
|
||
}
|
||
|
||
.markdown-body h1:hover .headeranchor-link .headeranchor,
|
||
.markdown-body h2:hover .headeranchor-link .headeranchor,
|
||
.markdown-body h3:hover .headeranchor-link .headeranchor,
|
||
.markdown-body h4:hover .headeranchor-link .headeranchor,
|
||
.markdown-body h5:hover .headeranchor-link .headeranchor,
|
||
.markdown-body h6:hover .headeranchor-link .headeranchor {
|
||
display: inline-block;
|
||
}
|
||
|
||
.markdown-body h1 {
|
||
padding-bottom: 0.3em;
|
||
font-size: 2.25em;
|
||
line-height: 1.2;
|
||
border-bottom: 1px solid #eee;
|
||
}
|
||
|
||
.markdown-body h2 {
|
||
padding-bottom: 0.3em;
|
||
font-size: 1.75em;
|
||
line-height: 1.225;
|
||
border-bottom: 1px solid #eee;
|
||
}
|
||
|
||
.markdown-body h3 {
|
||
font-size: 1.5em;
|
||
line-height: 1.43;
|
||
}
|
||
|
||
.markdown-body h4 {
|
||
font-size: 1.25em;
|
||
}
|
||
|
||
.markdown-body h5 {
|
||
font-size: 1em;
|
||
}
|
||
|
||
.markdown-body h6 {
|
||
font-size: 1em;
|
||
color: #777;
|
||
}
|
||
|
||
.markdown-body p,
|
||
.markdown-body blockquote,
|
||
.markdown-body ul,
|
||
.markdown-body ol,
|
||
.markdown-body dl,
|
||
.markdown-body table,
|
||
.markdown-body pre,
|
||
.markdown-body .admonition {
|
||
margin-top: 0;
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.markdown-body hr {
|
||
height: 4px;
|
||
padding: 0;
|
||
margin: 16px 0;
|
||
background-color: #e7e7e7;
|
||
border: 0 none;
|
||
}
|
||
|
||
.markdown-body ul,
|
||
.markdown-body ol {
|
||
padding-left: 2em;
|
||
}
|
||
|
||
.markdown-body ul ul,
|
||
.markdown-body ul ol,
|
||
.markdown-body ol ol,
|
||
.markdown-body ol ul {
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.markdown-body li>p {
|
||
margin-top: 16px;
|
||
}
|
||
|
||
.markdown-body dl {
|
||
padding: 0;
|
||
}
|
||
|
||
.markdown-body dl dt {
|
||
padding: 0;
|
||
margin-top: 16px;
|
||
font-size: 1em;
|
||
font-style: italic;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.markdown-body dl dd {
|
||
padding: 0 16px;
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.markdown-body blockquote {
|
||
padding: 0 15px;
|
||
color: #777;
|
||
border-left: 4px solid #ddd;
|
||
}
|
||
|
||
.markdown-body blockquote>:first-child {
|
||
margin-top: 0;
|
||
}
|
||
|
||
.markdown-body blockquote>:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.markdown-body table {
|
||
display: block;
|
||
width: 100%;
|
||
overflow: auto;
|
||
word-break: normal;
|
||
word-break: keep-all;
|
||
}
|
||
|
||
.markdown-body table th {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.markdown-body table th,
|
||
.markdown-body table td {
|
||
padding: 6px 13px;
|
||
border: 1px solid #ddd;
|
||
}
|
||
|
||
.markdown-body table tr {
|
||
background-color: #fff;
|
||
border-top: 1px solid #ccc;
|
||
}
|
||
|
||
.markdown-body table tr:nth-child(2n) {
|
||
background-color: #f8f8f8;
|
||
}
|
||
|
||
.markdown-body img {
|
||
max-width: 100%;
|
||
-moz-box-sizing: border-box;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.markdown-body code,
|
||
.markdown-body samp {
|
||
padding: 0;
|
||
padding-top: 0.2em;
|
||
padding-bottom: 0.2em;
|
||
margin: 0;
|
||
font-size: 85%;
|
||
background-color: rgba(0,0,0,0.04);
|
||
border-radius: 3px;
|
||
}
|
||
|
||
.markdown-body code:before,
|
||
.markdown-body code:after {
|
||
letter-spacing: -0.2em;
|
||
content: "\00a0";
|
||
}
|
||
|
||
.markdown-body pre>code {
|
||
padding: 0;
|
||
margin: 0;
|
||
font-size: 100%;
|
||
word-break: normal;
|
||
white-space: pre;
|
||
background: transparent;
|
||
border: 0;
|
||
}
|
||
|
||
.markdown-body .codehilite {
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.markdown-body .codehilite pre,
|
||
.markdown-body pre {
|
||
padding: 16px;
|
||
overflow: auto;
|
||
font-size: 85%;
|
||
line-height: 1.45;
|
||
background-color: #f7f7f7;
|
||
border-radius: 3px;
|
||
}
|
||
|
||
.markdown-body .codehilite pre {
|
||
margin-bottom: 0;
|
||
word-break: normal;
|
||
}
|
||
|
||
.markdown-body pre {
|
||
word-wrap: normal;
|
||
}
|
||
|
||
.markdown-body pre code {
|
||
display: inline;
|
||
max-width: initial;
|
||
padding: 0;
|
||
margin: 0;
|
||
overflow: initial;
|
||
line-height: inherit;
|
||
word-wrap: normal;
|
||
background-color: transparent;
|
||
border: 0;
|
||
}
|
||
|
||
.markdown-body pre code:before,
|
||
.markdown-body pre code:after {
|
||
content: normal;
|
||
}
|
||
|
||
/* Admonition */
|
||
.markdown-body .admonition {
|
||
-webkit-border-radius: 3px;
|
||
-moz-border-radius: 3px;
|
||
border-radius: 3px;
|
||
padding: 0.5em 1em 0.5em 1em;
|
||
color: #888888;
|
||
background-color: #F7F7F7;
|
||
border: 1px solid #888888;
|
||
}
|
||
|
||
.markdown-body .admonition blockquote {
|
||
color: rgba(136, 136, 136, 0.5);
|
||
border-left: 4px solid rgba(136, 136, 136, 0.5);
|
||
}
|
||
|
||
.markdown-body .admonition table {
|
||
color: #333;
|
||
}
|
||
|
||
.markdown-body .admonition p {
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.markdown-body .admonition-title {
|
||
font-weight: bold;
|
||
margin: 0;
|
||
}
|
||
|
||
.markdown-body .admonition-icon {
|
||
font: normal normal 16px fontawesome-mini;
|
||
line-height: 1.5;
|
||
-moz-osx-font-smoothing: grayscale;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
float: left;
|
||
}
|
||
|
||
.markdown-body .attention {
|
||
color: #4F8A10;
|
||
background-color: #DFF2BF;
|
||
border: 1px solid #4F8A10;
|
||
}
|
||
|
||
.markdown-body .caution {
|
||
color: #D63301;
|
||
background-color: #FFCCBA;
|
||
border: 1px solid #D63301;
|
||
}
|
||
|
||
.markdown-body .hint {
|
||
color: #00529B;
|
||
background-color: #BDE5F8;
|
||
border: 1px solid #00529B;
|
||
}
|
||
|
||
.markdown-body .danger {
|
||
color: #D8000C;
|
||
background-color: #FFBABA;
|
||
border: 1px solid #D8000C;
|
||
}
|
||
|
||
.markdown-body .question {
|
||
color: #00049b;
|
||
background-color: #BDC8F8;
|
||
border: 1px solid #00049b;
|
||
}
|
||
|
||
.markdown-body .note {
|
||
color: #9F6000;
|
||
background-color: #FEEFB3;
|
||
border: 1px solid #9F6000;
|
||
}
|
||
|
||
.markdown-body .attention {
|
||
color: #4F8A10;
|
||
background-color: #DFF2BF;
|
||
border: 1px solid #4F8A10;
|
||
}
|
||
|
||
.markdown-body .caution blockquote {
|
||
color: rgba(214, 51, 1, .5);
|
||
border-left: 4px solid rgba(214, 51, 1, .5);
|
||
}
|
||
|
||
.markdown-body .hint blockquote {
|
||
color: rgba(0, 82, 155, .5);
|
||
border-left: 4px solid rgba(0, 82, 155, .5);
|
||
}
|
||
|
||
.markdown-body .danger blockquote {
|
||
color: rgba(216, 0, 12, .5);
|
||
border-left: 4px solid rgba(216, 0, 12, .5);
|
||
}
|
||
|
||
.markdown-body .question blockquote {
|
||
color: rgba(0, 4, 155, .5);
|
||
border-left: 4px solid rgba(0, 4, 155, .5);;
|
||
}
|
||
|
||
.markdown-body .note blockquote {
|
||
color: rgba(159, 96, 0, .5);
|
||
border-left: 4px solid rgba(159, 96, 0, .5);
|
||
}
|
||
|
||
.markdown-body .admonition-icon:before {
|
||
content: "\f040\00a0";
|
||
}
|
||
|
||
.markdown-body .attention > .admonition-icon:before {
|
||
content: "\f058\00a0";
|
||
}
|
||
|
||
.markdown-body .caution > .admonition-icon:before {
|
||
content: "\f06a\00a0";
|
||
}
|
||
|
||
.markdown-body .hint > .admonition-icon:before {
|
||
content: "\f05a\00a0";
|
||
}
|
||
|
||
.markdown-body .danger > .admonition-icon:before {
|
||
content: "\f056\00a0";
|
||
}
|
||
|
||
.markdown-body .question > .admonition-icon:before {
|
||
content: "\f059\00a0";
|
||
}
|
||
|
||
.markdown-body .note > .admonition-icon:before {
|
||
content: "\f040\00a0";
|
||
}
|
||
|
||
/* progress bar*/
|
||
.markdown-body .progress {
|
||
display: block;
|
||
width: 300px;
|
||
margin: 10px 0;
|
||
height: 24px;
|
||
border: 1px solid #ccc;
|
||
-webkit-border-radius: 3px;
|
||
-moz-border-radius: 3px;
|
||
border-radius: 3px;
|
||
background-color: #F8F8F8;
|
||
position: relative;
|
||
box-shadow: inset -1px 1px 3px rgba(0, 0, 0, .1);
|
||
}
|
||
|
||
.markdown-body .progress-label {
|
||
position: absolute;
|
||
text-align: center;
|
||
font-weight: bold;
|
||
width: 100%; margin: 0;
|
||
line-height: 24px;
|
||
color: #333;
|
||
text-shadow: 1px 1px 0 #fefefe, -1px -1px 0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px 0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000;
|
||
-webkit-font-smoothing: antialiased !important;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.markdown-body .progress-bar {
|
||
height: 24px;
|
||
float: left;
|
||
border-right: 1px solid #ccc;
|
||
-webkit-border-radius: 3px;
|
||
-moz-border-radius: 3px;
|
||
border-radius: 3px;
|
||
background-color: #34c2e3;
|
||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5);
|
||
background-size: 30px 30px;
|
||
background-image: -webkit-linear-gradient(
|
||
135deg, rgba(255, 255, 255, .4) 27%,
|
||
transparent 27%,
|
||
transparent 53%, rgba(255, 255, 255, .4) 53%,
|
||
rgba(255, 255, 255, .4) 77%,
|
||
transparent 77%, transparent
|
||
);
|
||
background-image: -moz-linear-gradient(
|
||
135deg,
|
||
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
||
transparent 53%, rgba(255, 255, 255, .4) 53%,
|
||
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
||
transparent
|
||
);
|
||
background-image: -ms-linear-gradient(
|
||
135deg,
|
||
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
||
transparent 53%, rgba(255, 255, 255, .4) 53%,
|
||
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
||
transparent
|
||
);
|
||
background-image: -o-linear-gradient(
|
||
135deg,
|
||
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
||
transparent 53%, rgba(255, 255, 255, .4) 53%,
|
||
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
||
transparent
|
||
);
|
||
background-image: linear-gradient(
|
||
135deg,
|
||
rgba(255, 255, 255, .4) 27%, transparent 27%,
|
||
transparent 53%, rgba(255, 255, 255, .4) 53%,
|
||
rgba(255, 255, 255, .4) 77%, transparent 77%,
|
||
transparent
|
||
);
|
||
}
|
||
|
||
.markdown-body .progress-100plus .progress-bar {
|
||
background-color: #1ee038;
|
||
}
|
||
|
||
.markdown-body .progress-80plus .progress-bar {
|
||
background-color: #86e01e;
|
||
}
|
||
|
||
.markdown-body .progress-60plus .progress-bar {
|
||
background-color: #f2d31b;
|
||
}
|
||
|
||
.markdown-body .progress-40plus .progress-bar {
|
||
background-color: #f2b01e;
|
||
}
|
||
|
||
.markdown-body .progress-20plus .progress-bar {
|
||
background-color: #f27011;
|
||
}
|
||
|
||
.markdown-body .progress-0plus .progress-bar {
|
||
background-color: #f63a0f;
|
||
}
|
||
|
||
.markdown-body .gloss .progress-bar {
|
||
box-shadow:
|
||
inset -1px 1px 0 rgba(255, 255, 255, .5),
|
||
inset 0 -4px 12px rgba(255, 255, 255, .7),
|
||
inset 0 4px 12px rgba(255, 255, 255, .7),
|
||
inset 0 -12px 0 rgba(0, 0, 0, .05),
|
||
inset 1px -1px 0 rgba(255, 255, 255, .2);
|
||
}
|
||
|
||
.markdown-body .candystripe-animate .progress-bar{
|
||
-webkit-animation: animate-stripes 3s linear infinite;
|
||
-moz-animation: animate-stripes 3s linear infinite;
|
||
animation: animate-stripes 3s linear infinite;
|
||
}
|
||
|
||
@-webkit-keyframes animate-stripes {
|
||
0% {
|
||
background-position: 0 0;
|
||
}
|
||
|
||
100% {
|
||
background-position: 60px 0;
|
||
}
|
||
}
|
||
|
||
@-moz-keyframes animate-stripes {
|
||
0% {
|
||
background-position: 0 0;
|
||
}
|
||
|
||
100% {
|
||
background-position: 60px 0;
|
||
}
|
||
}
|
||
|
||
@keyframes animate-stripes {
|
||
0% {
|
||
background-position: 0 0;
|
||
}
|
||
|
||
100% {
|
||
background-position: 60px 0;
|
||
}
|
||
}
|
||
|
||
/* Multimarkdown Critic Blocks */
|
||
.markdown-body .critic_mark {
|
||
background: #ff0;
|
||
}
|
||
|
||
.markdown-body .critic_delete {
|
||
color: #c82829;
|
||
text-decoration: line-through;
|
||
}
|
||
|
||
.markdown-body .critic_insert {
|
||
color: #718c00 ;
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.markdown-body .critic_comment {
|
||
color: #8e908c;
|
||
font-style: italic;
|
||
}
|
||
|
||
.markdown-body .headeranchor {
|
||
font: normal normal 16px octicons-anchor;
|
||
line-height: 1;
|
||
display: inline-block;
|
||
text-decoration: none;
|
||
-webkit-font-smoothing: antialiased;
|
||
-moz-osx-font-smoothing: grayscale;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.headeranchor:before {
|
||
content: '\f05c';
|
||
}
|
||
|
||
.markdown-body .task-list-item {
|
||
list-style-type: none;
|
||
}
|
||
|
||
.markdown-body .task-list-item+.task-list-item {
|
||
margin-top: 3px;
|
||
}
|
||
|
||
.markdown-body .task-list-item input {
|
||
margin: 0 4px 0.25em -20px;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
/* Media */
|
||
@media only screen and (min-width: 480px) {
|
||
.markdown-body {
|
||
font-size:14px;
|
||
}
|
||
}
|
||
|
||
@media only screen and (min-width: 768px) {
|
||
.markdown-body {
|
||
font-size:16px;
|
||
}
|
||
}
|
||
|
||
@media print {
|
||
.markdown-body * {
|
||
background: transparent !important;
|
||
color: black !important;
|
||
filter:none !important;
|
||
-ms-filter: none !important;
|
||
}
|
||
|
||
.markdown-body {
|
||
font-size:12pt;
|
||
max-width:100%;
|
||
outline:none;
|
||
border: 0;
|
||
}
|
||
|
||
.markdown-body a,
|
||
.markdown-body a:visited {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.markdown-body .headeranchor-link {
|
||
display: none;
|
||
}
|
||
|
||
.markdown-body a[href]:after {
|
||
content: " (" attr(href) ")";
|
||
}
|
||
|
||
.markdown-body abbr[title]:after {
|
||
content: " (" attr(title) ")";
|
||
}
|
||
|
||
.markdown-body .ir a:after,
|
||
.markdown-body a[href^="javascript:"]:after,
|
||
.markdown-body a[href^="#"]:after {
|
||
content: "";
|
||
}
|
||
|
||
.markdown-body pre {
|
||
white-space: pre;
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
.markdown-body pre,
|
||
.markdown-body blockquote {
|
||
border: 1px solid #999;
|
||
padding-right: 1em;
|
||
page-break-inside: avoid;
|
||
}
|
||
|
||
.markdown-body .progress,
|
||
.markdown-body .progress-bar {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.markdown-body tr,
|
||
.markdown-body img {
|
||
page-break-inside: avoid;
|
||
}
|
||
|
||
.markdown-body img {
|
||
max-width: 100% !important;
|
||
}
|
||
|
||
.markdown-body p,
|
||
.markdown-body h2,
|
||
.markdown-body h3 {
|
||
orphans: 3;
|
||
widows: 3;
|
||
}
|
||
|
||
.markdown-body h2,
|
||
.markdown-body h3 {
|
||
page-break-after: avoid;
|
||
}
|
||
}
|
||
</style><title>README</title></head><body><article class="markdown-body"><h1 id="nodemcu-api"><a name="user-content-nodemcu-api" href="#nodemcu-api" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>nodeMcu API说明</h1>
|
||
<p>version 0.1 2014-10-11</p>
|
||
<h2 id="_1"><a name="user-content-_1" href="#_1" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>概述</h2>
|
||
<pre><code> nodeMcu 基于Lua 5.1.4,使用者需了解最简单的Lua语法。
|
||
|
||
nodeMcu 尽量采用事件驱动的编程模型。
|
||
|
||
nodeMcu 内置 timer,pwm,i2c,net,gpio,wifi module。
|
||
|
||
nodeMcu对模块的引脚进行编号,gpio,i2c,pwm等模块需要使用引脚编号进行索引。
|
||
</code></pre>
|
||
<h3 id="_2"><a name="user-content-_2" href="#_2" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>目前的编号对应表格:</h3>
|
||
<pre><code> IO索引编号 ESP8266实际IO IO索引编号 ESP8266实际IO
|
||
0 GPIO12 8 GPIO0
|
||
1 GPIO13 9 GPIO2
|
||
2 GPIO14 10 GPIO4
|
||
3 GPIO15 11 GPIO5
|
||
4 GPIO3
|
||
5 GPIO1
|
||
6 GPIO9
|
||
7 GPIO10
|
||
</code></pre>
|
||
<h3 id="_3"><a name="user-content-_3" href="#_3" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>串口波特率</h3>
|
||
<p>74880</p>
|
||
<h3 id="_4"><a name="user-content-_4" href="#_4" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>固件烧写地址:</h3>
|
||
<pre><code> eagle.app.v6.flash.bin:0x00000
|
||
eagle.app.v6.irom0text.bin:0x10000
|
||
esp_init_data_default.bin:0x7c000
|
||
blank.bin:0x7e000
|
||
</code></pre>
|
||
<h2 id="node-module"><a name="user-content-node-module" href="#node-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>node module</h2>
|
||
<p>node.restart()</p>
|
||
<pre><code> 描述:重新启动
|
||
</code></pre>
|
||
<p>node.dsleep( us )</p>
|
||
<pre><code> 描述:深度睡眠 us 微秒,时间到之后将重新启动
|
||
us:时间,单位微秒
|
||
</code></pre>
|
||
<p>node.chipid() </p>
|
||
<pre><code> 描述:返回芯片id
|
||
返回:number
|
||
</code></pre>
|
||
<p>node.heap()</p>
|
||
<pre><code> 描述:返回可用内存 in bytes
|
||
返回:系统heap剩余
|
||
</code></pre>
|
||
<p>node.format()</p>
|
||
<pre><code> 描述:格式化用户flash区
|
||
</code></pre>
|
||
<p>node.startlog( filename, noparse)</p>
|
||
<pre><code> 描述:开始记录输入
|
||
filename:log所保存的文件名,不支持目录
|
||
noparse:1表示lua虚拟机不对输入进行解析,0表示lua虚拟机对输入进行解析
|
||
</code></pre>
|
||
<p>node.stoplog()</p>
|
||
<pre><code> 描述:结束log
|
||
</code></pre>
|
||
<p>例子:录制log到init.lua文件,可以在系统启动之后自动调用该文件。</p>
|
||
<pre><code> node.format()
|
||
node.startlog(“init.lua”, 1)
|
||
print(“hello world”)
|
||
node.stoplog()
|
||
</code></pre>
|
||
<p>此时,文件init.lua内部将含有内容,重启之后,系统执行print(“hello world”)</p>
|
||
<p>node.readlog( filename) </p>
|
||
<pre><code> 描述:读取文件
|
||
filename:log文件名,不支持目录
|
||
返回:读取的内容,字符串形式
|
||
</code></pre>
|
||
<p>node.list()</p>
|
||
<pre><code> 描述:返回所有文件
|
||
返回:一个包含 <文件名:文件大小> pair 的map
|
||
</code></pre>
|
||
<h2 id="wifi-module"><a name="user-content-wifi-module" href="#wifi-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>wifi module</h2>
|
||
<p>常量:wifi. STATION, wifi.SOFTAP, wifi.STATIONAP</p>
|
||
<p>wifi.setmode(mode)</p>
|
||
<pre><code> 描述:设置wifi的工作模式
|
||
mode:取值:wifi. STATION, wifi.SOFTAP或wifi.STATIONAP
|
||
返回设置之后的当前mode
|
||
</code></pre>
|
||
<p>wifi.getmode()</p>
|
||
<pre><code> 描述:获取wifi的工作模式
|
||
返回:wifi. STATION, wifi.SOFTAP或wifi.STATIONAP
|
||
</code></pre>
|
||
<p>wifi.startconfig( channel, function succeed_callback )</p>
|
||
<pre><code> 描述:开始智能配置,若成功自动设置ssid和pwd并退出
|
||
channel:1~13,起始搜索信道。若不指定,默认为6,每个信道搜索20秒
|
||
succeed_callback:配置成功后的回调函数,将在获取密码正确并连接上ap之后调用
|
||
</code></pre>
|
||
<p>wifi.stopconfig()</p>
|
||
<pre><code> 描述:中断智能配置
|
||
</code></pre>
|
||
<h2 id="wifistation-module"><a name="user-content-wifistation-module" href="#wifistation-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>wifi.station module</h2>
|
||
<p>wifi.station.setconfig(ssid, password)</p>
|
||
<pre><code> 描述:设置station模式下的ssid和password
|
||
ssid:字符串形式,长度小于32
|
||
password:字符串形式,长度小于64
|
||
</code></pre>
|
||
<p>wifi.station.connect()</p>
|
||
<pre><code> 描述:station模式下连接至ap
|
||
</code></pre>
|
||
<p>wifi.station.disconnect()</p>
|
||
<pre><code> 描述:station模式下断开与ap的连接
|
||
</code></pre>
|
||
<p>wifi.station.autoconnect(auto)</p>
|
||
<pre><code> 描述:station模式下设置自动连接至ap
|
||
auto:0表示设置为不自动连,1表示设置为自动连接
|
||
</code></pre>
|
||
<p>wifi.station.getip()</p>
|
||
<pre><code> 描述:station模式下获取ip
|
||
返回:字符串形式的ip,如“192.168.0.2”
|
||
</code></pre>
|
||
<p>wifi.station.getmac()</p>
|
||
<pre><code> 描述:station模式下获取mac
|
||
返回:字符串形式的mac,如“18-33-44-FE-55-BB”
|
||
</code></pre>
|
||
<h2 id="wifiap-module"><a name="user-content-wifiap-module" href="#wifiap-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>wifi.ap module</h2>
|
||
<p>wifi.ap.setconfig(cfg)</p>
|
||
<pre><code> 描述:设置station模式下的ssid和password
|
||
cfg:设置需要的map
|
||
</code></pre>
|
||
<p>例子:</p>
|
||
<pre><code> cfg={}
|
||
cfg.ssid=”myssid”
|
||
cfg.pwd=”mypwd”
|
||
wifi.ap.setconfig(cfg)
|
||
</code></pre>
|
||
<p>wifi.ap.getip()</p>
|
||
<pre><code> 描述:ap模式下获取ip
|
||
返回:字符串形式的ip,如“192.168.0.2”
|
||
</code></pre>
|
||
<p>wifi. ap.getmac()</p>
|
||
<pre><code> 描述:ap模式下获取mac
|
||
返回:字符串形式的mac,如“1A-33-44-FE-55-BB”
|
||
</code></pre>
|
||
<h2 id="gpio-module"><a name="user-content-gpio-module" href="#gpio-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>gpio module</h2>
|
||
<p>常量:gpio.OUTPUT, gpio.INPUT, gpio.HIGH, gpio.LOW</p>
|
||
<p>gpio.mode( pin, mode) </p>
|
||
<pre><code> 描述:设置对应pin的输入输出模式,将该pin初始化为gpio模式。
|
||
pin:0~11,IO索引编号
|
||
mode:gpio.OUTPUT或者gpio.INPUT
|
||
</code></pre>
|
||
<p>gpio.read(pin)</p>
|
||
<pre><code> 描述:读取对应pin的值
|
||
pin:0~11,IO索引编号
|
||
返回:0表示低,1表示高
|
||
</code></pre>
|
||
<p>gpio.write(pin, level)</p>
|
||
<pre><code> 描述:设置对应pin的值
|
||
pin:0~11,IO索引编号
|
||
level:gpio.HIGH或者gpio.LOW
|
||
</code></pre>
|
||
<p>例子:</p>
|
||
<pre><code> pin=1
|
||
gpio.mode(pin, gpio.OUTPUT)
|
||
gpio.write(pin, gpio.HIGH)
|
||
</code></pre>
|
||
<p>将索引1的pin设置为GPIO模式,并设置为高电平。</p>
|
||
<h2 id="net-module"><a name="user-content-net-module" href="#net-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>net module</h2>
|
||
<p>常量:net.TCP, net.UDP</p>
|
||
<p>net.createServer(type, secure)</p>
|
||
<pre><code> 描述:建立一个服务器
|
||
type:net.TCP或 net.UDP
|
||
secure:true 或者 false,表示是否为安全连接
|
||
返回:net.server子模块
|
||
</code></pre>
|
||
<p>net.createConnection(type, secure)</p>
|
||
<pre><code> 描述:建立一个客户端
|
||
type:net.TCP或 net.UDP
|
||
secure:true 或者 false,表示是否为安全连接
|
||
返回:net. socket子模块
|
||
</code></pre>
|
||
<h2 id="netserver-module"><a name="user-content-netserver-module" href="#netserver-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>net.server module</h2>
|
||
<p>listen(port,[ip])</p>
|
||
<pre><code> 描述:监听某端口
|
||
port:端口号
|
||
ip:可忽略,ip字符串
|
||
</code></pre>
|
||
<p>例子:</p>
|
||
<pre><code> sv=net.createServer(net.TCP, false)
|
||
sv:listen(80)
|
||
</code></pre>
|
||
<p>send( string, function(sent) )</p>
|
||
<pre><code> 描述:向连接的客户端发送数据
|
||
string:需要发送的数据字符串
|
||
</code></pre>
|
||
<p>on(event, function cb())</p>
|
||
<pre><code> 描述:注册事件的回调函数
|
||
event:字符串,可为:”connection”,”reconnection”,”disconnection”,”receive”,”sent”
|
||
function cb(net.server sv, [string]):回调函数。第一个参数为服务器本身。
|
||
若event为”receive”, 第二个参数为接收到数据,字符串形式。</code></pre>
|
||
<p>例子:</p>
|
||
<pre><code> sv=net.createServer(net.TCP, false)
|
||
sv:listen(80)
|
||
sv:on(“receive”, function(s,c) s:send(“Hello, world.”) print(c) end )</code></pre>
|
||
<p>close()</p>
|
||
<pre><code> 描述:关闭服务器
|
||
</code></pre>
|
||
<h2 id="netsocket-module"><a name="user-content-netsocket-module" href="#netsocket-module" class="headeranchor-link" aria-hidden="true"><span class="headeranchor"></span></a>net.socket module</h2>
|
||
<p>connect(port, ip)</p>
|
||
<pre><code> 描述:连接到某ip和端口
|
||
port:端口号
|
||
ip:ip字符串
|
||
</code></pre>
|
||
<p>send( string, function(sent) )</p>
|
||
<pre><code> 描述:向连接发送数据
|
||
string:需要发送的数据字符串
|
||
</code></pre>
|
||
<p>on(event, function cb())</p>
|
||
<pre><code> 描述:注册事件的回调函数
|
||
event:字符串,可为:”connection”,”reconnection”,”disconnection”,”receive”,”sent”
|
||
function cb(net.socket, [string]):回调函数。第一个参数为socket连接本身。
|
||
若event为”receive”, 第二个参数为接收到数据,字符串形式。</code></pre>
|
||
<p>例子:</p>
|
||
<pre><code> sk=net.createConnection(net.TCP, false)
|
||
sk:on(“receive”, function(sck, c) print(c) end )
|
||
sk:connect(80,”192.168.0.66”)
|
||
sk:send(“GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n”)</code></pre>
|
||
<p>close()</p>
|
||
<pre><code> 描述:关闭socket
|
||
</code></pre></article></body></html> |