diff --git a/.jazzy.yaml b/.jazzy.yaml index 304b575..9d9447a 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -1,6 +1,6 @@ module: SwiftJWT -author: IBM -github_url: https://github.com/IBM-Swift/Swift-JWT/ +author: IBM & Kitura Project Contributors +github_url: https://github.com/Kitura/Swift-JWT/ theme: fullwidth clean: true @@ -10,5 +10,3 @@ readme: README.md skip_undocumented: false hide_documentation_coverage: false - -xcodebuild_arguments: [-project, SwiftJWT.xcodeproj, -target, SwiftJWT, LIBRARY_SEARCH_PATHS=.build/debug] diff --git a/.travis.yml b/.travis.yml index fbc25d1..4395f27 100644 --- a/.travis.yml +++ b/.travis.yml @@ -66,7 +66,7 @@ matrix: env: SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT before_install: - - git clone https://github.com/IBM-Swift/Package-Builder.git + - git clone https://github.com/Kitura/Package-Builder.git script: - ./Package-Builder/build-package.sh -projectDir $TRAVIS_BUILD_DIR diff --git a/README.md b/README.md index 665ad78..53cdde9 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@

-Kitura +Kitura

- + APIDoc - -Build Status - Master + +Build Status - Master macOS Linux @@ -36,9 +36,9 @@ The latest version of Swift-JWT requires **Swift 4.0** or later. You can downloa ### Swift Package Manager #### Add dependencies -Add the `Swift-JWT` package to the dependencies within your application’s `Package.swift` file. Substitute `"x.x.x"` with the latest `Swift-JWT` [release](https://github.com/IBM-Swift/Swift-JWT/releases). +Add the `Swift-JWT` package to the dependencies within your application’s `Package.swift` file. Substitute `"x.x.x"` with the latest `Swift-JWT` [release](https://github.com/Kitura/Swift-JWT/releases). ```swift -.package(url: "https://github.com/IBM-Swift/Swift-JWT.git", from: "x.x.x") +.package(url: "https://github.com/Kitura/Swift-JWT.git", from: "x.x.x") ``` Add `SwiftJWT` to your target's dependencies: ```swift @@ -126,7 +126,7 @@ let publicKeyPath = URL(fileURLWithPath: getAbsolutePath(relativePath: "/path/to let publicKey: Data = try Data(contentsOf: publicKeyPath, options: .alwaysMapped) ``` -For details on creating elliptic curve public and private keys, view the [BlueECC README.txt](https://github.com/IBM-Swift/BlueECC). +For details on creating elliptic curve public and private keys, view the [BlueECC README.txt](https://github.com/Kitura/BlueECC). #### Sign a JWT using a JWTSigner @@ -225,7 +225,7 @@ The JWTEncoder and JWTDecoder classes encode and decode JWT Strings using the sa let jwt = try jwtDecoder.decode(JWT.self, fromString: jwtString) ``` -Because JWTEncoder and JWTDecoder conform to [KituraContract's](https://github.com/IBM-Swift/KituraContracts/blob/master/Sources/KituraContracts/Contracts.swift) BodyEncoder and BodyDecoder protocols, they can be used as a [custom coder](https://developer.ibm.com/swift/2018/09/01/kitura-custom-encoders-and-decoders/) in Codable routes for sending and receiving JWTs: +Because JWTEncoder and JWTDecoder conform to [KituraContract's](https://github.com/Kitura/KituraContracts/blob/master/Sources/KituraContracts/Contracts.swift) BodyEncoder and BodyDecoder protocols, they can be used as a [custom coder](https://developer.ibm.com/swift/2018/09/01/kitura-custom-encoders-and-decoders/) in Codable routes for sending and receiving JWTs: ```swift router.encoders[MediaType(type: .application, subType: "jwt")] = { return jwtEncoder } @@ -235,11 +235,11 @@ Because JWTEncoder and JWTDecoder conform to [KituraContract's](https://github.c This allows for the use of JWT's in information exchange. By sending and receiving JWT's you can ensure the sending is who they say they are and verify the content hasn't been tampered with. ## API Documentation -For more information visit our [API reference](https://ibm-swift.github.io/Swift-JWT/index.html). +For more information visit our [API reference](https://kitura.github.io/Swift-JWT/index.html). ## Community We love to talk server-side Swift, and Kitura. Join our [Slack](http://swift-at-ibm-slack.mybluemix.net/) to meet the team! ## License -This library is licensed under Apache 2.0. Full license text is available in [LICENSE](https://github.com/IBM-Swift/Swift-JWT/blob/master/LICENSE). +This library is licensed under Apache 2.0. Full license text is available in [LICENSE](https://github.com/Kitura/Swift-JWT/blob/master/LICENSE). diff --git a/docs/Classes.html b/docs/Classes.html index 4eb8b06..9527384 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,7 +109,7 @@

-
+

Classes

The following classes are available globally.

@@ -148,10 +148,6 @@

Declaration

- - -
-
  • @@ -180,10 +176,6 @@

    Declaration

  • -
-
-
-
  • @@ -218,9 +210,11 @@

    Declaration

    - -

    JWTEncoder

    -
    +
    + +

    JWTEncoder

    +

    +
    • @@ -270,9 +264,11 @@

      Declaration

      - -

      JWTDecoder

      -
      +
      + +

      JWTDecoder

      +

      +
      • @@ -323,8 +319,8 @@

        Declaration

diff --git a/docs/Classes/ClaimsMicroProfile.html b/docs/Classes/ClaimsMicroProfile.html index 3c17551..c61a600 100644 --- a/docs/Classes/ClaimsMicroProfile.html +++ b/docs/Classes/ClaimsMicroProfile.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ClaimsMicroProfile

+
public class ClaimsMicroProfile : Claims
@@ -131,7 +132,7 @@

ClaimsMicroProfile

- init(iss:sub:exp:iat:jti:upn:groups:) + init(iss:sub:exp:iat:jti:upn:groups:)
@@ -282,7 +283,7 @@

Declaration

-

The jti (JWT ID) claim provides a unique identifier for the JWT. +

The “jti” (JWT ID) claim provides a unique identifier for the JWT. The identifier value MUST be assigned in a manner that ensures that there is a negligible probability that the same value will be accidentally assigned to a different data object.

@@ -312,7 +313,7 @@

Declaration

-

This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the preferred_username, should be attempted, and if that claim is missing, fallback to the sub claim should be used.

+

This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the “preferred_username”, should be attempted, and if that claim is missing, fallback to the “sub” claim should be used.

@@ -388,8 +389,8 @@

Declaration

diff --git a/docs/Classes/ClaimsOpenID.html b/docs/Classes/ClaimsOpenID.html index b32433e..93bb8d6 100644 --- a/docs/Classes/ClaimsOpenID.html +++ b/docs/Classes/ClaimsOpenID.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ClaimsOpenID

@@ -189,9 +190,11 @@

Declaration

- -

ID Token

-
+
+ +

ID Token

+

+
  • @@ -396,7 +399,7 @@

    Declaration

    -

    Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value 0 indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.

    +

    Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value “0” indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.

    @@ -470,9 +473,11 @@

    Declaration

    - -

    Standard Claims

    -
    +
    + +

    Standard Claims

    +

    +
    • @@ -996,8 +1001,8 @@

      Declaration

diff --git a/docs/Classes/ClaimsStandardJWT.html b/docs/Classes/ClaimsStandardJWT.html index d30aed5..50ae28a 100644 --- a/docs/Classes/ClaimsStandardJWT.html +++ b/docs/Classes/ClaimsStandardJWT.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ClaimsStandardJWT

+
public class ClaimsStandardJWT : Claims
@@ -131,7 +132,7 @@

ClaimsStandardJWT

- init(iss:sub:aud:exp:nbf:iat:jti:) + init(iss:sub:aud:exp:nbf:iat:jti:)
@@ -174,9 +175,9 @@

Declaration

-

The iss (issuer) claim identifies the principal that issued the +

The “iss” (issuer) claim identifies the principal that issued the JWT. The processing of this claim is generally application specific. -The iss value is a case-sensitive.

+The “iss” value is a case-sensitive.

@@ -203,12 +204,12 @@

Declaration

-

The sub (subject) claim identifies the principal that is the +

The “sub” (subject) claim identifies the principal that is the subject of the JWT. The claims in a JWT are normally statements about the subject. The subject value MUST either be scoped to be locally unique in the context of the issuer or be globally unique. The processing of this claim is generally application specific. The -sub value is case-sensitive.

+“sub” value is case-sensitive.

@@ -235,13 +236,13 @@

Declaration

-

The aud (audience) claim identifies the recipients that the JWT is +

The “aud” (audience) claim identifies the recipients that the JWT is intended for. Each principal intended to process the JWT MUST identify itself with a value in the audience claim. If the principal processing the claim does not identify itself with a value in the -aud claim when this claim is present, then the JWT MUST be +“aud” claim when this claim is present, then the JWT MUST be rejected. The interpretation of audience values is generally application specific. -The aud value is case-sensitive.

+The “aud” value is case-sensitive.

@@ -268,10 +269,10 @@

Declaration

-

The exp (expiration time) claim identifies the expiration time on +

The “exp” (expiration time) claim identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. The -processing of the exp claim requires that the current date/time -MUST be before the expiration date/time listed in the exp claim. +processing of the “exp” claim requires that the current date/time +MUST be before the expiration date/time listed in the “exp” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -300,10 +301,10 @@

Declaration

-

The nbf (not before) claim identifies the time before which the JWT -MUST NOT be accepted for processing. The processing of the nbf +

The “nbf” (not before) claim identifies the time before which the JWT +MUST NOT be accepted for processing. The processing of the “nbf” claim requires that the current date/time MUST be after or equal to -the not-before date/time listed in the nbf claim. Implementers MAY +the not-before date/time listed in the “nbf” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -332,7 +333,7 @@

Declaration

-

The iat (issued at) claim identifies the time at which the JWT was +

The “iat” (issued at) claim identifies the time at which the JWT was issued. This claim can be used to determine the age of the JWT.

@@ -360,13 +361,13 @@

Declaration

-

The jti (JWT ID) claim provides a unique identifier for the JWT. +

The “jti” (JWT ID) claim provides a unique identifier for the JWT. The identifier value MUST be assigned in a manner that ensures that there is a negligible probability that the same value will be accidentally assigned to a different data object; if the application uses multiple issuers, collisions MUST be prevented among values -produced by different issuers as well. The jti claim can be used -to prevent the JWT from being replayed. The jti value is case- +produced by different issuers as well. The “jti” claim can be used +to prevent the JWT from being replayed. The “jti” value is case- sensitive

@@ -389,8 +390,8 @@

Declaration

diff --git a/docs/Classes/JWTDecoder.html b/docs/Classes/JWTDecoder.html index d0cf470..f823c60 100644 --- a/docs/Classes/JWTDecoder.html +++ b/docs/Classes/JWTDecoder.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTDecoder

+
public class JWTDecoder : BodyDecoder
@@ -140,9 +141,11 @@

Usage Example:

- -

Initializers

-
+
+ +

Initializers

+

+
@@ -200,7 +203,7 @@

Return Value

- init(keyIDToVerifier:) + init(keyIDToVerifier:)
@@ -231,7 +234,7 @@

Parameters

-

The function that will generate the JWTVerifier using the kid header.

+

The function that will generate the JWTVerifier using the “kid” header.

@@ -251,9 +254,11 @@

Return Value

- -

Decode

-
+
+ +

Decode

+

+
@@ -274,18 +279,15 @@

Decode

Throws

JWTError.invalidJWTString if the provided String is not in the form mandated by the JWT specification. -
-
+

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a jwtVerifier. -
-
+

Throws

JWTError.failedVerification if the JWTVerifier fails to verify the decoded String. -
-
+

Throws

DecodingError if the decoder fails to decode the String as the provided type. @@ -343,7 +345,7 @@

Return Value

- decode(_:from:) + decode(_:from:)
@@ -356,23 +358,19 @@

Return Value

Throws

JWTError.invalidUTF8Data if the provided Data can’t be decoded to a String. -
-
+

Throws

JWTError.invalidJWTString if the provided String is not in the form mandated by the JWT specification. -
-
+

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a JWTVerifier. -
-
+

Throws

JWTError.failedVerification if the JWTVerifier fails to verify the decoded String. -
-
+

Throws

DecodingError if the decoder fails to decode the String as the provided type. @@ -425,16 +423,12 @@

Return Value

- - -
-
diff --git a/docs/Classes/JWTEncoder.html b/docs/Classes/JWTEncoder.html index b002fa6..ad0d3f3 100644 --- a/docs/Classes/JWTEncoder.html +++ b/docs/Classes/JWTEncoder.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTEncoder

+
public class JWTEncoder : BodyEncoder
@@ -141,9 +142,11 @@

Usage Example:

- -

Initializers

-
+
+ +

Initializers

+

+
@@ -201,7 +204,7 @@

Return Value

- init(keyIDToSigner:) + init(keyIDToSigner:)
@@ -252,9 +255,11 @@

Return Value

- -

Encode

-
+
+ +

Encode

+

+
@@ -275,13 +280,11 @@

Encode

Throws

JWTError.invalidUTF8Data if the provided Data can’t be decoded to a String. -
-
+

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a jwtSigner. -
-
+

Throws

EncodingError if the encoder fails to encode the object as Data. @@ -327,7 +330,7 @@

Return Value

- encodeToString(_:) + encodeToString(_:)
@@ -340,8 +343,7 @@

Return Value

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a jwtSigner. -
-
+

Throws

EncodingError if the encoder fails to encode the object as Data. @@ -382,16 +384,12 @@

Return Value

- - -
-
diff --git a/docs/Protocols.html b/docs/Protocols.html index 36b2e1a..55bdfbc 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,7 +109,7 @@

-
+

Protocols

The following protocols are available globally.

@@ -122,9 +122,11 @@

Protocols

- -

Claims

-
+
+ +

Claims

+

+
  • @@ -172,8 +174,8 @@

    Declaration

diff --git a/docs/Protocols/Claims.html b/docs/Protocols/Claims.html index c189d5e..6e5ed5e 100644 --- a/docs/Protocols/Claims.html +++ b/docs/Protocols/Claims.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

Claims

+
public protocol Claims : Decodable, Encodable
@@ -151,10 +152,10 @@

Usage Example:

-

The exp (expiration time) claim identifies the expiration time on +

The “exp” (expiration time) claim identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. The -processing of the exp claim requires that the current date/time -MUST be before the expiration date/time listed in the exp claim. +processing of the “exp” claim requires that the current date/time +MUST be before the expiration date/time listed in the “exp” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -190,10 +191,10 @@

Declaration

-

The nbf (not before) claim identifies the time before which the JWT -MUST NOT be accepted for processing. The processing of the nbf +

The “nbf” (not before) claim identifies the time before which the JWT +MUST NOT be accepted for processing. The processing of the “nbf” claim requires that the current date/time MUST be after or equal to -the not-before date/time listed in the nbf claim. Implementers MAY +the not-before date/time listed in the “nbf” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -229,7 +230,7 @@

Declaration

-

The iat (issued at) claim identifies the time at which the JWT was +

The “iat” (issued at) claim identifies the time at which the JWT was issued. This claim can be used to determine the age of the JWT.

@@ -290,8 +291,8 @@

Declaration

diff --git a/docs/Structs.html b/docs/Structs.html index 67e1965..10ce2ce 100644 --- a/docs/Structs.html +++ b/docs/Structs.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,7 +109,7 @@

-
+

Structures

The following structures are available globally.

@@ -154,9 +154,11 @@

Declaration

- -

Header

-
+
+ +

Header

+

+
diff --git a/docs/Structs/AddressClaim.html b/docs/Structs/AddressClaim.html index b0f1cb9..e5cec08 100644 --- a/docs/Structs/AddressClaim.html +++ b/docs/Structs/AddressClaim.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

AddressClaim

+
public struct AddressClaim : Codable
@@ -139,7 +140,7 @@

AddressClaim

-

Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (\r\n) or as a single line feed character (\n).

+

Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (“\r\n”) or as a single line feed character (“\n”).

@@ -166,7 +167,7 @@

Declaration

-

Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (\r\n) or as a single line feed character (\n).

+

Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (“\r\n”) or as a single line feed character (“\n”).

@@ -296,8 +297,8 @@

Declaration

diff --git a/docs/Structs/Header.html b/docs/Structs/Header.html index 9359e39..e52e74f 100644 --- a/docs/Structs/Header.html +++ b/docs/Structs/Header.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

Header

+
public struct Header : Codable
@@ -181,7 +182,7 @@

Declaration

Declaration

Swift

-
public internal(set) var alg: String?
+
public internal(set) var alg: String? { get }
@@ -436,7 +437,7 @@

Declaration

- init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:) + init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:)
@@ -538,7 +539,7 @@

Parameters

-

The X.509 Certificate SHA-1 Thumbprint Header Parameter

+

The X.509 Certificate Chain Header Parameter

@@ -550,7 +551,7 @@

Parameters

-

The X.509 Certificate Chain Header Parameter

+

The X.509 Certificate SHA-1 Thumbprint Header Parameter

@@ -608,8 +609,8 @@

Return Value

diff --git a/docs/Structs/JWT.html b/docs/Structs/JWT.html index e8f2854..e190917 100644 --- a/docs/Structs/JWT.html +++ b/docs/Structs/JWT.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWT

+
public struct JWT<T> : Codable where T : Claims
@@ -193,7 +194,7 @@

Declaration

- init(header:claims:) + init(header:claims:)
@@ -255,7 +256,7 @@

Return Value

- init(jwtString:verifier:) + init(jwtString:verifier:)
@@ -271,13 +272,11 @@

Return Value

Throws

JWTError.invalidJWTString if the provided String is not in the form mandated by the JWT specification. -
-
+

Throws

JWTError.failedVerification if the verifier fails to verify the jwtString. -
-
+

Throws

A DecodingError if the JSONDecoder throws an error while decoding the JWT. @@ -335,7 +334,7 @@

Return Value

- sign(using:) + sign(using:)
@@ -348,18 +347,15 @@

Return Value

Note

This function will set header.alg field to the name of the signing algorithm.

-
-
+

Throws

An EncodingError if the JSONEncoder throws an error while encoding the JWT.

-
-
+

Throws

JWTError.osVersionToLow if not using macOS 10.12.0 (Sierra) or iOS 10.0 or higher.

-
-
+

Throws

A Signing error if the jwtSigner is unable to sign the JWT with the provided key.

@@ -386,7 +382,7 @@

Return Value

- verify(_:using:) + verify(_:using:)
@@ -436,7 +432,7 @@

Return Value

- validateClaims(leeway:) + validateClaims(leeway:)
@@ -445,8 +441,8 @@

Return Value

Validate the time based standard JWT claims. -This function checks that the exp (expiration time) is in the future -and the iat (issued at) and nbf (not before) headers are in the past,

+This function checks that the “exp” (expiration time) is in the future +and the “iat” (issued at) and “nbf” (not before) headers are in the past,

@@ -491,8 +487,8 @@

Return Value

diff --git a/docs/Structs/JWTError.html b/docs/Structs/JWTError.html index 7864f0d..8326062 100644 --- a/docs/Structs/JWTError.html +++ b/docs/Structs/JWTError.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTError

+
public struct JWTError : Error, Equatable
@@ -347,7 +348,7 @@

Declaration

- ==(_:_:) + ==(_:_:)
@@ -374,7 +375,7 @@

Declaration

- ~=(_:_:) + ~=(_:_:)
@@ -404,8 +405,8 @@

Declaration

diff --git a/docs/Structs/JWTSigner.html b/docs/Structs/JWTSigner.html index 7308af9..a5319f7 100644 --- a/docs/Structs/JWTSigner.html +++ b/docs/Structs/JWTSigner.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTSigner

+
public struct JWTSigner
@@ -158,7 +159,7 @@

Usage Example:

- rs256(privateKey:) + rs256(privateKey:)
@@ -189,7 +190,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -204,7 +205,7 @@

Parameters

- rs384(privateKey:) + rs384(privateKey:)
@@ -235,7 +236,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -250,7 +251,7 @@

Parameters

- rs512(privateKey:) + rs512(privateKey:)
@@ -281,7 +282,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -296,7 +297,7 @@

Parameters

- ps256(privateKey:) + ps256(privateKey:)
@@ -327,7 +328,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -342,7 +343,7 @@

Parameters

- ps384(privateKey:) + ps384(privateKey:)
@@ -373,7 +374,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -388,7 +389,7 @@

Parameters

- ps512(privateKey:) + ps512(privateKey:)
@@ -420,7 +421,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -435,7 +436,7 @@

Parameters

- hs256(key:) + hs256(key:)
@@ -481,7 +482,7 @@

Parameters

- hs384(key:) + hs384(key:)
@@ -527,7 +528,7 @@

Parameters

- hs512(key:) + hs512(key:)
@@ -573,7 +574,7 @@

Parameters

- es256(privateKey:) + es256(privateKey:)
@@ -588,7 +589,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es256(privateKey: Data) -> JWTSigner
@@ -605,7 +606,7 @@

Parameters

-

The UTF8 encoded PEM private key, with either a BEGIN EC PRIVATE KEY or BEGIN PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with either a “BEGIN EC PRIVATE KEY” or “BEGIN PRIVATE KEY” header.

@@ -620,7 +621,7 @@

Parameters

- es384(privateKey:) + es384(privateKey:)
@@ -635,7 +636,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es384(privateKey: Data) -> JWTSigner
@@ -652,7 +653,7 @@

Parameters

-

The UTF8 encoded PEM private key, with either a BEGIN EC PRIVATE KEY or BEGIN PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with either a “BEGIN EC PRIVATE KEY” or “BEGIN PRIVATE KEY” header.

@@ -667,7 +668,7 @@

Parameters

- es512(privateKey:) + es512(privateKey:)
@@ -682,7 +683,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es512(privateKey: Data) -> JWTSigner
@@ -699,7 +700,7 @@

Parameters

-

The UTF8 encoded PEM private key, with either a BEGIN EC PRIVATE KEY or BEGIN PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with either a “BEGIN EC PRIVATE KEY” or “BEGIN PRIVATE KEY” header.

@@ -722,7 +723,7 @@

Parameters

-

Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the none alg header.

+

Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the “none” alg header.

@@ -744,8 +745,8 @@

Declaration

diff --git a/docs/Structs/JWTVerifier.html b/docs/Structs/JWTVerifier.html index c232ff5..dd01c42 100644 --- a/docs/Structs/JWTVerifier.html +++ b/docs/Structs/JWTVerifier.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTVerifier

+
public struct JWTVerifier
@@ -150,7 +151,7 @@

Usage Example:

- rs256(publicKey:) + rs256(publicKey:)
@@ -181,7 +182,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -196,7 +197,7 @@

Parameters

- rs384(publicKey:) + rs384(publicKey:)
@@ -227,7 +228,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -242,7 +243,7 @@

Parameters

- rs512(publicKey:) + rs512(publicKey:)
@@ -273,7 +274,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -288,7 +289,7 @@

Parameters

- rs256(certificate:) + rs256(certificate:)
@@ -319,7 +320,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN CERTIFICATE header.

+

The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.

@@ -334,7 +335,7 @@

Parameters

- rs384(certificate:) + rs384(certificate:)
@@ -365,7 +366,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN CERTIFICATE header.

+

The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.

@@ -380,7 +381,7 @@

Parameters

- rs512(certificate:) + rs512(certificate:)
@@ -411,7 +412,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN CERTIFICATE header.

+

The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.

@@ -426,7 +427,7 @@

Parameters

- ps256(publicKey:) + ps256(publicKey:)
@@ -457,7 +458,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -472,7 +473,7 @@

Parameters

- ps384(publicKey:) + ps384(publicKey:)
@@ -503,7 +504,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -518,7 +519,7 @@

Parameters

- ps512(publicKey:) + ps512(publicKey:)
@@ -550,7 +551,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -565,7 +566,7 @@

Parameters

- hs256(key:) + hs256(key:)
@@ -611,7 +612,7 @@

Parameters

- hs384(key:) + hs384(key:)
@@ -657,7 +658,7 @@

Parameters

- hs512(key:) + hs512(key:)
@@ -703,7 +704,7 @@

Parameters

- es256(publicKey:) + es256(publicKey:)
@@ -718,7 +719,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es256(publicKey: Data) -> JWTVerifier
@@ -735,7 +736,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -750,7 +751,7 @@

Parameters

- es384(publicKey:) + es384(publicKey:)
@@ -765,7 +766,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es384(publicKey: Data) -> JWTVerifier
@@ -782,7 +783,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -797,7 +798,7 @@

Parameters

- es512(publicKey:) + es512(publicKey:)
@@ -812,7 +813,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es512(publicKey: Data) -> JWTVerifier
@@ -829,7 +830,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -852,7 +853,7 @@

Parameters

-

Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the none alg header.

+

Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the “none” alg header.

@@ -874,8 +875,8 @@

Declaration

diff --git a/docs/Structs/ValidateClaimsResult.html b/docs/Structs/ValidateClaimsResult.html index 31e5c51..0305cae 100644 --- a/docs/Structs/ValidateClaimsResult.html +++ b/docs/Structs/ValidateClaimsResult.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ValidateClaimsResult

+
public struct ValidateClaimsResult : CustomStringConvertible, Equatable
@@ -349,7 +350,7 @@

Declaration

- ==(_:_:) + ==(_:_:)
@@ -379,8 +380,8 @@

Declaration

diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css index 24cfe4a..ff59f5f 100644 --- a/docs/css/jazzy.css +++ b/docs/css/jazzy.css @@ -94,10 +94,10 @@ pre { code { font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } -p > code, li > code { +.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { background: #f7f7f7; padding: .2em; } - p > code:before, p > code:after, li > code:before, li > code:after { + .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { letter-spacing: -.2em; content: "\00a0"; } @@ -111,7 +111,6 @@ pre code { @media (min-width: 768px) { .content-wrapper { flex-direction: row; } } - .header { display: flex; padding: 8px; @@ -157,7 +156,6 @@ pre code { word-wrap: normal; background: #fbfbfb; border-right: 1px solid #ddd; } } - .nav-groups { list-style-type: none; padding-left: 0; } @@ -188,7 +186,6 @@ pre code { order: 2; flex: 1; padding-bottom: 60px; } } - .section { padding: 0 32px; border-bottom: 1px solid #ddd; } @@ -201,6 +198,8 @@ pre code { .section-name { color: #666; display: block; } + .section-name p { + margin-bottom: inherit; } .declaration .highlight { overflow-x: initial; @@ -219,6 +218,22 @@ pre code { content: ""; display: block; } +.section-name-container { + position: relative; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + .item-container { padding: 0; } @@ -230,8 +245,10 @@ pre code { content: ""; display: block; } .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; padding-left: 3px; - margin-left: 0px; + margin-left: 20px; font-size: 1rem; } .item .declaration-note { font-size: .85em; @@ -329,6 +346,7 @@ pre code { html.dash .header, html.dash .breadcrumbs, html.dash .navigation { display: none; } + html.dash .height-container { display: block; } @@ -342,14 +360,17 @@ form[role=search] input { border-radius: 1em; } .loading form[role=search] input { background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { margin: 0; min-width: 300px; background: #fbfbfb; color: #333; border: 1px solid #ddd; } + form[role=search] .tt-highlight { font-weight: bold; } + form[role=search] .tt-suggestion { font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 0 8px; } @@ -362,11 +383,13 @@ form[role=search] .tt-suggestion { font-weight: normal; font-size: 0.9em; padding-left: 16px; } + form[role=search] .tt-suggestion:hover, form[role=search] .tt-suggestion.tt-cursor { cursor: pointer; background-color: #4183c4; color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { color: #fff; } diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes.html index 4eb8b06..9527384 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,7 +109,7 @@

-
+

Classes

The following classes are available globally.

@@ -148,10 +148,6 @@

Declaration

- - -
-
  • @@ -180,10 +176,6 @@

    Declaration

  • -
-
-
-
  • @@ -218,9 +210,11 @@

    Declaration

    - -

    JWTEncoder

    -
    +
    + +

    JWTEncoder

    +

    +
    • @@ -270,9 +264,11 @@

      Declaration

      - -

      JWTDecoder

      -
      +
      + +

      JWTDecoder

      +

      +
      • @@ -323,8 +319,8 @@

        Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsMicroProfile.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsMicroProfile.html index 3c17551..c61a600 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsMicroProfile.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsMicroProfile.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ClaimsMicroProfile

+
public class ClaimsMicroProfile : Claims
@@ -131,7 +132,7 @@

ClaimsMicroProfile

- init(iss:sub:exp:iat:jti:upn:groups:) + init(iss:sub:exp:iat:jti:upn:groups:)
@@ -282,7 +283,7 @@

Declaration

-

The jti (JWT ID) claim provides a unique identifier for the JWT. +

The “jti” (JWT ID) claim provides a unique identifier for the JWT. The identifier value MUST be assigned in a manner that ensures that there is a negligible probability that the same value will be accidentally assigned to a different data object.

@@ -312,7 +313,7 @@

Declaration

-

This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the preferred_username, should be attempted, and if that claim is missing, fallback to the sub claim should be used.

+

This MP-JWT custom claim is the user principal name in the java.security.Principal interface, and is the caller principal name in javax.security.enterprise.identitystore.IdentityStore. If this claim is missing, fallback to the “preferred_username”, should be attempted, and if that claim is missing, fallback to the “sub” claim should be used.

@@ -388,8 +389,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsOpenID.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsOpenID.html index b32433e..93bb8d6 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsOpenID.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsOpenID.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ClaimsOpenID

@@ -189,9 +190,11 @@

Declaration

- -

ID Token

-
+
+ +

ID Token

+

+
  • @@ -396,7 +399,7 @@

    Declaration

    -

    Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value 0 indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.

    +

    Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied. The value “0” indicates the End-User authentication did not meet the requirements of ISO/IEC 29115 level 1. Authentications with level 0 SHOULD NOT be used to authorize access to any resource of any monetary value. Parties using this claim will need to agree upon the meanings of the values used, which may be context-specific.

    @@ -470,9 +473,11 @@

    Declaration

    - -

    Standard Claims

    -
    +
    + +

    Standard Claims

    +

    +
    • @@ -996,8 +1001,8 @@

      Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsStandardJWT.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsStandardJWT.html index d30aed5..50ae28a 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsStandardJWT.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/ClaimsStandardJWT.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ClaimsStandardJWT

+
public class ClaimsStandardJWT : Claims
@@ -131,7 +132,7 @@

ClaimsStandardJWT

- init(iss:sub:aud:exp:nbf:iat:jti:) + init(iss:sub:aud:exp:nbf:iat:jti:)
@@ -174,9 +175,9 @@

Declaration

-

The iss (issuer) claim identifies the principal that issued the +

The “iss” (issuer) claim identifies the principal that issued the JWT. The processing of this claim is generally application specific. -The iss value is a case-sensitive.

+The “iss” value is a case-sensitive.

@@ -203,12 +204,12 @@

Declaration

-

The sub (subject) claim identifies the principal that is the +

The “sub” (subject) claim identifies the principal that is the subject of the JWT. The claims in a JWT are normally statements about the subject. The subject value MUST either be scoped to be locally unique in the context of the issuer or be globally unique. The processing of this claim is generally application specific. The -sub value is case-sensitive.

+“sub” value is case-sensitive.

@@ -235,13 +236,13 @@

Declaration

-

The aud (audience) claim identifies the recipients that the JWT is +

The “aud” (audience) claim identifies the recipients that the JWT is intended for. Each principal intended to process the JWT MUST identify itself with a value in the audience claim. If the principal processing the claim does not identify itself with a value in the -aud claim when this claim is present, then the JWT MUST be +“aud” claim when this claim is present, then the JWT MUST be rejected. The interpretation of audience values is generally application specific. -The aud value is case-sensitive.

+The “aud” value is case-sensitive.

@@ -268,10 +269,10 @@

Declaration

-

The exp (expiration time) claim identifies the expiration time on +

The “exp” (expiration time) claim identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. The -processing of the exp claim requires that the current date/time -MUST be before the expiration date/time listed in the exp claim. +processing of the “exp” claim requires that the current date/time +MUST be before the expiration date/time listed in the “exp” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -300,10 +301,10 @@

Declaration

-

The nbf (not before) claim identifies the time before which the JWT -MUST NOT be accepted for processing. The processing of the nbf +

The “nbf” (not before) claim identifies the time before which the JWT +MUST NOT be accepted for processing. The processing of the “nbf” claim requires that the current date/time MUST be after or equal to -the not-before date/time listed in the nbf claim. Implementers MAY +the not-before date/time listed in the “nbf” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -332,7 +333,7 @@

Declaration

-

The iat (issued at) claim identifies the time at which the JWT was +

The “iat” (issued at) claim identifies the time at which the JWT was issued. This claim can be used to determine the age of the JWT.

@@ -360,13 +361,13 @@

Declaration

-

The jti (JWT ID) claim provides a unique identifier for the JWT. +

The “jti” (JWT ID) claim provides a unique identifier for the JWT. The identifier value MUST be assigned in a manner that ensures that there is a negligible probability that the same value will be accidentally assigned to a different data object; if the application uses multiple issuers, collisions MUST be prevented among values -produced by different issuers as well. The jti claim can be used -to prevent the JWT from being replayed. The jti value is case- +produced by different issuers as well. The “jti” claim can be used +to prevent the JWT from being replayed. The “jti” value is case- sensitive

@@ -389,8 +390,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTDecoder.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTDecoder.html index d0cf470..f823c60 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTDecoder.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTDecoder.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTDecoder

+
public class JWTDecoder : BodyDecoder
@@ -140,9 +141,11 @@

Usage Example:

- -

Initializers

-
+
+ +

Initializers

+

+
@@ -200,7 +203,7 @@

Return Value

- init(keyIDToVerifier:) + init(keyIDToVerifier:)
@@ -231,7 +234,7 @@

Parameters

-

The function that will generate the JWTVerifier using the kid header.

+

The function that will generate the JWTVerifier using the “kid” header.

@@ -251,9 +254,11 @@

Return Value

- -

Decode

-
+
+ +

Decode

+

+
@@ -274,18 +279,15 @@

Decode

Throws

JWTError.invalidJWTString if the provided String is not in the form mandated by the JWT specification. -
-
+

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a jwtVerifier. -
-
+

Throws

JWTError.failedVerification if the JWTVerifier fails to verify the decoded String. -
-
+

Throws

DecodingError if the decoder fails to decode the String as the provided type. @@ -343,7 +345,7 @@

Return Value

- decode(_:from:) + decode(_:from:)
@@ -356,23 +358,19 @@

Return Value

Throws

JWTError.invalidUTF8Data if the provided Data can’t be decoded to a String. -
-
+

Throws

JWTError.invalidJWTString if the provided String is not in the form mandated by the JWT specification. -
-
+

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a JWTVerifier. -
-
+

Throws

JWTError.failedVerification if the JWTVerifier fails to verify the decoded String. -
-
+

Throws

DecodingError if the decoder fails to decode the String as the provided type. @@ -425,16 +423,12 @@

Return Value

- - -
-
diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTEncoder.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTEncoder.html index b002fa6..ad0d3f3 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTEncoder.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Classes/JWTEncoder.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTEncoder

+
public class JWTEncoder : BodyEncoder
@@ -141,9 +142,11 @@

Usage Example:

- -

Initializers

-
+
+ +

Initializers

+

+
@@ -201,7 +204,7 @@

Return Value

- init(keyIDToSigner:) + init(keyIDToSigner:)
@@ -252,9 +255,11 @@

Return Value

- -

Encode

-
+
+ +

Encode

+

+
@@ -275,13 +280,11 @@

Encode

Throws

JWTError.invalidUTF8Data if the provided Data can’t be decoded to a String. -
-
+

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a jwtSigner. -
-
+

Throws

EncodingError if the encoder fails to encode the object as Data. @@ -327,7 +330,7 @@

Return Value

- encodeToString(_:) + encodeToString(_:)
@@ -340,8 +343,7 @@

Return Value

Throws

JWTError.invalidKeyID if the KeyID kid header fails to generate a jwtSigner. -
-
+

Throws

EncodingError if the encoder fails to encode the object as Data. @@ -382,16 +384,12 @@

Return Value

- - -
-
diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols.html index 36b2e1a..55bdfbc 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,7 +109,7 @@

-
+

Protocols

The following protocols are available globally.

@@ -122,9 +122,11 @@

Protocols

- -

Claims

-
+
+ +

Claims

+

+
  • @@ -172,8 +174,8 @@

    Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols/Claims.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols/Claims.html index c189d5e..6e5ed5e 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols/Claims.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Protocols/Claims.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

Claims

+
public protocol Claims : Decodable, Encodable
@@ -151,10 +152,10 @@

Usage Example:

-

The exp (expiration time) claim identifies the expiration time on +

The “exp” (expiration time) claim identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. The -processing of the exp claim requires that the current date/time -MUST be before the expiration date/time listed in the exp claim. +processing of the “exp” claim requires that the current date/time +MUST be before the expiration date/time listed in the “exp” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -190,10 +191,10 @@

Declaration

-

The nbf (not before) claim identifies the time before which the JWT -MUST NOT be accepted for processing. The processing of the nbf +

The “nbf” (not before) claim identifies the time before which the JWT +MUST NOT be accepted for processing. The processing of the “nbf” claim requires that the current date/time MUST be after or equal to -the not-before date/time listed in the nbf claim. Implementers MAY +the not-before date/time listed in the “nbf” claim. Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.

@@ -229,7 +230,7 @@

Declaration

-

The iat (issued at) claim identifies the time at which the JWT was +

The “iat” (issued at) claim identifies the time at which the JWT was issued. This claim can be used to determine the age of the JWT.

@@ -290,8 +291,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs.html index 67e1965..10ce2ce 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,7 +109,7 @@

-
+

Structures

The following structures are available globally.

@@ -154,9 +154,11 @@

Declaration

- -

Header

-
+
+ +

Header

+

+
diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/AddressClaim.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/AddressClaim.html index b0f1cb9..e5cec08 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/AddressClaim.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/AddressClaim.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

AddressClaim

+
public struct AddressClaim : Codable
@@ -139,7 +140,7 @@

AddressClaim

-

Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (\r\n) or as a single line feed character (\n).

+

Full mailing address, formatted for display or use on a mailing label. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (“\r\n”) or as a single line feed character (“\n”).

@@ -166,7 +167,7 @@

Declaration

-

Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (\r\n) or as a single line feed character (\n).

+

Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information. This field MAY contain multiple lines, separated by newlines. Newlines can be represented either as a carriage return/line feed pair (“\r\n”) or as a single line feed character (“\n”).

@@ -296,8 +297,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/Header.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/Header.html index 9359e39..e52e74f 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/Header.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/Header.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

Header

+
public struct Header : Codable
@@ -181,7 +182,7 @@

Declaration

Declaration

Swift

-
public internal(set) var alg: String?
+
public internal(set) var alg: String? { get }
@@ -436,7 +437,7 @@

Declaration

- init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:) + init(typ:jku:jwk:kid:x5u:x5c:x5t:x5tS256:cty:crit:)
@@ -538,7 +539,7 @@

Parameters

-

The X.509 Certificate SHA-1 Thumbprint Header Parameter

+

The X.509 Certificate Chain Header Parameter

@@ -550,7 +551,7 @@

Parameters

-

The X.509 Certificate Chain Header Parameter

+

The X.509 Certificate SHA-1 Thumbprint Header Parameter

@@ -608,8 +609,8 @@

Return Value

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWT.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWT.html index e8f2854..e190917 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWT.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWT.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWT

+
public struct JWT<T> : Codable where T : Claims
@@ -193,7 +194,7 @@

Declaration

- init(header:claims:) + init(header:claims:)
@@ -255,7 +256,7 @@

Return Value

- init(jwtString:verifier:) + init(jwtString:verifier:)
@@ -271,13 +272,11 @@

Return Value

Throws

JWTError.invalidJWTString if the provided String is not in the form mandated by the JWT specification. -
-
+

Throws

JWTError.failedVerification if the verifier fails to verify the jwtString. -
-
+

Throws

A DecodingError if the JSONDecoder throws an error while decoding the JWT. @@ -335,7 +334,7 @@

Return Value

- sign(using:) + sign(using:)
@@ -348,18 +347,15 @@

Return Value

Note

This function will set header.alg field to the name of the signing algorithm.

-
-
+

Throws

An EncodingError if the JSONEncoder throws an error while encoding the JWT.

-
-
+

Throws

JWTError.osVersionToLow if not using macOS 10.12.0 (Sierra) or iOS 10.0 or higher.

-
-
+

Throws

A Signing error if the jwtSigner is unable to sign the JWT with the provided key.

@@ -386,7 +382,7 @@

Return Value

- verify(_:using:) + verify(_:using:)
@@ -436,7 +432,7 @@

Return Value

- validateClaims(leeway:) + validateClaims(leeway:)
@@ -445,8 +441,8 @@

Return Value

Validate the time based standard JWT claims. -This function checks that the exp (expiration time) is in the future -and the iat (issued at) and nbf (not before) headers are in the past,

+This function checks that the “exp” (expiration time) is in the future +and the “iat” (issued at) and “nbf” (not before) headers are in the past,

@@ -491,8 +487,8 @@

Return Value

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTError.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTError.html index 7864f0d..8326062 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTError.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTError.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTError

+
public struct JWTError : Error, Equatable
@@ -347,7 +348,7 @@

Declaration

- ==(_:_:) + ==(_:_:)
@@ -374,7 +375,7 @@

Declaration

- ~=(_:_:) + ~=(_:_:)
@@ -404,8 +405,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTSigner.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTSigner.html index 7308af9..a5319f7 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTSigner.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTSigner.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTSigner

+
public struct JWTSigner
@@ -158,7 +159,7 @@

Usage Example:

- rs256(privateKey:) + rs256(privateKey:)
@@ -189,7 +190,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -204,7 +205,7 @@

Parameters

- rs384(privateKey:) + rs384(privateKey:)
@@ -235,7 +236,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -250,7 +251,7 @@

Parameters

- rs512(privateKey:) + rs512(privateKey:)
@@ -281,7 +282,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -296,7 +297,7 @@

Parameters

- ps256(privateKey:) + ps256(privateKey:)
@@ -327,7 +328,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -342,7 +343,7 @@

Parameters

- ps384(privateKey:) + ps384(privateKey:)
@@ -373,7 +374,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -388,7 +389,7 @@

Parameters

- ps512(privateKey:) + ps512(privateKey:)
@@ -420,7 +421,7 @@

Parameters

-

The UTF8 encoded PEM private key, with a BEGIN RSA PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with a “BEGIN RSA PRIVATE KEY” header.

@@ -435,7 +436,7 @@

Parameters

- hs256(key:) + hs256(key:)
@@ -481,7 +482,7 @@

Parameters

- hs384(key:) + hs384(key:)
@@ -527,7 +528,7 @@

Parameters

- hs512(key:) + hs512(key:)
@@ -573,7 +574,7 @@

Parameters

- es256(privateKey:) + es256(privateKey:)
@@ -588,7 +589,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es256(privateKey: Data) -> JWTSigner
@@ -605,7 +606,7 @@

Parameters

-

The UTF8 encoded PEM private key, with either a BEGIN EC PRIVATE KEY or BEGIN PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with either a “BEGIN EC PRIVATE KEY” or “BEGIN PRIVATE KEY” header.

@@ -620,7 +621,7 @@

Parameters

- es384(privateKey:) + es384(privateKey:)
@@ -635,7 +636,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es384(privateKey: Data) -> JWTSigner
@@ -652,7 +653,7 @@

Parameters

-

The UTF8 encoded PEM private key, with either a BEGIN EC PRIVATE KEY or BEGIN PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with either a “BEGIN EC PRIVATE KEY” or “BEGIN PRIVATE KEY” header.

@@ -667,7 +668,7 @@

Parameters

- es512(privateKey:) + es512(privateKey:)
@@ -682,7 +683,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es512(privateKey: Data) -> JWTSigner
@@ -699,7 +700,7 @@

Parameters

-

The UTF8 encoded PEM private key, with either a BEGIN EC PRIVATE KEY or BEGIN PRIVATE KEY header.

+

The UTF8 encoded PEM private key, with either a “BEGIN EC PRIVATE KEY” or “BEGIN PRIVATE KEY” header.

@@ -722,7 +723,7 @@

Parameters

-

Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the none alg header.

+

Initialize a JWTSigner that will not sign the JWT. This is equivelent to using the “none” alg header.

@@ -744,8 +745,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTVerifier.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTVerifier.html index c232ff5..dd01c42 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTVerifier.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/JWTVerifier.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

JWTVerifier

+
public struct JWTVerifier
@@ -150,7 +151,7 @@

Usage Example:

- rs256(publicKey:) + rs256(publicKey:)
@@ -181,7 +182,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -196,7 +197,7 @@

Parameters

- rs384(publicKey:) + rs384(publicKey:)
@@ -227,7 +228,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -242,7 +243,7 @@

Parameters

- rs512(publicKey:) + rs512(publicKey:)
@@ -273,7 +274,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -288,7 +289,7 @@

Parameters

- rs256(certificate:) + rs256(certificate:)
@@ -319,7 +320,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN CERTIFICATE header.

+

The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.

@@ -334,7 +335,7 @@

Parameters

- rs384(certificate:) + rs384(certificate:)
@@ -365,7 +366,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN CERTIFICATE header.

+

The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.

@@ -380,7 +381,7 @@

Parameters

- rs512(certificate:) + rs512(certificate:)
@@ -411,7 +412,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN CERTIFICATE header.

+

The UTF8 encoded PEM public key, with a “BEGIN CERTIFICATE” header.

@@ -426,7 +427,7 @@

Parameters

- ps256(publicKey:) + ps256(publicKey:)
@@ -457,7 +458,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -472,7 +473,7 @@

Parameters

- ps384(publicKey:) + ps384(publicKey:)
@@ -503,7 +504,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -518,7 +519,7 @@

Parameters

- ps512(publicKey:) + ps512(publicKey:)
@@ -550,7 +551,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -565,7 +566,7 @@

Parameters

- hs256(key:) + hs256(key:)
@@ -611,7 +612,7 @@

Parameters

- hs384(key:) + hs384(key:)
@@ -657,7 +658,7 @@

Parameters

- hs512(key:) + hs512(key:)
@@ -703,7 +704,7 @@

Parameters

- es256(publicKey:) + es256(publicKey:)
@@ -718,7 +719,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es256(publicKey: Data) -> JWTVerifier
@@ -735,7 +736,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -750,7 +751,7 @@

Parameters

- es384(publicKey:) + es384(publicKey:)
@@ -765,7 +766,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es384(publicKey: Data) -> JWTVerifier
@@ -782,7 +783,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -797,7 +798,7 @@

Parameters

- es512(publicKey:) + es512(publicKey:)
@@ -812,7 +813,7 @@

Parameters

Declaration

Swift

-
@available(OSX 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
+                          
@available(macOS 10.13, iOS 11, tvOS 11.0, watchOS 4.0, *)
 public static func es512(publicKey: Data) -> JWTVerifier
@@ -829,7 +830,7 @@

Parameters

-

The UTF8 encoded PEM public key, with a BEGIN PUBLIC KEY header.

+

The UTF8 encoded PEM public key, with a “BEGIN PUBLIC KEY” header.

@@ -852,7 +853,7 @@

Parameters

-

Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the none alg header.

+

Initialize a JWTVerifier that will always return true when verifying the JWT. This is equivelent to using the “none” alg header.

@@ -874,8 +875,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/ValidateClaimsResult.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/ValidateClaimsResult.html index 31e5c51..0305cae 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/ValidateClaimsResult.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/Structs/ValidateClaimsResult.html @@ -21,7 +21,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -33,7 +33,7 @@

- + View on GitHub @@ -109,10 +109,11 @@

-
+

ValidateClaimsResult

+
public struct ValidateClaimsResult : CustomStringConvertible, Equatable
@@ -349,7 +350,7 @@

Declaration

- ==(_:_:) + ==(_:_:)
@@ -379,8 +380,8 @@

Declaration

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/css/jazzy.css b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/css/jazzy.css index 24cfe4a..ff59f5f 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/css/jazzy.css +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/css/jazzy.css @@ -94,10 +94,10 @@ pre { code { font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } -p > code, li > code { +.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { background: #f7f7f7; padding: .2em; } - p > code:before, p > code:after, li > code:before, li > code:after { + .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { letter-spacing: -.2em; content: "\00a0"; } @@ -111,7 +111,6 @@ pre code { @media (min-width: 768px) { .content-wrapper { flex-direction: row; } } - .header { display: flex; padding: 8px; @@ -157,7 +156,6 @@ pre code { word-wrap: normal; background: #fbfbfb; border-right: 1px solid #ddd; } } - .nav-groups { list-style-type: none; padding-left: 0; } @@ -188,7 +186,6 @@ pre code { order: 2; flex: 1; padding-bottom: 60px; } } - .section { padding: 0 32px; border-bottom: 1px solid #ddd; } @@ -201,6 +198,8 @@ pre code { .section-name { color: #666; display: block; } + .section-name p { + margin-bottom: inherit; } .declaration .highlight { overflow-x: initial; @@ -219,6 +218,22 @@ pre code { content: ""; display: block; } +.section-name-container { + position: relative; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + .item-container { padding: 0; } @@ -230,8 +245,10 @@ pre code { content: ""; display: block; } .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; padding-left: 3px; - margin-left: 0px; + margin-left: 20px; font-size: 1rem; } .item .declaration-note { font-size: .85em; @@ -329,6 +346,7 @@ pre code { html.dash .header, html.dash .breadcrumbs, html.dash .navigation { display: none; } + html.dash .height-container { display: block; } @@ -342,14 +360,17 @@ form[role=search] input { border-radius: 1em; } .loading form[role=search] input { background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { margin: 0; min-width: 300px; background: #fbfbfb; color: #333; border: 1px solid #ddd; } + form[role=search] .tt-highlight { font-weight: bold; } + form[role=search] .tt-suggestion { font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 0 8px; } @@ -362,11 +383,13 @@ form[role=search] .tt-suggestion { font-weight: normal; font-size: 0.9em; padding-left: 16px; } + form[role=search] .tt-suggestion:hover, form[role=search] .tt-suggestion.tt-cursor { cursor: pointer; background-color: #4183c4; color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { color: #fff; } diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/index.html b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/index.html index 81f9639..91b7205 100644 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/index.html @@ -20,7 +20,7 @@

- SwiftJWT Docs + SwiftJWT 3.6.200 Docs (100% documented)

@@ -32,7 +32,7 @@

- + View on GitHub @@ -108,20 +108,20 @@

-
+

-Kitura +Kitura

- + APIDoc - -Build Status - Master + +Build Status - Master macOS Linux @@ -144,8 +144,8 @@

Usage

Swift Package Manager

Add dependencies

-

Add the Swift-JWT package to the dependencies within your application’s Package.swift file. Substitute "x.x.x" with the latest Swift-JWT release.

-
.package(url: "https://github.com/IBM-Swift/Swift-JWT.git", from: "x.x.x")
+

Add the Swift-JWT package to the dependencies within your application’s Package.swift file. Substitute "x.x.x" with the latest Swift-JWT release.

+
.package(url: "https://github.com/Kitura/Swift-JWT.git", from: "x.x.x")
 

Add SwiftJWT to your target’s dependencies:

@@ -168,7 +168,7 @@

The JWT model

The Header struct contains the fields of the JSON Web Token header as defined by RFC7515.
-The typ header will default to JWT. The alg header will be set to the algorithm name when you sign the JWT.
+The “typ” header will default to “JWT”. The “alg” header will be set to the algorithm name when you sign the JWT.
The other Header fields can be set when initializing the Header or by changing them directly on the Header object.

let myHeader = Header(kid: "KeyID1")
 
@@ -217,7 +217,7 @@

Creating public and pr let publicKey: Data = try Data(contentsOf: publicKeyPath, options: .alwaysMapped)

-

For details on creating elliptic curve public and private keys, view the BlueECC README.txt.

+

For details on creating elliptic curve public and private keys, view the BlueECC README.txt.

Sign a JWT using a JWTSigner

The struct JWTSigner contains the algorithms that can be used to sign a JWT.

@@ -303,7 +303,7 @@

JWTEncoder and JWTDecoder

let jwt = try jwtDecoder.decode(JWT<MyClaims>.self, fromString: jwtString)
-

Because JWTEncoder and JWTDecoder conform to KituraContract’s BodyEncoder and BodyDecoder protocols, they can be used as a custom coder in Codable routes for sending and receiving JWTs:

+

Because JWTEncoder and JWTDecoder conform to KituraContract’s BodyEncoder and BodyDecoder protocols, they can be used as a custom coder in Codable routes for sending and receiving JWTs:

 router.encoders[MediaType(type: .application, subType: "jwt")] = { return jwtEncoder }
  router.decoders[MediaType(type: .application, subType: "jwt")] = { return jwtDecoder }
 
@@ -311,13 +311,13 @@

JWTEncoder and JWTDecoder

This allows for the use of JWT’s in information exchange. By sending and receiving JWT’s you can ensure the sending is who they say they are and verify the content hasn’t been tampered with.

API Documentation

-

For more information visit our API reference.

+

For more information visit our API reference.

Community

We love to talk server-side Swift, and Kitura. Join our Slack to meet the team!

License

-

This library is licensed under Apache 2.0. Full license text is available in LICENSE.

+

This library is licensed under Apache 2.0. Full license text is available in LICENSE.

@@ -326,8 +326,8 @@

License

diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jazzy.js b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jazzy.js index e2b491d..1e55d6e 100755 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jazzy.js +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jazzy.js @@ -8,26 +8,41 @@ if (navigator.userAgent.match(/xcode/i)) { window.jazzy.docset = true } -// On doc load, toggle the URL hash discussion if present -$(document).ready(function() { - if (!window.jazzy.docset) { - var linkToHash = $('a[href="' + window.location.hash +'"]'); - linkToHash.trigger("click"); +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; } -}); + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); -// On token click, toggle its discussion and animate token.marginLeft -$(".token").click(function(event) { +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { if (window.jazzy.docset) { return; } - var link = $(this); - var animationDuration = 300; - $content = link.parent().parent().next(); - $content.slideToggle(animationDuration); + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); // Keeps the document from jumping to the hash. - var href = $(this).attr('href'); + var href = $link.attr('href'); if (history.pushState) { history.pushState({}, '', href); } else { @@ -35,3 +50,21 @@ $(".token").click(function(event) { } event.preventDefault(); }); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jquery.min.js old mode 100755 new mode 100644 index 4d9b3a2..b061403 --- a/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jquery.min.js +++ b/docs/docsets/SwiftJWT.docset/Contents/Resources/Documents/js/jquery.min.js @@ -1,2 +1,2 @@ -/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("