diff --git a/restful-web-services/2.1/apidocs/allclasses-frame.html b/restful-web-services/2.1/apidocs/allclasses-frame.html
new file mode 100644
index 0000000000..42d670cfdf
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/allclasses-frame.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+All Classes (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+All Classes
+
+
+
diff --git a/restful-web-services/2.1/apidocs/allclasses-index.html b/restful-web-services/2.1/apidocs/allclasses-index.html
new file mode 100644
index 0000000000..ac24e8378a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/allclasses-index.html
@@ -0,0 +1,1045 @@
+
+
+
+
+
+All Classes (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+All Classes Interface Summary Class Summary Enum Summary Exception Summary Annotation Types Summary
+
+Class
+Description
+
+
+AbstractMultivaluedMap <K ,V >
+
+
+
+
+
+Application
+
+Defines the components of an application and supplies additional
+ meta-data.
+
+
+
+ApplicationPath
+
+Identifies the application path that serves as the base URI
+ for all resource URIs provided by
Path
.
+
+
+
+AsyncInvoker
+
+Uniform interface for asynchronous invocation of HTTP methods.
+
+
+
+AsyncResponse
+
+An injectable and asynchronous response that provides means for asynchronous server side
+ response processing.
+
+
+
+BadRequestException
+
+
+
+
+
+BeanParam
+
+The annotation that may be used to inject a custom "parameter aggregator" value object
+ into a resource class field, property or resource method parameter.
+
+
+
+CacheControl
+
+An abstraction for the value of a HTTP Cache-Control response header.
+
+
+
+Client
+
+Client is the main entry point to the fluent API used to build and execute client
+ requests in order to consume responses returned.
+
+
+
+ClientBuilder
+
+Main entry point to the client API used to bootstrap
Client
+ instances.
+
+
+
+ClientErrorException
+
+A base runtime application exception indicating a client request error
+ (HTTP 4xx
status codes).
+
+
+
+ClientRequestContext
+
+Client request filter context.
+
+
+
+ClientRequestFilter
+
+An extension interface implemented by client request filters.
+
+
+
+ClientResponseContext
+
+Client response filter context.
+
+
+
+ClientResponseFilter
+
+An extension interface implemented by client response filters.
+
+
+
+CompletionCallback
+
+A request processing callback that receives request processing completion events.
+
+
+
+CompletionStageRxInvoker
+
+
+
+
+
+Configurable <C extends Configurable >
+
+Represents a client or server-side configurable context.
+
+
+
+Configuration
+
+A configuration state associated with a
configurable
context.
+
+
+
+ConnectionCallback
+
+Asynchronous request processing lifecycle callback that receives connection
+ related
asynchronous response
lifecycle events.
+
+
+
+ConstrainedTo
+
+Indicates the run-time context in which an annotated provider
+ is applicable.
+
+
+
+Consumes
+
+Defines the media types that the methods of a resource class or
+
MessageBodyReader
can accept.
+
+
+
+ContainerRequestContext
+
+Container request filter context.
+
+
+
+ContainerRequestFilter
+
+An extension interface implemented by container request filters.
+
+
+
+ContainerResponseContext
+
+Container response filter context.
+
+
+
+ContainerResponseFilter
+
+An extension interface implemented by container response filters.
+
+
+
+Context
+
+This annotation is used to inject information into a class
+ field, bean property or method parameter.
+
+
+
+ContextResolver <T >
+
+Contract for a provider that supplies context information to resource
+ classes and other providers.
+
+
+
+Cookie
+
+Represents the value of a HTTP cookie, transferred in a request.
+
+
+
+CookieParam
+
+Binds the value of a HTTP cookie to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+DefaultValue
+
+
+
+
+
+DELETE
+
+Indicates that the annotated method responds to HTTP DELETE requests.
+
+
+
+DynamicFeature
+
+A meta-provider for dynamic registration of post-matching providers
+ during an application setup at deployment time.
+
+
+
+Encoded
+
+
+
+
+
+Entity <T >
+
+Encapsulates message entity including the associated variant information.
+
+
+
+EntityTag
+
+An abstraction for the value of a HTTP Entity Tag, used as the value
+ of an ETag response header.
+
+
+
+ExceptionMapper <E extends Throwable >
+
+Contract for a provider that maps Java exceptions to
Response
.
+
+
+
+Feature
+
+A feature extension contract.
+
+
+
+FeatureContext
+
+A configurable context passed to
Feature
and
DynamicFeature
+ instances by the runtime during the phase of their configuration.
+
+
+
+ForbiddenException
+
+A runtime exception indicating that an access to a resource requested by
+ a client has been
forbidden
+ by the server.
+
+
+
+Form
+
+Represents the the HTML form data request entity encoded using the
+ "application/x-www-form-urlencoded"
content type.
+
+
+
+FormParam
+
+Binds the value(s) of a form parameter contained within a request entity body
+ to a resource method parameter.
+
+
+
+GenericEntity <T >
+
+Represents a message entity of a generic type T
.
+
+
+
+GenericType <T >
+
+Represents a generic message entity type T
.
+
+
+
+GET
+
+Indicates that the annotated method responds to HTTP GET requests.
+
+
+
+HEAD
+
+Indicates that the annotated method responds to HTTP HEAD requests.
+
+
+
+HeaderParam
+
+Binds the value(s) of a HTTP header to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+HttpHeaders
+
+An injectable interface that provides access to HTTP header information.
+
+
+
+HttpMethod
+
+Associates the name of a HTTP method with an annotation.
+
+
+
+InboundSseEvent
+
+Inbound Server-sent event.
+
+
+
+InterceptorContext
+
+Context shared by message body interceptors that can be used to wrap
+ calls to
MessageBodyReader.readFrom(java.lang.Class<T>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.String>, java.io.InputStream)
and
+
MessageBodyWriter.writeTo(T, java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.Object>, java.io.OutputStream)
.
+
+
+
+InternalServerErrorException
+
+
+
+
+
+Invocation
+
+A client request invocation.
+
+
+
+Invocation.Builder
+
+A client request invocation builder.
+
+
+
+InvocationCallback <RESPONSE >
+
+Callback that can be implemented to receive the asynchronous processing
+ events from the invocation processing.
+
+
+
+Link
+
+Class representing hypermedia links.
+
+
+
+Link.Builder
+
+Builder class for hypermedia links.
+
+
+
+Link.JaxbAdapter
+
+An implementation of JAXB
XmlAdapter
+ that maps the
Link
type to a value that can be
+ marshalled and unmarshalled by JAXB.
+
+
+
+Link.JaxbLink
+
+Value type for
Link
that can be marshalled and
+ unmarshalled by JAXB.
+
+
+
+MatrixParam
+
+Binds the value(s) of a URI matrix parameter to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+MediaType
+
+An abstraction for a media type.
+
+
+
+MessageBodyReader <T >
+
+Contract for a provider that supports the conversion of a stream to a
+ Java type.
+
+
+
+MessageBodyWriter <T >
+
+Contract for a provider that supports the conversion of a Java type to a
+ stream.
+
+
+
+MultivaluedHashMap <K ,V >
+
+
+
+
+
+MultivaluedMap <K ,V >
+
+A map of key-values pairs.
+
+
+
+NameBinding
+
+Meta-annotation used to create name binding annotations for filters
+ and interceptors.
+
+
+
+NewCookie
+
+Used to create a new HTTP cookie, transferred in a response.
+
+
+
+NoContentException
+
+An I/O exception thrown by
MessageBodyReader
implementations
+ when reading a zero-length message content to indicate that the message body reader
+ is not able to produce an instance representing an zero-length message content.
+
+
+
+NotAcceptableException
+
+A runtime exception indicating that a client request is
+
not acceptable
+ by the server.
+
+
+
+NotAllowedException
+
+A runtime exception indicating a client requesting a resource method that is
+
not allowed
.
+
+
+
+NotAuthorizedException
+
+A runtime exception indicating request authorization failure caused by one of the following
+ scenarios:
+
+
+ a client did not send the required authorization credentials to access the requested resource,
+ i.e.
+
+
+
+NotFoundException
+
+A runtime exception indicating a resource requested by a client was
+
not found
on the server.
+
+
+
+NotSupportedException
+
+A runtime exception indicating that the client request entity media type is
+
not supported
.
+
+
+
+OPTIONS
+
+Indicates that the annotated method responds to HTTP OPTIONS requests.
+
+
+
+OutboundSseEvent
+
+Representation of a single outbound Server-sent event.
+
+
+
+OutboundSseEvent.Builder
+
+
+
+
+
+ParamConverter <T >
+
+Defines a contract for a delegate responsible for converting between a
+ String
form of a message parameter value and the corresponding custom
+ Java type T
.
+
+
+
+ParamConverter.Lazy
+
+Mandates that a conversion of any
default value
delegated
+ to a
parameter converter
annotated with
@Lazy
+ annotation SHOULD occur only once the value is actually required (e.g.
+
+
+
+ParamConverterProvider
+
+
+
+
+
+PATCH
+
+Indicates that the annotated method responds to HTTP PATCH requests.
+
+
+
+Path
+
+Identifies the URI path that a resource class or class method will serve
+ requests for.
+
+
+
+PathParam
+
+Binds the value of a URI template parameter or a path segment
+ containing the template parameter to a resource method parameter, resource
+ class field, or resource class
+ bean property.
+
+
+
+PathSegment
+
+Represents a URI path segment and any associated matrix parameters.
+
+
+
+POST
+
+Indicates that the annotated method responds to HTTP POST requests.
+
+
+
+PreMatching
+
+Global binding annotation that can be applied to a
container request filter
to indicate that such filter should be applied globally
+ on all resources in the application before the actual resource matching occurs.
+
+
+
+Priorities
+
+A collection of built-in priority constants for the components that are supposed to be
+ ordered based on their javax.annotation.Priority
class-level annotation value when used
+ or applied by the runtime.
+
+
+
+ProcessingException
+
+A base runtime processing exception.
+
+
+
+Produces
+
+Defines the media type(s) that the methods of a resource class or
+
MessageBodyWriter
can produce.
+
+
+
+Provider
+
+Marks an implementation of an extension interface that should be discoverable
+ by the runtime during a provider scanning phase.
+
+
+
+Providers
+
+An injectable interface providing runtime lookup of provider instances.
+
+
+
+PUT
+
+Indicates that the annotated method responds to HTTP PUT requests.
+
+
+
+QueryParam
+
+Binds the value(s) of a HTTP query parameter to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+ReaderInterceptor
+
+
+
+
+
+ReaderInterceptorContext
+
+Context class used by
ReaderInterceptor
+ to intercept calls to (@link javax.ws.rs.ext.MessageBodyReader#readFrom}.
+
+
+
+RedirectionException
+
+A runtime application exception indicating a request redirection
+ (HTTP 3xx
status codes).
+
+
+
+Request
+
+An injectable helper for request processing, all methods throw an
+
IllegalStateException
if called outside the scope of a request
+ (e.g.
+
+
+
+ResourceContext
+
+The resource context provides access to instances of resource classes.
+
+
+
+ResourceInfo
+
+An injectable class to access the resource class and resource method
+ matched by the current request.
+
+
+
+Response
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+
+
+Response.ResponseBuilder
+
+A class used to build Response instances that contain metadata instead
+ of or in addition to an entity.
+
+
+
+Response.Status
+
+
+
+
+
+Response.Status.Family
+
+An enumeration representing the class of status code.
+
+
+
+Response.StatusType
+
+Base interface for statuses used in responses.
+
+
+
+ResponseProcessingException
+
+Client-side runtime processing exception thrown to indicate that
+ response processing has failed (e.g.
+
+
+
+RuntimeDelegate
+
+Implementations of this API provide a concrete subclass of RuntimeDelegate and
+ various API methods defer to methods of RuntimeDelegate for their
+ functionality.
+
+
+
+RuntimeDelegate.HeaderDelegate <T >
+
+Defines the contract for a delegate that is responsible for
+ converting between the String form of a HTTP header and
+ the corresponding type T
.
+
+
+
+RuntimeType
+
+Enumeration of runtime types.
+
+
+
+RxInvoker <T >
+
+Uniform interface for reactive invocation of HTTP methods.
+
+
+
+RxInvokerProvider <T extends RxInvoker >
+
+
+
+
+
+SecurityContext
+
+An injectable interface that provides access to security related
+ information.
+
+
+
+ServerErrorException
+
+A base runtime application exception indicating a server error
+ (HTTP 5xx
status codes).
+
+
+
+ServiceUnavailableException
+
+
+
+
+
+Sse
+
+
+
+
+
+SseBroadcaster
+
+Server-Sent events broadcasting facility.
+
+
+
+SseEvent
+
+Base Server Sent Event definition.
+
+
+
+SseEventSink
+
+Outbound Server-Sent Events stream.
+
+
+
+SseEventSource
+
+
+
+
+
+SseEventSource.Builder
+
+
+
+
+
+StreamingOutput
+
+A type that may be used as a resource method return value or as the entity
+ in a
Response
when the application wishes to stream the output.
+
+
+
+Suspended
+
+
+
+
+
+SyncInvoker
+
+Uniform interface for synchronous invocation of HTTP methods.
+
+
+
+TimeoutHandler
+
+Asynchronous response suspend time-out handler.
+
+
+
+UriBuilder
+
+URI template-aware utility class for building URIs from their components.
+
+
+
+UriBuilderException
+
+
+
+
+
+UriInfo
+
+An injectable interface that provides access to application and request
+ URI information.
+
+
+
+Variant
+
+Abstraction for a resource representation variant.
+
+
+
+Variant.VariantListBuilder
+
+A builder for a list of representation variants.
+
+
+
+WebApplicationException
+
+Runtime exception for applications.
+
+
+
+WebTarget
+
+A resource target identified by the resource URI.
+
+
+
+WriterInterceptor
+
+
+
+
+
+WriterInterceptorContext
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/allclasses-noframe.html b/restful-web-services/2.1/apidocs/allclasses-noframe.html
new file mode 100644
index 0000000000..13ed8d9988
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/allclasses-noframe.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+All Classes (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+All Classes
+
+
+
diff --git a/restful-web-services/2.1/apidocs/allclasses.html b/restful-web-services/2.1/apidocs/allclasses.html
new file mode 100644
index 0000000000..3f18963275
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/allclasses.html
@@ -0,0 +1,159 @@
+
+
+
+
+
+All Classes (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+All Classes
+
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/allpackages-index.html b/restful-web-services/2.1/apidocs/allpackages-index.html
new file mode 100644
index 0000000000..b8da903839
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/allpackages-index.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+All Packages (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Package Summary
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.client
+
+The Client API
+
+
+
+javax.ws.rs.container
+
+Container-specific API.
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+javax.ws.rs.sse
+
+Server-Sent Events related API.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/constant-values.html b/restful-web-services/2.1/apidocs/constant-values.html
new file mode 100644
index 0000000000..8617b032d8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/constant-values.html
@@ -0,0 +1,847 @@
+
+
+
+
+
+Constant Field Values (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
javax.ws.*
+
+
+
+
+
+javax.ws.rs.container.AsyncResponse
+
+Modifier and Type
+Constant Field
+Value
+
+
+
+
+
+ public static final long
+NO_TIMEOUT
+0L
+
+
+
+
+
+
+
+
+javax.ws.rs.core.Cookie
+
+Modifier and Type
+Constant Field
+Value
+
+
+
+
+
+ public static final int
+DEFAULT_VERSION
+1
+
+
+
+
+
+
+
+
+
+javax.ws.rs.core.Link
+
+Modifier and Type
+Constant Field
+Value
+
+
+
+
+
+ public static final String
+REL
+"rel"
+
+
+
+
+ public static final String
+TITLE
+"title"
+
+
+
+
+ public static final String
+TYPE
+"type"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/deprecated-list.html b/restful-web-services/2.1/apidocs/deprecated-list.html
new file mode 100644
index 0000000000..e1cea8f45a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/deprecated-list.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Deprecated List (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/element-list b/restful-web-services/2.1/apidocs/element-list
new file mode 100644
index 0000000000..0f5b575cd3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/element-list
@@ -0,0 +1,6 @@
+javax.ws.rs
+javax.ws.rs.client
+javax.ws.rs.container
+javax.ws.rs.core
+javax.ws.rs.ext
+javax.ws.rs.sse
diff --git a/restful-web-services/2.1/apidocs/help-doc.html b/restful-web-services/2.1/apidocs/help-doc.html
new file mode 100644
index 0000000000..04bfdfa4af
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/help-doc.html
@@ -0,0 +1,258 @@
+
+
+
+
+
+API Help (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Overview
+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+
+Package
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:
+
+Interfaces (italic)
+Classes
+Enums
+Exceptions
+Errors
+Annotation Types
+
+
+
+Class/Interface
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:
+
+Class inheritance diagram
+Direct Subclasses
+All Known Subinterfaces
+All Known Implementing Classes
+Class/interface declaration
+Class/interface description
+
+
+Nested Class Summary
+Field Summary
+Constructor Summary
+Method Summary
+
+
+Field Detail
+Constructor Detail
+Method Detail
+
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+Annotation Type
+Each annotation type has its own separate page with the following sections:
+
+Annotation Type declaration
+Annotation Type description
+Required Element Summary
+Optional Element Summary
+Element Detail
+
+
+
+Enum
+Each enum has its own separate page with the following sections:
+
+Enum declaration
+Enum description
+Enum Constant Summary
+Enum Constant Detail
+
+
+
+Use
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+
+
+Tree (Class Hierarchy)
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object
. The interfaces do not inherit from java.lang.Object
.
+
+When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
+When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+
+
+Deprecated API
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+
+
+Index
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+
+
+Prev/Next
+These links take you to the next or previous class, interface, package, or related page.
+
+
+Frames/No Frames
+These links show and hide the HTML frames. All pages are available with or without frames.
+
+
+All Classes
+The All Classes link shows all classes and interfaces except non-static nested types.
+
+
+Serialized Form
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+
+
+Constant Field Values
+The Constant Field Values page lists the static final fields and their values.
+
+
+
This help file applies to API documentation generated using the standard doclet.
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/index-all.html b/restful-web-services/2.1/apidocs/index-all.html
new file mode 100644
index 0000000000..a7d666234a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/index-all.html
@@ -0,0 +1,5501 @@
+
+
+
+
+
+Index (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+A B C D E F G H I J K L M N O P Q R S T U V W X
+
+
+
A
+
+abortWith(Response) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Abort the filter chain with a response.
+
+abortWith(Response) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Abort the filter chain with a response.
+
+AbstractMultivaluedMap <K ,V > - Class in javax.ws.rs.core
+
+
+
+AbstractMultivaluedMap(Map<K, List<V>>) - Constructor for class javax.ws.rs.core.AbstractMultivaluedMap
+
+Initialize the backing store in the abstract parent multivalued map
+ implementation.
+
+accept(String...) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add the accepted response media types.
+
+accept(MediaType...) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add the accepted response media types.
+
+ACCEPT - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+ACCEPT_CHARSET - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+ACCEPT_ENCODING - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+ACCEPT_LANGUAGE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+accepted() - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with an ACCEPTED status.
+
+accepted(Object) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with an ACCEPTED status that contains
+ a representation.
+
+ACCEPTED - javax.ws.rs.core.Response.Status
+
+
+
+acceptEncoding(String...) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add acceptable encodings.
+
+acceptLanguage(String...) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add acceptable languages.
+
+acceptLanguage(Locale...) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add acceptable languages.
+
+add() - Method in class javax.ws.rs.core.Variant.VariantListBuilder
+
+Add the current combination of metadata to the list of supported variants,
+ after this method is called the current combination of metadata is emptied.
+
+add(K, V) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Add a value to the current list of values for the supplied key.
+
+add(K, V) - Method in interface javax.ws.rs.core.MultivaluedMap
+
+Add a value to the current list of values for the supplied key.
+
+addAll(K, List<V>) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Add all the values from the supplied value list to the current list of
+ values for the supplied key.
+
+addAll(K, List<V>) - Method in interface javax.ws.rs.core.MultivaluedMap
+
+Add all the values from the supplied value list to the current list of
+ values for the supplied key.
+
+addAll(K, V...) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Add multiple values to the current list of values for the supplied key.
+
+addAll(K, V...) - Method in interface javax.ws.rs.core.MultivaluedMap
+
+Add multiple values to the current list of values for the supplied key.
+
+addFirst(K, V) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Add a value to the first position in the current list of values for the
+ supplied key.
+
+addFirst(K, V) - Method in interface javax.ws.rs.core.MultivaluedMap
+
+Add a value to the first position in the current list of values for the
+ supplied key.
+
+addFirstNull(List<V>) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Define the behavior for adding a null
values to the first position
+ in the value list.
+
+addNull(List<V>) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Define the behavior for adding a null
values to the value list.
+
+allow(String...) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the list of allowed methods for the resource.
+
+allow(Set<String>) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the list of allowed methods for the resource.
+
+ALLOW - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+Application - Class in javax.ws.rs.core
+
+Defines the components of an application and supplies additional
+ meta-data.
+
+Application() - Constructor for class javax.ws.rs.core.Application
+
+APPLICATION_ATOM_XML - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+APPLICATION_ATOM_XML_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+APPLICATION_FORM_URLENCODED - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+APPLICATION_FORM_URLENCODED_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+APPLICATION_JSON - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+APPLICATION_JSON_PATCH_JSON - Static variable in class javax.ws.rs.core.MediaType
+
+String
representation of media type..
+
+APPLICATION_JSON_PATCH_JSON_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+APPLICATION_JSON_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+APPLICATION_OCTET_STREAM - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+APPLICATION_OCTET_STREAM_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+APPLICATION_SVG_XML - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+APPLICATION_SVG_XML_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+APPLICATION_XHTML_XML - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+APPLICATION_XHTML_XML_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+APPLICATION_XML - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+APPLICATION_XML_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+ApplicationPath - Annotation Type in javax.ws.rs
+
+Identifies the application path that serves as the base URI
+ for all resource URIs provided by
Path
.
+
+aroundReadFrom(ReaderInterceptorContext) - Method in interface javax.ws.rs.ext.ReaderInterceptor
+
+
+
+aroundWriteTo(WriterInterceptorContext) - Method in interface javax.ws.rs.ext.WriterInterceptor
+
+
+
+asMap() - Method in class javax.ws.rs.core.Form
+
+Returns multivalued map representation of the form.
+
+async() - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Access the asynchronous uniform request invocation interface to
+ asynchronously invoke the built request.
+
+AsyncInvoker - Interface in javax.ws.rs.client
+
+Uniform interface for asynchronous invocation of HTTP methods.
+
+AsyncResponse - Interface in javax.ws.rs.container
+
+An injectable and asynchronous response that provides means for asynchronous server side
+ response processing.
+
+AUTHENTICATION - Static variable in class javax.ws.rs.Priorities
+
+Security authentication filter/interceptor priority.
+
+AUTHORIZATION - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+AUTHORIZATION - Static variable in class javax.ws.rs.Priorities
+
+Security authorization filter/interceptor priority.
+
+
+
+
+
+
B
+
+BAD_GATEWAY - javax.ws.rs.core.Response.Status
+
+
+
+BAD_REQUEST - javax.ws.rs.core.Response.Status
+
+
+
+BadRequestException - Exception in javax.ws.rs
+
+
+
+BadRequestException() - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+BadRequestException(String) - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+BadRequestException(String, Throwable) - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+BadRequestException(String, Response) - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+BadRequestException(String, Response, Throwable) - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+BadRequestException(Throwable) - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+BadRequestException(Response) - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+BadRequestException(Response, Throwable) - Constructor for exception javax.ws.rs.BadRequestException
+
+Construct a new bad client request exception.
+
+baseUri(String) - Method in interface javax.ws.rs.core.Link.Builder
+
+Set the base URI as a string for resolution of relative URIs.
+
+baseUri(URI) - Method in interface javax.ws.rs.core.Link.Builder
+
+Set the base URI for resolution of relative URIs.
+
+BASIC_AUTH - Static variable in interface javax.ws.rs.core.SecurityContext
+
+String identifier for Basic authentication.
+
+BeanParam - Annotation Type in javax.ws.rs
+
+The annotation that may be used to inject a custom "parameter aggregator" value object
+ into a resource class field, property or resource method parameter.
+
+broadcast(OutboundSseEvent) - Method in interface javax.ws.rs.sse.SseBroadcaster
+
+Publish an SSE event to all registered
SseEventSink
instances.
+
+bufferEntity() - Method in class javax.ws.rs.core.Response
+
+Buffer the message entity data.
+
+build() - Method in class javax.ws.rs.client.ClientBuilder
+
+Build a new client instance using all the configuration previously specified
+ in this client builder.
+
+build() - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Create a Response instance from the current ResponseBuilder.
+
+build() - Method in class javax.ws.rs.core.Variant.VariantListBuilder
+
+Add the current combination of metadata to the list of supported variants
+ (provided the current combination of metadata is not empty) and
+ build a list of representation variants from the current state of
+ the builder.
+
+build() - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+
+
+build() - Method in class javax.ws.rs.sse.SseEventSource.Builder
+
+Build new SSE event source pointing at a SSE streaming
web target
.
+
+build(Object...) - Method in interface javax.ws.rs.core.Link.Builder
+
+Finish building this link using the supplied values as URI parameters.
+
+build(Object...) - Method in class javax.ws.rs.core.UriBuilder
+
+Build a URI, using the supplied values in order to replace any URI
+ template parameters.
+
+build(Object[], boolean) - Method in class javax.ws.rs.core.UriBuilder
+
+Build a URI, using the supplied values in order to replace any URI
+ template parameters.
+
+build(String) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Build a request invocation using an arbitrary request method name.
+
+build(String, Entity<?>) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Build a request invocation using an arbitrary request method name and
+ request entity.
+
+buildDelete() - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Build a DELETE request invocation.
+
+Builder() - Constructor for class javax.ws.rs.sse.SseEventSource.Builder
+
+Allows custom implementations to extend the SSE event source builder class.
+
+buildFromEncoded(Object...) - Method in class javax.ws.rs.core.UriBuilder
+
+Build a URI.
+
+buildFromEncodedMap(Map<String, ?>) - Method in class javax.ws.rs.core.UriBuilder
+
+Build a URI.
+
+buildFromMap(Map<String, ?>) - Method in class javax.ws.rs.core.UriBuilder
+
+Build a URI.
+
+buildFromMap(Map<String, ?>, boolean) - Method in class javax.ws.rs.core.UriBuilder
+
+Build a URI.
+
+buildGet() - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Build a GET request invocation.
+
+buildPost(Entity<?>) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Build a POST request invocation.
+
+buildPut(Entity<?>) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Build a PUT request invocation.
+
+buildRelativized(URI, Object...) - Method in interface javax.ws.rs.core.Link.Builder
+
+Finish building this link using the supplied values as URI parameters
+ and relativize the result with respect to the supplied URI.
+
+
+
+
+
+
C
+
+CACHE_CONTROL - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+cacheControl(CacheControl) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Set the cache control data of the message.
+
+cacheControl(CacheControl) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the cache control data of the message.
+
+CacheControl - Class in javax.ws.rs.core
+
+An abstraction for the value of a HTTP Cache-Control response header.
+
+CacheControl() - Constructor for class javax.ws.rs.core.CacheControl
+
+Create a new instance of CacheControl.
+
+cancel() - Method in interface javax.ws.rs.container.AsyncResponse
+
+Cancel the suspended request processing.
+
+cancel(int) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Cancel the suspended request processing.
+
+cancel(Date) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Cancel the suspended request processing.
+
+CHARSET_PARAMETER - Static variable in class javax.ws.rs.core.MediaType
+
+The media type charset
parameter name.
+
+clear() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Client - Interface in javax.ws.rs.client
+
+Client is the main entry point to the fluent API used to build and execute client
+ requests in order to consume responses returned.
+
+CLIENT - javax.ws.rs.RuntimeType
+
+The client run-time.
+
+CLIENT_CERT_AUTH - Static variable in interface javax.ws.rs.core.SecurityContext
+
+String identifier for Client Certificate authentication.
+
+CLIENT_ERROR - javax.ws.rs.core.Response.Status.Family
+
+4xx
HTTP status codes.
+
+ClientBuilder - Class in javax.ws.rs.client
+
+Main entry point to the client API used to bootstrap
Client
+ instances.
+
+ClientBuilder() - Constructor for class javax.ws.rs.client.ClientBuilder
+
+Allows custom implementations to extend the ClientBuilder
class.
+
+ClientErrorException - Exception in javax.ws.rs
+
+A base runtime application exception indicating a client request error
+ (HTTP 4xx
status codes).
+
+ClientErrorException(int) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(int, Throwable) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(String, int) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(String, int, Throwable) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(String, Response) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(String, Response.Status) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(String, Response.Status, Throwable) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(String, Response, Throwable) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(Response) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(Response.Status) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(Response.Status, Throwable) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientErrorException(Response, Throwable) - Constructor for exception javax.ws.rs.ClientErrorException
+
+Construct a new client error exception.
+
+ClientRequestContext - Interface in javax.ws.rs.client
+
+Client request filter context.
+
+ClientRequestFilter - Interface in javax.ws.rs.client
+
+An extension interface implemented by client request filters.
+
+ClientResponseContext - Interface in javax.ws.rs.client
+
+Client response filter context.
+
+ClientResponseFilter - Interface in javax.ws.rs.client
+
+An extension interface implemented by client response filters.
+
+clone() - Method in class javax.ws.rs.core.Response.ResponseBuilder
+clone() - Method in class javax.ws.rs.core.UriBuilder
+
+Create a copy of the UriBuilder preserving its state.
+
+close() - Method in interface javax.ws.rs.client.Client
+
+Close client instance and all it's associated resources.
+
+close() - Method in class javax.ws.rs.core.Response
+
+Close the underlying message entity input stream (if available and open)
+ as well as releases any other resources associated with the response
+ (e.g.
+
+close() - Method in interface javax.ws.rs.sse.SseBroadcaster
+
+Close the broadcaster and all registered
SseEventSink
instances.
+
+close() - Method in interface javax.ws.rs.sse.SseEventSink
+
+Close the
SseEventSink
instance and release all associated resources.
+
+close() - Method in interface javax.ws.rs.sse.SseEventSource
+
+Close this event source.
+
+close(long, TimeUnit) - Method in interface javax.ws.rs.sse.SseEventSource
+
+Close this event source and wait for the internal event processing task to complete
+ for up to the specified amount of wait time.
+
+comment(String) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+Set comment string associated with the event.
+
+completed(RESPONSE) - Method in interface javax.ws.rs.client.InvocationCallback
+
+Called when the invocation was successfully completed.
+
+CompletionCallback - Interface in javax.ws.rs.container
+
+A request processing callback that receives request processing completion events.
+
+CompletionStageRxInvoker - Interface in javax.ws.rs.client
+
+
+
+Configurable <C extends Configurable > - Interface in javax.ws.rs.core
+
+Represents a client or server-side configurable context.
+
+Configuration - Interface in javax.ws.rs.core
+
+A configuration state associated with a
configurable
context.
+
+configure(ResourceInfo, FeatureContext) - Method in interface javax.ws.rs.container.DynamicFeature
+
+
+
+configure(FeatureContext) - Method in interface javax.ws.rs.core.Feature
+
+A call-back method called when the feature is to be enabled in a given
+ runtime configuration scope.
+
+CONFLICT - javax.ws.rs.core.Response.Status
+
+
+
+ConnectionCallback - Interface in javax.ws.rs.container
+
+Asynchronous request processing lifecycle callback that receives connection
+ related
asynchronous response
lifecycle events.
+
+connectTimeout(long, TimeUnit) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the connect timeout.
+
+ConstrainedTo - Annotation Type in javax.ws.rs
+
+Indicates the run-time context in which an annotated provider
+ is applicable.
+
+Consumes - Annotation Type in javax.ws.rs
+
+Defines the media types that the methods of a resource class or
+
MessageBodyReader
can accept.
+
+ContainerRequestContext - Interface in javax.ws.rs.container
+
+Container request filter context.
+
+ContainerRequestFilter - Interface in javax.ws.rs.container
+
+An extension interface implemented by container request filters.
+
+ContainerResponseContext - Interface in javax.ws.rs.container
+
+Container response filter context.
+
+ContainerResponseFilter - Interface in javax.ws.rs.container
+
+An extension interface implemented by container response filters.
+
+containsKey(Object) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+containsValue(Object) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+CONTENT_DISPOSITION - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+CONTENT_ENCODING - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+CONTENT_ID - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+CONTENT_LANGUAGE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+CONTENT_LENGTH - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+CONTENT_LOCATION - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+CONTENT_TYPE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+contentLocation(URI) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the content location.
+
+Context - Annotation Type in javax.ws.rs.core
+
+This annotation is used to inject information into a class
+ field, bean property or method parameter.
+
+ContextResolver <T > - Interface in javax.ws.rs.ext
+
+Contract for a provider that supplies context information to resource
+ classes and other providers.
+
+cookie(String, String) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add a cookie to be set.
+
+cookie(Cookie) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add a cookie to be set.
+
+cookie(NewCookie...) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Add cookies to the response message.
+
+Cookie - Class in javax.ws.rs.core
+
+Represents the value of a HTTP cookie, transferred in a request.
+
+Cookie(String, String) - Constructor for class javax.ws.rs.core.Cookie
+
+Create a new instance.
+
+Cookie(String, String, String, String) - Constructor for class javax.ws.rs.core.Cookie
+
+Create a new instance.
+
+Cookie(String, String, String, String, int) - Constructor for class javax.ws.rs.core.Cookie
+
+Create a new instance.
+
+COOKIE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+CookieParam - Annotation Type in javax.ws.rs
+
+Binds the value of a HTTP cookie to a resource method parameter,
+ resource class field, or resource class bean property.
+
+created(URI) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder for a created resource, set the location
+ header using the supplied value.
+
+CREATED - javax.ws.rs.core.Response.Status
+
+
+
+createEndpoint(Application, Class<T>) - Method in class javax.ws.rs.ext.RuntimeDelegate
+
+Create a configured instance of the supplied endpoint type.
+
+createHeaderDelegate(Class<T>) - Method in class javax.ws.rs.ext.RuntimeDelegate
+
+
+
+createLinkBuilder() - Method in class javax.ws.rs.ext.RuntimeDelegate
+
+
+
+createResponseBuilder() - Method in class javax.ws.rs.ext.RuntimeDelegate
+
+
+
+createUriBuilder() - Method in class javax.ws.rs.ext.RuntimeDelegate
+
+
+
+createVariantListBuilder() - Method in class javax.ws.rs.ext.RuntimeDelegate
+
+
+
+
+
+
+
+
D
+
+data(Class, Object) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+Set event data and java type of event data.
+
+data(Object) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+Set event data and java type of event data.
+
+data(GenericType, Object) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+Set event data and a generic java type of event data.
+
+DATE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+DEFAULT_MAX_AGE - Static variable in class javax.ws.rs.core.NewCookie
+
+Specifies that the cookie expires with the current application/browser session.
+
+DEFAULT_VERSION - Static variable in class javax.ws.rs.core.Cookie
+
+Cookies using the default version correspond to RFC 2109.
+
+DefaultValue - Annotation Type in javax.ws.rs
+
+
+
+delete() - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+delete() - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+delete() - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP DELETE method for the current request.
+
+delete() - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+delete(Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP DELETE method for the current request.
+
+delete(Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+delete(Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+delete(Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+delete(InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+delete(GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP DELETE method for the current request.
+
+delete(GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+delete(GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+delete(GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+DELETE - Annotation Type in javax.ws.rs
+
+Indicates that the annotated method responds to HTTP DELETE requests.
+
+DELETE - Static variable in annotation type javax.ws.rs.HttpMethod
+
+HTTP DELETE method.
+
+DIGEST_AUTH - Static variable in interface javax.ws.rs.core.SecurityContext
+
+String identifier for Digest authentication.
+
+DynamicFeature - Interface in javax.ws.rs.container
+
+A meta-provider for dynamic registration of post-matching providers
+ during an application setup at deployment time.
+
+
+
+
+
+
E
+
+Encoded - Annotation Type in javax.ws.rs
+
+
+
+encoding(String) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the message entity content encoding.
+
+encodings(String...) - Static method in class javax.ws.rs.core.Variant
+
+
+
+encodings(String...) - Method in class javax.ws.rs.core.Variant.VariantListBuilder
+
+Set the encoding(s) for this variant.
+
+entity(Object) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the response entity in the builder.
+
+entity(Object, Annotation[]) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the response entity in the builder.
+
+entity(T, String) - Static method in class javax.ws.rs.client.Entity
+
+Create an entity using a supplied content media type.
+
+entity(T, MediaType) - Static method in class javax.ws.rs.client.Entity
+
+Create an entity using a supplied content media type.
+
+entity(T, MediaType, Annotation[]) - Static method in class javax.ws.rs.client.Entity
+
+Create an entity using a supplied content media type.
+
+entity(T, Variant) - Static method in class javax.ws.rs.client.Entity
+
+Create an entity using a supplied content media type.
+
+entity(T, Variant, Annotation[]) - Static method in class javax.ws.rs.client.Entity
+
+Create an entity using a supplied content media type.
+
+Entity <T > - Class in javax.ws.rs.client
+
+Encapsulates message entity including the associated variant information.
+
+ENTITY_CODER - Static variable in class javax.ws.rs.Priorities
+
+Message encoder or decoder filter/interceptor priority.
+
+EntityTag - Class in javax.ws.rs.core
+
+An abstraction for the value of a HTTP Entity Tag, used as the value
+ of an ETag response header.
+
+EntityTag(String) - Constructor for class javax.ws.rs.core.EntityTag
+
+Creates a new instance of a strong EntityTag
.
+
+EntityTag(String, boolean) - Constructor for class javax.ws.rs.core.EntityTag
+
+Creates a new instance of an EntityTag
.
+
+entrySet() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+equals(Object) - Method in class javax.ws.rs.client.Entity
+
+equals(Object) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+equals(Object) - Method in class javax.ws.rs.core.CacheControl
+
+Compares object argument to this cache control to see if they are the same
+ considering all property values.
+
+equals(Object) - Method in class javax.ws.rs.core.Cookie
+
+Compare for equality.
+
+equals(Object) - Method in class javax.ws.rs.core.EntityTag
+
+Compares obj
to this tag to see if they are the same considering
+ weakness and value.
+
+equals(Object) - Method in class javax.ws.rs.core.GenericEntity
+
+equals(Object) - Method in class javax.ws.rs.core.GenericType
+
+equals(Object) - Method in class javax.ws.rs.core.Link.JaxbLink
+
+equals(Object) - Method in class javax.ws.rs.core.MediaType
+
+Compares obj
to this media type to see if they are the same by comparing
+ type, subtype and parameters.
+
+equals(Object) - Method in class javax.ws.rs.core.NewCookie
+
+Compare for equality.
+
+equals(Object) - Method in class javax.ws.rs.core.Variant
+
+Compares obj to this variant to see if they are the same
+ considering all property values.
+
+equalsIgnoreValueOrder(MultivaluedMap<K, V>) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+equalsIgnoreValueOrder(MultivaluedMap<K, V>) - Method in interface javax.ws.rs.core.MultivaluedMap
+
+Compare the specified map with this map for equality modulo the order
+ of values for each key.
+
+ETAG - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+evaluatePreconditions() - Method in interface javax.ws.rs.core.Request
+
+Evaluate request preconditions for a resource that does not currently
+ exist.
+
+evaluatePreconditions(Date) - Method in interface javax.ws.rs.core.Request
+
+Evaluate request preconditions based on the passed in value.
+
+evaluatePreconditions(Date, EntityTag) - Method in interface javax.ws.rs.core.Request
+
+Evaluate request preconditions based on the passed in value.
+
+evaluatePreconditions(EntityTag) - Method in interface javax.ws.rs.core.Request
+
+Evaluate request preconditions based on the passed in value.
+
+ExceptionMapper <E extends Throwable > - Interface in javax.ws.rs.ext
+
+Contract for a provider that maps Java exceptions to
Response
.
+
+executorService(ExecutorService) - Method in class javax.ws.rs.client.ClientBuilder
+
+
+
+EXPECTATION_FAILED - javax.ws.rs.core.Response.Status
+
+
+
+expires(Date) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the response expiration date.
+
+EXPIRES - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+
+
+
+
+
F
+
+failed(Throwable) - Method in interface javax.ws.rs.client.InvocationCallback
+
+Called when the invocation has failed for any reason.
+
+familyOf(int) - Static method in enum javax.ws.rs.core.Response.Status.Family
+
+Get the response status family for the status code.
+
+Feature - Interface in javax.ws.rs.core
+
+A feature extension contract.
+
+FeatureContext - Interface in javax.ws.rs.core
+
+A configurable context passed to
Feature
and
DynamicFeature
+ instances by the runtime during the phase of their configuration.
+
+filter(ClientRequestContext) - Method in interface javax.ws.rs.client.ClientRequestFilter
+
+Filter method called before a request has been dispatched to a client
+ transport layer.
+
+filter(ClientRequestContext, ClientResponseContext) - Method in interface javax.ws.rs.client.ClientResponseFilter
+
+Filter method called after a response has been provided for a request
+ (either by a
request filter
or when the
+ HTTP invocation returns).
+
+filter(ContainerRequestContext) - Method in interface javax.ws.rs.container.ContainerRequestFilter
+
+Filter method called before a request has been dispatched to a resource.
+
+filter(ContainerRequestContext, ContainerResponseContext) - Method in interface javax.ws.rs.container.ContainerResponseFilter
+
+Filter method called after a response has been provided for a request
+ (either by a
request filter
or by a
+ matched resource method.
+
+FORBIDDEN - javax.ws.rs.core.Response.Status
+
+
+
+ForbiddenException - Exception in javax.ws.rs
+
+A runtime exception indicating that an access to a resource requested by
+ a client has been
forbidden
+ by the server.
+
+ForbiddenException() - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+ForbiddenException(String) - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+ForbiddenException(String, Throwable) - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+ForbiddenException(String, Response) - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+ForbiddenException(String, Response, Throwable) - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+ForbiddenException(Throwable) - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+ForbiddenException(Response) - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+ForbiddenException(Response, Throwable) - Constructor for exception javax.ws.rs.ForbiddenException
+
+Construct a new "forbidden" exception.
+
+forInstance(Object) - Static method in class javax.ws.rs.core.GenericType
+
+
+
+form(Form) - Static method in class javax.ws.rs.client.Entity
+
+
+
+form(MultivaluedMap<String, String>) - Static method in class javax.ws.rs.client.Entity
+
+
+
+Form - Class in javax.ws.rs.core
+
+Represents the the HTML form data request entity encoded using the
+ "application/x-www-form-urlencoded"
content type.
+
+Form() - Constructor for class javax.ws.rs.core.Form
+
+Create a new form data instance.
+
+Form(String, String) - Constructor for class javax.ws.rs.core.Form
+
+Create a new form data instance with a single parameter entry.
+
+Form(MultivaluedMap<String, String>) - Constructor for class javax.ws.rs.core.Form
+
+Create a new form data instance and register a custom underlying parameter store.
+
+FORM_AUTH - Static variable in interface javax.ws.rs.core.SecurityContext
+
+String identifier for Form authentication.
+
+FormParam - Annotation Type in javax.ws.rs
+
+Binds the value(s) of a form parameter contained within a request entity body
+ to a resource method parameter.
+
+FOUND - javax.ws.rs.core.Response.Status
+
+
+
+fragment(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI fragment.
+
+fromLink(Link) - Static method in class javax.ws.rs.core.Link
+
+Create a new builder instance initialized from another link.
+
+fromLink(Link) - Static method in class javax.ws.rs.core.UriBuilder
+
+Create a new instance initialized from a Link.
+
+fromMethod(Class<?>, String) - Static method in class javax.ws.rs.core.Link
+
+Convenience method to build a link from a resource.
+
+fromMethod(Class<?>, String) - Static method in class javax.ws.rs.core.UriBuilder
+
+Create a new instance representing a relative URI initialized from a
+
Path
-annotated method.
+
+fromPath(String) - Static method in class javax.ws.rs.core.Link
+
+Convenience method to build a link from a path.
+
+fromPath(String) - Static method in class javax.ws.rs.core.UriBuilder
+
+Create a new instance representing a relative URI initialized from a
+ URI path.
+
+fromResource(Class<?>) - Static method in class javax.ws.rs.core.Link
+
+Convenience method to build a link from a resource.
+
+fromResource(Class<?>) - Static method in class javax.ws.rs.core.UriBuilder
+
+Create a new instance representing a relative URI initialized from a
+ root resource class.
+
+fromResponse(Response) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder by performing a shallow copy of an
+ existing Response.
+
+fromStatusCode(int) - Static method in enum javax.ws.rs.core.Response.Status
+
+Convert a numerical status code into the corresponding Status.
+
+fromString(String) - Method in interface javax.ws.rs.ext.ParamConverter
+
+Parse the supplied value and create an instance of T
.
+
+fromString(String) - Method in interface javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate
+
+Parse the supplied value and create an instance of T
.
+
+fromUri(String) - Static method in class javax.ws.rs.core.Link
+
+Create a new builder instance initialized from an existing URI represented as a string.
+
+fromUri(String) - Static method in class javax.ws.rs.core.UriBuilder
+
+Create a new instance initialized from an existing URI.
+
+fromUri(URI) - Static method in class javax.ws.rs.core.Link
+
+Create a new builder instance initialized from an existing URI.
+
+fromUri(URI) - Static method in class javax.ws.rs.core.UriBuilder
+
+Create a new instance initialized from an existing URI.
+
+fromUriBuilder(UriBuilder) - Static method in class javax.ws.rs.core.Link
+
+Create a new builder instance initialized from a URI builder.
+
+
+
+
+
+
G
+
+GATEWAY_TIMEOUT - javax.ws.rs.core.Response.Status
+
+
+
+GenericEntity <T > - Class in javax.ws.rs.core
+
+Represents a message entity of a generic type T
.
+
+GenericEntity(T) - Constructor for class javax.ws.rs.core.GenericEntity
+
+Constructs a new generic entity.
+
+GenericEntity(T, Type) - Constructor for class javax.ws.rs.core.GenericEntity
+
+Create a new instance of GenericEntity, supplying the generic type information.
+
+GenericType <T > - Class in javax.ws.rs.core
+
+Represents a generic message entity type T
.
+
+GenericType() - Constructor for class javax.ws.rs.core.GenericType
+
+Constructs a new generic type, deriving the generic type and class from
+ type parameter.
+
+GenericType(Type) - Constructor for class javax.ws.rs.core.GenericType
+
+Constructs a new generic type, supplying the generic type
+ information and deriving the class.
+
+get() - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP GET method for the current request asynchronously.
+
+get() - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+get() - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP GET method for the current request.
+
+get() - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP GET method for the current request synchronously.
+
+get(Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP GET method for the current request.
+
+get(Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP GET method for the current request asynchronously.
+
+get(Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+get(Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP GET method for the current request synchronously.
+
+get(Object) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+get(InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP GET method for the current request asynchronously.
+
+get(GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP GET method for the current request.
+
+get(GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP GET method for the current request asynchronously.
+
+get(GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+get(GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP GET method for the current request synchronously.
+
+GET - Annotation Type in javax.ws.rs
+
+Indicates that the annotated method responds to HTTP GET requests.
+
+GET - Static variable in annotation type javax.ws.rs.HttpMethod
+
+HTTP GET method.
+
+getAbsolutePath() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the absolute path of the request.
+
+getAbsolutePathBuilder() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the absolute path of the request in the form of a UriBuilder.
+
+getAcceptableLanguages() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get a list of languages that are acceptable for the response.
+
+getAcceptableLanguages() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get a list of languages that are acceptable for the response.
+
+getAcceptableLanguages() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get a list of languages that are acceptable for the response.
+
+getAcceptableMediaTypes() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get a list of media types that are acceptable for the response.
+
+getAcceptableMediaTypes() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get a list of media types that are acceptable for the response.
+
+getAcceptableMediaTypes() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get a list of media types that are acceptable for the response.
+
+getAllowedMethods() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the allowed HTTP methods from the Allow HTTP header.
+
+getAllowedMethods() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the allowed HTTP methods from the Allow HTTP header.
+
+getAllowedMethods() - Method in class javax.ws.rs.core.Response
+
+Get the allowed HTTP methods from the Allow HTTP header.
+
+getAnnotations() - Method in class javax.ws.rs.client.Entity
+
+Get the entity annotations.
+
+getAnnotations() - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Get an array of the annotations formally declared on the artifact that
+ initiated the intercepted entity provider invocation.
+
+getAuthenticationScheme() - Method in interface javax.ws.rs.core.SecurityContext
+
+Returns the string value of the authentication scheme used to protect
+ the resource.
+
+getBaseUri() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the base URI of the application.
+
+getBaseUriBuilder() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the base URI of the application in the form of a UriBuilder.
+
+getCacheExtension() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to a set of extension cache control directives.
+
+getChallenges() - Method in exception javax.ws.rs.NotAuthorizedException
+
+Get the list of authorization challenges associated with the exception and
+ applicable to the resource requested by the client.
+
+getClasses() - Method in class javax.ws.rs.core.Application
+
+Get a set of root resource, provider and
feature
classes.
+
+getClasses() - Method in interface javax.ws.rs.core.Configuration
+
+Get the immutable set of registered component (such as provider or
+
feature
) classes to be instantiated, injected and utilized in the scope
+ of the configurable instance.
+
+getClient() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the client instance associated with the request.
+
+getComment() - Method in class javax.ws.rs.core.NewCookie
+
+Get the comment associated with the cookie.
+
+getComment() - Method in interface javax.ws.rs.sse.SseEvent
+
+Get a comment string that accompanies the event.
+
+getConfiguration() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the immutable configuration of the request.
+
+getConfiguration() - Method in interface javax.ws.rs.core.Configurable
+
+Get a live view of an internal configuration state of this configurable instance.
+
+getContext(Class<?>) - Method in interface javax.ws.rs.ext.ContextResolver
+
+Get a context of type T
that is applicable to the supplied
+ type.
+
+getContextResolver(Class<T>, MediaType) - Method in interface javax.ws.rs.ext.Providers
+
+Get a context resolver for a particular type of context and media type.
+
+getContracts(Class<?>) - Method in interface javax.ws.rs.core.Configuration
+
+Get the extension contract registration information for a component of a given class.
+
+getConverter(Class<T>, Type, Annotation[]) - Method in interface javax.ws.rs.ext.ParamConverterProvider
+
+Obtain a
ParamConverter
that can provide from/to string conversion
+ for an instance of a particular Java type.
+
+getCookies() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get any cookies that accompanied the request.
+
+getCookies() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get any new cookies set on the response message.
+
+getCookies() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get any cookies that accompanied the request.
+
+getCookies() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get any new cookies set on the response message.
+
+getCookies() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get any cookies that accompanied the request.
+
+getCookies() - Method in class javax.ws.rs.core.Response
+
+Get any new cookies set on the response message.
+
+getData() - Method in interface javax.ws.rs.sse.OutboundSseEvent
+
+Get event data.
+
+getDate() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get message date.
+
+getDate() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get message date.
+
+getDate() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get message date.
+
+getDate() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get message date.
+
+getDate() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get message date.
+
+getDate() - Method in class javax.ws.rs.core.Response
+
+Get message date.
+
+getDomain() - Method in class javax.ws.rs.core.Cookie
+
+Get the domain of the cookie.
+
+getEncoding() - Method in class javax.ws.rs.client.Entity
+
+Get entity encoding.
+
+getEncoding() - Method in class javax.ws.rs.core.Variant
+
+Get the encoding of the variant.
+
+getEntity() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the message entity Java instance.
+
+getEntity() - Method in class javax.ws.rs.client.Entity
+
+Get entity data.
+
+getEntity() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the message entity Java instance.
+
+getEntity() - Method in class javax.ws.rs.core.GenericEntity
+
+Get the enclosed entity.
+
+getEntity() - Method in class javax.ws.rs.core.Response
+
+Get the message entity Java instance.
+
+getEntity() - Method in interface javax.ws.rs.ext.WriterInterceptorContext
+
+Get object to be written as HTTP entity.
+
+getEntityAnnotations() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the annotations attached to the entity instance.
+
+getEntityAnnotations() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the annotations attached to the entity instance.
+
+getEntityClass() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the raw entity type information.
+
+getEntityClass() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the raw entity type information.
+
+getEntityStream() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the entity output stream.
+
+getEntityStream() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the entity input stream.
+
+getEntityStream() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get the entity input stream.
+
+getEntityStream() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the entity output stream.
+
+getEntityTag() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the entity tag.
+
+getEntityTag() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the entity tag.
+
+getEntityTag() - Method in class javax.ws.rs.core.Response
+
+Get the entity tag.
+
+getEntityType() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the generic entity type information.
+
+getEntityType() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the generic entity type information.
+
+getExceptionMapper(Class<T>) - Method in interface javax.ws.rs.ext.Providers
+
+Get an exception mapping provider for a particular class of exception.
+
+getExpiry() - Method in class javax.ws.rs.core.NewCookie
+
+Get the cookie expiry date.
+
+getFamily() - Method in enum javax.ws.rs.core.Response.Status
+
+Get the class of status code.
+
+getFamily() - Method in interface javax.ws.rs.core.Response.StatusType
+
+Get the class of status code.
+
+getFirst(K) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+getFirst(K) - Method in interface javax.ws.rs.core.MultivaluedMap
+
+A shortcut to get the first value of the supplied key.
+
+getGenericType() - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Get the type of the object to be produced or written.
+
+getGenericType() - Method in interface javax.ws.rs.sse.OutboundSseEvent
+
+Get generic data type.
+
+getHeaders() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the mutable request headers multivalued map.
+
+getHeaders() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the mutable response headers multivalued map.
+
+getHeaders() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get the mutable request headers multivalued map.
+
+getHeaders() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the mutable response headers multivalued map.
+
+getHeaders() - Method in class javax.ws.rs.core.Response
+
+Get view of the response headers and their object values.
+
+getHeaders() - Method in interface javax.ws.rs.ext.ReaderInterceptorContext
+
+Get mutable map of HTTP headers.
+
+getHeaders() - Method in interface javax.ws.rs.ext.WriterInterceptorContext
+
+Get mutable map of HTTP headers.
+
+getHeaderString(String) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get a message header as a single string value.
+
+getHeaderString(String) - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get a message header as a single string value.
+
+getHeaderString(String) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get a message header as a single string value.
+
+getHeaderString(String) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get a message header as a single string value.
+
+getHeaderString(String) - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get a HTTP header as a single string value.
+
+getHeaderString(String) - Method in class javax.ws.rs.core.Response
+
+Get a message header as a single string value.
+
+getHostnameVerifier() - Method in interface javax.ws.rs.client.Client
+
+Get the hostname verifier configured in the client or null
in case
+ no hostname verifier has been configured.
+
+getId() - Method in interface javax.ws.rs.sse.SseEvent
+
+Get event identifier.
+
+getInputStream() - Method in interface javax.ws.rs.ext.ReaderInterceptorContext
+
+Get the input stream of the object to be read.
+
+getInstance() - Static method in class javax.ws.rs.ext.RuntimeDelegate
+
+Obtain a RuntimeDelegate
instance.
+
+getInstances() - Method in interface javax.ws.rs.core.Configuration
+
+Get the immutable set of registered component (such as provider or
+
feature
) instances to be utilized by the configurable instance.
+
+getLanguage() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the language of the entity.
+
+getLanguage() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the language of the entity.
+
+getLanguage() - Method in class javax.ws.rs.client.Entity
+
+Get entity language.
+
+getLanguage() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get the language of the entity.
+
+getLanguage() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the language of the entity.
+
+getLanguage() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get the language of the request entity.
+
+getLanguage() - Method in class javax.ws.rs.core.Response
+
+Get the language of the message entity.
+
+getLanguage() - Method in class javax.ws.rs.core.Variant
+
+Get the language of the variant.
+
+getLanguageString() - Method in class javax.ws.rs.core.Variant
+
+Get the string representation of the variant language,
+ or null
if no language has been set.
+
+getLastModified() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the last modified date.
+
+getLastModified() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the last modified date.
+
+getLastModified() - Method in class javax.ws.rs.core.Response
+
+Get the last modified date.
+
+getLength() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get Content-Length value.
+
+getLength() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get Content-Length value.
+
+getLength() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get Content-Length value.
+
+getLength() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get Content-Length value.
+
+getLength() - Method in class javax.ws.rs.core.Response
+
+Get Content-Length value.
+
+getLink(String) - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the link for the relation.
+
+getLink(String) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the link for the relation.
+
+getLink(String) - Method in class javax.ws.rs.core.Response
+
+Get the link for the relation.
+
+getLinkBuilder(String) - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Convenience method that returns a
Link.Builder
+ for the relation.
+
+getLinkBuilder(String) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Convenience method that returns a
Link.Builder
+ for the relation.
+
+getLinkBuilder(String) - Method in class javax.ws.rs.core.Response
+
+Convenience method that returns a
Link.Builder
for the relation.
+
+getLinks() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the links attached to the message as header.
+
+getLinks() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the links attached to the message as header.
+
+getLinks() - Method in class javax.ws.rs.core.Response
+
+Get the links attached to the message as headers.
+
+getLocation() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the location.
+
+getLocation() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the location.
+
+getLocation() - Method in class javax.ws.rs.core.Response
+
+Get the location.
+
+getLocation() - Method in exception javax.ws.rs.RedirectionException
+
+Get the redirection response location.
+
+getMatchedResources() - Method in interface javax.ws.rs.core.UriInfo
+
+Get a read-only list of the currently matched resource class instances.
+
+getMatchedURIs() - Method in interface javax.ws.rs.core.UriInfo
+
+Get a read-only list of URIs for matched resources.
+
+getMatchedURIs(boolean) - Method in interface javax.ws.rs.core.UriInfo
+
+Get a read-only list of URIs for matched resources.
+
+getMatrixParameters() - Method in interface javax.ws.rs.core.PathSegment
+
+Get a map of the matrix parameters associated with the path segment.
+
+getMaxAge() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the max-age cache control directive.
+
+getMaxAge() - Method in class javax.ws.rs.core.NewCookie
+
+Get the maximum age of the the cookie in seconds.
+
+getMediaType() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the media type of the entity.
+
+getMediaType() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the media type of the entity.
+
+getMediaType() - Method in class javax.ws.rs.client.Entity
+
+Get entity media type.
+
+getMediaType() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get the media type of the entity.
+
+getMediaType() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the media type of the entity.
+
+getMediaType() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get the media type of the request entity.
+
+getMediaType() - Method in class javax.ws.rs.core.Response
+
+Get the media type of the message entity.
+
+getMediaType() - Method in class javax.ws.rs.core.Variant
+
+Get the media type of the variant.
+
+getMediaType() - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Get media type of HTTP entity.
+
+getMediaType() - Method in interface javax.ws.rs.sse.OutboundSseEvent
+
+
+
+getMessageBodyReader(Class<T>, Type, Annotation[], MediaType) - Method in interface javax.ws.rs.ext.Providers
+
+Get a message body reader that matches a set of criteria.
+
+getMessageBodyWriter(Class<T>, Type, Annotation[], MediaType) - Method in interface javax.ws.rs.ext.Providers
+
+Get a message body writer that matches a set of criteria.
+
+getMetadata() - Method in class javax.ws.rs.core.Response
+
+
+
+getMethod() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the request method.
+
+getMethod() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get the request method.
+
+getMethod() - Method in interface javax.ws.rs.core.Request
+
+Get the request method, e.g.
+
+getName() - Method in class javax.ws.rs.core.Cookie
+
+Get the name of the cookie.
+
+getName() - Method in interface javax.ws.rs.sse.SseEvent
+
+Get event name.
+
+getNoCacheFields() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the value of the no-cache cache control directive.
+
+getOutputStream() - Method in interface javax.ws.rs.ext.WriterInterceptorContext
+
+Get the output stream for the object to be written.
+
+getParameters() - Method in class javax.ws.rs.core.MediaType
+
+Getter for a read-only parameter map.
+
+getParams() - Method in class javax.ws.rs.core.Link
+
+Returns an immutable map that includes all the link parameters
+ defined on this link.
+
+getParams() - Method in class javax.ws.rs.core.Link.JaxbLink
+
+Get the parameter map for this link.
+
+getPath() - Method in class javax.ws.rs.core.Cookie
+
+Get the path of the cookie.
+
+getPath() - Method in interface javax.ws.rs.core.PathSegment
+
+Get the path segment.
+
+getPath() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the path of the current request relative to the base URI as a string.
+
+getPath(boolean) - Method in interface javax.ws.rs.core.UriInfo
+
+Get the path of the current request relative to the base URI as a string.
+
+getPathParameters() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the values of any embedded URI template parameters.
+
+getPathParameters(boolean) - Method in interface javax.ws.rs.core.UriInfo
+
+Get the values of any embedded URI template parameters.
+
+getPathSegments() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the path of the current request relative to the base URI as a
+ list of
PathSegment
.
+
+getPathSegments(boolean) - Method in interface javax.ws.rs.core.UriInfo
+
+Get the path of the current request relative to the base URI as a list of
+
PathSegment
.
+
+getPrivateFields() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the value of the private cache control directive.
+
+getProperties() - Method in class javax.ws.rs.core.Application
+
+Get a map of custom application-wide properties.
+
+getProperties() - Method in interface javax.ws.rs.core.Configuration
+
+Get the immutable bag of configuration properties.
+
+getProperty(String) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Returns the property with the given name registered in the current request/response
+ exchange context, or null
if there is no property by that name.
+
+getProperty(String) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Returns the property with the given name registered in the current request/response
+ exchange context, or null
if there is no property by that name.
+
+getProperty(String) - Method in interface javax.ws.rs.core.Configuration
+
+Get the value for the property with a given name.
+
+getProperty(String) - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Returns the property with the given name registered in the current request/response
+ exchange context, or null
if there is no property by that name.
+
+getPropertyNames() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Returns an immutable
collection
containing the property names
+ available within the context of the current request/response exchange context.
+
+getPropertyNames() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Returns an immutable
collection
containing the property
+ names available within the context of the current request/response exchange context.
+
+getPropertyNames() - Method in interface javax.ws.rs.core.Configuration
+
+Returns an immutable
collection
containing the
+ property names available within the context of the current configuration instance.
+
+getPropertyNames() - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Returns an immutable
collection
containing the property
+ names available within the context of the current request/response exchange context.
+
+getQueryParameters() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the URI query parameters of the current request.
+
+getQueryParameters(boolean) - Method in interface javax.ws.rs.core.UriInfo
+
+Get the URI query parameters of the current request.
+
+getRawType() - Method in class javax.ws.rs.core.GenericEntity
+
+Gets the raw type of the enclosed entity.
+
+getRawType() - Method in class javax.ws.rs.core.GenericType
+
+Returns the object representing the class or interface that declared
+ the type represented by this generic type instance.
+
+getReasonPhrase() - Method in enum javax.ws.rs.core.Response.Status
+
+Get the reason phrase.
+
+getReasonPhrase() - Method in interface javax.ws.rs.core.Response.StatusType
+
+Get the reason phrase.
+
+getReconnectDelay() - Method in interface javax.ws.rs.sse.SseEvent
+
+Get new connection retry time in milliseconds the event receiver should wait before attempting to
+ reconnect after a connection to the SSE event source is lost.
+
+getRel() - Method in class javax.ws.rs.core.Link
+
+Returns the value associated with the link rel
param, or
+ null
if this param is not specified.
+
+getRels() - Method in class javax.ws.rs.core.Link
+
+Returns the value associated with the link rel
param as a list
+ of strings or the empty list if rel
is not defined.
+
+getRequest() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get the injectable request information.
+
+getRequestHeader(String) - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get the values of a HTTP request header.
+
+getRequestHeaders() - Method in interface javax.ws.rs.core.HttpHeaders
+
+Get the values of HTTP request headers.
+
+getRequestUri() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the absolute request URI including any query parameters.
+
+getRequestUriBuilder() - Method in interface javax.ws.rs.core.UriInfo
+
+Get the absolute request URI in the form of a UriBuilder.
+
+getResource(Class<T>) - Method in interface javax.ws.rs.container.ResourceContext
+
+Get a resolved instance of a resource or sub-resource class.
+
+getResourceClass() - Method in interface javax.ws.rs.container.ResourceInfo
+
+Get the resource class that is the target of a request,
+ or null
if this information is not available.
+
+getResourceMethod() - Method in interface javax.ws.rs.container.ResourceInfo
+
+Get the resource method that is the target of a request,
+ or null
if this information is not available.
+
+getResponse() - Method in exception javax.ws.rs.client.ResponseProcessingException
+
+Get the HTTP response for which the processing has failed.
+
+getResponse() - Method in exception javax.ws.rs.WebApplicationException
+
+Get the HTTP response.
+
+getRetryTime(Date) - Method in exception javax.ws.rs.ServiceUnavailableException
+
+Get the retry time for the failed request.
+
+getRuntimeType() - Method in interface javax.ws.rs.core.Configuration
+
+Get the runtime type of this configuration context.
+
+getRxInvoker(SyncInvoker, ExecutorService) - Method in interface javax.ws.rs.client.RxInvokerProvider
+
+
+
+getSecurityContext() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get the injectable security context information for the current request.
+
+getSingletons() - Method in class javax.ws.rs.core.Application
+
+Get a set of root resource, provider and
feature
instances.
+
+getSize(T, Class<?>, Type, Annotation[], MediaType) - Method in interface javax.ws.rs.ext.MessageBodyWriter
+
+Originally, the method has been called before writeTo
to ascertain the length in bytes of
+ the serialized form of t
.
+
+getSMaxAge() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the s-maxage cache control directive.
+
+getSslContext() - Method in interface javax.ws.rs.client.Client
+
+Get the SSL context configured to be used with the current client run-time.
+
+getStatus() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the status code associated with the response.
+
+getStatus() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the status code associated with the response.
+
+getStatus() - Method in class javax.ws.rs.core.Response
+
+Get the status code associated with the response.
+
+getStatusCode() - Method in enum javax.ws.rs.core.Response.Status
+
+Get the associated status code.
+
+getStatusCode() - Method in interface javax.ws.rs.core.Response.StatusType
+
+Get the associated status code.
+
+getStatusInfo() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Get the complete status information associated with the response.
+
+getStatusInfo() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get the complete status information associated with the response.
+
+getStatusInfo() - Method in class javax.ws.rs.core.Response
+
+Get the complete status information associated with the response.
+
+getStringHeaders() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get a string view of header values associated with the message.
+
+getStringHeaders() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Get a string view of header values associated with the message.
+
+getStringHeaders() - Method in class javax.ws.rs.core.Response
+
+Get view of the response headers and their string values.
+
+getSubtype() - Method in class javax.ws.rs.core.MediaType
+
+Getter for subtype.
+
+getTitle() - Method in class javax.ws.rs.core.Link
+
+Returns the value associated with the link title
param, or
+ null
if this param is not specified.
+
+getType() - Method in class javax.ws.rs.core.GenericEntity
+
+Gets underlying Type
instance.
+
+getType() - Method in class javax.ws.rs.core.GenericType
+
+Retrieve the type represented by the generic type instance.
+
+getType() - Method in class javax.ws.rs.core.Link
+
+Returns the value associated with the link type
param, or
+ null
if this param is not specified.
+
+getType() - Method in class javax.ws.rs.core.MediaType
+
+Getter for primary type.
+
+getType() - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Get Java type supported by corresponding message body provider.
+
+getType() - Method in interface javax.ws.rs.sse.OutboundSseEvent
+
+Get data type.
+
+getUri() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Get the request URI.
+
+getUri() - Method in interface javax.ws.rs.client.WebTarget
+
+Get the URI identifying the resource.
+
+getUri() - Method in class javax.ws.rs.core.Link
+
+Returns the underlying URI associated with this link.
+
+getUri() - Method in class javax.ws.rs.core.Link.JaxbLink
+
+Get the underlying URI for this link.
+
+getUriBuilder() - Method in interface javax.ws.rs.client.WebTarget
+
+Get the URI builder initialized with the
URI
of the current
+ resource target.
+
+getUriBuilder() - Method in class javax.ws.rs.core.Link
+
+Convenience method that returns a
UriBuilder
+ initialized with this link's underlying URI.
+
+getUriInfo() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Get request URI information.
+
+getUserPrincipal() - Method in interface javax.ws.rs.core.SecurityContext
+
+Returns a java.security.Principal
object containing the
+ name of the current authenticated user.
+
+getValue() - Method in class javax.ws.rs.core.Cookie
+
+Get the value of the cookie.
+
+getValue() - Method in class javax.ws.rs.core.EntityTag
+
+Get the value of an EntityTag
.
+
+getValues(K) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Return a non-null list of values for a given key.
+
+getVariant() - Method in class javax.ws.rs.client.Entity
+
+
+
+getVersion() - Method in class javax.ws.rs.core.Cookie
+
+Get the version of the cookie.
+
+GONE - javax.ws.rs.core.Response.Status
+
+
+
+
+
+
+
+
H
+
+handleTimeout(AsyncResponse) - Method in interface javax.ws.rs.container.TimeoutHandler
+
+Invoked when the suspended asynchronous response is about to time out.
+
+hasEntity() - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Check if there is an entity available in the request.
+
+hasEntity() - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Check if there is a non-empty entity input stream is available in the response
+ message.
+
+hasEntity() - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Check if there is a non-empty entity input stream available in the request
+ message.
+
+hasEntity() - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Check if there is an entity available in the response.
+
+hasEntity() - Method in class javax.ws.rs.core.Response
+
+Check if there is an entity available in the response.
+
+hashCode() - Method in class javax.ws.rs.client.Entity
+
+hashCode() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+hashCode() - Method in class javax.ws.rs.core.CacheControl
+
+Generate hash code from cache control properties.
+
+hashCode() - Method in class javax.ws.rs.core.Cookie
+
+Generate a hash code by hashing all of the cookies properties.
+
+hashCode() - Method in class javax.ws.rs.core.EntityTag
+
+Generate hashCode based on value and weakness.
+
+hashCode() - Method in class javax.ws.rs.core.GenericEntity
+
+hashCode() - Method in class javax.ws.rs.core.GenericType
+
+hashCode() - Method in class javax.ws.rs.core.Link.JaxbLink
+
+hashCode() - Method in class javax.ws.rs.core.MediaType
+
+Generate a hash code from the type, subtype and parameters.
+
+hashCode() - Method in class javax.ws.rs.core.NewCookie
+
+Generate a hash code by hashing all of the properties.
+
+hashCode() - Method in class javax.ws.rs.core.Variant
+
+Generate hash code from variant properties.
+
+hasLink(String) - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Check if link for relation exists.
+
+hasLink(String) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Check if link for relation exists.
+
+hasLink(String) - Method in class javax.ws.rs.core.Response
+
+Check if link for relation exists.
+
+hasRetryAfter() - Method in exception javax.ws.rs.ServiceUnavailableException
+
+Check if the underlying response contains the information on when is it
+ possible to
retry the request
.
+
+head() - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP HEAD method for the current request asynchronously.
+
+head() - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+head() - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP HEAD method for the current request.
+
+head() - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP HEAD method for the current request synchronously.
+
+head(InvocationCallback<Response>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP HEAD method for the current request asynchronously.
+
+HEAD - Annotation Type in javax.ws.rs
+
+Indicates that the annotated method responds to HTTP HEAD requests.
+
+HEAD - Static variable in annotation type javax.ws.rs.HttpMethod
+
+HTTP HEAD method.
+
+header(String, Object) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Add an arbitrary header.
+
+header(String, Object) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Add an arbitrary header.
+
+HEADER_DECORATOR - Static variable in class javax.ws.rs.Priorities
+
+Header decorator filter/interceptor priority.
+
+HeaderParam - Annotation Type in javax.ws.rs
+
+Binds the value(s) of a HTTP header to a resource method parameter,
+ resource class field, or resource class bean property.
+
+headers(MultivaluedMap<String, Object>) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Replaces all existing headers with the newly supplied headers.
+
+host(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI host.
+
+HOST - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+hostnameVerifier(HostnameVerifier) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the hostname verifier to be used by the client to verify the endpoint's hostname against it's
+ identification information.
+
+html(T) - Static method in class javax.ws.rs.client.Entity
+
+
+
+HTTP_VERSION_NOT_SUPPORTED - javax.ws.rs.core.Response.Status
+
+
+
+HttpHeaders - Interface in javax.ws.rs.core
+
+An injectable interface that provides access to HTTP header information.
+
+HttpMethod - Annotation Type in javax.ws.rs
+
+Associates the name of a HTTP method with an annotation.
+
+
+
+
+
+
I
+
+id(String) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+Set the event id.
+
+IF_MATCH - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+IF_MODIFIED_SINCE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+IF_NONE_MATCH - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+IF_UNMODIFIED_SINCE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+InboundSseEvent - Interface in javax.ws.rs.sse
+
+Inbound Server-sent event.
+
+INFORMATIONAL - javax.ws.rs.core.Response.Status.Family
+
+1xx
HTTP status codes.
+
+initResource(T) - Method in interface javax.ws.rs.container.ResourceContext
+
+Initialize the resource or sub-resource instance.
+
+InterceptorContext - Interface in javax.ws.rs.ext
+
+Context shared by message body interceptors that can be used to wrap
+ calls to
MessageBodyReader.readFrom(java.lang.Class<T>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.String>, java.io.InputStream)
and
+
MessageBodyWriter.writeTo(T, java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.Object>, java.io.OutputStream)
.
+
+INTERNAL_SERVER_ERROR - javax.ws.rs.core.Response.Status
+
+
+
+InternalServerErrorException - Exception in javax.ws.rs
+
+
+
+InternalServerErrorException() - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+InternalServerErrorException(String) - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+InternalServerErrorException(String, Throwable) - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+InternalServerErrorException(String, Response) - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+InternalServerErrorException(String, Response, Throwable) - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+InternalServerErrorException(Throwable) - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+InternalServerErrorException(Response) - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+InternalServerErrorException(Response, Throwable) - Constructor for exception javax.ws.rs.InternalServerErrorException
+
+Construct a new internal server error exception.
+
+invocation(Link) - Method in interface javax.ws.rs.client.Client
+
+Build an invocation builder from a link.
+
+Invocation - Interface in javax.ws.rs.client
+
+A client request invocation.
+
+Invocation.Builder - Interface in javax.ws.rs.client
+
+A client request invocation builder.
+
+InvocationCallback <RESPONSE > - Interface in javax.ws.rs.client
+
+Callback that can be implemented to receive the asynchronous processing
+ events from the invocation processing.
+
+invoke() - Method in interface javax.ws.rs.client.Invocation
+
+Synchronously invoke the request and receive a response back.
+
+invoke(Class<T>) - Method in interface javax.ws.rs.client.Invocation
+
+Synchronously invoke the request and receive a response of the specified
+ type back.
+
+invoke(GenericType<T>) - Method in interface javax.ws.rs.client.Invocation
+
+Synchronously invoke the request and receive a response of the specified
+ generic type back.
+
+isCancelled() - Method in interface javax.ws.rs.container.AsyncResponse
+
+Check if the asynchronous response instance has been cancelled.
+
+isClosed() - Method in interface javax.ws.rs.sse.SseEventSink
+
+Check if the stream has been closed already.
+
+isCompatible(MediaType) - Method in class javax.ws.rs.core.MediaType
+
+Check if this media type is compatible with another media type.
+
+isDone() - Method in interface javax.ws.rs.container.AsyncResponse
+
+Check if the processing of a request this asynchronous response instance belongs to
+ has finished.
+
+isEmpty() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+isEmpty() - Method in interface javax.ws.rs.sse.InboundSseEvent
+
+Check if the event is empty (i.e.
+
+isEnabled(Class<? extends Feature>) - Method in interface javax.ws.rs.core.Configuration
+
+Check if a
feature
instance of
featureClass
class has been
+ previously enabled in the runtime configuration context.
+
+isEnabled(Feature) - Method in interface javax.ws.rs.core.Configuration
+
+Check if a particular
feature
instance has been previously
+ enabled in the runtime configuration context.
+
+isHttpOnly() - Method in class javax.ws.rs.core.NewCookie
+
+Returns true
if this cookie contains the HttpOnly
attribute.
+
+isMustRevalidate() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the must-revalidate cache control directive.
+
+isNoCache() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the no-cache cache control directive.
+
+isNoStore() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the no-store cache control directive.
+
+isNoTransform() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the no-transform cache control directive.
+
+isOpen() - Method in interface javax.ws.rs.sse.SseEventSource
+
+Check if this event source instance has already been
opened
.
+
+isPrivate() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the private cache control directive.
+
+isProviderFor(Class<?>) - Method in interface javax.ws.rs.client.RxInvokerProvider
+
+Determine if this is a provider for the given
RxInvoker
subclass.
+
+isProxyRevalidate() - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the proxy-revalidate cache control directive.
+
+isReadable(Class<?>, Type, Annotation[], MediaType) - Method in interface javax.ws.rs.ext.MessageBodyReader
+
+Ascertain if the MessageBodyReader can produce an instance of a
+ particular type.
+
+isReconnectDelaySet() - Method in interface javax.ws.rs.sse.SseEvent
+
+Check if the connection retry time has been set in the event.
+
+isRegistered(Class<?>) - Method in interface javax.ws.rs.core.Configuration
+
+Check if a component of the supplied componentClass
class has been previously
+ registered in the runtime configuration context.
+
+isRegistered(Object) - Method in interface javax.ws.rs.core.Configuration
+
+Check if a particular API
component
instance (such as providers or
+
features
) has been previously registered in the runtime configuration context.
+
+isSecure() - Method in class javax.ws.rs.core.NewCookie
+
+Whether the cookie will only be sent over a secure connection.
+
+isSecure() - Method in interface javax.ws.rs.core.SecurityContext
+
+Returns a boolean indicating whether this request was made
+ using a secure channel, such as HTTPS.
+
+isSuspended() - Method in interface javax.ws.rs.container.AsyncResponse
+
+Check if the asynchronous response instance is in a suspended state.
+
+isUserInRole(String) - Method in interface javax.ws.rs.core.SecurityContext
+
+Returns a boolean indicating whether the authenticated user is included
+ in the specified logical "role".
+
+isWeak() - Method in class javax.ws.rs.core.EntityTag
+
+Check the strength of an EntityTag
.
+
+isWildcardSubtype() - Method in class javax.ws.rs.core.MediaType
+
+Checks if the subtype is a wildcard.
+
+isWildcardType() - Method in class javax.ws.rs.core.MediaType
+
+Checks if the primary type is a wildcard.
+
+isWriteable(Class<?>, Type, Annotation[], MediaType) - Method in interface javax.ws.rs.ext.MessageBodyWriter
+
+Ascertain if the MessageBodyWriter supports a particular type.
+
+
+
+
+
+
J
+
+javax.ws.rs - package javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+javax.ws.rs.client - package javax.ws.rs.client
+
+The Client API
+
+javax.ws.rs.container - package javax.ws.rs.container
+
+Container-specific API.
+
+javax.ws.rs.core - package javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+javax.ws.rs.ext - package javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+javax.ws.rs.sse - package javax.ws.rs.sse
+
+Server-Sent Events related API.
+
+JaxbAdapter() - Constructor for class javax.ws.rs.core.Link.JaxbAdapter
+
+JaxbLink() - Constructor for class javax.ws.rs.core.Link.JaxbLink
+
+Default constructor needed during unmarshalling.
+
+JaxbLink(URI) - Constructor for class javax.ws.rs.core.Link.JaxbLink
+
+Construct an instance from a URI and no parameters.
+
+JaxbLink(URI, Map<QName, Object>) - Constructor for class javax.ws.rs.core.Link.JaxbLink
+
+Construct an instance from a URI and some parameters.
+
+JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY - Static variable in class javax.ws.rs.client.ClientBuilder
+
+
+
+JAXRS_DEFAULT_SSE_BUILDER_PROPERTY - Static variable in class javax.ws.rs.sse.SseEventSource.Builder
+
+
+
+JAXRS_RUNTIME_DELEGATE_PROPERTY - Static variable in class javax.ws.rs.ext.RuntimeDelegate
+
+
+
+json(T) - Static method in class javax.ws.rs.client.Entity
+
+
+
+
+
+
+
+
K
+
+keySet() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+keyStore(KeyStore, char[]) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the client-side key store.
+
+keyStore(KeyStore, String) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the client-side key store.
+
+
+
+
+
+
L
+
+language(String) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the message entity language.
+
+language(Locale) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the message entity language.
+
+languages(Locale...) - Static method in class javax.ws.rs.core.Variant
+
+
+
+languages(Locale...) - Method in class javax.ws.rs.core.Variant.VariantListBuilder
+
+Set the language(s) for this variant.
+
+LAST_EVENT_ID_HEADER - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+LAST_MODIFIED - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+lastModified(Date) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the response entity last modification date.
+
+LENGTH_REQUIRED - javax.ws.rs.core.Response.Status
+
+
+
+link(String) - Method in interface javax.ws.rs.core.Link.Builder
+
+Initialize builder using another link represented as a string.
+
+link(String, String) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Add a link header.
+
+link(URI, String) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Add a link header.
+
+link(Link) - Method in interface javax.ws.rs.core.Link.Builder
+
+Initialize builder using another link.
+
+Link - Class in javax.ws.rs.core
+
+Class representing hypermedia links.
+
+Link() - Constructor for class javax.ws.rs.core.Link
+
+LINK - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+Link.Builder - Interface in javax.ws.rs.core
+
+Builder class for hypermedia links.
+
+Link.JaxbAdapter - Class in javax.ws.rs.core
+
+An implementation of JAXB
XmlAdapter
+ that maps the
Link
type to a value that can be
+ marshalled and unmarshalled by JAXB.
+
+Link.JaxbLink - Class in javax.ws.rs.core
+
+Value type for
Link
that can be marshalled and
+ unmarshalled by JAXB.
+
+links(Link...) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Add one or more link headers.
+
+location(URI) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the location.
+
+LOCATION - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+
+
+
+
+
M
+
+marshal(Link) - Method in class javax.ws.rs.core.Link.JaxbAdapter
+
+
+
+matrixParam(String, Object...) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by appending a matrix parameter to
+ the existing set of matrix parameters of the current final segment of the
+ URI of the current target instance.
+
+matrixParam(String, Object...) - Method in class javax.ws.rs.core.UriBuilder
+
+Append a matrix parameter to the existing set of matrix parameters of
+ the current final segment of the URI path.
+
+MatrixParam - Annotation Type in javax.ws.rs
+
+Binds the value(s) of a URI matrix parameter to a resource method parameter,
+ resource class field, or resource class bean property.
+
+MEDIA_TYPE_WILDCARD - Static variable in class javax.ws.rs.core.MediaType
+
+The value of a type or subtype wildcard .
+
+mediaType(MediaType) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+
+
+MediaType - Class in javax.ws.rs.core
+
+An abstraction for a media type.
+
+MediaType() - Constructor for class javax.ws.rs.core.MediaType
+
+Creates a new instance of MediaType
, both type and subtype are wildcards.
+
+MediaType(String, String) - Constructor for class javax.ws.rs.core.MediaType
+
+Creates a new instance of MediaType
with the supplied type and subtype.
+
+MediaType(String, String, String) - Constructor for class javax.ws.rs.core.MediaType
+
+Creates a new instance of MediaType
with the supplied type, subtype and
+ parameter.
+
+MediaType(String, String, Map<String, String>) - Constructor for class javax.ws.rs.core.MediaType
+
+Creates a new instance of MediaType
with the supplied type, subtype and
+ parameters.
+
+mediaTypes(MediaType...) - Static method in class javax.ws.rs.core.Variant
+
+
+
+mediaTypes(MediaType...) - Method in class javax.ws.rs.core.Variant.VariantListBuilder
+
+Set the media type(s) for this variant.
+
+MessageBodyReader <T > - Interface in javax.ws.rs.ext
+
+Contract for a provider that supports the conversion of a stream to a
+ Java type.
+
+MessageBodyWriter <T > - Interface in javax.ws.rs.ext
+
+Contract for a provider that supports the conversion of a Java type to a
+ stream.
+
+method(String) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+method(String) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke an arbitrary method for the current request.
+
+method(String) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke an arbitrary method for the current request synchronously.
+
+method(String, Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke an arbitrary method for the current request.
+
+method(String, Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String, Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+method(String, Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke an arbitrary method for the current request synchronously.
+
+method(String, Entity<?>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String, Entity<?>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+method(String, Entity<?>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke an arbitrary method for the current request.
+
+method(String, Entity<?>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke an arbitrary method for the current request synchronously.
+
+method(String, Entity<?>, Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke an arbitrary method for the current request.
+
+method(String, Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String, Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+method(String, Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke an arbitrary method for the current request synchronously.
+
+method(String, Entity<?>, InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String, Entity<?>, GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke an arbitrary method for the current request.
+
+method(String, Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String, Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+method(String, Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke an arbitrary method for the current request synchronously.
+
+method(String, InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String, GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke an arbitrary method for the current request.
+
+method(String, GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke an arbitrary method for the current request asynchronously.
+
+method(String, GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+method(String, GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke an arbitrary method for the current request synchronously.
+
+METHOD_NOT_ALLOWED - javax.ws.rs.core.Response.Status
+
+
+
+MOVED_PERMANENTLY - javax.ws.rs.core.Response.Status
+
+
+
+MULTIPART_FORM_DATA - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+MULTIPART_FORM_DATA_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+MultivaluedHashMap <K ,V > - Class in javax.ws.rs.core
+
+
+
+MultivaluedHashMap() - Constructor for class javax.ws.rs.core.MultivaluedHashMap
+
+Constructs an empty multivalued hash map with the default initial capacity
+ (16
) and the default load factor (0.75
).
+
+MultivaluedHashMap(int) - Constructor for class javax.ws.rs.core.MultivaluedHashMap
+
+Constructs an empty multivalued hash map with the specified initial
+ capacity and the default load factor (0.75
).
+
+MultivaluedHashMap(int, float) - Constructor for class javax.ws.rs.core.MultivaluedHashMap
+
+Constructs an empty multivalued hash map with the specified initial
+ capacity and load factor.
+
+MultivaluedHashMap(Map<? extends K, ? extends V>) - Constructor for class javax.ws.rs.core.MultivaluedHashMap
+
+Constructs a new multivalued hash map with the same mappings as the
+ specified single-valued
Map
.
+
+MultivaluedHashMap(MultivaluedMap<? extends K, ? extends V>) - Constructor for class javax.ws.rs.core.MultivaluedHashMap
+
+Constructs a new multivalued hash map with the same mappings as the
+ specified
MultivaluedMap
.
+
+MultivaluedMap <K ,V > - Interface in javax.ws.rs.core
+
+A map of key-values pairs.
+
+
+
+
+
+
N
+
+name(String) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+Set event name.
+
+NameBinding - Annotation Type in javax.ws.rs
+
+Meta-annotation used to create name binding annotations for filters
+ and interceptors.
+
+NETWORK_AUTHENTICATION_REQUIRED - javax.ws.rs.core.Response.Status
+
+
+
+newBroadcaster() - Method in interface javax.ws.rs.sse.Sse
+
+Get a new Server-sent event broadcaster.
+
+newBuilder() - Static method in class javax.ws.rs.client.ClientBuilder
+
+Create a new ClientBuilder
instance using the default client builder
+ implementation class provided by the implementation provider.
+
+newClient() - Static method in class javax.ws.rs.client.ClientBuilder
+
+Create a new
Client
instance using the default client builder implementation
+ class provided by the implementation provider.
+
+newClient(Configuration) - Static method in class javax.ws.rs.client.ClientBuilder
+
+Create a new custom-configured
Client
instance using the default client builder
+ implementation class provided by the implementation provider.
+
+NewCookie - Class in javax.ws.rs.core
+
+Used to create a new HTTP cookie, transferred in a response.
+
+NewCookie(String, String) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance.
+
+NewCookie(String, String, String, String, int, String, int, boolean) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance.
+
+NewCookie(String, String, String, String, int, String, int, Date, boolean, boolean) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance.
+
+NewCookie(String, String, String, String, String, int, boolean) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance.
+
+NewCookie(String, String, String, String, String, int, boolean, boolean) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance.
+
+NewCookie(Cookie) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance copying the information in the supplied cookie.
+
+NewCookie(Cookie, String, int, boolean) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance supplementing the information in the supplied cookie.
+
+NewCookie(Cookie, String, int, Date, boolean, boolean) - Constructor for class javax.ws.rs.core.NewCookie
+
+Create a new instance supplementing the information in the supplied cookie.
+
+newEvent(String) - Method in interface javax.ws.rs.sse.Sse
+
+
+
+newEvent(String, String) - Method in interface javax.ws.rs.sse.Sse
+
+
+
+newEventBuilder() - Method in interface javax.ws.rs.sse.Sse
+
+Get a new outbound event builder.
+
+newInstance() - Static method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Create a new builder instance.
+
+newInstance() - Static method in class javax.ws.rs.core.UriBuilder
+
+Creates a new instance of UriBuilder.
+
+newInstance() - Static method in class javax.ws.rs.core.Variant.VariantListBuilder
+
+Create a new builder instance.
+
+NO_CONTENT - javax.ws.rs.core.Response.Status
+
+
+
+NO_TIMEOUT - Static variable in interface javax.ws.rs.container.AsyncResponse
+
+Constant specifying no suspend timeout value.
+
+noContent() - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder for an empty response.
+
+NoContentException - Exception in javax.ws.rs.core
+
+An I/O exception thrown by
MessageBodyReader
implementations
+ when reading a zero-length message content to indicate that the message body reader
+ is not able to produce an instance representing an zero-length message content.
+
+NoContentException(String) - Constructor for exception javax.ws.rs.core.NoContentException
+
+Construct a new NoContentException
instance.
+
+NoContentException(String, Throwable) - Constructor for exception javax.ws.rs.core.NoContentException
+
+Construct a new NoContentException
instance.
+
+NoContentException(Throwable) - Constructor for exception javax.ws.rs.core.NoContentException
+
+Construct a new NoContentException
instance.
+
+NOT_ACCEPTABLE - javax.ws.rs.core.Response.Status
+
+
+
+NOT_FOUND - javax.ws.rs.core.Response.Status
+
+
+
+NOT_IMPLEMENTED - javax.ws.rs.core.Response.Status
+
+
+
+NOT_MODIFIED - javax.ws.rs.core.Response.Status
+
+
+
+notAcceptable(List<Variant>) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder for a not acceptable response.
+
+NotAcceptableException - Exception in javax.ws.rs
+
+A runtime exception indicating that a client request is
+
not acceptable
+ by the server.
+
+NotAcceptableException() - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAcceptableException(String) - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAcceptableException(String, Throwable) - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAcceptableException(String, Response) - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAcceptableException(String, Response, Throwable) - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAcceptableException(Throwable) - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAcceptableException(Response) - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAcceptableException(Response, Throwable) - Constructor for exception javax.ws.rs.NotAcceptableException
+
+Construct a new "request not acceptable" exception.
+
+NotAllowedException - Exception in javax.ws.rs
+
+A runtime exception indicating a client requesting a resource method that is
+
not allowed
.
+
+NotAllowedException(String, String...) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAllowedException(String, String, String...) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAllowedException(String, Throwable, String...) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAllowedException(String, Response) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAllowedException(String, Response, Throwable) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAllowedException(Throwable, String...) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAllowedException(Response) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAllowedException(Response, Throwable) - Constructor for exception javax.ws.rs.NotAllowedException
+
+Construct a new method not allowed exception.
+
+NotAuthorizedException - Exception in javax.ws.rs
+
+A runtime exception indicating request authorization failure caused by one of the following
+ scenarios:
+
+
+ a client did not send the required authorization credentials to access the requested resource,
+ i.e.
+
+NotAuthorizedException(Object, Object...) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotAuthorizedException(String, Object, Object...) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotAuthorizedException(String, Throwable, Object, Object...) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotAuthorizedException(String, Response) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotAuthorizedException(String, Response, Throwable) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotAuthorizedException(Throwable, Object, Object...) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotAuthorizedException(Response) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotAuthorizedException(Response, Throwable) - Constructor for exception javax.ws.rs.NotAuthorizedException
+
+Construct a new "not authorized" exception.
+
+NotFoundException - Exception in javax.ws.rs
+
+A runtime exception indicating a resource requested by a client was
+
not found
on the server.
+
+NotFoundException() - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+NotFoundException(String) - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+NotFoundException(String, Throwable) - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+NotFoundException(String, Response) - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+NotFoundException(String, Response, Throwable) - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+NotFoundException(Throwable) - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+NotFoundException(Response) - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+NotFoundException(Response, Throwable) - Constructor for exception javax.ws.rs.NotFoundException
+
+Construct a new "not found" exception.
+
+notModified() - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with a not-modified status.
+
+notModified(String) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with a not-modified status
+ and a strong entity tag.
+
+notModified(EntityTag) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with a not-modified status.
+
+NotSupportedException - Exception in javax.ws.rs
+
+A runtime exception indicating that the client request entity media type is
+
not supported
.
+
+NotSupportedException() - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+NotSupportedException(String) - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+NotSupportedException(String, Throwable) - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+NotSupportedException(String, Response) - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+NotSupportedException(String, Response, Throwable) - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+NotSupportedException(Throwable) - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+NotSupportedException(Response) - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+NotSupportedException(Response, Throwable) - Constructor for exception javax.ws.rs.NotSupportedException
+
+Construct a new unsupported media type exception.
+
+
+
+
+
+
O
+
+ok() - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with an OK status.
+
+ok(Object) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder that contains a representation.
+
+ok(Object, String) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder that contains a representation.
+
+ok(Object, MediaType) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder that contains a representation.
+
+ok(Object, Variant) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder that contains a representation.
+
+OK - javax.ws.rs.core.Response.Status
+
+
+
+onClose(Consumer<SseEventSink>) - Method in interface javax.ws.rs.sse.SseBroadcaster
+
+Register a listener, which will be called when the SSE event output has been closed (either by client closing
+ the connection or by calling
SseEventSink.close()
on the server side.
+
+onComplete(Throwable) - Method in interface javax.ws.rs.container.CompletionCallback
+
+A completion callback notification method that will be invoked when the request
+ processing is finished, after a response is processed and is sent back to the
+ client or when an unmapped throwable has been propagated to the hosting I/O
+ container.
+
+onDisconnect(AsyncResponse) - Method in interface javax.ws.rs.container.ConnectionCallback
+
+This callback notification method is invoked in case the container detects
+ that the remote client connection associated with the asynchronous response
+ has been disconnected.
+
+onError(BiConsumer<SseEventSink, Throwable>) - Method in interface javax.ws.rs.sse.SseBroadcaster
+
+Register a listener, which will be called when an exception was thrown by a given SSE event output when trying
+ to write to it or close it.
+
+open() - Method in interface javax.ws.rs.sse.SseEventSource
+
+Open the connection to the supplied SSE underlying
web target
and start processing incoming
+
events
.
+
+options() - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+options() - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+options() - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP OPTIONS method for the current request.
+
+options() - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+options(Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP OPTIONS method for the current request.
+
+options(Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+options(Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+options(Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+options(InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+options(GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP OPTIONS method for the current request.
+
+options(GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+options(GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+options(GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+OPTIONS - Annotation Type in javax.ws.rs
+
+Indicates that the annotated method responds to HTTP OPTIONS requests.
+
+OPTIONS - Static variable in annotation type javax.ws.rs.HttpMethod
+
+HTTP OPTIONS method.
+
+OTHER - javax.ws.rs.core.Response.Status.Family
+
+Other, unrecognized HTTP status codes.
+
+OutboundSseEvent - Interface in javax.ws.rs.sse
+
+Representation of a single outbound Server-sent event.
+
+OutboundSseEvent.Builder - Interface in javax.ws.rs.sse
+
+
+
+
+
+
+
+
P
+
+param(String, String) - Method in class javax.ws.rs.core.Form
+
+Adds a new value to the specified form parameter.
+
+param(String, String) - Method in interface javax.ws.rs.core.Link.Builder
+
+Set an arbitrary parameter on this link.
+
+ParamConverter <T > - Interface in javax.ws.rs.ext
+
+Defines a contract for a delegate responsible for converting between a
+ String
form of a message parameter value and the corresponding custom
+ Java type T
.
+
+ParamConverter.Lazy - Annotation Type in javax.ws.rs.ext
+
+Mandates that a conversion of any
default value
delegated
+ to a
parameter converter
annotated with
@Lazy
+ annotation SHOULD occur only once the value is actually required (e.g.
+
+ParamConverterProvider - Interface in javax.ws.rs.ext
+
+
+
+PARTIAL_CONTENT - javax.ws.rs.core.Response.Status
+
+
+
+PATCH - Annotation Type in javax.ws.rs
+
+Indicates that the annotated method responds to HTTP PATCH requests.
+
+PATCH - Static variable in annotation type javax.ws.rs.HttpMethod
+
+HTTP PATCH method.
+
+path(Class) - Method in class javax.ws.rs.core.UriBuilder
+
+Append the path from a Path-annotated class to the
+ existing path.
+
+path(Class, String) - Method in class javax.ws.rs.core.UriBuilder
+
+Append the path from a Path-annotated method to the
+ existing path.
+
+path(Method) - Method in class javax.ws.rs.core.UriBuilder
+
+Append the path from a
Path
-annotated method to the
+ existing path.
+
+path(String) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by appending path to the URI of
+ the current target instance.
+
+path(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Append path to the existing path.
+
+Path - Annotation Type in javax.ws.rs
+
+Identifies the URI path that a resource class or class method will serve
+ requests for.
+
+PathParam - Annotation Type in javax.ws.rs
+
+Binds the value of a URI template parameter or a path segment
+ containing the template parameter to a resource method parameter, resource
+ class field, or resource class
+ bean property.
+
+PathSegment - Interface in javax.ws.rs.core
+
+Represents a URI path segment and any associated matrix parameters.
+
+PAYMENT_REQUIRED - javax.ws.rs.core.Response.Status
+
+
+
+port(int) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI port.
+
+post(Entity<?>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP POST method for the current request asynchronously.
+
+post(Entity<?>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+post(Entity<?>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP POST method for the current request.
+
+post(Entity<?>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP POST method for the current request synchronously.
+
+post(Entity<?>, Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP POST method for the current request.
+
+post(Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP POST method for the current request asynchronously.
+
+post(Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+post(Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP POST method for the current request synchronously.
+
+post(Entity<?>, InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP POST method for the current request asynchronously.
+
+post(Entity<?>, GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP POST method for the current request.
+
+post(Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP POST method for the current request asynchronously.
+
+post(Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+post(Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP POST method for the current request synchronously.
+
+POST - Annotation Type in javax.ws.rs
+
+Indicates that the annotated method responds to HTTP POST requests.
+
+POST - Static variable in annotation type javax.ws.rs.HttpMethod
+
+HTTP POST method.
+
+PRECONDITION_FAILED - javax.ws.rs.core.Response.Status
+
+
+
+PRECONDITION_REQUIRED - javax.ws.rs.core.Response.Status
+
+
+
+PreMatching - Annotation Type in javax.ws.rs.container
+
+Global binding annotation that can be applied to a
container request filter
to indicate that such filter should be applied globally
+ on all resources in the application before the actual resource matching occurs.
+
+Priorities - Class in javax.ws.rs
+
+A collection of built-in priority constants for the components that are supposed to be
+ ordered based on their javax.annotation.Priority
class-level annotation value when used
+ or applied by the runtime.
+
+proceed() - Method in interface javax.ws.rs.ext.ReaderInterceptorContext
+
+Proceed to the next interceptor in the chain.
+
+proceed() - Method in interface javax.ws.rs.ext.WriterInterceptorContext
+
+Proceed to the next interceptor in the chain.
+
+ProcessingException - Exception in javax.ws.rs
+
+A base runtime processing exception.
+
+ProcessingException(String) - Constructor for exception javax.ws.rs.ProcessingException
+
+Constructs a new runtime processing exception with the specified detail
+ message.
+
+ProcessingException(String, Throwable) - Constructor for exception javax.ws.rs.ProcessingException
+
+Constructs a new runtime processing exception with the specified detail
+ message and cause.
+
+ProcessingException(Throwable) - Constructor for exception javax.ws.rs.ProcessingException
+
+Constructs a new runtime processing exception with the specified cause
+ and a detail message of (cause==null ? null : cause.toString())
+ (which typically contains the class and detail message of cause
).
+
+Produces - Annotation Type in javax.ws.rs
+
+Defines the media type(s) that the methods of a resource class or
+
MessageBodyWriter
can produce.
+
+property(String, Object) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Set a new property in the context of a request represented by this invocation builder.
+
+property(String, Object) - Method in interface javax.ws.rs.client.Invocation
+
+Set a new property in the context of a request represented by this invocation.
+
+property(String, Object) - Method in interface javax.ws.rs.core.Configurable
+
+Set the new configuration property, if already set, the existing value of
+ the property will be updated.
+
+Provider - Annotation Type in javax.ws.rs.ext
+
+Marks an implementation of an extension interface that should be discoverable
+ by the runtime during a provider scanning phase.
+
+Providers - Interface in javax.ws.rs.ext
+
+An injectable interface providing runtime lookup of provider instances.
+
+PROXY_AUTHENTICATION_REQUIRED - javax.ws.rs.core.Response.Status
+
+
+
+put(Entity<?>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+put(Entity<?>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+put(Entity<?>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP PUT method for the current request.
+
+put(Entity<?>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP PUT method for the current request synchronously.
+
+put(Entity<?>, Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP PUT method for the current request.
+
+put(Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+put(Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+put(Entity<?>, Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP PUT method for the current request synchronously.
+
+put(Entity<?>, InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+put(Entity<?>, GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP PUT method for the current request.
+
+put(Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+put(Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+put(Entity<?>, GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP PUT method for the current request synchronously.
+
+put(K, List<V>) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+PUT - Annotation Type in javax.ws.rs
+
+Indicates that the annotated method responds to HTTP PUT requests.
+
+PUT - Static variable in annotation type javax.ws.rs.HttpMethod
+
+HTTP PUT method.
+
+putAll(Map<? extends K, ? extends List<V>>) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+putSingle(K, V) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Set the value for the key to be a one item list consisting of the supplied
+ value.
+
+putSingle(K, V) - Method in interface javax.ws.rs.core.MultivaluedMap
+
+Set the key's value to be a one item list consisting of the supplied value.
+
+
+
+
+
+
Q
+
+queryParam(String, Object...) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by configuring a query parameter on the URI
+ of the current target instance.
+
+queryParam(String, Object...) - Method in class javax.ws.rs.core.UriBuilder
+
+Append a query parameter to the existing set of query parameters.
+
+QueryParam - Annotation Type in javax.ws.rs
+
+Binds the value(s) of a HTTP query parameter to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+
+
+
R
+
+readData() - Method in interface javax.ws.rs.sse.InboundSseEvent
+
+Get the original event data as
String
.
+
+readData(Class<T>) - Method in interface javax.ws.rs.sse.InboundSseEvent
+
+Read event data as a given Java type.
+
+readData(Class<T>, MediaType) - Method in interface javax.ws.rs.sse.InboundSseEvent
+
+Read event data as a given Java type.
+
+readData(GenericType<T>) - Method in interface javax.ws.rs.sse.InboundSseEvent
+
+Read event data as a given generic type.
+
+readData(GenericType<T>, MediaType) - Method in interface javax.ws.rs.sse.InboundSseEvent
+
+Read event data as a given generic type.
+
+readEntity(Class<T>) - Method in class javax.ws.rs.core.Response
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+readEntity(Class<T>, Annotation[]) - Method in class javax.ws.rs.core.Response
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+readEntity(GenericType<T>) - Method in class javax.ws.rs.core.Response
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+readEntity(GenericType<T>, Annotation[]) - Method in class javax.ws.rs.core.Response
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+ReaderInterceptor - Interface in javax.ws.rs.ext
+
+
+
+ReaderInterceptorContext - Interface in javax.ws.rs.ext
+
+Context class used by
ReaderInterceptor
+ to intercept calls to (@link javax.ws.rs.ext.MessageBodyReader#readFrom}.
+
+readFrom(Class<T>, Type, Annotation[], MediaType, MultivaluedMap<String, String>, InputStream) - Method in interface javax.ws.rs.ext.MessageBodyReader
+
+
+
+readTimeout(long, TimeUnit) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the read timeout.
+
+RECONNECT_NOT_SET - Static variable in interface javax.ws.rs.sse.SseEvent
+
+A "reconnection not set" value for the SSE reconnect delay set via SSE event retry
field.
+
+reconnectDelay(long) - Method in interface javax.ws.rs.sse.OutboundSseEvent.Builder
+
+Set reconnection delay (in milliseconds) that indicates how long the event receiver should wait
+ before attempting to reconnect in case a connection to SSE event source is lost.
+
+reconnectingEvery(long, TimeUnit) - Method in class javax.ws.rs.sse.SseEventSource.Builder
+
+Set the initial reconnect delay to be used by the event source.
+
+REDIRECTION - javax.ws.rs.core.Response.Status.Family
+
+3xx
HTTP status codes.
+
+RedirectionException - Exception in javax.ws.rs
+
+A runtime application exception indicating a request redirection
+ (HTTP 3xx
status codes).
+
+RedirectionException(int, URI) - Constructor for exception javax.ws.rs.RedirectionException
+
+Construct a new redirection exception.
+
+RedirectionException(String, int, URI) - Constructor for exception javax.ws.rs.RedirectionException
+
+Construct a new redirection exception.
+
+RedirectionException(String, Response) - Constructor for exception javax.ws.rs.RedirectionException
+
+Construct a new redirection exception.
+
+RedirectionException(String, Response.Status, URI) - Constructor for exception javax.ws.rs.RedirectionException
+
+Construct a new redirection exception.
+
+RedirectionException(Response) - Constructor for exception javax.ws.rs.RedirectionException
+
+Construct a new redirection exception.
+
+RedirectionException(Response.Status, URI) - Constructor for exception javax.ws.rs.RedirectionException
+
+Construct a new redirection exception.
+
+register(Class<?>) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Register an asynchronous processing lifecycle callback class to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+register(Class<?>) - Method in interface javax.ws.rs.core.Configurable
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Class<?>, int) - Method in interface javax.ws.rs.core.Configurable
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Class<?>, Class<?>...) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Register asynchronous processing lifecycle callback classes to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+register(Class<?>, Class<?>...) - Method in interface javax.ws.rs.core.Configurable
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Class<?>, Map<Class<?>, Integer>) - Method in interface javax.ws.rs.core.Configurable
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Object) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Register an asynchronous processing lifecycle callback instance to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+register(Object) - Method in interface javax.ws.rs.core.Configurable
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Object, int) - Method in interface javax.ws.rs.core.Configurable
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Object, Class<?>...) - Method in interface javax.ws.rs.core.Configurable
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Object, Object...) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Register an asynchronous processing lifecycle callback instances to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+register(Object, Map<Class<?>, Integer>) - Method in interface javax.ws.rs.core.Configurable
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+register(Consumer<InboundSseEvent>) - Method in interface javax.ws.rs.sse.SseEventSource
+
+
+
+register(Consumer<InboundSseEvent>, Consumer<Throwable>) - Method in interface javax.ws.rs.sse.SseEventSource
+
+
+
+register(Consumer<InboundSseEvent>, Consumer<Throwable>, Runnable) - Method in interface javax.ws.rs.sse.SseEventSource
+
+
+
+register(SseEventSink) - Method in interface javax.ws.rs.sse.SseBroadcaster
+
+Register provided
SseEventSink
instance to this
SseBroadcaster
.
+
+rel(String) - Method in interface javax.ws.rs.core.Link.Builder
+
+Convenience method to set a link relation.
+
+REL - Static variable in class javax.ws.rs.core.Link
+
+Rel link param from RFC 5988.
+
+relativize(URI) - Method in interface javax.ws.rs.core.UriInfo
+
+Relativize a URI with respect to the current request URI.
+
+remove(Object) - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+removeProperty(String) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Removes a property with the given name from the current request/response
+ exchange context.
+
+removeProperty(String) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Removes a property with the given name from the current request/response
+ exchange context.
+
+removeProperty(String) - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Removes a property with the given name from the current request/response
+ exchange context.
+
+replaceAll(MultivaluedMap<String, Object>) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Replaces all existing headers with the newly supplied headers.
+
+replaceMatrix(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the matrix parameters of the current final segment of the current URI path.
+
+replaceMatrixParam(String, Object...) - Method in class javax.ws.rs.core.UriBuilder
+
+Replace the existing value(s) of a matrix parameter on
+ the current final segment of the URI path.
+
+replacePath(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI path.
+
+replaceQuery(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI query string.
+
+replaceQueryParam(String, Object...) - Method in class javax.ws.rs.core.UriBuilder
+
+Replace the existing value(s) of a query parameter.
+
+request() - Method in interface javax.ws.rs.client.WebTarget
+
+Start building a request to the targeted web resource.
+
+request(String...) - Method in interface javax.ws.rs.client.WebTarget
+
+Start building a request to the targeted web resource and define the accepted
+ response media types.
+
+request(MediaType...) - Method in interface javax.ws.rs.client.WebTarget
+
+Start building a request to the targeted web resource and define the accepted
+ response media types.
+
+Request - Interface in javax.ws.rs.core
+
+An injectable helper for request processing, all methods throw an
+
IllegalStateException
if called outside the scope of a request
+ (e.g.
+
+REQUEST_ENTITY_TOO_LARGE - javax.ws.rs.core.Response.Status
+
+
+
+REQUEST_HEADER_FIELDS_TOO_LARGE - javax.ws.rs.core.Response.Status
+
+
+
+REQUEST_TIMEOUT - javax.ws.rs.core.Response.Status
+
+
+
+REQUEST_URI_TOO_LONG - javax.ws.rs.core.Response.Status
+
+
+
+REQUESTED_RANGE_NOT_SATISFIABLE - javax.ws.rs.core.Response.Status
+
+
+
+RESET_CONTENT - javax.ws.rs.core.Response.Status
+
+
+
+resolve(URI) - Method in interface javax.ws.rs.core.UriInfo
+
+Resolve a relative URI with respect to the base URI of the application.
+
+resolveTemplate(String, Object) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied value.
+
+resolveTemplate(String, Object) - Method in class javax.ws.rs.core.UriBuilder
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied value.
+
+resolveTemplate(String, Object, boolean) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied value.
+
+resolveTemplate(String, Object, boolean) - Method in class javax.ws.rs.core.UriBuilder
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied value.
+
+resolveTemplateFromEncoded(String, Object) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied encoded value.
+
+resolveTemplateFromEncoded(String, Object) - Method in class javax.ws.rs.core.UriBuilder
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied encoded value.
+
+resolveTemplates(Map<String, Object>) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-value pairs.
+
+resolveTemplates(Map<String, Object>) - Method in class javax.ws.rs.core.UriBuilder
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+resolveTemplates(Map<String, Object>, boolean) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-value pairs.
+
+resolveTemplates(Map<String, Object>, boolean) - Method in class javax.ws.rs.core.UriBuilder
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+resolveTemplatesFromEncoded(Map<String, Object>) - Method in interface javax.ws.rs.client.WebTarget
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-encoded value pairs.
+
+resolveTemplatesFromEncoded(Map<String, Object>) - Method in class javax.ws.rs.core.UriBuilder
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+ResourceContext - Interface in javax.ws.rs.container
+
+The resource context provides access to instances of resource classes.
+
+ResourceInfo - Interface in javax.ws.rs.container
+
+An injectable class to access the resource class and resource method
+ matched by the current request.
+
+Response - Class in javax.ws.rs.core
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+Response() - Constructor for class javax.ws.rs.core.Response
+
+Protected constructor, use one of the static methods to obtain a
+
Response.ResponseBuilder
instance and obtain a Response from that.
+
+Response.ResponseBuilder - Class in javax.ws.rs.core
+
+A class used to build Response instances that contain metadata instead
+ of or in addition to an entity.
+
+Response.Status - Enum in javax.ws.rs.core
+
+
+
+Response.Status.Family - Enum in javax.ws.rs.core
+
+An enumeration representing the class of status code.
+
+Response.StatusType - Interface in javax.ws.rs.core
+
+Base interface for statuses used in responses.
+
+ResponseBuilder() - Constructor for class javax.ws.rs.core.Response.ResponseBuilder
+
+Protected constructor, use one of the static methods of
+ Response
to obtain an instance.
+
+ResponseProcessingException - Exception in javax.ws.rs.client
+
+Client-side runtime processing exception thrown to indicate that
+ response processing has failed (e.g.
+
+ResponseProcessingException(Response, String) - Constructor for exception javax.ws.rs.client.ResponseProcessingException
+
+Constructs a new runtime processing exception with the specified detail
+ message.
+
+ResponseProcessingException(Response, String, Throwable) - Constructor for exception javax.ws.rs.client.ResponseProcessingException
+
+Constructs a new runtime response processing exception with the specified detail
+ message and cause.
+
+ResponseProcessingException(Response, Throwable) - Constructor for exception javax.ws.rs.client.ResponseProcessingException
+
+Constructs a new runtime response processing exception
+ for a specific
response
with the specified cause
+ and a detail message of
(cause==null ? null : cause.toString())
+ (which typically contains the class and detail message of
cause
).
+
+resume(Object) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Resume the suspended request processing using the provided response data.
+
+resume(Throwable) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Resume the suspended request processing using the provided throwable.
+
+RETRY_AFTER - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+RuntimeDelegate - Class in javax.ws.rs.ext
+
+Implementations of this API provide a concrete subclass of RuntimeDelegate and
+ various API methods defer to methods of RuntimeDelegate for their
+ functionality.
+
+RuntimeDelegate() - Constructor for class javax.ws.rs.ext.RuntimeDelegate
+
+Allows custom implementations to extend the RuntimeDelegate
class.
+
+RuntimeDelegate.HeaderDelegate <T > - Interface in javax.ws.rs.ext
+
+Defines the contract for a delegate that is responsible for
+ converting between the String form of a HTTP header and
+ the corresponding type T
.
+
+RuntimeType - Enum in javax.ws.rs
+
+Enumeration of runtime types.
+
+rx() - Method in interface javax.ws.rs.client.Invocation.Builder
+
+
+
+rx(Class<T>) - Method in interface javax.ws.rs.client.Invocation.Builder
+
+Access a reactive invoker based on a
RxInvoker
subclass provider.
+
+RxInvoker <T > - Interface in javax.ws.rs.client
+
+Uniform interface for reactive invocation of HTTP methods.
+
+RxInvokerProvider <T extends RxInvoker > - Interface in javax.ws.rs.client
+
+
+
+
+
+
+
+
S
+
+scheduledExecutorService(ScheduledExecutorService) - Method in class javax.ws.rs.client.ClientBuilder
+
+
+
+scheme(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI scheme.
+
+schemeSpecificPart(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI scheme-specific-part (see
URI
).
+
+SecurityContext - Interface in javax.ws.rs.core
+
+An injectable interface that provides access to security related
+ information.
+
+SEE_OTHER - javax.ws.rs.core.Response.Status
+
+
+
+seeOther(URI) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder for a redirection.
+
+segment(String...) - Method in class javax.ws.rs.core.UriBuilder
+
+Append path segments to the existing path.
+
+selectVariant(List<Variant>) - Method in interface javax.ws.rs.core.Request
+
+Select the representation variant that best matches the request.
+
+send(OutboundSseEvent) - Method in interface javax.ws.rs.sse.SseEventSink
+
+Send an outbound Server-sent event to this sink.
+
+SERVER - javax.ws.rs.RuntimeType
+
+The server run-time.
+
+SERVER_ERROR - javax.ws.rs.core.Response.Status.Family
+
+5xx
HTTP status codes.
+
+SERVER_SENT_EVENTS - Static variable in class javax.ws.rs.core.MediaType
+
+String
representation of Server sent events media type.
+
+SERVER_SENT_EVENTS_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+Server sent events media type.
+
+serverError() - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with an server error status.
+
+ServerErrorException - Exception in javax.ws.rs
+
+A base runtime application exception indicating a server error
+ (HTTP 5xx
status codes).
+
+ServerErrorException(int) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(int, Throwable) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(String, int) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(String, int, Throwable) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(String, Response) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(String, Response.Status) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(String, Response.Status, Throwable) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(String, Response, Throwable) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(Response) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(Response.Status) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(Response.Status, Throwable) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+ServerErrorException(Response, Throwable) - Constructor for exception javax.ws.rs.ServerErrorException
+
+Construct a new server error exception.
+
+SERVICE_UNAVAILABLE - javax.ws.rs.core.Response.Status
+
+
+
+ServiceUnavailableException - Exception in javax.ws.rs
+
+
+
+ServiceUnavailableException() - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception without any "Retry-After" information
+ specified for the failed request.
+
+ServiceUnavailableException(Long) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+ServiceUnavailableException(Long, Throwable) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+ServiceUnavailableException(String) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception without any "Retry-After" information
+ specified for the failed request.
+
+ServiceUnavailableException(String, Long) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+ServiceUnavailableException(String, Long, Throwable) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+ServiceUnavailableException(String, Date) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+ServiceUnavailableException(String, Date, Throwable) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with a date specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+ServiceUnavailableException(String, Response) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception.
+
+ServiceUnavailableException(String, Response, Throwable) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception.
+
+ServiceUnavailableException(Date) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+ServiceUnavailableException(Date, Throwable) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception with a date specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+ServiceUnavailableException(Response) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception.
+
+ServiceUnavailableException(Response, Throwable) - Constructor for exception javax.ws.rs.ServiceUnavailableException
+
+Construct a new "service unavailable" exception.
+
+SET_COOKIE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+setAnnotations(Annotation[]) - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Update annotations on the formal declaration of the artifact that
+ initiated the intercepted entity provider invocation.
+
+setEntity(Object) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Set a new message entity.
+
+setEntity(Object) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Set a new message entity.
+
+setEntity(Object) - Method in interface javax.ws.rs.ext.WriterInterceptorContext
+
+Update object to be written as HTTP entity.
+
+setEntity(Object, Annotation[], MediaType) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Set a new message entity, including the attached annotations and the media type.
+
+setEntity(Object, Annotation[], MediaType) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Set a new message entity, including the attached annotations and the media type.
+
+setEntityStream(InputStream) - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Set a new entity input stream.
+
+setEntityStream(InputStream) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Set a new entity input stream.
+
+setEntityStream(OutputStream) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Set a new entity output stream.
+
+setEntityStream(OutputStream) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Set a new entity output stream.
+
+setGenericType(Type) - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Update type of the object to be produced or written.
+
+setInputStream(InputStream) - Method in interface javax.ws.rs.ext.ReaderInterceptorContext
+
+Set the input stream of the object to be read.
+
+setInstance(RuntimeDelegate) - Static method in class javax.ws.rs.ext.RuntimeDelegate
+
+Set the runtime delegate that will be used by classes.
+
+setMaxAge(int) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the max-age cache control directive.
+
+setMediaType(MediaType) - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Update media type of HTTP entity.
+
+setMethod(String) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Set the request method.
+
+setMethod(String) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Set the request method.
+
+setMustRevalidate(boolean) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the must-revalidate cache control directive.
+
+setNoCache(boolean) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the no-cache cache control directive.
+
+setNoStore(boolean) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the no-store cache control directive.
+
+setNoTransform(boolean) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the no-transform cache control directive.
+
+setOutputStream(OutputStream) - Method in interface javax.ws.rs.ext.WriterInterceptorContext
+
+Set a new output stream for the object to be written.
+
+setPrivate(boolean) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the private cache control directive.
+
+setProperty(String, Object) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Binds an object to a given property name in the current request/response
+ exchange context.
+
+setProperty(String, Object) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Binds an object to a given property name in the current request/response
+ exchange context.
+
+setProperty(String, Object) - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Binds an object to a given property name in the current request/response
+ exchange context.
+
+setProxyRevalidate(boolean) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the must-revalidate cache control directive.
+
+setRequestUri(URI) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Set a new request URI using the current base URI of the application to
+ resolve the application-specific request URI part.
+
+setRequestUri(URI, URI) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Set a new request URI using a new base URI to resolve the application-specific
+ request URI part.
+
+setSecurityContext(SecurityContext) - Method in interface javax.ws.rs.container.ContainerRequestContext
+
+Set a new injectable security context information for the current request.
+
+setSMaxAge(int) - Method in class javax.ws.rs.core.CacheControl
+
+Corresponds to the s-maxage cache control directive.
+
+setStatus(int) - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Set a new response status code.
+
+setStatus(int) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Set a new response status code.
+
+setStatusInfo(Response.StatusType) - Method in interface javax.ws.rs.client.ClientResponseContext
+
+Set the complete status information (status code and reason phrase) associated
+ with the response.
+
+setStatusInfo(Response.StatusType) - Method in interface javax.ws.rs.container.ContainerResponseContext
+
+Set the complete status information (status code and reason phrase) associated
+ with the response.
+
+setTimeout(long, TimeUnit) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Set/update the suspend timeout.
+
+setTimeoutHandler(TimeoutHandler) - Method in interface javax.ws.rs.container.AsyncResponse
+
+Set/replace a time-out handler for the suspended asynchronous response.
+
+setType(Class<?>) - Method in interface javax.ws.rs.ext.InterceptorContext
+
+Update Java type before calling message body provider.
+
+setUri(URI) - Method in interface javax.ws.rs.client.ClientRequestContext
+
+Set a new request URI.
+
+size() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Sse - Interface in javax.ws.rs.sse
+
+
+
+SseBroadcaster - Interface in javax.ws.rs.sse
+
+Server-Sent events broadcasting facility.
+
+SseEvent - Interface in javax.ws.rs.sse
+
+Base Server Sent Event definition.
+
+SseEventSink - Interface in javax.ws.rs.sse
+
+Outbound Server-Sent Events stream.
+
+SseEventSource - Interface in javax.ws.rs.sse
+
+
+
+SseEventSource.Builder - Class in javax.ws.rs.sse
+
+
+
+sslContext(SSLContext) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the SSL context that will be used when creating secured transport connections
+ to server endpoints from
web targets
created by the client
+ instance that is using this SSL context.
+
+status(int) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the status on the ResponseBuilder.
+
+status(int) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with the supplied status.
+
+status(int, String) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the status on the ResponseBuilder.
+
+status(int, String) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with the supplied status and reason phrase.
+
+status(Response.Status) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the status on the ResponseBuilder.
+
+status(Response.Status) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with the supplied status.
+
+status(Response.StatusType) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the status on the ResponseBuilder.
+
+status(Response.StatusType) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder with the supplied status.
+
+store - Variable in class javax.ws.rs.core.AbstractMultivaluedMap
+
+Backing store for the [key, multi-value] pairs.
+
+StreamingOutput - Interface in javax.ws.rs.core
+
+A type that may be used as a resource method return value or as the entity
+ in a
Response
when the application wishes to stream the output.
+
+submit() - Method in interface javax.ws.rs.client.Invocation
+
+Submit the request for an asynchronous invocation and receive a future
+ response back.
+
+submit(Class<T>) - Method in interface javax.ws.rs.client.Invocation
+
+Submit the request for an asynchronous invocation and receive a future
+ response of the specified type back.
+
+submit(InvocationCallback<T>) - Method in interface javax.ws.rs.client.Invocation
+
+Submit the request for an asynchronous invocation and register an
+
InvocationCallback
to process the future result of the invocation.
+
+submit(GenericType<T>) - Method in interface javax.ws.rs.client.Invocation
+
+Submit the request for an asynchronous invocation and receive a future
+ response of the specified generic type back.
+
+SUCCESSFUL - javax.ws.rs.core.Response.Status.Family
+
+2xx
HTTP status codes.
+
+Suspended - Annotation Type in javax.ws.rs.container
+
+
+
+SyncInvoker - Interface in javax.ws.rs.client
+
+Uniform interface for synchronous invocation of HTTP methods.
+
+
+
+
+
+
T
+
+tag(String) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set a strong response entity tag.
+
+tag(EntityTag) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set a response entity tag.
+
+target(String) - Method in interface javax.ws.rs.client.Client
+
+Build a new web resource target.
+
+target(URI) - Method in interface javax.ws.rs.client.Client
+
+Build a new web resource target.
+
+target(WebTarget) - Method in class javax.ws.rs.sse.SseEventSource.Builder
+
+target(WebTarget) - Static method in interface javax.ws.rs.sse.SseEventSource
+
+Create a new
event source builder
that provides convenient way how to
+ configure and fine-tune various aspects of a newly prepared event source instance.
+
+target(Link) - Method in interface javax.ws.rs.client.Client
+
+Build a new web resource target.
+
+target(UriBuilder) - Method in interface javax.ws.rs.client.Client
+
+Build a new web resource target.
+
+TEMPORARY_REDIRECT - javax.ws.rs.core.Response.Status
+
+
+
+temporaryRedirect(URI) - Static method in class javax.ws.rs.core.Response
+
+Create a new ResponseBuilder for a temporary redirection.
+
+text(T) - Static method in class javax.ws.rs.client.Entity
+
+
+
+TEXT_HTML - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+TEXT_HTML_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+TEXT_PLAIN - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+TEXT_PLAIN_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+TEXT_XML - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing media type.
+
+TEXT_XML_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing media type.
+
+TimeoutHandler - Interface in javax.ws.rs.container
+
+Asynchronous response suspend time-out handler.
+
+title(String) - Method in interface javax.ws.rs.core.Link.Builder
+
+Convenience method to set a title
on this link.
+
+TITLE - Static variable in class javax.ws.rs.core.Link
+
+Title link param from RFC 5988.
+
+toCookie() - Method in class javax.ws.rs.core.NewCookie
+
+Obtain a new instance of a
Cookie
with the same name, value, path,
+ domain and version as this
NewCookie
.
+
+toEnum() - Method in interface javax.ws.rs.core.Response.StatusType
+
+
+
+TOO_MANY_REQUESTS - javax.ws.rs.core.Response.Status
+
+
+
+toResponse(E) - Method in interface javax.ws.rs.ext.ExceptionMapper
+
+
+
+toString() - Method in class javax.ws.rs.client.Entity
+
+toString() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+toString() - Method in class javax.ws.rs.core.CacheControl
+
+Convert the cache control to a string suitable for use as the value of the
+ corresponding HTTP header.
+
+toString() - Method in class javax.ws.rs.core.Cookie
+
+Convert the cookie to a string suitable for use as the value of the
+ corresponding HTTP header.
+
+toString() - Method in class javax.ws.rs.core.EntityTag
+
+Convert the entity tag to a string suitable for use as the value of the
+ corresponding HTTP header.
+
+toString() - Method in class javax.ws.rs.core.GenericEntity
+
+toString() - Method in class javax.ws.rs.core.GenericType
+
+toString() - Method in class javax.ws.rs.core.Link
+
+Returns a string representation as a link header (RFC 5988).
+
+toString() - Method in class javax.ws.rs.core.MediaType
+
+Convert the media type to a string suitable for use as the value of a
+ corresponding HTTP header.
+
+toString() - Method in class javax.ws.rs.core.NewCookie
+
+Convert the cookie to a string suitable for use as the value of the
+ corresponding HTTP header.
+
+toString() - Method in enum javax.ws.rs.core.Response.Status
+
+Get the reason phrase.
+
+toString() - Method in class javax.ws.rs.core.Variant
+
+toString(T) - Method in interface javax.ws.rs.ext.ParamConverter
+
+Convert the supplied value to a String.
+
+toString(T) - Method in interface javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate
+
+Convert the supplied value to a String.
+
+toTemplate() - Method in class javax.ws.rs.core.UriBuilder
+
+Get the URI template string represented by this URI builder.
+
+trace() - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+trace() - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+trace() - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP TRACE method for the current request.
+
+trace() - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+trace(Class<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP TRACE method for the current request.
+
+trace(Class<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+trace(Class<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+trace(Class<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+trace(InvocationCallback<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+trace(GenericType<R>) - Method in interface javax.ws.rs.client.RxInvoker
+
+Invoke HTTP TRACE method for the current request.
+
+trace(GenericType<T>) - Method in interface javax.ws.rs.client.AsyncInvoker
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+trace(GenericType<T>) - Method in interface javax.ws.rs.client.CompletionStageRxInvoker
+
+trace(GenericType<T>) - Method in interface javax.ws.rs.client.SyncInvoker
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+trustStore(KeyStore) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the client-side trust store.
+
+type(String) - Method in interface javax.ws.rs.core.Link.Builder
+
+Convenience method to set a type
on this link.
+
+type(String) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the message entity media type.
+
+type(MediaType) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set the message entity media type.
+
+TYPE - Static variable in class javax.ws.rs.core.Link
+
+Type link param from RFC 5988.
+
+
+
+
+
+
U
+
+UNAUTHORIZED - javax.ws.rs.core.Response.Status
+
+
+
+unmarshal(Link.JaxbLink) - Method in class javax.ws.rs.core.Link.JaxbAdapter
+
+
+
+UNSUPPORTED_MEDIA_TYPE - javax.ws.rs.core.Response.Status
+
+
+
+uri(String) - Method in interface javax.ws.rs.core.Link.Builder
+
+Set underlying string representing URI template for the link being constructed.
+
+uri(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Parses the uriTemplate
string and copies the parsed components of the supplied
+ URI to the UriBuilder replacing any existing values for those components.
+
+uri(URI) - Method in interface javax.ws.rs.core.Link.Builder
+
+Set underlying URI template for the link being constructed.
+
+uri(URI) - Method in class javax.ws.rs.core.UriBuilder
+
+Copies the non-null components of the supplied URI to the UriBuilder replacing
+ any existing values for those components.
+
+uriBuilder(UriBuilder) - Method in interface javax.ws.rs.core.Link.Builder
+
+Set underlying URI builder representing the URI template for the link being constructed.
+
+UriBuilder - Class in javax.ws.rs.core
+
+URI template-aware utility class for building URIs from their components.
+
+UriBuilder() - Constructor for class javax.ws.rs.core.UriBuilder
+
+Protected constructor, use one of the static fromXxx (...)
+ methods to obtain an instance.
+
+UriBuilderException - Exception in javax.ws.rs.core
+
+
+
+UriBuilderException() - Constructor for exception javax.ws.rs.core.UriBuilderException
+
+Creates a new instance of UriBuilderException
without detail message.
+
+UriBuilderException(String) - Constructor for exception javax.ws.rs.core.UriBuilderException
+
+Constructs an instance of UriBuilderException
with the specified detail message.
+
+UriBuilderException(String, Throwable) - Constructor for exception javax.ws.rs.core.UriBuilderException
+
+Constructs an instance of UriBuilderException
with the specified detail message and cause.
+
+UriBuilderException(Throwable) - Constructor for exception javax.ws.rs.core.UriBuilderException
+
+Constructs a new exception with the specified cause and a detail message
+ of (cause==null ? null : cause.toString()
) (which typically contains
+ the class and detail message of cause).
+
+UriInfo - Interface in javax.ws.rs.core
+
+An injectable interface that provides access to application and request
+ URI information.
+
+USE_PROXY - javax.ws.rs.core.Response.Status
+
+
+
+USER - Static variable in class javax.ws.rs.Priorities
+
+User-level filter/interceptor priority.
+
+USER_AGENT - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+userInfo(String) - Method in class javax.ws.rs.core.UriBuilder
+
+Set the URI user-info.
+
+
+
+
+
+
V
+
+valueOf(String) - Static method in class javax.ws.rs.core.CacheControl
+
+Creates a new instance of CacheControl by parsing the supplied string.
+
+valueOf(String) - Static method in class javax.ws.rs.core.Cookie
+
+Creates a new instance of Cookie
by parsing the supplied string.
+
+valueOf(String) - Static method in class javax.ws.rs.core.EntityTag
+
+Creates a new instance of EntityTag
by parsing the supplied string.
+
+valueOf(String) - Static method in class javax.ws.rs.core.Link
+
+Simple parser to convert link header string representations into a link.
+
+valueOf(String) - Static method in class javax.ws.rs.core.MediaType
+
+Creates a new instance of MediaType
by parsing the supplied string.
+
+valueOf(String) - Static method in class javax.ws.rs.core.NewCookie
+
+Creates a new instance of NewCookie by parsing the supplied string.
+
+valueOf(String) - Static method in enum javax.ws.rs.core.Response.Status.Family
+
+Returns the enum constant of this type with the specified name.
+
+valueOf(String) - Static method in enum javax.ws.rs.core.Response.Status
+
+Returns the enum constant of this type with the specified name.
+
+valueOf(String) - Static method in enum javax.ws.rs.RuntimeType
+
+Returns the enum constant of this type with the specified name.
+
+values() - Method in class javax.ws.rs.core.AbstractMultivaluedMap
+
+values() - Static method in enum javax.ws.rs.core.Response.Status.Family
+
+Returns an array containing the constants of this enum type, in
+the order they are declared.
+
+values() - Static method in enum javax.ws.rs.core.Response.Status
+
+Returns an array containing the constants of this enum type, in
+the order they are declared.
+
+values() - Static method in enum javax.ws.rs.RuntimeType
+
+Returns an array containing the constants of this enum type, in
+the order they are declared.
+
+variant(Variant) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Set message entity representation metadata.
+
+Variant - Class in javax.ws.rs.core
+
+Abstraction for a resource representation variant.
+
+Variant(MediaType, String, String) - Constructor for class javax.ws.rs.core.Variant
+
+Create a new instance of Variant.
+
+Variant(MediaType, String, String, String) - Constructor for class javax.ws.rs.core.Variant
+
+Create a new instance of Variant.
+
+Variant(MediaType, String, String, String, String) - Constructor for class javax.ws.rs.core.Variant
+
+Create a new instance of Variant.
+
+Variant(MediaType, Locale, String) - Constructor for class javax.ws.rs.core.Variant
+
+Create a new instance of Variant.
+
+Variant.VariantListBuilder - Class in javax.ws.rs.core
+
+A builder for a list of representation variants.
+
+VariantListBuilder() - Constructor for class javax.ws.rs.core.Variant.VariantListBuilder
+
+Protected constructor, use the static newInstance
+ method to obtain an instance.
+
+variants(List<Variant>) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Add a Vary header that lists the available variants.
+
+variants(Variant...) - Method in class javax.ws.rs.core.Response.ResponseBuilder
+
+Add a Vary header that lists the available variants.
+
+VARY - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+
+
+
+
+
W
+
+WebApplicationException - Exception in javax.ws.rs
+
+Runtime exception for applications.
+
+WebApplicationException() - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with a default HTTP status code of 500
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+WebApplicationException(int) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+WebApplicationException(String) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied message and a default HTTP status code of 500.
+
+WebApplicationException(String, int) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with a supplied message and HTTP status code.
+
+WebApplicationException(String, Throwable) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied message, root cause and default HTTP status code of 500.
+
+WebApplicationException(String, Throwable, int) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied message, root cause and HTTP status code.
+
+WebApplicationException(String, Throwable, Response) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied message, root cause and response.
+
+WebApplicationException(String, Throwable, Response.Status) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with a the supplied message, root cause and HTTP status code.
+
+WebApplicationException(String, Response) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance using the supplied message and response.
+
+WebApplicationException(String, Response.Status) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied message and HTTP status.
+
+WebApplicationException(Throwable) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied root cause, default HTTP status code of 500
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+WebApplicationException(Throwable, int) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied root cause, HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+WebApplicationException(Throwable, Response) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied root cause, response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+WebApplicationException(Throwable, Response.Status) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied root cause, HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+WebApplicationException(Response) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance using the supplied response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+WebApplicationException(Response.Status) - Constructor for exception javax.ws.rs.WebApplicationException
+
+Construct a new instance with the supplied HTTP status
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+WebTarget - Interface in javax.ws.rs.client
+
+A resource target identified by the resource URI.
+
+WILDCARD - Static variable in class javax.ws.rs.core.MediaType
+
+A String
constant representing wildcard media type .
+
+WILDCARD_TYPE - Static variable in class javax.ws.rs.core.MediaType
+
+A
MediaType
constant representing wildcard media type.
+
+withCharset(String) - Method in class javax.ws.rs.core.MediaType
+
+Create a new MediaType
instance with the same type, subtype and parameters
+ copied from the original instance and the supplied parameter.
+
+withConfig(Configuration) - Method in class javax.ws.rs.client.ClientBuilder
+
+Set the internal configuration state to an externally provided configuration state.
+
+write(OutputStream) - Method in interface javax.ws.rs.core.StreamingOutput
+
+Called to write the message body.
+
+WriterInterceptor - Interface in javax.ws.rs.ext
+
+
+
+WriterInterceptorContext - Interface in javax.ws.rs.ext
+
+
+
+writeTo(T, Class<?>, Type, Annotation[], MediaType, MultivaluedMap<String, Object>, OutputStream) - Method in interface javax.ws.rs.ext.MessageBodyWriter
+
+Write a type to an HTTP message.
+
+WWW_AUTHENTICATE - Static variable in interface javax.ws.rs.core.HttpHeaders
+
+
+
+
+
+
+
+
X
+
+xhtml(T) - Static method in class javax.ws.rs.client.Entity
+
+
+
+xml(T) - Static method in class javax.ws.rs.client.Entity
+
+
+
+
+
A B C D E F G H I J K L M N O P Q R S T U V W X
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/index.html b/restful-web-services/2.1/apidocs/index.html
new file mode 100644
index 0000000000..918bc33ea9
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/index.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+jakarta.ws.rs-api 2.1.6 API
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ApplicationPath.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ApplicationPath.html
new file mode 100644
index 0000000000..5e450e23a6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ApplicationPath.html
@@ -0,0 +1,271 @@
+
+
+
+
+
+ApplicationPath (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines the base URI for all resource URIs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String value
+Defines the base URI for all resource URIs. A trailing '/' character will
+ be automatically appended if one is not present.
+
+
The supplied value is automatically percent
+ encoded to conform to the path
production of
+ {@link RFC 3986 section 3.3 }.
+ Note that percent encoded values are allowed in the value, an
+ implementation will recognize such values and will not double
+ encode the '%' character.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/BadRequestException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/BadRequestException.html
new file mode 100644
index 0000000000..20553e62b0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/BadRequestException.html
@@ -0,0 +1,494 @@
+
+
+
+
+
+BadRequestException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+BadRequestException
+public BadRequestException(String message,
+ Response response)
+Construct a new bad client request exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 400
.
+
+
+
+
+
+
+
+
+
+
+
+
+BadRequestException
+public BadRequestException(String message,
+ Throwable cause)
+Construct a new bad client request exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+BadRequestException
+public BadRequestException(Response response,
+ Throwable cause)
+Construct a new bad client request exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 400
.
+
+
+
+
+
+
+
+
+BadRequestException
+public BadRequestException(String message,
+ Response response,
+ Throwable cause)
+Construct a new bad client request exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 400
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/BeanParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/BeanParam.html
new file mode 100644
index 0000000000..7ccddead06
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/BeanParam.html
@@ -0,0 +1,242 @@
+
+
+
+
+
+BeanParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ClientErrorException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ClientErrorException.html
new file mode 100644
index 0000000000..b0ea35ed1e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ClientErrorException.html
@@ -0,0 +1,637 @@
+
+
+
+
+
+ClientErrorException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+ClientErrorException (int status)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (int status,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ int status)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ int status,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ Response response)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ Response.Status status)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ Response.Status status,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response response)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response.Status status)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response.Status status,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response response,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ClientErrorException
+public ClientErrorException(String message,
+ Response response)
+Construct a new client error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- client error response. Must have a status code set to a 4xx
+ status code.
+Throws:
+IllegalArgumentException
- in case the response status code is not from the
+ Response.Status.Family.CLIENT_ERROR
status code family.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ClientErrorException
+public ClientErrorException(String message,
+ int status,
+ Throwable cause)
+Construct a new client error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- client error status. Must be a 4xx
status code.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code is not a valid HTTP status code or
+ if it is not from the Response.Status.Family.CLIENT_ERROR
+ status code family.
+
+
+
+
+
+
+
+
+ClientErrorException
+public ClientErrorException(Response response,
+ Throwable cause)
+Construct a new client error exception.
+
+Parameters:
+response
- client error response. Must have a status code set to a 4xx
+ status code.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the response status code is not from the
+ Response.Status.Family.CLIENT_ERROR
status code family.
+
+
+
+
+
+
+
+
+ClientErrorException
+public ClientErrorException(String message,
+ Response response,
+ Throwable cause)
+Construct a new client error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- client error response. Must have a status code set to a 4xx
+ status code.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the response status code is not from the
+ Response.Status.Family.CLIENT_ERROR
status code family.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ConstrainedTo.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ConstrainedTo.html
new file mode 100644
index 0000000000..d3de225635
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ConstrainedTo.html
@@ -0,0 +1,296 @@
+
+
+
+
+
+ConstrainedTo (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+RuntimeType
+value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/Consumes.html b/restful-web-services/2.1/apidocs/javax/ws/rs/Consumes.html
new file mode 100644
index 0000000000..0cda6444ba
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/Consumes.html
@@ -0,0 +1,276 @@
+
+
+
+
+
+Consumes (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Optional Element Summary
+
+Optional Elements
+
+Modifier and Type
+Optional Element
+Description
+
+
+String []
+value
+
+A list of media types.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String [] value
+A list of media types. Each entry may specify a single type or consist
+ of a comma separated list of types, with any leading or trailing white-spaces
+ in a single type entry being ignored. For example:
+
+ {"image/jpeg, image/gif ", " image/png"}
+
+ Use of the comma-separated form allows definition of a common string constant
+ for use on multiple targets.
+
+Default:
+{"*/*"}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/CookieParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/CookieParam.html
new file mode 100644
index 0000000000..3fd7a0ae4d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/CookieParam.html
@@ -0,0 +1,288 @@
+
+
+
+
+
+CookieParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines the name of the HTTP cookie whose value will be used
+ to initialize the value of the annotated method argument, class field or
+ bean property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/DELETE.html b/restful-web-services/2.1/apidocs/javax/ws/rs/DELETE.html
new file mode 100644
index 0000000000..a63e8df26c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/DELETE.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+DELETE (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/DefaultValue.html b/restful-web-services/2.1/apidocs/javax/ws/rs/DefaultValue.html
new file mode 100644
index 0000000000..b3f13a6479
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/DefaultValue.html
@@ -0,0 +1,282 @@
+
+
+
+
+
+DefaultValue (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+The specified default value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/Encoded.html b/restful-web-services/2.1/apidocs/javax/ws/rs/Encoded.html
new file mode 100644
index 0000000000..6195f4e720
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/Encoded.html
@@ -0,0 +1,211 @@
+
+
+
+
+
+Encoded (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@Target ({PARAMETER ,METHOD ,FIELD ,CONSTRUCTOR ,TYPE })
+@Retention (RUNTIME )
+@Documented
+public @interface Encoded
+Disables automatic decoding of parameter values bound using
QueryParam
,
+
PathParam
,
FormParam
or
MatrixParam
.
+ Using this annotation on a method will disable decoding for all parameters.
+ Using this annotation on a class will disable decoding for all parameters of
+ all methods.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+See Also:
+QueryParam
,
+MatrixParam
,
+PathParam
,
+FormParam
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ForbiddenException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ForbiddenException.html
new file mode 100644
index 0000000000..e485e8b4cb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ForbiddenException.html
@@ -0,0 +1,496 @@
+
+
+
+
+
+ForbiddenException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ForbiddenException
+public ForbiddenException(String message,
+ Response response)
+Construct a new "forbidden" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 403
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ForbiddenException
+public ForbiddenException(Response response,
+ Throwable cause)
+Construct a new "forbidden" exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 403
.
+
+
+
+
+
+
+
+
+ForbiddenException
+public ForbiddenException(String message,
+ Response response,
+ Throwable cause)
+Construct a new "forbidden" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 403
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/FormParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/FormParam.html
new file mode 100644
index 0000000000..11db0f6801
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/FormParam.html
@@ -0,0 +1,292 @@
+
+
+
+
+
+FormParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines the name of the form parameter whose value will be used
+ to initialize the value of the annotated method argument.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String value
+Defines the name of the form parameter whose value will be used
+ to initialize the value of the annotated method argument. The name is
+ specified in decoded form, any percent encoded literals within the value
+ will not be decoded and will instead be treated as literal text. E.g. if
+ the parameter name is "a b" then the value of the annotation is "a b",
+ not "a+b" or "a%20b".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/GET.html b/restful-web-services/2.1/apidocs/javax/ws/rs/GET.html
new file mode 100644
index 0000000000..79e1677919
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/GET.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+GET (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/HEAD.html b/restful-web-services/2.1/apidocs/javax/ws/rs/HEAD.html
new file mode 100644
index 0000000000..65ec29b69f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/HEAD.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+HEAD (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/HeaderParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/HeaderParam.html
new file mode 100644
index 0000000000..714fa60cc6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/HeaderParam.html
@@ -0,0 +1,290 @@
+
+
+
+
+
+HeaderParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines the name of the HTTP header whose value will be used
+ to initialize the value of the annotated method argument, class field or
+ bean property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/HttpMethod.html b/restful-web-services/2.1/apidocs/javax/ws/rs/HttpMethod.html
new file mode 100644
index 0000000000..05a80d2886
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/HttpMethod.html
@@ -0,0 +1,432 @@
+
+
+
+
+
+HttpMethod (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@Target (ANNOTATION_TYPE )
+@Retention (RUNTIME )
+@Documented
+public @interface HttpMethod
+Associates the name of a HTTP method with an annotation. A Java method annotated
+ with a runtime annotation that is itself annotated with this annotation will
+ be used to handle HTTP requests of the indicated HTTP method. It is an error
+ for a method to be annotated with more than one annotation that is annotated
+ with HttpMethod
.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+See Also:
+GET
,
+POST
,
+PUT
,
+DELETE
,
+PATCH
,
+HEAD
,
+OPTIONS
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Fields
+Description
+
+
+static String
+DELETE
+
+HTTP DELETE method.
+
+
+
+static String
+GET
+
+HTTP GET method.
+
+
+
+static String
+HEAD
+
+HTTP HEAD method.
+
+
+
+static String
+OPTIONS
+
+HTTP OPTIONS method.
+
+
+
+static String
+PATCH
+
+HTTP PATCH method.
+
+
+
+static String
+POST
+
+HTTP POST method.
+
+
+
+static String
+PUT
+
+HTTP PUT method.
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Specifies the name of a HTTP method.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+GET
+static final String GET
+HTTP GET method.
+
+
+
+
+
+
+
+
+
+
+POST
+static final String POST
+HTTP POST method.
+
+
+
+
+
+
+
+
+
+
+PUT
+static final String PUT
+HTTP PUT method.
+
+
+
+
+
+
+
+
+
+
+
+
+HEAD
+static final String HEAD
+HTTP HEAD method.
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/InternalServerErrorException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/InternalServerErrorException.html
new file mode 100644
index 0000000000..0f5b8de3c1
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/InternalServerErrorException.html
@@ -0,0 +1,494 @@
+
+
+
+
+
+InternalServerErrorException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+InternalServerErrorException
+public InternalServerErrorException(String message,
+ Response response)
+Construct a new internal server error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- internal server error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 500
.
+
+
+
+
+
+
+
+
+
+
+
+
+InternalServerErrorException
+public InternalServerErrorException(String message,
+ Throwable cause)
+Construct a new internal server error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+InternalServerErrorException
+public InternalServerErrorException(Response response,
+ Throwable cause)
+Construct a new internal server error exception.
+
+Parameters:
+response
- internal server error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 500
.
+
+
+
+
+
+
+
+
+InternalServerErrorException
+public InternalServerErrorException(String message,
+ Response response,
+ Throwable cause)
+Construct a new internal server error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- internal server error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 500
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/MatrixParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/MatrixParam.html
new file mode 100644
index 0000000000..2a31cdd25c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/MatrixParam.html
@@ -0,0 +1,303 @@
+
+
+
+
+
+MatrixParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines the name of the URI matrix parameter whose value will be used
+ to initialize the value of the annotated method argument, class field or
+ bean property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String value
+Defines the name of the URI matrix parameter whose value will be used
+ to initialize the value of the annotated method argument, class field or
+ bean property. The name is specified in decoded form, any percent encoded
+ literals within the value will not be decoded and will instead be
+ treated as literal text. E.g. if the parameter name is "a b" then the
+ value of the annotation is "a b", not "a+b" or "a%20b".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/NameBinding.html b/restful-web-services/2.1/apidocs/javax/ws/rs/NameBinding.html
new file mode 100644
index 0000000000..285176a66b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/NameBinding.html
@@ -0,0 +1,256 @@
+
+
+
+
+
+NameBinding (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/NotAcceptableException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/NotAcceptableException.html
new file mode 100644
index 0000000000..ffbe5d69c9
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/NotAcceptableException.html
@@ -0,0 +1,496 @@
+
+
+
+
+
+NotAcceptableException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NotAcceptableException
+public NotAcceptableException(String message,
+ Response response)
+Construct a new "request not acceptable" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 406
.
+
+
+
+
+
+
+
+
+
+
+
+
+NotAcceptableException
+public NotAcceptableException(String message,
+ Throwable cause)
+Construct a new "request not acceptable" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+NotAcceptableException
+public NotAcceptableException(Response response,
+ Throwable cause)
+Construct a new "request not acceptable" exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 406
.
+
+
+
+
+
+
+
+
+NotAcceptableException
+public NotAcceptableException(String message,
+ Response response,
+ Throwable cause)
+Construct a new "request not acceptable" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 406
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/NotAllowedException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/NotAllowedException.html
new file mode 100644
index 0000000000..2f63f843bf
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/NotAllowedException.html
@@ -0,0 +1,536 @@
+
+
+
+
+
+NotAllowedException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+NotAllowedException (String allowed,
+ String ... moreAllowed)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (String message,
+ String allowed,
+ String ... moreAllowed)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (String message,
+ Throwable cause,
+ String ... allowedMethods)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (String message,
+ Response response)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (Throwable cause,
+ String ... allowedMethods)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (Response response)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (Response response,
+ Throwable cause)
+
+Construct a new method not allowed exception.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+NotAllowedException
+public NotAllowedException(String allowed,
+ String ... moreAllowed)
+Construct a new method not allowed exception.
+
+Parameters:
+allowed
- allowed request method.
+moreAllowed
- more allowed request methods.
+Throws:
+NullPointerException
- in case the allowed method is null
.
+
+
+
+
+
+
+
+
+NotAllowedException
+public NotAllowedException(String message,
+ String allowed,
+ String ... moreAllowed)
+Construct a new method not allowed exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+allowed
- allowed request method.
+moreAllowed
- more allowed request methods.
+Throws:
+NullPointerException
- in case the allowed method is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NotAllowedException
+public NotAllowedException(Throwable cause,
+ String ... allowedMethods)
+Construct a new method not allowed exception.
+
+Parameters:
+cause
- the underlying cause of the exception.
+allowedMethods
- allowed request methods.
+Throws:
+IllegalArgumentException
- in case the allowed methods varargs are null
.
+
+
+
+
+
+
+
+
+NotAllowedException
+public NotAllowedException(String message,
+ Throwable cause,
+ String ... allowedMethods)
+Construct a new method not allowed exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+allowedMethods
- allowed request methods.
+Throws:
+IllegalArgumentException
- in case the allowed methods varargs are null
.
+
+
+
+
+
+
+
+
+NotAllowedException
+public NotAllowedException(Response response,
+ Throwable cause)
+Construct a new method not allowed exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 405
or does not contain
+ an HTTP Allow
header.
+
+
+
+
+
+
+
+
+NotAllowedException
+public NotAllowedException(String message,
+ Response response,
+ Throwable cause)
+Construct a new method not allowed exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 405
or does not contain
+ an HTTP Allow
header.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/NotAuthorizedException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/NotAuthorizedException.html
new file mode 100644
index 0000000000..45266d776f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/NotAuthorizedException.html
@@ -0,0 +1,588 @@
+
+
+
+
+
+NotAuthorizedException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+NotAuthorizedException (Object challenge,
+ Object ... moreChallenges)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (String message,
+ Object challenge,
+ Object ... moreChallenges)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (String message,
+ Throwable cause,
+ Object challenge,
+ Object ... moreChallenges)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (String message,
+ Response response)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (Throwable cause,
+ Object challenge,
+ Object ... moreChallenges)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (Response response)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (Response response,
+ Throwable cause)
+
+Construct a new "not authorized" exception.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+NotAuthorizedException
+public NotAuthorizedException(Object challenge,
+ Object ... moreChallenges)
+Construct a new "not authorized" exception.
+
+Parameters:
+challenge
- authorization challenge applicable to the resource requested
+ by the client.
+moreChallenges
- additional authorization challenge applicable to the
+ requested resource.
+Throws:
+NullPointerException
- in case the challenge
parameter is null
.
+
+
+
+
+
+
+
+
+NotAuthorizedException
+public NotAuthorizedException(String message,
+ Object challenge,
+ Object ... moreChallenges)
+Construct a new "not authorized" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+challenge
- authorization challenge applicable to the resource requested
+ by the client.
+moreChallenges
- additional authorization challenge applicable to the
+ requested resource.
+Throws:
+NullPointerException
- in case the challenge
parameter is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+NotAuthorizedException
+public NotAuthorizedException(String message,
+ Response response)
+Construct a new "not authorized" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 401
.
+
+
+
+
+
+
+
+
+NotAuthorizedException
+public NotAuthorizedException(Throwable cause,
+ Object challenge,
+ Object ... moreChallenges)
+Construct a new "not authorized" exception.
+
+Parameters:
+cause
- the underlying cause of the exception.
+challenge
- authorization challenge applicable to the requested resource.
+moreChallenges
- additional authorization challenge applicable to the
+ requested resource.
+
+
+
+
+
+
+
+
+NotAuthorizedException
+public NotAuthorizedException(String message,
+ Throwable cause,
+ Object challenge,
+ Object ... moreChallenges)
+Construct a new "not authorized" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+challenge
- authorization challenge applicable to the requested resource.
+moreChallenges
- additional authorization challenge applicable to the
+ requested resource.
+
+
+
+
+
+
+
+
+NotAuthorizedException
+public NotAuthorizedException(Response response,
+ Throwable cause)
+Construct a new "not authorized" exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 401
.
+
+
+
+
+
+
+
+
+NotAuthorizedException
+public NotAuthorizedException(String message,
+ Response response,
+ Throwable cause)
+Construct a new "not authorized" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 401
.
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/NotFoundException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/NotFoundException.html
new file mode 100644
index 0000000000..688096d145
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/NotFoundException.html
@@ -0,0 +1,495 @@
+
+
+
+
+
+NotFoundException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NotFoundException
+public NotFoundException(String message,
+ Response response)
+Construct a new "not found" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 404
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NotFoundException
+public NotFoundException(Response response,
+ Throwable cause)
+Construct a new "not found" exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 404
.
+
+
+
+
+
+
+
+
+NotFoundException
+public NotFoundException(String message,
+ Response response,
+ Throwable cause)
+Construct a new "not found" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 404
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/NotSupportedException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/NotSupportedException.html
new file mode 100644
index 0000000000..4a5e6f37fc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/NotSupportedException.html
@@ -0,0 +1,495 @@
+
+
+
+
+
+NotSupportedException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+NotSupportedException
+public NotSupportedException(String message,
+ Response response)
+Construct a new unsupported media type exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 415
.
+
+
+
+
+
+
+
+
+
+
+
+
+NotSupportedException
+public NotSupportedException(String message,
+ Throwable cause)
+Construct a new unsupported media type exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+NotSupportedException
+public NotSupportedException(Response response,
+ Throwable cause)
+Construct a new unsupported media type exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 415
.
+
+
+
+
+
+
+
+
+NotSupportedException
+public NotSupportedException(String message,
+ Response response,
+ Throwable cause)
+Construct a new unsupported media type exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 415
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/OPTIONS.html b/restful-web-services/2.1/apidocs/javax/ws/rs/OPTIONS.html
new file mode 100644
index 0000000000..26a8ac7377
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/OPTIONS.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+OPTIONS (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/PATCH.html b/restful-web-services/2.1/apidocs/javax/ws/rs/PATCH.html
new file mode 100644
index 0000000000..8076faff3a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/PATCH.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+PATCH (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/POST.html b/restful-web-services/2.1/apidocs/javax/ws/rs/POST.html
new file mode 100644
index 0000000000..2758c21426
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/POST.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+POST (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/PUT.html b/restful-web-services/2.1/apidocs/javax/ws/rs/PUT.html
new file mode 100644
index 0000000000..8ebf5ef8f8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/PUT.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+PUT (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/Path.html b/restful-web-services/2.1/apidocs/javax/ws/rs/Path.html
new file mode 100644
index 0000000000..74897f5b0e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/Path.html
@@ -0,0 +1,323 @@
+
+
+
+
+
+Path (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines a URI template for the resource class or method, must not
+ include matrix parameters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String value
+Defines a URI template for the resource class or method, must not
+ include matrix parameters.
+
+
Embedded template parameters are allowed and are of the form:
+
+
param = "{" *WSP name *WSP [ ":" *WSP regex *WSP ] "}"
+ name = (ALPHA / DIGIT / "_")*(ALPHA / DIGIT / "." / "_" / "-" ) ; \w[\w\.-]*
+ regex = *( nonbrace / "{" *nonbrace "}" ) ; where nonbrace is any char other than "{" and "}"
+
+
See {@link RFC 5234 }
+ for a description of the syntax used above and the expansions of
+ WSP
, ALPHA
and DIGIT
. In the above name
+ is the template parameter name and the optional regex
specifies
+ the contents of the capturing group for the parameter. If regex
+ is not supplied then a default value of [^/]+
which terminates at
+ a path segment boundary, is used. Matching of request URIs to URI
+ templates is performed against encoded path values and implementations
+ will not escape literal characters in regex automatically, therefore any
+ literals in regex
should be escaped by the author according to
+ the rules of
+ {@link RFC 3986 section 3.3 }.
+ Caution is recommended in the use of regex
, incorrect use can
+ lead to a template parameter matching unexpected URI paths. See
+ {@link Pattern }
+ for further information on the syntax of regular expressions.
+ Values of template parameters may be extracted using PathParam
.
+
+
The literal part of the supplied value (those characters
+ that are not part of a template parameter) is automatically percent
+ encoded to conform to the path
production of
+ {@link RFC 3986 section 3.3 }.
+ Note that percent encoded values are allowed in the literal part of the
+ value, an implementation will recognize such values and will not double
+ encode the '%' character.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/PathParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/PathParam.html
new file mode 100644
index 0000000000..e531513fae
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/PathParam.html
@@ -0,0 +1,309 @@
+
+
+
+
+
+PathParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines the name of the URI template parameter whose value will be used
+ to initialize the value of the annotated method parameter, class field or
+ property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String value
+Defines the name of the URI template parameter whose value will be used
+ to initialize the value of the annotated method parameter, class field or
+ property. See
Path.value()
for a description of the syntax of
+ template parameters.
+
+
E.g. a class annotated with: @Path("widgets/{id}")
+ can have methods annotated whose arguments are annotated
+ with @PathParam("id")
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/Priorities.html b/restful-web-services/2.1/apidocs/javax/ws/rs/Priorities.html
new file mode 100644
index 0000000000..0b515d701b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/Priorities.html
@@ -0,0 +1,385 @@
+
+
+
+
+
+Priorities (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+static int
+AUTHENTICATION
+
+Security authentication filter/interceptor priority.
+
+
+
+static int
+AUTHORIZATION
+
+Security authorization filter/interceptor priority.
+
+
+
+static int
+ENTITY_CODER
+
+Message encoder or decoder filter/interceptor priority.
+
+
+
+static int
+HEADER_DECORATOR
+
+Header decorator filter/interceptor priority.
+
+
+
+static int
+USER
+
+User-level filter/interceptor priority.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ProcessingException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ProcessingException.html
new file mode 100644
index 0000000000..eb7f223721
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ProcessingException.html
@@ -0,0 +1,399 @@
+
+
+
+
+
+ProcessingException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+ProcessingException (String message)
+
+Constructs a new runtime processing exception with the specified detail
+ message.
+
+
+
+ProcessingException (String message,
+ Throwable cause)
+
+Constructs a new runtime processing exception with the specified detail
+ message and cause.
+
+
+
+ProcessingException (Throwable cause)
+
+Constructs a new runtime processing exception with the specified cause
+ and a detail message of (cause==null ? null : cause.toString())
+ (which typically contains the class and detail message of cause
).
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+ProcessingException
+public ProcessingException(Throwable cause)
+Constructs a new runtime processing exception with the specified cause
+ and a detail message of (cause==null ? null : cause.toString())
+ (which typically contains the class and detail message of cause
).
+ This constructor is useful for runtime exceptions that are little more
+ than wrappers for other throwables.
+
+Parameters:
+cause
- the cause (which is saved for later retrieval by the
+ Throwable.getCause()
method). (A null
value is permitted,
+ and indicates that the cause is nonexistent or unknown.)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/Produces.html b/restful-web-services/2.1/apidocs/javax/ws/rs/Produces.html
new file mode 100644
index 0000000000..d97061d7fd
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/Produces.html
@@ -0,0 +1,281 @@
+
+
+
+
+
+Produces (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Optional Element Summary
+
+Optional Elements
+
+Modifier and Type
+Optional Element
+Description
+
+
+String []
+value
+
+A list of media types.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String [] value
+A list of media types. Each entry may specify a single type or consist
+ of a comma separated list of types, with any leading or trailing white-spaces
+ in a single type entry being ignored. For example:
+
+ {"image/jpeg, image/gif ", " image/png"}
+
+ Use of the comma-separated form allows definition of a common string constant
+ for use on multiple targets.
+
+Default:
+{"*/*"}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/QueryParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/QueryParam.html
new file mode 100644
index 0000000000..5363154301
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/QueryParam.html
@@ -0,0 +1,296 @@
+
+
+
+
+
+QueryParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Required Element Summary
+
+Required Elements
+
+Modifier and Type
+Required Element
+Description
+
+
+String
+value
+
+Defines the name of the HTTP query parameter whose value will be used
+ to initialize the value of the annotated method argument, class field or
+ bean property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Element Detail
+
+
+
+
+
+value
+String value
+Defines the name of the HTTP query parameter whose value will be used
+ to initialize the value of the annotated method argument, class field or
+ bean property. The name is specified in decoded form, any percent encoded
+ literals within the value will not be decoded and will instead be
+ treated as literal text. E.g. if the parameter name is "a b" then the
+ value of the annotation is "a b", not "a+b" or "a%20b".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/RedirectionException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/RedirectionException.html
new file mode 100644
index 0000000000..77474d5f27
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/RedirectionException.html
@@ -0,0 +1,514 @@
+
+
+
+
+
+RedirectionException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+RedirectionException
+public RedirectionException(Response.Status status,
+ URI location)
+Construct a new redirection exception.
+
+Parameters:
+status
- redirection status. Must be a 3xx
redirection code.
+location
- redirection URI placed into the response Location
header.
+Throws:
+IllegalArgumentException
- in case the status code is null
or is not from
+ Response.Status.Family.REDIRECTION
status code
+ family.
+
+
+
+
+
+
+
+
+RedirectionException
+public RedirectionException(String message,
+ Response.Status status,
+ URI location)
+Construct a new redirection exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- redirection status. Must be a 3xx
redirection code.
+location
- redirection URI placed into the response Location
header.
+Throws:
+IllegalArgumentException
- in case the status code is null
or is not from
+ Response.Status.Family.REDIRECTION
status code
+ family.
+
+
+
+
+
+
+
+
+
+
+
+
+RedirectionException
+public RedirectionException(String message,
+ int status,
+ URI location)
+Construct a new redirection exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- redirection status. Must be a 3xx
redirection code.
+location
- redirection URI placed into the response Location
header.
+Throws:
+IllegalArgumentException
- in case the status code is not a valid HTTP status code or
+ if it is not from the Response.Status.Family.REDIRECTION
+ status code family.
+
+
+
+
+
+
+
+
+
+
+
+
+RedirectionException
+public RedirectionException(String message,
+ Response response)
+Construct a new redirection exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- redirection response. Must have a status code set to a 3xx
+ redirection code.
+Throws:
+IllegalArgumentException
- in case the response status code is not from the
+ Response.Status.Family.REDIRECTION
status code family.
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/RuntimeType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/RuntimeType.html
new file mode 100644
index 0000000000..9ef069b832
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/RuntimeType.html
@@ -0,0 +1,389 @@
+
+
+
+
+
+RuntimeType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Enum Constant Summary
+
+Enum Constants
+
+Enum Constant
+Description
+
+
+CLIENT
+
+The client run-time.
+
+
+
+SERVER
+
+The server run-time.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Enum Constant Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+valueOf
+public static RuntimeType valueOf(String name)
+Returns the enum constant of this type with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this type. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum type has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ServerErrorException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ServerErrorException.html
new file mode 100644
index 0000000000..fae8764a89
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ServerErrorException.html
@@ -0,0 +1,637 @@
+
+
+
+
+
+ServerErrorException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+ServerErrorException (int status)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (int status,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ int status)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ int status,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ Response response)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ Response.Status status)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ Response.Status status,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response response)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response.Status status)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response.Status status,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response response,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ServerErrorException
+public ServerErrorException(String message,
+ Response response)
+Construct a new server error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- server error response. Must have a status code set to a 5xx
+ status code.
+Throws:
+IllegalArgumentException
- in case the response status code is not from the
+ Response.Status.Family.SERVER_ERROR
status code family.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ServerErrorException
+public ServerErrorException(String message,
+ int status,
+ Throwable cause)
+Construct a new server error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- server error status. Must be a 5xx
status code.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code is not a valid HTTP status code or
+ if it is not from the Response.Status.Family.SERVER_ERROR
+ status code family.
+
+
+
+
+
+
+
+
+ServerErrorException
+public ServerErrorException(Response response,
+ Throwable cause)
+Construct a new server error exception.
+
+Parameters:
+response
- server error response. Must have a status code set to a 5xx
+ status code.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the response status code is not from the
+ Response.Status.Family.SERVER_ERROR
status code family.
+
+
+
+
+
+
+
+
+ServerErrorException
+public ServerErrorException(String message,
+ Response response,
+ Throwable cause)
+Construct a new server error exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- server error response. Must have a status code set to a 5xx
+ status code.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the response status code is not from the
+ Response.Status.Family.SERVER_ERROR
status code family.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ServiceUnavailableException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ServiceUnavailableException.html
new file mode 100644
index 0000000000..63ab1ee675
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ServiceUnavailableException.html
@@ -0,0 +1,741 @@
+
+
+
+
+
+ServiceUnavailableException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+ServiceUnavailableException ()
+
+Construct a new "service unavailable" exception without any "Retry-After" information
+ specified for the failed request.
+
+
+
+ServiceUnavailableException (Long retryAfter)
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+
+
+ServiceUnavailableException (Long retryAfter,
+ Throwable cause)
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+
+
+ServiceUnavailableException (String message)
+
+Construct a new "service unavailable" exception without any "Retry-After" information
+ specified for the failed request.
+
+
+
+ServiceUnavailableException (String message,
+ Long retryAfter)
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+
+
+ServiceUnavailableException (String message,
+ Long retryAfter,
+ Throwable cause)
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+
+
+ServiceUnavailableException (String message,
+ Date retryAfter)
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+
+
+ServiceUnavailableException (String message,
+ Date retryAfter,
+ Throwable cause)
+
+Construct a new "service unavailable" exception with a date specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+
+
+ServiceUnavailableException (String message,
+ Response response)
+
+Construct a new "service unavailable" exception.
+
+
+
+ServiceUnavailableException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new "service unavailable" exception.
+
+
+
+ServiceUnavailableException (Date retryAfter)
+
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+
+
+ServiceUnavailableException (Date retryAfter,
+ Throwable cause)
+
+Construct a new "service unavailable" exception with a date specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+
+
+ServiceUnavailableException (Response response)
+
+Construct a new "service unavailable" exception.
+
+
+
+ServiceUnavailableException (Response response,
+ Throwable cause)
+
+Construct a new "service unavailable" exception.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(String message,
+ Long retryAfter)
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+retryAfter
- decimal interval in seconds after which the failed request may be retried.
+
+
+
+
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(String message,
+ Date retryAfter)
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+retryAfter
- a date/time after which the failed request may be retried.
+
+
+
+
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(String message,
+ Response response)
+Construct a new "service unavailable" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 503
.
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(Date retryAfter,
+ Throwable cause)
+Construct a new "service unavailable" exception with a date specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+Parameters:
+retryAfter
- a date/time after which the failed request may be retried.
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(String message,
+ Date retryAfter,
+ Throwable cause)
+Construct a new "service unavailable" exception with a date specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+retryAfter
- a date/time after which the failed request may be retried.
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(Long retryAfter,
+ Throwable cause)
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+Parameters:
+retryAfter
- decimal interval in seconds after which the failed request may be retried.
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(String message,
+ Long retryAfter,
+ Throwable cause)
+Construct a new "service unavailable" exception with an interval specifying
+ the "Retry-After" information for the failed request and an underlying
+ request failure cause.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+retryAfter
- decimal interval in seconds after which the failed request may be retried.
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(Response response,
+ Throwable cause)
+Construct a new "service unavailable" exception.
+
+Parameters:
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 503
.
+
+
+
+
+
+
+
+
+ServiceUnavailableException
+public ServiceUnavailableException(String message,
+ Response response,
+ Throwable cause)
+Construct a new "service unavailable" exception.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- error response.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- in case the status code set in the response
+ is not HTTP 503
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/WebApplicationException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/WebApplicationException.html
new file mode 100644
index 0000000000..986001f73a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/WebApplicationException.html
@@ -0,0 +1,755 @@
+
+
+
+
+
+WebApplicationException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+WebApplicationException ()
+
+Construct a new instance with a default HTTP status code of 500
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (int status)
+
+Construct a new instance with the supplied HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (String message)
+
+Construct a new instance with the supplied message and a default HTTP status code of 500.
+
+
+
+WebApplicationException (String message,
+ int status)
+
+Construct a new instance with a supplied message and HTTP status code.
+
+
+
+WebApplicationException (String message,
+ Throwable cause)
+
+Construct a new instance with the supplied message, root cause and default HTTP status code of 500.
+
+
+
+WebApplicationException (String message,
+ Throwable cause,
+ int status)
+
+Construct a new instance with the supplied message, root cause and HTTP status code.
+
+
+
+WebApplicationException (String message,
+ Throwable cause,
+ Response response)
+
+Construct a new instance with the supplied message, root cause and response.
+
+
+
+WebApplicationException (String message,
+ Throwable cause,
+ Response.Status status)
+
+Construct a new instance with a the supplied message, root cause and HTTP status code.
+
+
+
+WebApplicationException (String message,
+ Response response)
+
+Construct a new instance using the supplied message and response.
+
+
+
+WebApplicationException (String message,
+ Response.Status status)
+
+Construct a new instance with the supplied message and HTTP status.
+
+
+
+WebApplicationException (Throwable cause)
+
+Construct a new instance with the supplied root cause, default HTTP status code of 500
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (Throwable cause,
+ int status)
+
+Construct a new instance with the supplied root cause, HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (Throwable cause,
+ Response response)
+
+Construct a new instance with the supplied root cause, response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (Throwable cause,
+ Response.Status status)
+
+Construct a new instance with the supplied root cause, HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (Response response)
+
+Construct a new instance using the supplied response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (Response.Status status)
+
+Construct a new instance with the supplied HTTP status
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+WebApplicationException
+public WebApplicationException()
+Construct a new instance with a default HTTP status code of 500
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(Response response)
+Construct a new instance using the supplied response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+Parameters:
+response
- the response that will be returned to the client, a value
+ of null will be replaced with an internal server error response (status
+ code 500).
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(String message,
+ Response response)
+Construct a new instance using the supplied message and response.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- the response that will be returned to the client, a value
+ of null will be replaced with an internal server error response (status
+ code 500).
+Since:
+2.0
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(int status)
+Construct a new instance with the supplied HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+Parameters:
+status
- the HTTP status code that will be returned to the client.
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(String message,
+ int status)
+Construct a new instance with a supplied message and HTTP status code.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- the HTTP status code that will be returned to the client.
+Since:
+2.0
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(Response.Status status)
+Construct a new instance with the supplied HTTP status
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+Parameters:
+status
- the HTTP status code that will be returned to the client.
+Throws:
+IllegalArgumentException
- if status is null
.
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(String message,
+ Response.Status status)
+Construct a new instance with the supplied message and HTTP status.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- the HTTP status code that will be returned to the client.
+Throws:
+IllegalArgumentException
- if status is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(Throwable cause)
+Construct a new instance with the supplied root cause, default HTTP status code of 500
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+Parameters:
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(String message,
+ Throwable cause)
+Construct a new instance with the supplied message, root cause and default HTTP status code of 500.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+Since:
+2.0
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(Throwable cause,
+ Response response)
+Construct a new instance with the supplied root cause, response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+Parameters:
+response
- the response that will be returned to the client,
+ a value of null will be replaced with an internal server error
+ response (status code 500).
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(String message,
+ Throwable cause,
+ Response response)
+Construct a new instance with the supplied message, root cause and response.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+response
- the response that will be returned to the client,
+ a value of null will be replaced with an internal server error
+ response (status code 500).
+cause
- the underlying cause of the exception.
+Since:
+2.0
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(Throwable cause,
+ int status)
+Construct a new instance with the supplied root cause, HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+Parameters:
+status
- the HTTP status code that will be returned to the client.
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(String message,
+ Throwable cause,
+ int status)
+Construct a new instance with the supplied message, root cause and HTTP status code.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- the HTTP status code that will be returned to the client.
+cause
- the underlying cause of the exception.
+Since:
+2.0
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(Throwable cause,
+ Response.Status status)
+ throws IllegalArgumentException
+Construct a new instance with the supplied root cause, HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+Parameters:
+status
- the HTTP status code that will be returned to the client.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
- if status is null
.
+
+
+
+
+
+
+
+
+WebApplicationException
+public WebApplicationException(String message,
+ Throwable cause,
+ Response.Status status)
+ throws IllegalArgumentException
+Construct a new instance with a the supplied message, root cause and HTTP status code.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+status
- the HTTP status code that will be returned to the client.
+cause
- the underlying cause of the exception.
+Throws:
+IllegalArgumentException
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ApplicationPath.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ApplicationPath.html
new file mode 100644
index 0000000000..77d9b37b19
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ApplicationPath.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ApplicationPath (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ApplicationPath
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/BadRequestException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/BadRequestException.html
new file mode 100644
index 0000000000..ebb37ad8e9
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/BadRequestException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.BadRequestException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.BadRequestException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/BeanParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/BeanParam.html
new file mode 100644
index 0000000000..b2aa26df03
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/BeanParam.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.BeanParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.BeanParam
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ClientErrorException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ClientErrorException.html
new file mode 100644
index 0000000000..189cf912c4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ClientErrorException.html
@@ -0,0 +1,254 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ClientErrorException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use ClientErrorException
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ConstrainedTo.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ConstrainedTo.html
new file mode 100644
index 0000000000..fee874fc64
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ConstrainedTo.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ConstrainedTo (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ConstrainedTo
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Consumes.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Consumes.html
new file mode 100644
index 0000000000..553fe6a091
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Consumes.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.Consumes (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.Consumes
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/CookieParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/CookieParam.html
new file mode 100644
index 0000000000..95f695d4bf
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/CookieParam.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.CookieParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.CookieParam
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/DELETE.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/DELETE.html
new file mode 100644
index 0000000000..a27274a7dc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/DELETE.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.DELETE (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.DELETE
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/DefaultValue.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/DefaultValue.html
new file mode 100644
index 0000000000..7d10d9161e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/DefaultValue.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.DefaultValue (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.DefaultValue
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Encoded.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Encoded.html
new file mode 100644
index 0000000000..8b83237ff2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Encoded.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.Encoded (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.Encoded
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ForbiddenException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ForbiddenException.html
new file mode 100644
index 0000000000..b0dff5f54e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ForbiddenException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ForbiddenException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ForbiddenException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/FormParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/FormParam.html
new file mode 100644
index 0000000000..ceb9482a91
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/FormParam.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.FormParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.FormParam
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/GET.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/GET.html
new file mode 100644
index 0000000000..81aac5c920
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/GET.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.GET (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.GET
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HEAD.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HEAD.html
new file mode 100644
index 0000000000..a4e97046ae
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HEAD.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.HEAD (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.HEAD
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HeaderParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HeaderParam.html
new file mode 100644
index 0000000000..97d919a6a8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HeaderParam.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.HeaderParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.HeaderParam
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HttpMethod.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HttpMethod.html
new file mode 100644
index 0000000000..edc399c624
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/HttpMethod.html
@@ -0,0 +1,242 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.HttpMethod (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use HttpMethod
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs with annotations of type HttpMethod
+
+Modifier and Type
+Class
+Description
+
+
+
+interface
+DELETE
+
+Indicates that the annotated method responds to HTTP DELETE requests.
+
+
+
+interface
+GET
+
+Indicates that the annotated method responds to HTTP GET requests.
+
+
+
+interface
+HEAD
+
+Indicates that the annotated method responds to HTTP HEAD requests.
+
+
+
+interface
+OPTIONS
+
+Indicates that the annotated method responds to HTTP OPTIONS requests.
+
+
+
+interface
+PATCH
+
+Indicates that the annotated method responds to HTTP PATCH requests.
+
+
+
+interface
+POST
+
+Indicates that the annotated method responds to HTTP POST requests.
+
+
+
+interface
+PUT
+
+Indicates that the annotated method responds to HTTP PUT requests.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/InternalServerErrorException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/InternalServerErrorException.html
new file mode 100644
index 0000000000..dbc4acccd3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/InternalServerErrorException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.InternalServerErrorException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.InternalServerErrorException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/MatrixParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/MatrixParam.html
new file mode 100644
index 0000000000..61dbd39335
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/MatrixParam.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.MatrixParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.MatrixParam
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NameBinding.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NameBinding.html
new file mode 100644
index 0000000000..afac33eceb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NameBinding.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.NameBinding (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.NameBinding
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAcceptableException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAcceptableException.html
new file mode 100644
index 0000000000..21aa6cb116
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAcceptableException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.NotAcceptableException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.NotAcceptableException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAllowedException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAllowedException.html
new file mode 100644
index 0000000000..1dc6136208
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAllowedException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.NotAllowedException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.NotAllowedException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAuthorizedException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAuthorizedException.html
new file mode 100644
index 0000000000..193aafbb2d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotAuthorizedException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.NotAuthorizedException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.NotAuthorizedException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotFoundException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotFoundException.html
new file mode 100644
index 0000000000..84a2097e39
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotFoundException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.NotFoundException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.NotFoundException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotSupportedException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotSupportedException.html
new file mode 100644
index 0000000000..dc405de1e5
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/NotSupportedException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.NotSupportedException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.NotSupportedException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/OPTIONS.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/OPTIONS.html
new file mode 100644
index 0000000000..9199e930b5
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/OPTIONS.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.OPTIONS (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.OPTIONS
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PATCH.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PATCH.html
new file mode 100644
index 0000000000..8c2c5734ab
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PATCH.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.PATCH (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.PATCH
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/POST.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/POST.html
new file mode 100644
index 0000000000..a14f549449
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/POST.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.POST (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.POST
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PUT.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PUT.html
new file mode 100644
index 0000000000..d06de9fefe
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PUT.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.PUT (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.PUT
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Path.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Path.html
new file mode 100644
index 0000000000..fcc59fd5c7
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Path.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.Path (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.Path
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PathParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PathParam.html
new file mode 100644
index 0000000000..5d16d16876
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/PathParam.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.PathParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.PathParam
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Priorities.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Priorities.html
new file mode 100644
index 0000000000..767b392db4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Priorities.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.Priorities (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.Priorities
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ProcessingException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ProcessingException.html
new file mode 100644
index 0000000000..5a96384079
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ProcessingException.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ProcessingException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Produces.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Produces.html
new file mode 100644
index 0000000000..3408221cbc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/Produces.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.Produces (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.Produces
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/QueryParam.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/QueryParam.html
new file mode 100644
index 0000000000..e106e4ca56
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/QueryParam.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.QueryParam (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.QueryParam
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/RedirectionException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/RedirectionException.html
new file mode 100644
index 0000000000..ac16bae056
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/RedirectionException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.RedirectionException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.RedirectionException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/RuntimeType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/RuntimeType.html
new file mode 100644
index 0000000000..8aef4cc124
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/RuntimeType.html
@@ -0,0 +1,237 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.RuntimeType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use RuntimeType
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs that return RuntimeType
+
+Modifier and Type
+Method
+Description
+
+
+
+static RuntimeType
+RuntimeType. valueOf (String name)
+
+Returns the enum constant of this type with the specified name.
+
+
+
+static RuntimeType []
+RuntimeType. values ()
+
+Returns an array containing the constants of this enum type, in
+the order they are declared.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ServerErrorException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ServerErrorException.html
new file mode 100644
index 0000000000..8bebd4abfe
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ServerErrorException.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ServerErrorException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use ServerErrorException
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ServiceUnavailableException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ServiceUnavailableException.html
new file mode 100644
index 0000000000..5d981ad6fe
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/ServiceUnavailableException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ServiceUnavailableException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ServiceUnavailableException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/WebApplicationException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/WebApplicationException.html
new file mode 100644
index 0000000000..f44aa917d3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/class-use/WebApplicationException.html
@@ -0,0 +1,396 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.WebApplicationException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use WebApplicationException
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.ext that throw WebApplicationException
+
+Modifier and Type
+Method
+Description
+
+
+
+Object
+ReaderInterceptor. aroundReadFrom (ReaderInterceptorContext context)
+
+
+
+
+
+void
+WriterInterceptor. aroundWriteTo (WriterInterceptorContext context)
+
+
+
+
+
+Object
+ReaderInterceptorContext. proceed ()
+
+Proceed to the next interceptor in the chain.
+
+
+
+void
+WriterInterceptorContext. proceed ()
+
+Proceed to the next interceptor in the chain.
+
+
+
+T
+MessageBodyReader. readFrom (Class <T > type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,String > httpHeaders,
+ InputStream entityStream)
+
+
+
+
+
+void
+MessageBodyWriter. writeTo (T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,Object > httpHeaders,
+ OutputStream entityStream)
+
+Write a type to an HTTP message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/AsyncInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/AsyncInvoker.html
new file mode 100644
index 0000000000..5dd0bc3b2d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/AsyncInvoker.html
@@ -0,0 +1,1463 @@
+
+
+
+
+
+AsyncInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+Future <Response >
+delete ()
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+
+
+<T> Future <T>
+delete (Class <T> responseType)
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+
+
+<T> Future <T>
+delete (InvocationCallback <T> callback)
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+
+
+<T> Future <T>
+delete (GenericType <T> responseType)
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+
+
+Future <Response >
+get ()
+
+Invoke HTTP GET method for the current request asynchronously.
+
+
+
+<T> Future <T>
+get (Class <T> responseType)
+
+Invoke HTTP GET method for the current request asynchronously.
+
+
+
+<T> Future <T>
+get (InvocationCallback <T> callback)
+
+Invoke HTTP GET method for the current request asynchronously.
+
+
+
+<T> Future <T>
+get (GenericType <T> responseType)
+
+Invoke HTTP GET method for the current request asynchronously.
+
+
+
+Future <Response >
+head ()
+
+Invoke HTTP HEAD method for the current request asynchronously.
+
+
+
+Future <Response >
+head (InvocationCallback <Response > callback)
+
+Invoke HTTP HEAD method for the current request asynchronously.
+
+
+
+Future <Response >
+method (String name)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+method (String name,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+Future <Response >
+method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+method (String name,
+ Entity <?> entity,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+method (String name,
+ Entity <?> entity,
+ InvocationCallback <T> callback)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+method (String name,
+ InvocationCallback <T> callback)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+method (String name,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+Future <Response >
+options ()
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+
+
+<T> Future <T>
+options (Class <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+
+
+<T> Future <T>
+options (InvocationCallback <T> callback)
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+
+
+<T> Future <T>
+options (GenericType <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+
+
+Future <Response >
+post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+<T> Future <T>
+post (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+<T> Future <T>
+post (Entity <?> entity,
+ InvocationCallback <T> callback)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+<T> Future <T>
+post (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+Future <Response >
+put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+<T> Future <T>
+put (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+<T> Future <T>
+put (Entity <?> entity,
+ InvocationCallback <T> callback)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+<T> Future <T>
+put (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+Future <Response >
+trace ()
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+
+
+<T> Future <T>
+trace (Class <T> responseType)
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+
+
+<T> Future <T>
+trace (InvocationCallback <T> callback)
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+
+
+<T> Future <T>
+trace (GenericType <T> responseType)
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/Client.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Client.html
new file mode 100644
index 0000000000..4f92389f6e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Client.html
@@ -0,0 +1,463 @@
+
+
+
+
+
+Client (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+close
+void close()
+Close client instance and all it's associated resources. Subsequent calls
+ have no effect and are ignored. Once the client is closed, invoking any
+ other method on the client instance would result in an
IllegalStateException
+ being thrown.
+
+ Calling this method effectively invalidates all
resource targets
+ produced by the client instance. Invoking any method on such targets once the client
+ is closed would result in an
IllegalStateException
being thrown.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientBuilder.html
new file mode 100644
index 0000000000..f1f5f848b5
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientBuilder.html
@@ -0,0 +1,803 @@
+
+
+
+
+
+ClientBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+ClientBuilder ()
+
+Allows custom implementations to extend the ClientBuilder
class.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+hostnameVerifier
+public abstract ClientBuilder hostnameVerifier(HostnameVerifier verifier)
+Set the hostname verifier to be used by the client to verify the endpoint's hostname against it's
+ identification information.
+
+Parameters:
+verifier
- hostname verifier.
+Returns:
+an updated client builder instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientRequestContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientRequestContext.html
new file mode 100644
index 0000000000..9f0b723a35
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientRequestContext.html
@@ -0,0 +1,984 @@
+
+
+
+
+
+ClientRequestContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface ClientRequestContext
+Client request filter context.
+
+ A mutable class that provides request-specific information for the filter,
+ such as request URI, message headers, message entity or request-scoped
+ properties. The exposed setters allow modification of the exposed request-specific
+ information.
+
+Since:
+2.0
+Author:
+Marek Potociar
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getUri
+URI getUri()
+Get the request URI.
+
+Returns:
+request URI.
+
+
+
+
+
+
+
+
+setUri
+void setUri(URI uri)
+Set a new request URI.
+
+Parameters:
+uri
- new request URI.
+
+
+
+
+
+
+
+
+getMethod
+String getMethod()
+Get the request method.
+
+Returns:
+the request method.
+See Also:
+HttpMethod
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getDate
+Date getDate()
+Get message date.
+
+Returns:
+the message date, otherwise null
if not present.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+abortWith
+void abortWith(Response response)
+Abort the filter chain with a response.
+
+ This method breaks the filter chain processing and returns the provided
+ response back to the client. The provided response goes through the
+ chain of applicable response filters.
+
+Parameters:
+response
- response to be sent back to the client.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientRequestFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientRequestFilter.html
new file mode 100644
index 0000000000..13c18faa76
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientRequestFilter.html
@@ -0,0 +1,280 @@
+
+
+
+
+
+ClientRequestFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+filter
+void filter(ClientRequestContext requestContext)
+ throws IOException
+Filter method called before a request has been dispatched to a client
+ transport layer.
+
+ Filters in the filter chain are ordered according to their javax.annotation.Priority
+ class-level annotation value.
+
+Parameters:
+requestContext
- request context.
+Throws:
+IOException
- if an I/O exception occurs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientResponseContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientResponseContext.html
new file mode 100644
index 0000000000..0d32e20088
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientResponseContext.html
@@ -0,0 +1,747 @@
+
+
+
+
+
+ClientResponseContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface ClientResponseContext
+Client response filter context.
+
+ A mutable class that provides response-specific information for the filter,
+ such as message headers, message entity or request-scoped properties.
+ The exposed setters allow modification of the exposed response-specific
+ information.
+
+Since:
+2.0
+Author:
+Marek Potociar
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getDate
+Date getDate()
+Get message date.
+
+Returns:
+the message date, otherwise null
if not present.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getLocation
+URI getLocation()
+Get the location.
+
+Returns:
+the location URI, otherwise null
if not present.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientResponseFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientResponseFilter.html
new file mode 100644
index 0000000000..9c0a7336dc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ClientResponseFilter.html
@@ -0,0 +1,285 @@
+
+
+
+
+
+ClientResponseFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/CompletionStageRxInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/CompletionStageRxInvoker.html
new file mode 100644
index 0000000000..8feb5ca6c6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/CompletionStageRxInvoker.html
@@ -0,0 +1,982 @@
+
+
+
+
+
+CompletionStageRxInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+CompletionStage <Response >
+delete ()
+
+Invoke HTTP DELETE method for the current request.
+
+
+
+<T> CompletionStage <T>
+delete (Class <T> responseType)
+
+Invoke HTTP DELETE method for the current request.
+
+
+
+<T> CompletionStage <T>
+delete (GenericType <T> responseType)
+
+Invoke HTTP DELETE method for the current request.
+
+
+
+CompletionStage <Response >
+get ()
+
+Invoke HTTP GET method for the current request.
+
+
+
+<T> CompletionStage <T>
+get (Class <T> responseType)
+
+Invoke HTTP GET method for the current request.
+
+
+
+<T> CompletionStage <T>
+get (GenericType <T> responseType)
+
+Invoke HTTP GET method for the current request.
+
+
+
+CompletionStage <Response >
+head ()
+
+Invoke HTTP HEAD method for the current request.
+
+
+
+CompletionStage <Response >
+method (String name)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<T> CompletionStage <T>
+method (String name,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+CompletionStage <Response >
+method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<T> CompletionStage <T>
+method (String name,
+ Entity <?> entity,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<T> CompletionStage <T>
+method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<T> CompletionStage <T>
+method (String name,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+CompletionStage <Response >
+options ()
+
+Invoke HTTP OPTIONS method for the current request.
+
+
+
+<T> CompletionStage <T>
+options (Class <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request.
+
+
+
+<T> CompletionStage <T>
+options (GenericType <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request.
+
+
+
+CompletionStage <Response >
+post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request.
+
+
+
+<T> CompletionStage <T>
+post (Entity <?> entity,
+ Class <T> clazz)
+
+Invoke HTTP POST method for the current request.
+
+
+
+<T> CompletionStage <T>
+post (Entity <?> entity,
+ GenericType <T> type)
+
+Invoke HTTP POST method for the current request.
+
+
+
+CompletionStage <Response >
+put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+<T> CompletionStage <T>
+put (Entity <?> entity,
+ Class <T> clazz)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+<T> CompletionStage <T>
+put (Entity <?> entity,
+ GenericType <T> type)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+CompletionStage <Response >
+trace ()
+
+Invoke HTTP TRACE method for the current request.
+
+
+
+<T> CompletionStage <T>
+trace (Class <T> responseType)
+
+Invoke HTTP TRACE method for the current request.
+
+
+
+<T> CompletionStage <T>
+trace (GenericType <T> responseType)
+
+Invoke HTTP TRACE method for the current request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+put
+<T> CompletionStage <T> put(Entity <?> entity,
+ Class <T> clazz)
+
+Invoke HTTP PUT method for the current request.
+
+Specified by:
+put
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+clazz
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+
+
+
+
+
+
+
+
+put
+<T> CompletionStage <T> put(Entity <?> entity,
+ GenericType <T> type)
+
+Invoke HTTP PUT method for the current request.
+
+Specified by:
+put
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+type
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+
+
+
+
+
+
+
+
+
+
+
+
+post
+<T> CompletionStage <T> post(Entity <?> entity,
+ Class <T> clazz)
+
+Invoke HTTP POST method for the current request.
+
+Specified by:
+post
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+clazz
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+
+
+
+
+
+
+
+
+post
+<T> CompletionStage <T> post(Entity <?> entity,
+ GenericType <T> type)
+
+Invoke HTTP POST method for the current request.
+
+Specified by:
+post
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+type
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+method
+<T> CompletionStage <T> method(String name,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+Specified by:
+method
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- response entity type.
+Parameters:
+name
- method name.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+
+
+
+
+
+
+
+
+method
+<T> CompletionStage <T> method(String name,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+Specified by:
+method
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+name
- method name.
+responseType
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+
+
+
+
+
+
+
+
+method
+CompletionStage <Response > method(String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request.
+
+Specified by:
+method
in interface RxInvoker <CompletionStage >
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+Returns:
+invocation response wrapped in the completion aware type..
+
+
+
+
+
+
+
+
+method
+<T> CompletionStage <T> method(String name,
+ Entity <?> entity,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+Specified by:
+method
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- response entity type.
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+
+
+
+
+
+
+
+
+method
+<T> CompletionStage <T> method(String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request.
+
+Specified by:
+method
in interface RxInvoker <CompletionStage >
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/Entity.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Entity.html
new file mode 100644
index 0000000000..d7c672306c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Entity.html
@@ -0,0 +1,791 @@
+
+
+
+
+
+Entity (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+entity
+public static <T> Entity <T> entity(T entity,
+ MediaType mediaType)
+Create an entity using a supplied content media type.
+
+Type Parameters:
+T
- entity Java type.
+Parameters:
+entity
- entity data.
+mediaType
- entity content type.
+Returns:
+entity instance.
+
+
+
+
+
+
+
+
+
+
+entity
+public static <T> Entity <T> entity(T entity,
+ MediaType mediaType,
+ Annotation [] annotations)
+Create an entity using a supplied content media type.
+
+Type Parameters:
+T
- entity Java type.
+Parameters:
+entity
- entity data.
+mediaType
- entity content type.
+annotations
- entity annotations.
+Returns:
+entity instance.
+
+
+
+
+
+
+
+
+
+
+entity
+public static <T> Entity <T> entity(T entity,
+ String mediaType)
+Create an entity using a supplied content media type.
+
+Type Parameters:
+T
- entity Java type.
+Parameters:
+entity
- entity data.
+mediaType
- entity content type.
+Returns:
+entity instance.
+Throws:
+IllegalArgumentException
- if the supplied string cannot be parsed
+ or is null
.
+
+
+
+
+
+
+
+
+
+
+entity
+public static <T> Entity <T> entity(T entity,
+ Variant variant)
+Create an entity using a supplied content media type.
+
+Type Parameters:
+T
- entity Java type.
+Parameters:
+entity
- entity data.
+variant
- entity variant
information.
+Returns:
+entity instance.
+
+
+
+
+
+
+
+
+
+
+entity
+public static <T> Entity <T> entity(T entity,
+ Variant variant,
+ Annotation [] annotations)
+Create an entity using a supplied content media type.
+
+Type Parameters:
+T
- entity Java type.
+Parameters:
+entity
- entity data.
+variant
- entity variant
information.
+annotations
- entity annotations.
+Returns:
+entity instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getEntity
+public T getEntity()
+Get entity data.
+
+Returns:
+entity data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+hashCode
+public int hashCode()
+
+Overrides:
+hashCode
in class Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/Invocation.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Invocation.Builder.html
new file mode 100644
index 0000000000..b10b7e2b20
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Invocation.Builder.html
@@ -0,0 +1,804 @@
+
+
+
+
+
+Invocation.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from interface javax.ws.rs.client.SyncInvoker
+delete , delete , delete , get , get , get , head , method , method , method , method , method , method , options , options , options , post , post , post , put , put , put , trace , trace , trace
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+build
+Invocation build(String method,
+ Entity <?> entity)
+Build a request invocation using an arbitrary request method name and
+ request entity.
+
+Parameters:
+method
- request method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+Returns:
+invocation encapsulating the built request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+headers
+Invocation.Builder headers(MultivaluedMap <String ,Object > headers)
+Replaces all existing headers with the newly supplied headers.
+
+Parameters:
+headers
- new headers to be set, if null
all existing
+ headers will be removed.
+Returns:
+the updated builder.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/Invocation.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Invocation.html
new file mode 100644
index 0000000000..0a0ce9c20b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/Invocation.html
@@ -0,0 +1,562 @@
+
+
+
+
+
+Invocation (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface Invocation
+A client request invocation.
+
+ An invocation is a request that has been prepared and is ready for execution.
+ Invocations provide a generic (command) interface that enables a separation of
+ concerns between the creator and the submitter. In particular, the submitter
+ does not need to know how the invocation was prepared, but only how it should
+ be executed (synchronously or asynchronously) and when.
+
+Author:
+Marek Potociar, Santiago Pericas-Geertsen
+See Also:
+Invocation.Builder
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Interface
+Description
+
+
+static interface
+Invocation.Builder
+
+A client request invocation builder.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+Response
+invoke ()
+
+Synchronously invoke the request and receive a response back.
+
+
+
+<T> T
+invoke (Class <T> responseType)
+
+Synchronously invoke the request and receive a response of the specified
+ type back.
+
+
+
+<T> T
+invoke (GenericType <T> responseType)
+
+Synchronously invoke the request and receive a response of the specified
+ generic type back.
+
+
+
+Invocation
+property (String name,
+ Object value)
+
+Set a new property in the context of a request represented by this invocation.
+
+
+
+Future <Response >
+submit ()
+
+Submit the request for an asynchronous invocation and receive a future
+ response back.
+
+
+
+<T> Future <T>
+submit (Class <T> responseType)
+
+Submit the request for an asynchronous invocation and receive a future
+ response of the specified type back.
+
+
+
+<T> Future <T>
+submit (InvocationCallback <T> callback)
+
+Submit the request for an asynchronous invocation and register an
+
InvocationCallback
to process the future result of the invocation.
+
+
+
+<T> Future <T>
+submit (GenericType <T> responseType)
+
+Submit the request for an asynchronous invocation and receive a future
+ response of the specified generic type back.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/InvocationCallback.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/InvocationCallback.html
new file mode 100644
index 0000000000..306785320e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/InvocationCallback.html
@@ -0,0 +1,321 @@
+
+
+
+
+
+InvocationCallback (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/ResponseProcessingException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ResponseProcessingException.html
new file mode 100644
index 0000000000..fa1b7e692a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/ResponseProcessingException.html
@@ -0,0 +1,435 @@
+
+
+
+
+
+ResponseProcessingException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+ResponseProcessingException (Response response,
+ String message)
+
+Constructs a new runtime processing exception with the specified detail
+ message.
+
+
+
+ResponseProcessingException (Response response,
+ String message,
+ Throwable cause)
+
+Constructs a new runtime response processing exception with the specified detail
+ message and cause.
+
+
+
+ResponseProcessingException (Response response,
+ Throwable cause)
+
+Constructs a new runtime response processing exception
+ for a specific
response
with the specified cause
+ and a detail message of
(cause==null ? null : cause.toString())
+ (which typically contains the class and detail message of
cause
).
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/RxInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/RxInvoker.html
new file mode 100644
index 0000000000..b6cedac3ae
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/RxInvoker.html
@@ -0,0 +1,1104 @@
+
+
+
+
+
+RxInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+T
+delete ()
+
+Invoke HTTP DELETE method for the current request.
+
+
+
+<R> T
+delete (Class <R> responseType)
+
+Invoke HTTP DELETE method for the current request.
+
+
+
+<R> T
+delete (GenericType <R> responseType)
+
+Invoke HTTP DELETE method for the current request.
+
+
+
+T
+get ()
+
+Invoke HTTP GET method for the current request.
+
+
+
+<R> T
+get (Class <R> responseType)
+
+Invoke HTTP GET method for the current request.
+
+
+
+<R> T
+get (GenericType <R> responseType)
+
+Invoke HTTP GET method for the current request.
+
+
+
+T
+head ()
+
+Invoke HTTP HEAD method for the current request.
+
+
+
+T
+method (String name)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<R> T
+method (String name,
+ Class <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+T
+method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<R> T
+method (String name,
+ Entity <?> entity,
+ Class <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<R> T
+method (String name,
+ Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<R> T
+method (String name,
+ GenericType <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+T
+options ()
+
+Invoke HTTP OPTIONS method for the current request.
+
+
+
+<R> T
+options (Class <R> responseType)
+
+Invoke HTTP OPTIONS method for the current request.
+
+
+
+<R> T
+options (GenericType <R> responseType)
+
+Invoke HTTP OPTIONS method for the current request.
+
+
+
+T
+post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request.
+
+
+
+<R> T
+post (Entity <?> entity,
+ Class <R> responseType)
+
+Invoke HTTP POST method for the current request.
+
+
+
+<R> T
+post (Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke HTTP POST method for the current request.
+
+
+
+T
+put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+<R> T
+put (Entity <?> entity,
+ Class <R> responseType)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+<R> T
+put (Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+T
+trace ()
+
+Invoke HTTP TRACE method for the current request.
+
+
+
+<R> T
+trace (Class <R> responseType)
+
+Invoke HTTP TRACE method for the current request.
+
+
+
+<R> T
+trace (GenericType <R> responseType)
+
+Invoke HTTP TRACE method for the current request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+put
+<R> T put(Entity <?> entity,
+ Class <R> responseType)
+Invoke HTTP PUT method for the current request.
+
+Type Parameters:
+R
- response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+put
+<R> T put(Entity <?> entity,
+ GenericType <R> responseType)
+Invoke HTTP PUT method for the current request.
+
+Type Parameters:
+R
- generic response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+
+
+
+
+post
+<R> T post(Entity <?> entity,
+ Class <R> responseType)
+Invoke HTTP POST method for the current request.
+
+Type Parameters:
+R
- response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+post
+<R> T post(Entity <?> entity,
+ GenericType <R> responseType)
+Invoke HTTP POST method for the current request.
+
+Type Parameters:
+R
- generic response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+method
+<R> T method(String name,
+ Class <R> responseType)
+Invoke an arbitrary method for the current request.
+
+Type Parameters:
+R
- response entity type.
+Parameters:
+name
- method name.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+method
+<R> T method(String name,
+ GenericType <R> responseType)
+Invoke an arbitrary method for the current request.
+
+Type Parameters:
+R
- generic response entity type.
+Parameters:
+name
- method name.
+responseType
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+
+
+
+
+method
+<R> T method(String name,
+ Entity <?> entity,
+ Class <R> responseType)
+Invoke an arbitrary method for the current request.
+
+Type Parameters:
+R
- response entity type.
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+method
+<R> T method(String name,
+ Entity <?> entity,
+ GenericType <R> responseType)
+Invoke an arbitrary method for the current request.
+
+Type Parameters:
+R
- generic response entity type.
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- representation of a generic Java type the response entity will be converted to.
+Returns:
+invocation response wrapped in the completion aware type..
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a
+ filter or during conversion of the response entity data to an
+ instance of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response returned by the
+ server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/RxInvokerProvider.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/RxInvokerProvider.html
new file mode 100644
index 0000000000..79f36eb0f0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/RxInvokerProvider.html
@@ -0,0 +1,308 @@
+
+
+
+
+
+RxInvokerProvider (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/SyncInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/SyncInvoker.html
new file mode 100644
index 0000000000..74403652a2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/SyncInvoker.html
@@ -0,0 +1,1100 @@
+
+
+
+
+
+SyncInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+Response
+delete ()
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+
+
+<T> T
+delete (Class <T> responseType)
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+
+
+<T> T
+delete (GenericType <T> responseType)
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+
+
+Response
+get ()
+
+Invoke HTTP GET method for the current request synchronously.
+
+
+
+<T> T
+get (Class <T> responseType)
+
+Invoke HTTP GET method for the current request synchronously.
+
+
+
+<T> T
+get (GenericType <T> responseType)
+
+Invoke HTTP GET method for the current request synchronously.
+
+
+
+Response
+head ()
+
+Invoke HTTP HEAD method for the current request synchronously.
+
+
+
+Response
+method (String name)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> T
+method (String name,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+Response
+method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> T
+method (String name,
+ Entity <?> entity,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> T
+method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> T
+method (String name,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+Response
+options ()
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+
+
+<T> T
+options (Class <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+
+
+<T> T
+options (GenericType <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+
+
+Response
+post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+<T> T
+post (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+<T> T
+post (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+Response
+put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+<T> T
+put (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+<T> T
+put (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+Response
+trace ()
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+
+
+<T> T
+trace (Class <T> responseType)
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+
+
+<T> T
+trace (GenericType <T> responseType)
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+put
+<T> T put(Entity <?> entity,
+ Class <T> responseType)
+Invoke HTTP PUT method for the current request synchronously.
+
+Type Parameters:
+T
- response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+put
+<T> T put(Entity <?> entity,
+ GenericType <T> responseType)
+Invoke HTTP PUT method for the current request synchronously.
+
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- representation of a generic Java type the response
+ entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified generic response type does not represent
+ Response
.
+
+
+
+
+
+
+
+
+
+
+
+
+post
+<T> T post(Entity <?> entity,
+ Class <T> responseType)
+Invoke HTTP POST method for the current request synchronously.
+
+Type Parameters:
+T
- response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+post
+<T> T post(Entity <?> entity,
+ GenericType <T> responseType)
+Invoke HTTP POST method for the current request synchronously.
+
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- representation of a generic Java type the response
+ entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified generic response type does not represent
+ Response
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+method
+<T> T method(String name,
+ Class <T> responseType)
+Invoke an arbitrary method for the current request synchronously.
+
+Type Parameters:
+T
- response entity type.
+Parameters:
+name
- method name.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+method
+<T> T method(String name,
+ GenericType <T> responseType)
+Invoke an arbitrary method for the current request synchronously.
+
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+name
- method name.
+responseType
- representation of a generic Java type the response
+ entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified generic response type does not represent
+ Response
.
+
+
+
+
+
+
+
+
+method
+Response method(String name,
+ Entity <?> entity)
+Invoke an arbitrary method for the current request synchronously.
+
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+
+
+
+
+
+
+
+
+method
+<T> T method(String name,
+ Entity <?> entity,
+ Class <T> responseType)
+Invoke an arbitrary method for the current request synchronously.
+
+Type Parameters:
+T
- response entity type.
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- Java type the response entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified response type is not
+ Response
.
+
+
+
+
+
+
+
+
+method
+<T> T method(String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+Invoke an arbitrary method for the current request synchronously.
+
+Type Parameters:
+T
- generic response entity type.
+Parameters:
+name
- method name.
+entity
- request entity, including it's full Variant
information.
+ Any variant-related HTTP headers previously set (namely Content-Type
,
+ Content-Language
and Content-Encoding
) will be overwritten using
+ the entity variant information.
+responseType
- representation of a generic Java type the response
+ entity will be converted to.
+Returns:
+invocation response.
+Throws:
+ResponseProcessingException
- in case processing of a received HTTP response fails (e.g. in a filter
+ or during conversion of the response entity data to an instance
+ of a particular Java type).
+ProcessingException
- in case the request processing or subsequent I/O operation fails.
+WebApplicationException
- in case the response status code of the response
+ returned by the server is not
+ successful
and the specified generic response type does not represent
+ Response
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/WebTarget.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/WebTarget.html
new file mode 100644
index 0000000000..64c895b54a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/WebTarget.html
@@ -0,0 +1,766 @@
+
+
+
+
+
+WebTarget (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+URI
+getUri ()
+
+Get the URI identifying the resource.
+
+
+
+UriBuilder
+getUriBuilder ()
+
+Get the URI builder initialized with the
URI
of the current
+ resource target.
+
+
+
+WebTarget
+matrixParam (String name,
+ Object ... values)
+
+Create a new WebTarget
instance by appending a matrix parameter to
+ the existing set of matrix parameters of the current final segment of the
+ URI of the current target instance.
+
+
+
+WebTarget
+path (String path)
+
+Create a new WebTarget
instance by appending path to the URI of
+ the current target instance.
+
+
+
+WebTarget
+queryParam (String name,
+ Object ... values)
+
+Create a new WebTarget
instance by configuring a query parameter on the URI
+ of the current target instance.
+
+
+
+Invocation.Builder
+request ()
+
+Start building a request to the targeted web resource.
+
+
+
+Invocation.Builder
+request (String ... acceptedResponseTypes)
+
+Start building a request to the targeted web resource and define the accepted
+ response media types.
+
+
+
+Invocation.Builder
+request (MediaType ... acceptedResponseTypes)
+
+Start building a request to the targeted web resource and define the accepted
+ response media types.
+
+
+
+WebTarget
+resolveTemplate (String name,
+ Object value)
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied value.
+
+
+
+WebTarget
+resolveTemplate (String name,
+ Object value,
+ boolean encodeSlashInPath)
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied value.
+
+
+
+WebTarget
+resolveTemplateFromEncoded (String name,
+ Object value)
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied encoded value.
+
+
+
+WebTarget
+resolveTemplates (Map <String ,Object > templateValues)
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-value pairs.
+
+
+
+WebTarget
+resolveTemplates (Map <String ,Object > templateValues,
+ boolean encodeSlashInPath)
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-value pairs.
+
+
+
+WebTarget
+resolveTemplatesFromEncoded (Map <String ,Object > templateValues)
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-encoded value pairs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/AsyncInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/AsyncInvoker.html
new file mode 100644
index 0000000000..cef90c42c0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/AsyncInvoker.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.AsyncInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client that return AsyncInvoker
+
+Modifier and Type
+Method
+Description
+
+
+
+AsyncInvoker
+Invocation.Builder. async ()
+
+Access the asynchronous uniform request invocation interface to
+ asynchronously invoke the built request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Client.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Client.html
new file mode 100644
index 0000000000..ebfe491d38
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Client.html
@@ -0,0 +1,223 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.Client (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client that return Client
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract Client
+ClientBuilder. build ()
+
+Build a new client instance using all the configuration previously specified
+ in this client builder.
+
+
+
+Client
+ClientRequestContext. getClient ()
+
+Get the client instance associated with the request.
+
+
+
+static Client
+ClientBuilder. newClient ()
+
+Create a new
Client
instance using the default client builder implementation
+ class provided by the implementation provider.
+
+
+
+static Client
+ClientBuilder. newClient (Configuration configuration)
+
+Create a new custom-configured
Client
instance using the default client builder
+ implementation class provided by the implementation provider.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientBuilder.html
new file mode 100644
index 0000000000..c09a3217d0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientBuilder.html
@@ -0,0 +1,277 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.client.ClientBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientRequestContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientRequestContext.html
new file mode 100644
index 0000000000..cdee76f8c6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientRequestContext.html
@@ -0,0 +1,210 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.ClientRequestContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientRequestFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientRequestFilter.html
new file mode 100644
index 0000000000..c72b96c54d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientRequestFilter.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.ClientRequestFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.client.ClientRequestFilter
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientResponseContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientResponseContext.html
new file mode 100644
index 0000000000..ee339a766d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientResponseContext.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.ClientResponseContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientResponseFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientResponseFilter.html
new file mode 100644
index 0000000000..d517fc2bfa
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ClientResponseFilter.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.ClientResponseFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.client.ClientResponseFilter
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/CompletionStageRxInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/CompletionStageRxInvoker.html
new file mode 100644
index 0000000000..d4e1e0107c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/CompletionStageRxInvoker.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.CompletionStageRxInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Entity.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Entity.html
new file mode 100644
index 0000000000..a2810a732b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Entity.html
@@ -0,0 +1,613 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.client.Entity (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client with parameters of type Entity
+
+Modifier and Type
+Method
+Description
+
+
+
+Invocation
+Invocation.Builder. build (String method,
+ Entity <?> entity)
+
+Build a request invocation using an arbitrary request method name and
+ request entity.
+
+
+
+Invocation
+Invocation.Builder. buildPost (Entity <?> entity)
+
+Build a POST request invocation.
+
+
+
+Invocation
+Invocation.Builder. buildPut (Entity <?> entity)
+
+Build a PUT request invocation.
+
+
+
+Future <Response >
+AsyncInvoker. method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. method (String name,
+ Entity <?> entity,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. method (String name,
+ Entity <?> entity,
+ InvocationCallback <T> callback)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+CompletionStage <Response >
+CompletionStageRxInvoker. method (String name,
+ Entity <?> entity)
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. method (String name,
+ Entity <?> entity,
+ Class <T> responseType)
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+
+
+T
+RxInvoker. method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<R> T
+RxInvoker. method (String name,
+ Entity <?> entity,
+ Class <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<R> T
+RxInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+Response
+SyncInvoker. method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> T
+SyncInvoker. method (String name,
+ Entity <?> entity,
+ Class <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> T
+SyncInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+Future <Response >
+AsyncInvoker. post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. post (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. post (Entity <?> entity,
+ InvocationCallback <T> callback)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. post (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+CompletionStage <Response >
+CompletionStageRxInvoker. post (Entity <?> entity)
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. post (Entity <?> entity,
+ Class <T> clazz)
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. post (Entity <?> entity,
+ GenericType <T> type)
+
+
+
+T
+RxInvoker. post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request.
+
+
+
+<R> T
+RxInvoker. post (Entity <?> entity,
+ Class <R> responseType)
+
+Invoke HTTP POST method for the current request.
+
+
+
+<R> T
+RxInvoker. post (Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke HTTP POST method for the current request.
+
+
+
+Response
+SyncInvoker. post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+<T> T
+SyncInvoker. post (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+<T> T
+SyncInvoker. post (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+Future <Response >
+AsyncInvoker. put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. put (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. put (Entity <?> entity,
+ InvocationCallback <T> callback)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. put (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+CompletionStage <Response >
+CompletionStageRxInvoker. put (Entity <?> entity)
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. put (Entity <?> entity,
+ Class <T> clazz)
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. put (Entity <?> entity,
+ GenericType <T> type)
+
+
+
+T
+RxInvoker. put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+<R> T
+RxInvoker. put (Entity <?> entity,
+ Class <R> responseType)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+<R> T
+RxInvoker. put (Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+Response
+SyncInvoker. put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+<T> T
+SyncInvoker. put (Entity <?> entity,
+ Class <T> responseType)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+<T> T
+SyncInvoker. put (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Invocation.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Invocation.Builder.html
new file mode 100644
index 0000000000..526d92a460
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Invocation.Builder.html
@@ -0,0 +1,302 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.Invocation.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Invocation.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Invocation.html
new file mode 100644
index 0000000000..c1540e2a5f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/Invocation.html
@@ -0,0 +1,244 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.Invocation (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/InvocationCallback.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/InvocationCallback.html
new file mode 100644
index 0000000000..39fd9ea757
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/InvocationCallback.html
@@ -0,0 +1,268 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.InvocationCallback (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ResponseProcessingException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ResponseProcessingException.html
new file mode 100644
index 0000000000..47d2cfd53e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/ResponseProcessingException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.client.ResponseProcessingException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.client.ResponseProcessingException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/RxInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/RxInvoker.html
new file mode 100644
index 0000000000..0e138672e8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/RxInvoker.html
@@ -0,0 +1,233 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.RxInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/RxInvokerProvider.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/RxInvokerProvider.html
new file mode 100644
index 0000000000..2932c6aa7f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/RxInvokerProvider.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.RxInvokerProvider (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.client.RxInvokerProvider
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/SyncInvoker.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/SyncInvoker.html
new file mode 100644
index 0000000000..dea03232b8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/SyncInvoker.html
@@ -0,0 +1,217 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.SyncInvoker (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/WebTarget.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/WebTarget.html
new file mode 100644
index 0000000000..9332b92aba
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/class-use/WebTarget.html
@@ -0,0 +1,334 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.client.WebTarget (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client that return WebTarget
+
+Modifier and Type
+Method
+Description
+
+
+
+WebTarget
+WebTarget. matrixParam (String name,
+ Object ... values)
+
+Create a new WebTarget
instance by appending a matrix parameter to
+ the existing set of matrix parameters of the current final segment of the
+ URI of the current target instance.
+
+
+
+WebTarget
+WebTarget. path (String path)
+
+Create a new WebTarget
instance by appending path to the URI of
+ the current target instance.
+
+
+
+WebTarget
+WebTarget. queryParam (String name,
+ Object ... values)
+
+Create a new WebTarget
instance by configuring a query parameter on the URI
+ of the current target instance.
+
+
+
+WebTarget
+WebTarget. resolveTemplate (String name,
+ Object value)
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied value.
+
+
+
+WebTarget
+WebTarget. resolveTemplate (String name,
+ Object value,
+ boolean encodeSlashInPath)
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied value.
+
+
+
+WebTarget
+WebTarget. resolveTemplateFromEncoded (String name,
+ Object value)
+
+Create a new WebTarget
instance by resolving a URI template with a given name
+ in the URI of the current target instance using a supplied encoded value.
+
+
+
+WebTarget
+WebTarget. resolveTemplates (Map <String ,Object > templateValues)
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-value pairs.
+
+
+
+WebTarget
+WebTarget. resolveTemplates (Map <String ,Object > templateValues,
+ boolean encodeSlashInPath)
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-value pairs.
+
+
+
+WebTarget
+WebTarget. resolveTemplatesFromEncoded (Map <String ,Object > templateValues)
+
+Create a new WebTarget
instance by resolving one or more URI templates
+ in the URI of the current target instance using supplied name-encoded value pairs.
+
+
+
+WebTarget
+Client. target (String uri)
+
+Build a new web resource target.
+
+
+
+WebTarget
+Client. target (URI uri)
+
+Build a new web resource target.
+
+
+
+WebTarget
+Client. target (Link link)
+
+Build a new web resource target.
+
+
+
+WebTarget
+Client. target (UriBuilder uriBuilder)
+
+Build a new web resource target.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-frame.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-frame.html
new file mode 100644
index 0000000000..f21f1be7bc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-frame.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+javax.ws.rs.client (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Interfaces
+
+
Classes
+
+
Exceptions
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-summary.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-summary.html
new file mode 100644
index 0000000000..1963b92bc2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-summary.html
@@ -0,0 +1,381 @@
+
+
+
+
+
+javax.ws.rs.client (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
The Client API
+
+ The Client API is a Java based API used to access Web resources.
+ It is not restricted to resources implemented using this API.
+ It provides a higher-level abstraction compared to a
plain HTTP communication API
as well as integration with extension
+ providers, in order to enable concise and efficient implementation of
+ reusable client-side solutions that leverage existing and well
+ established client-side implementations of HTTP-based communication.
+
+ The Client API encapsulates the Uniform Interface Constraint –
+ a key constraint of the REST architectural style – and associated data
+ elements as client-side Java artifacts and supports a pluggable architecture
+ by defining multiple extension points.
+
+
Client API Bootstrapping and Configuration
+ The main entry point to the API is a
ClientBuilder
+ that is used to bootstrap
Client
instances -
+
configurable
, heavy-weight objects
+ that manage the underlying communication infrastructure and serve as the root
+ objects for accessing any Web resource. The following example illustrates the
+ bootstrapping and configuration of a
Client
instance:
+
+ Client client = ClientBuilder.newClient();
+
+ client.property("MyProperty", "MyValue")
+ .register(MyProvider.class)
+ .register(MyFeature.class);
+
+
+
Accessing Web Resources
+ A Web resource can be accessed using a fluent API in which method invocations
+ are chained to configure and ultimately submit an HTTP request. The following
+ example gets a
text/plain
representation of the resource identified by
+
"http://example.org/hello"
:
+
+ Client client = ClientBuilder.newClient();
+ Response res = client.target("http://example.org/hello").request("text/plain").get();
+
+ Conceptually, the steps required to submit a request are the following:
+
+ obtain an Client
instance
+ create a WebTarget
pointing at a Web resource
+ build
a request
+ submit a request to directly retrieve a response or get a prepared
+ Invocation
for later submission
+
+
+ As illustrated above, individual Web resources are in the Client API
+ represented as resource targets. Each
WebTarget
instance is bound to a
+ concrete URI, e.g.
"http://example.org/messages/123"
,
+ or a URI template, e.g.
"http://example.org/messages/{id}"
.
+ That way a single target can either point at a particular resource or represent
+ a larger group of resources (that e.g. share a common configuration) from which
+ concrete resources can be later derived:
+
+ // Parent target for all messages
+ WebTarget messages = client.target("http://example.org/messages/{id}");
+
+ // New target for http://example.org/messages/123
+ WebTarget msg123 = messages.resolveTemplate("id", 123);
+
+ // New target for http://example.org/messages/456
+ WebTarget msg456 = messages.resolveTemplate("id", 456);
+
+
+
Generic Invocations
+ An
Invocation
is a request that has been prepared
+ and is ready for execution.
+ Invocations provide a generic interface that enables a separation of concerns
+ between the creator and the submitter. In particular, the submitter does not
+ need to know how the invocation was prepared, but only whether it should be
+ executed synchronously or asynchronously.
+
+ Invocation inv1 = client.target("http://example.org/atm/balance")
+ .queryParam("card", "111122223333").queryParam("pin", "9876")
+ .request("text/plain").buildGet();
+ Invocation inv2 = client.target("http://example.org/atm/withdrawal")
+ .queryParam("card", "111122223333").queryParam("pin", "9876")
+ .request().buildPost(text("50.0")));
+
+ Collection invs = Arrays.asList(inv1, inv2);
+ // Executed by the submitter
+ Collection ress = Collections.transform(invs, new F() {
+ public Response apply(Invocation inv) {return inv.invoke(); }
+ });
+
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+AsyncInvoker
+
+Uniform interface for asynchronous invocation of HTTP methods.
+
+
+
+Client
+
+Client is the main entry point to the fluent API used to build and execute client
+ requests in order to consume responses returned.
+
+
+
+ClientRequestContext
+
+Client request filter context.
+
+
+
+ClientRequestFilter
+
+An extension interface implemented by client request filters.
+
+
+
+ClientResponseContext
+
+Client response filter context.
+
+
+
+ClientResponseFilter
+
+An extension interface implemented by client response filters.
+
+
+
+CompletionStageRxInvoker
+
+
+
+
+
+Invocation
+
+A client request invocation.
+
+
+
+Invocation.Builder
+
+A client request invocation builder.
+
+
+
+InvocationCallback <RESPONSE>
+
+Callback that can be implemented to receive the asynchronous processing
+ events from the invocation processing.
+
+
+
+RxInvoker <T>
+
+Uniform interface for reactive invocation of HTTP methods.
+
+
+
+RxInvokerProvider <T extends RxInvoker >
+
+
+
+
+
+SyncInvoker
+
+Uniform interface for synchronous invocation of HTTP methods.
+
+
+
+WebTarget
+
+A resource target identified by the resource URI.
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+ClientBuilder
+
+Main entry point to the client API used to bootstrap
Client
+ instances.
+
+
+
+Entity <T>
+
+Encapsulates message entity including the associated variant information.
+
+
+
+
+
+
+
+Exception Summary
+
+Exception
+Description
+
+
+
+ResponseProcessingException
+
+Client-side runtime processing exception thrown to indicate that
+ response processing has failed (e.g.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-tree.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-tree.html
new file mode 100644
index 0000000000..5b63d5c03c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-tree.html
@@ -0,0 +1,211 @@
+
+
+
+
+
+javax.ws.rs.client Class Hierarchy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Class Hierarchy
+
+
Interface Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-use.html b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-use.html
new file mode 100644
index 0000000000..15109a1a9e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/client/package-use.html
@@ -0,0 +1,292 @@
+
+
+
+
+
+Uses of Package javax.ws.rs.client (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs.client used by javax.ws.rs.client
+
+Class
+Description
+
+
+
+AsyncInvoker
+
+Uniform interface for asynchronous invocation of HTTP methods.
+
+
+
+Client
+
+Client is the main entry point to the fluent API used to build and execute client
+ requests in order to consume responses returned.
+
+
+
+ClientBuilder
+
+Main entry point to the client API used to bootstrap
Client
+ instances.
+
+
+
+ClientRequestContext
+
+Client request filter context.
+
+
+
+ClientResponseContext
+
+Client response filter context.
+
+
+
+CompletionStageRxInvoker
+
+
+
+
+
+Entity
+
+Encapsulates message entity including the associated variant information.
+
+
+
+Invocation
+
+A client request invocation.
+
+
+
+Invocation.Builder
+
+A client request invocation builder.
+
+
+
+InvocationCallback
+
+Callback that can be implemented to receive the asynchronous processing
+ events from the invocation processing.
+
+
+
+RxInvoker
+
+Uniform interface for reactive invocation of HTTP methods.
+
+
+
+SyncInvoker
+
+Uniform interface for synchronous invocation of HTTP methods.
+
+
+
+WebTarget
+
+A resource target identified by the resource URI.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/AsyncResponse.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/AsyncResponse.html
new file mode 100644
index 0000000000..9949e56b5c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/AsyncResponse.html
@@ -0,0 +1,830 @@
+
+
+
+
+
+AsyncResponse (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+static long
+NO_TIMEOUT
+
+Constant specifying no suspend timeout value.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+boolean
+cancel ()
+
+Cancel the suspended request processing.
+
+
+
+boolean
+cancel (int retryAfter)
+
+Cancel the suspended request processing.
+
+
+
+boolean
+cancel (Date retryAfter)
+
+Cancel the suspended request processing.
+
+
+
+boolean
+isCancelled ()
+
+Check if the asynchronous response instance has been cancelled.
+
+
+
+boolean
+isDone ()
+
+Check if the processing of a request this asynchronous response instance belongs to
+ has finished.
+
+
+
+boolean
+isSuspended ()
+
+Check if the asynchronous response instance is in a suspended state.
+
+
+
+Collection <Class <?>>
+register (Class <?> callback)
+
+Register an asynchronous processing lifecycle callback class to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+
+
+Map <Class <?>,Collection <Class <?>>>
+register (Class <?> callback,
+ Class <?>... callbacks)
+
+Register asynchronous processing lifecycle callback classes to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+
+
+Collection <Class <?>>
+register (Object callback)
+
+Register an asynchronous processing lifecycle callback instance to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+
+
+Map <Class <?>,Collection <Class <?>>>
+register (Object callback,
+ Object ... callbacks)
+
+Register an asynchronous processing lifecycle callback instances to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+
+
+boolean
+resume (Object response)
+
+Resume the suspended request processing using the provided response data.
+
+
+
+boolean
+resume (Throwable response)
+
+Resume the suspended request processing using the provided throwable.
+
+
+
+boolean
+setTimeout (long time,
+ TimeUnit unit)
+
+Set/update the suspend timeout.
+
+
+
+void
+setTimeoutHandler (TimeoutHandler handler)
+
+Set/replace a time-out handler for the suspended asynchronous response.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+cancel
+boolean cancel()
+Cancel the suspended request processing.
+
+ When a request processing is cancelled using this method, the API implementation
+ MUST indicate to the client that the request processing has been cancelled by sending
+ back a HTTP 503 (Service unavailable)
+ error response.
+
+
+ Invoking a cancel(...)
method multiple times to cancel request processing has the same
+ effect as canceling the request processing only once. Invoking a cancel(...)
method on
+ an asynchronous response instance that has already been cancelled or resumed has no effect and the
+ method call is ignored while returning true
, in case the request has been cancelled previously.
+ Otherwise, in case the request has been resumed regularly (using a resume(...) method
) or
+ resumed due to a time-out, method returns false
.
+
+
+Returns:
+true
if the request processing has been cancelled, returns false
in case
+ the request processing is not suspended
and could not be cancelled
+ and is not cancelled
already.
+See Also:
+cancel(int)
,
+cancel(java.util.Date)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+isDone
+boolean isDone()
+Check if the processing of a request this asynchronous response instance belongs to
+ has finished.
+
+ Method returns
true
if the processing of a request this asynchronous response
+ is bound to is finished.
+
+ The request processing may be finished due to a normal termination, a suspend timeout, or
+ cancellation -- in all of these cases, this method will return true
.
+
+
+Returns:
+true
if this execution context has finished processing.
+See Also:
+isSuspended()
,
+isCancelled()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+register
+Collection <Class <?>> register(Class <?> callback)
+Register an asynchronous processing lifecycle callback class to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+Parameters:
+callback
- callback class.
+Returns:
+collection of registered callback interfaces. If the callback class does not
+ implement any recognized callback interfaces, the returned collection will be
+ empty.
+Throws:
+NullPointerException
- in case the callback class is null
.
+
+
+
+
+
+
+
+
+register
+Map <Class <?>,Collection <Class <?>>> register(Class <?> callback,
+ Class <?>... callbacks)
+Register asynchronous processing lifecycle callback classes to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+Parameters:
+callback
- callback class.
+callbacks
- additional callback classes.
+Returns:
+map of registered classes and the callback interfaces registered for each class.
+ If a callback class does not implement any recognized callback interfaces, the
+ associated collection of registered interfaces for the class will be empty.
+Throws:
+NullPointerException
- in case any of the callback classes is null
.
+
+
+
+
+
+
+
+
+register
+Collection <Class <?>> register(Object callback)
+Register an asynchronous processing lifecycle callback instance to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+Parameters:
+callback
- callback instance implementing one or more of the recognized callback
+ interfaces.
+Returns:
+collection of registered callback interfaces. If the callback class does not
+ implement any recognized callback interfaces, the returned collection will be
+ empty.
+Throws:
+NullPointerException
- in case the callback instance is null
.
+
+
+
+
+
+
+
+
+register
+Map <Class <?>,Collection <Class <?>>> register(Object callback,
+ Object ... callbacks)
+Register an asynchronous processing lifecycle callback instances to receive lifecycle
+ events for the asynchronous response based on the implemented callback interfaces.
+
+Parameters:
+callback
- callback instance.
+callbacks
- additional callback instances.
+Returns:
+map of registered classes and the callback interfaces registered for each class.
+ If a callback class does not implement any recognized callback interfaces, the
+ associated collection of registered interfaces for the class will be empty.
+Throws:
+NullPointerException
- in case any of the callback instances is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/CompletionCallback.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/CompletionCallback.html
new file mode 100644
index 0000000000..bf2f0d9173
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/CompletionCallback.html
@@ -0,0 +1,289 @@
+
+
+
+
+
+CompletionCallback (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+void
+onComplete (Throwable throwable)
+
+A completion callback notification method that will be invoked when the request
+ processing is finished, after a response is processed and is sent back to the
+ client or when an unmapped throwable has been propagated to the hosting I/O
+ container.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/ConnectionCallback.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ConnectionCallback.html
new file mode 100644
index 0000000000..49d7ac949f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ConnectionCallback.html
@@ -0,0 +1,275 @@
+
+
+
+
+
+ConnectionCallback (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+void
+onDisconnect (AsyncResponse disconnected)
+
+This callback notification method is invoked in case the container detects
+ that the remote client connection associated with the asynchronous response
+ has been disconnected.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+onDisconnect
+void onDisconnect(AsyncResponse disconnected)
+This callback notification method is invoked in case the container detects
+ that the remote client connection associated with the asynchronous response
+ has been disconnected.
+
+Parameters:
+disconnected
- asynchronous response for which the remote client connection
+ has been lost.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerRequestContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerRequestContext.html
new file mode 100644
index 0000000000..2dd200d98e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerRequestContext.html
@@ -0,0 +1,926 @@
+
+
+
+
+
+ContainerRequestContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface ContainerRequestContext
+Container request filter context.
+
+ A mutable class that provides request-specific information for the filter,
+ such as request URI, message headers, message entity or request-scoped
+ properties. The exposed setters allow modification of the exposed request-specific
+ information.
+
+Since:
+2.0
+Author:
+Marek Potociar
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getUriInfo
+UriInfo getUriInfo()
+Get request URI information.
+
+ The returned object contains "live" view of the request URI information in
+ a sense that any changes made to the request URI using one of the
+
setRequestUri(...)
methods will be reflected in the previously
+ returned
UriInfo
instance.
+
+Returns:
+request URI information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getMethod
+String getMethod()
+Get the request method.
+
+Returns:
+the request method.
+See Also:
+HttpMethod
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getDate
+Date getDate()
+Get message date.
+
+Returns:
+the message date, otherwise null
if not present.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+abortWith
+void abortWith(Response response)
+Abort the filter chain with a response.
+
+ This method breaks the filter chain processing and returns the provided
+ response back to the client. The provided response goes through the
+ chain of applicable response filters.
+
+Parameters:
+response
- response to be sent back to the client.
+Throws:
+IllegalStateException
- in case the method is invoked from a response filter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerRequestFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerRequestFilter.html
new file mode 100644
index 0000000000..d231e73e0b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerRequestFilter.html
@@ -0,0 +1,313 @@
+
+
+
+
+
+ContainerRequestFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerResponseContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerResponseContext.html
new file mode 100644
index 0000000000..4867a3340a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerResponseContext.html
@@ -0,0 +1,998 @@
+
+
+
+
+
+ContainerResponseContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface ContainerResponseContext
+Container response filter context.
+
+ A mutable class that provides response-specific information for the filter,
+ such as message headers, message entity or request-scoped properties.
+ The exposed setters allow modification of the exposed response-specific
+ information.
+
+Since:
+2.0
+Author:
+Marek Potociar
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getDate
+Date getDate()
+Get message date.
+
+Returns:
+the message date, otherwise null
if not present.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getLocation
+URI getLocation()
+Get the location.
+
+Returns:
+the location URI, otherwise null
if not present.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerResponseFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerResponseFilter.html
new file mode 100644
index 0000000000..4dd188a999
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ContainerResponseFilter.html
@@ -0,0 +1,304 @@
+
+
+
+
+
+ContainerResponseFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/DynamicFeature.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/DynamicFeature.html
new file mode 100644
index 0000000000..50cc201bd0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/DynamicFeature.html
@@ -0,0 +1,314 @@
+
+
+
+
+
+DynamicFeature (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/PreMatching.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/PreMatching.html
new file mode 100644
index 0000000000..298571ccb5
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/PreMatching.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+PreMatching (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/ResourceContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ResourceContext.html
new file mode 100644
index 0000000000..e097f60372
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ResourceContext.html
@@ -0,0 +1,313 @@
+
+
+
+
+
+ResourceContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+<T> T
+getResource (Class <T> resourceClass)
+
+Get a resolved instance of a resource or sub-resource class.
+
+
+
+<T> T
+initResource (T resource)
+
+Initialize the resource or sub-resource instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+initResource
+<T> T initResource(T resource)
+Initialize the resource or sub-resource instance.
+
+ All injectable fields in the resource instance will be properly initialized in
+ the context of the current request processing scope.
+
+Type Parameters:
+T
- resource instance type.
+Parameters:
+resource
- resource instance.
+Returns:
+initialized (same) resource instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/ResourceInfo.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ResourceInfo.html
new file mode 100644
index 0000000000..29f5da5e79
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/ResourceInfo.html
@@ -0,0 +1,299 @@
+
+
+
+
+
+ResourceInfo (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+Class <?>
+getResourceClass ()
+
+Get the resource class that is the target of a request,
+ or null
if this information is not available.
+
+
+
+Method
+getResourceMethod ()
+
+Get the resource method that is the target of a request,
+ or null
if this information is not available.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getResourceMethod
+Method getResourceMethod()
+Get the resource method that is the target of a request,
+ or null
if this information is not available.
+
+Returns:
+resource method instance or null
+See Also:
+getResourceClass()
+
+
+
+
+
+
+
+
+getResourceClass
+Class <?> getResourceClass()
+Get the resource class that is the target of a request,
+ or null
if this information is not available.
+
+Returns:
+resource class instance or null
+See Also:
+getResourceMethod()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/Suspended.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/Suspended.html
new file mode 100644
index 0000000000..f35caa9df4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/Suspended.html
@@ -0,0 +1,252 @@
+
+
+
+
+
+Suspended (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/TimeoutHandler.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/TimeoutHandler.html
new file mode 100644
index 0000000000..b98aa88d9b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/TimeoutHandler.html
@@ -0,0 +1,333 @@
+
+
+
+
+
+TimeoutHandler (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/AsyncResponse.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/AsyncResponse.html
new file mode 100644
index 0000000000..feea824392
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/AsyncResponse.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.AsyncResponse (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.container with parameters of type AsyncResponse
+
+Modifier and Type
+Method
+Description
+
+
+
+void
+TimeoutHandler. handleTimeout (AsyncResponse asyncResponse)
+
+Invoked when the suspended asynchronous response is about to time out.
+
+
+
+void
+ConnectionCallback. onDisconnect (AsyncResponse disconnected)
+
+This callback notification method is invoked in case the container detects
+ that the remote client connection associated with the asynchronous response
+ has been disconnected.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/CompletionCallback.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/CompletionCallback.html
new file mode 100644
index 0000000000..4db94e8464
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/CompletionCallback.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.CompletionCallback (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.CompletionCallback
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ConnectionCallback.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ConnectionCallback.html
new file mode 100644
index 0000000000..f44750e5a9
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ConnectionCallback.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.ConnectionCallback (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.ConnectionCallback
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerRequestContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerRequestContext.html
new file mode 100644
index 0000000000..830160b421
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerRequestContext.html
@@ -0,0 +1,209 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.ContainerRequestContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerRequestFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerRequestFilter.html
new file mode 100644
index 0000000000..6ff1f9e551
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerRequestFilter.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.ContainerRequestFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.ContainerRequestFilter
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerResponseContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerResponseContext.html
new file mode 100644
index 0000000000..20a5797019
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerResponseContext.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.ContainerResponseContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerResponseFilter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerResponseFilter.html
new file mode 100644
index 0000000000..940b79f159
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ContainerResponseFilter.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.ContainerResponseFilter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.ContainerResponseFilter
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/DynamicFeature.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/DynamicFeature.html
new file mode 100644
index 0000000000..725dadd871
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/DynamicFeature.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.DynamicFeature (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.DynamicFeature
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/PreMatching.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/PreMatching.html
new file mode 100644
index 0000000000..908c7d5ce9
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/PreMatching.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.container.PreMatching (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.PreMatching
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ResourceContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ResourceContext.html
new file mode 100644
index 0000000000..d706229023
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ResourceContext.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.ResourceContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.ResourceContext
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ResourceInfo.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ResourceInfo.html
new file mode 100644
index 0000000000..64e8929228
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/ResourceInfo.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.ResourceInfo (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/Suspended.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/Suspended.html
new file mode 100644
index 0000000000..5ca3ec9fb3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/Suspended.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.container.Suspended (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.container.Suspended
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/TimeoutHandler.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/TimeoutHandler.html
new file mode 100644
index 0000000000..90e43a63ba
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/class-use/TimeoutHandler.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.container.TimeoutHandler (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-frame.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-frame.html
new file mode 100644
index 0000000000..915968fe4a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-frame.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+javax.ws.rs.container (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Interfaces
+
+
Annotation Types
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-summary.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-summary.html
new file mode 100644
index 0000000000..681af9807c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-summary.html
@@ -0,0 +1,263 @@
+
+
+
+
+
+javax.ws.rs.container (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Container-specific API.
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+AsyncResponse
+
+An injectable and asynchronous response that provides means for asynchronous server side
+ response processing.
+
+
+
+CompletionCallback
+
+A request processing callback that receives request processing completion events.
+
+
+
+ConnectionCallback
+
+Asynchronous request processing lifecycle callback that receives connection
+ related
asynchronous response
lifecycle events.
+
+
+
+ContainerRequestContext
+
+Container request filter context.
+
+
+
+ContainerRequestFilter
+
+An extension interface implemented by container request filters.
+
+
+
+ContainerResponseContext
+
+Container response filter context.
+
+
+
+ContainerResponseFilter
+
+An extension interface implemented by container response filters.
+
+
+
+DynamicFeature
+
+A meta-provider for dynamic registration of post-matching providers
+ during an application setup at deployment time.
+
+
+
+ResourceContext
+
+The resource context provides access to instances of resource classes.
+
+
+
+ResourceInfo
+
+An injectable class to access the resource class and resource method
+ matched by the current request.
+
+
+
+TimeoutHandler
+
+Asynchronous response suspend time-out handler.
+
+
+
+
+
+
+
+Annotation Types Summary
+
+Annotation Type
+Description
+
+
+
+PreMatching
+
+Global binding annotation that can be applied to a
container request filter
to indicate that such filter should be applied globally
+ on all resources in the application before the actual resource matching occurs.
+
+
+
+Suspended
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-tree.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-tree.html
new file mode 100644
index 0000000000..75a34b2445
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-tree.html
@@ -0,0 +1,177 @@
+
+
+
+
+
+javax.ws.rs.container Class Hierarchy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Interface Hierarchy
+
+
Annotation Type Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-use.html b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-use.html
new file mode 100644
index 0000000000..fb93a40c4a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/container/package-use.html
@@ -0,0 +1,218 @@
+
+
+
+
+
+Uses of Package javax.ws.rs.container (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/AbstractMultivaluedMap.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/AbstractMultivaluedMap.html
new file mode 100644
index 0000000000..ee97354719
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/AbstractMultivaluedMap.html
@@ -0,0 +1,1000 @@
+
+
+
+
+
+AbstractMultivaluedMap (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+protected Map <K ,List <V >>
+store
+
+Backing store for the [key, multi-value] pairs.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+AbstractMultivaluedMap (Map <K ,List <V >> store)
+
+Initialize the backing store in the abstract parent multivalued map
+ implementation.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from interface java.util.Map
+compute , computeIfAbsent , computeIfPresent , entry , forEach , getOrDefault , merge , of , of , of , of , of , of , of , of , of , of , of , ofEntries , putIfAbsent , remove , replace , replace , replaceAll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+store
+protected final Map <K ,List <V >> store
+Backing store for the [key, multi-value] pairs.
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+AbstractMultivaluedMap
+public AbstractMultivaluedMap(Map <K ,List <V >> store)
+Initialize the backing store in the abstract parent multivalued map
+ implementation.
+
+Parameters:
+store
- the backing Map
to be used as a [key, multi-value]
+ store. Must not be null
.
+Throws:
+NullPointerException
- in case the underlying store
parameter
+ is null
.
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+hashCode
+public int hashCode()
+
+
+ This implementation delegates the method call to to the the underlying
+ [key, multi-value] store.
+
+Specified by:
+hashCode
in interface Map <K ,V >
+Overrides:
+hashCode
in class Object
+Returns:
+a hash code value for the underlying [key, multi-value] store.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+size
+public int size()
+
+Specified by:
+size
in interface Map <K ,V >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+keySet
+public Set <K > keySet()
+
+Specified by:
+keySet
in interface Map <K ,V >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+clear
+public void clear()
+
+Specified by:
+clear
in interface Map <K ,V >
+
+
+
+
+
+
+
+
+equalsIgnoreValueOrder
+public boolean equalsIgnoreValueOrder(MultivaluedMap <K ,V > omap)
+
+Compare the specified map with this map for equality modulo the order
+ of values for each key. Specifically, the values associated with
+ each key are compared as if they were ordered lists.
+
+Specified by:
+equalsIgnoreValueOrder
in interface MultivaluedMap <K ,V >
+Parameters:
+omap
- map to be compared to this one.
+Returns:
+true if the maps are equal modulo value ordering.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Application.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Application.html
new file mode 100644
index 0000000000..fe8beeeff2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Application.html
@@ -0,0 +1,417 @@
+
+
+
+
+
+Application (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+Application ()
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+Application
+public Application()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/CacheControl.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/CacheControl.html
new file mode 100644
index 0000000000..446c8949df
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/CacheControl.html
@@ -0,0 +1,879 @@
+
+
+
+
+
+CacheControl (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+CacheControl ()
+
+Create a new instance of CacheControl.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Concrete Methods
+
+Modifier and Type
+Method
+Description
+
+
+boolean
+equals (Object obj)
+
+Compares object argument to this cache control to see if they are the same
+ considering all property values.
+
+
+
+Map <String ,String >
+getCacheExtension ()
+
+Corresponds to a set of extension cache control directives.
+
+
+
+int
+getMaxAge ()
+
+Corresponds to the max-age cache control directive.
+
+
+
+List <String >
+getNoCacheFields ()
+
+Corresponds to the value of the no-cache cache control directive.
+
+
+
+List <String >
+getPrivateFields ()
+
+Corresponds to the value of the private cache control directive.
+
+
+
+int
+getSMaxAge ()
+
+Corresponds to the s-maxage cache control directive.
+
+
+
+int
+hashCode ()
+
+Generate hash code from cache control properties.
+
+
+
+boolean
+isMustRevalidate ()
+
+Corresponds to the must-revalidate cache control directive.
+
+
+
+boolean
+isNoCache ()
+
+Corresponds to the no-cache cache control directive.
+
+
+
+boolean
+isNoStore ()
+
+Corresponds to the no-store cache control directive.
+
+
+
+boolean
+isNoTransform ()
+
+Corresponds to the no-transform cache control directive.
+
+
+
+boolean
+isPrivate ()
+
+Corresponds to the private cache control directive.
+
+
+
+boolean
+isProxyRevalidate ()
+
+Corresponds to the proxy-revalidate cache control directive.
+
+
+
+void
+setMaxAge (int maxAge)
+
+Corresponds to the max-age cache control directive.
+
+
+
+void
+setMustRevalidate (boolean mustRevalidate)
+
+Corresponds to the must-revalidate cache control directive.
+
+
+
+void
+setNoCache (boolean noCache)
+
+Corresponds to the no-cache cache control directive.
+
+
+
+void
+setNoStore (boolean noStore)
+
+Corresponds to the no-store cache control directive.
+
+
+
+void
+setNoTransform (boolean noTransform)
+
+Corresponds to the no-transform cache control directive.
+
+
+
+void
+setPrivate (boolean flag)
+
+Corresponds to the private cache control directive.
+
+
+
+void
+setProxyRevalidate (boolean proxyRevalidate)
+
+Corresponds to the must-revalidate cache control directive.
+
+
+
+void
+setSMaxAge (int sMaxAge)
+
+Corresponds to the s-maxage cache control directive.
+
+
+
+String
+toString ()
+
+Convert the cache control to a string suitable for use as the value of the
+ corresponding HTTP header.
+
+
+
+static CacheControl
+valueOf (String value)
+
+Creates a new instance of CacheControl by parsing the supplied string.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+CacheControl
+public CacheControl()
+Create a new instance of CacheControl. The new instance will have the
+ following default settings:
+
+
+ private = false
+ noCache = false
+ noStore = false
+ noTransform = true
+ mustRevalidate = false
+ proxyRevalidate = false
+ An empty list of private fields
+ An empty list of no-cache fields
+ An empty map of cache extensions
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getCacheExtension
+public Map <String ,String > getCacheExtension()
+Corresponds to a set of extension cache control directives.
+
+Returns:
+a mutable map of cache control extension names and their values.
+ If a key has a null value, it will appear as a bare directive. If a key has
+ a value that contains no whitespace then the directive will appear as
+ a simple name=value pair. If a key has a value that contains whitespace
+ then the directive will appear as a quoted name="value" pair.
+See Also:
+HTTP/1.1 section 14.9.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Configurable.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Configurable.html
new file mode 100644
index 0000000000..d07f235b5c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Configurable.html
@@ -0,0 +1,793 @@
+
+
+
+
+
+Configurable (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+Configuration
+getConfiguration ()
+
+Get a live view of an internal configuration state of this configurable instance.
+
+
+
+C
+property (String name,
+ Object value)
+
+Set the new configuration property, if already set, the existing value of
+ the property will be updated.
+
+
+
+C
+register (Class <?> componentClass)
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+C
+register (Class <?> componentClass,
+ int priority)
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+C
+register (Class <?> componentClass,
+ Class <?>... contracts)
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+C
+register (Class <?> componentClass,
+ Map <Class <?>,Integer > contracts)
+
+Register a class of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+C
+register (Object component)
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+C
+register (Object component,
+ int priority)
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+C
+register (Object component,
+ Class <?>... contracts)
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+C
+register (Object component,
+ Map <Class <?>,Integer > contracts)
+
+Register an instance of a custom component (such as an extension provider or
+ a
feature
meta-provider) to be instantiated
+ and used in the scope of this configurable context.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+property
+C property(String name,
+ Object value)
+Set the new configuration property, if already set, the existing value of
+ the property will be updated. Setting a null
value into a property
+ effectively removes the property from the property bag.
+
+Parameters:
+name
- property name.
+value
- (new) property value. null
value removes the property
+ with the given name.
+Returns:
+the updated configurable instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Configuration.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Configuration.html
new file mode 100644
index 0000000000..161cf91a9f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Configuration.html
@@ -0,0 +1,570 @@
+
+
+
+
+
+Configuration (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+Set <Class <?>>
+getClasses ()
+
+Get the immutable set of registered component (such as provider or
+
feature
) classes to be instantiated, injected and utilized in the scope
+ of the configurable instance.
+
+
+
+Map <Class <?>,Integer >
+getContracts (Class <?> componentClass)
+
+Get the extension contract registration information for a component of a given class.
+
+
+
+Set <Object >
+getInstances ()
+
+Get the immutable set of registered component (such as provider or
+
feature
) instances to be utilized by the configurable instance.
+
+
+
+Map <String ,Object >
+getProperties ()
+
+Get the immutable bag of configuration properties.
+
+
+
+Object
+getProperty (String name)
+
+Get the value for the property with a given name.
+
+
+
+Collection <String >
+getPropertyNames ()
+
+Returns an immutable
collection
containing the
+ property names available within the context of the current configuration instance.
+
+
+
+RuntimeType
+getRuntimeType ()
+
+Get the runtime type of this configuration context.
+
+
+
+boolean
+isEnabled (Class <? extends Feature > featureClass)
+
+Check if a
feature
instance of
featureClass
class has been
+ previously enabled in the runtime configuration context.
+
+
+
+boolean
+isEnabled (Feature feature)
+
+Check if a particular
feature
instance has been previously
+ enabled in the runtime configuration context.
+
+
+
+boolean
+isRegistered (Class <?> componentClass)
+
+Check if a component of the supplied componentClass
class has been previously
+ registered in the runtime configuration context.
+
+
+
+boolean
+isRegistered (Object component)
+
+Check if a particular API
component
instance (such as providers or
+
features
) has been previously registered in the runtime configuration context.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getContracts
+Map <Class <?>,Integer > getContracts(Class <?> componentClass)
+Get the extension contract registration information for a component of a given class.
+
+ For component classes that are not configured in this configuration context the method returns
+ an empty Map
. Method does not return null
.
+
+Returns:
+map of extension contracts and their priorities for which the component class
+ is registered.
+ May return an empty map in case the component has not been registered for any
+ extension contract supported by the implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Context.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Context.html
new file mode 100644
index 0000000000..9521ea197a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Context.html
@@ -0,0 +1,210 @@
+
+
+
+
+
+Context (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Cookie.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Cookie.html
new file mode 100644
index 0000000000..821b11e754
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Cookie.html
@@ -0,0 +1,635 @@
+
+
+
+
+
+Cookie (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Direct Known Subclasses:
+NewCookie
+
+
+
+public class Cookie
+extends Object
+Represents the value of a HTTP cookie, transferred in a request.
+ RFC 2109 specifies the legal characters for name,
+ value, path and domain. The default version of 1 corresponds to RFC 2109.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+See Also:
+IETF RFC 2109
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+static int
+DEFAULT_VERSION
+
+Cookies using the default version correspond to RFC 2109.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+Cookie
+public Cookie(String name,
+ String value,
+ String path,
+ String domain,
+ int version)
+ throws IllegalArgumentException
+Create a new instance.
+
+Parameters:
+name
- the name of the cookie.
+value
- the value of the cookie.
+path
- the URI path for which the cookie is valid.
+domain
- the host domain for which the cookie is valid.
+version
- the version of the specification to which the cookie complies.
+Throws:
+IllegalArgumentException
- if name is null
.
+
+
+
+
+
+
+
+
+Cookie
+public Cookie(String name,
+ String value,
+ String path,
+ String domain)
+ throws IllegalArgumentException
+Create a new instance.
+
+Parameters:
+name
- the name of the cookie.
+value
- the value of the cookie.
+path
- the URI path for which the cookie is valid.
+domain
- the host domain for which the cookie is valid.
+Throws:
+IllegalArgumentException
- if name is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/EntityTag.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/EntityTag.html
new file mode 100644
index 0000000000..1b71dc107a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/EntityTag.html
@@ -0,0 +1,477 @@
+
+
+
+
+
+EntityTag (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public class EntityTag
+extends Object
+An abstraction for the value of a HTTP Entity Tag, used as the value
+ of an ETag response header.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+See Also:
+HTTP/1.1 section 3.11
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+EntityTag (String value)
+
+Creates a new instance of a strong EntityTag
.
+
+
+
+EntityTag (String value,
+ boolean weak)
+
+Creates a new instance of an EntityTag
.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Concrete Methods
+
+Modifier and Type
+Method
+Description
+
+
+boolean
+equals (Object obj)
+
+Compares obj
to this tag to see if they are the same considering
+ weakness and value.
+
+
+
+String
+getValue ()
+
+Get the value of an EntityTag
.
+
+
+
+int
+hashCode ()
+
+Generate hashCode based on value and weakness.
+
+
+
+boolean
+isWeak ()
+
+Check the strength of an EntityTag
.
+
+
+
+String
+toString ()
+
+Convert the entity tag to a string suitable for use as the value of the
+ corresponding HTTP header.
+
+
+
+static EntityTag
+valueOf (String value)
+
+Creates a new instance of EntityTag
by parsing the supplied string.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Feature.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Feature.html
new file mode 100644
index 0000000000..8dd095e670
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Feature.html
@@ -0,0 +1,298 @@
+
+
+
+
+
+Feature (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface Feature
+A feature extension contract.
+
+ Typically encapsulates a concept or facility that involves configuration of multiple providers
+ (e.g. filters or interceptors) and/or properties.
+
+ A Feature
is a special type of configuration meta-provider. Once a feature is registered,
+ its configure(FeatureContext)
method is invoked during runtime configuration and bootstrapping
+ phase allowing the feature to further configure the runtime context in which it has been registered.
+ From within the invoked configure(...)
method a feature may provide additional runtime configuration
+ for the facility or conceptual domain it represents, such as registering additional contract providers,
+ including nested features and/or specifying domain-specific properties.
+
+
+ Features implementing this interface MAY be annotated with the @Provider
+ annotation in order to be discovered by the runtime when scanning for resources and providers.
+ Please note that this will only work for server side features. Features in the Client API must
+ be registered programmatically.
+
+
+Since:
+2.0
+Author:
+Marek Potociar
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/FeatureContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/FeatureContext.html
new file mode 100644
index 0000000000..28f2438610
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/FeatureContext.html
@@ -0,0 +1,228 @@
+
+
+
+
+
+FeatureContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Form.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Form.html
new file mode 100644
index 0000000000..878873cf6a
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Form.html
@@ -0,0 +1,408 @@
+
+
+
+
+
+Form (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+Form ()
+
+Create a new form data instance.
+
+
+
+Form (String parameterName,
+ String parameterValue)
+
+Create a new form data instance with a single parameter entry.
+
+
+
+Form (MultivaluedMap <String ,String > store)
+
+Create a new form data instance and register a custom underlying parameter store.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+Form
+public Form()
+Create a new form data instance.
+
+ The underlying form parameter store is configured to preserve the insertion order
+ of the parameters. I.e. parameters can be iterated in the same order as they were
+ inserted into the Form
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/GenericEntity.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/GenericEntity.html
new file mode 100644
index 0000000000..3bf8b625d0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/GenericEntity.html
@@ -0,0 +1,511 @@
+
+
+
+
+
+GenericEntity (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+GenericEntity (T entity)
+
+Constructs a new generic entity.
+
+
+
+
+GenericEntity (T entity,
+ Type genericType)
+
+Create a new instance of GenericEntity, supplying the generic type information.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+GenericEntity
+protected GenericEntity(T entity)
+Constructs a new generic entity. Derives represented class from type
+ parameter. Note that this constructor is protected, users should create
+ a (usually anonymous) subclass as shown above.
+
+Parameters:
+entity
- the entity instance, must not be null
.
+Throws:
+IllegalArgumentException
- if entity is null
.
+
+
+
+
+
+
+
+
+
+
+GenericEntity
+public GenericEntity(T entity,
+ Type genericType)
+Create a new instance of GenericEntity, supplying the generic type information.
+ The entity must be assignable to a variable of the
+ supplied generic type, e.g. if entity
is an instance of
+ ArrayList<String>
then genericType
could
+ be the same or a superclass of ArrayList
with the same generic
+ type like List<String>
.
+
+Parameters:
+entity
- the entity instance, must not be null
.
+genericType
- the generic type, must not be null
.
+Throws:
+IllegalArgumentException
- if the entity is not assignable to
+ a variable of the supplied generic type or if entity or genericType
+ is null.
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getRawType
+public final Class <?> getRawType()
+Gets the raw type of the enclosed entity. Note that this is the raw type of
+ the instance, not the raw type of the type parameter. I.e. in the example
+ in the introduction, the raw type is ArrayList
not List
.
+
+Returns:
+the raw type.
+
+
+
+
+
+
+
+
+getType
+public final Type getType()
+Gets underlying Type
instance. Note that this is derived from the
+ type parameter, not the enclosed instance. I.e. in the example
+ in the introduction, the type is List<String>
not
+ ArrayList<String>
.
+
+Returns:
+the type
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+hashCode
+public int hashCode()
+
+Overrides:
+hashCode
in class Object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/GenericType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/GenericType.html
new file mode 100644
index 0000000000..cca1e5f84c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/GenericType.html
@@ -0,0 +1,509 @@
+
+
+
+
+
+GenericType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+GenericType ()
+
+Constructs a new generic type, deriving the generic type and class from
+ type parameter.
+
+
+
+
+GenericType (Type genericType)
+
+Constructs a new generic type, supplying the generic type
+ information and deriving the class.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+GenericType
+public GenericType(Type genericType)
+Constructs a new generic type, supplying the generic type
+ information and deriving the class.
+
+Parameters:
+genericType
- the generic type.
+Throws:
+IllegalArgumentException
- if genericType is null
or not an instance of
+ Class
or ParameterizedType
whose raw
+ type is an instance of Class
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/HttpHeaders.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/HttpHeaders.html
new file mode 100644
index 0000000000..8f177ecd3e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/HttpHeaders.html
@@ -0,0 +1,1208 @@
+
+
+
+
+
+HttpHeaders (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+getRequestHeaders
+MultivaluedMap <String ,String > getRequestHeaders()
+Get the values of HTTP request headers. The returned Map is case-insensitive
+ wrt. keys and is read-only. The method never returns null
.
+
+Returns:
+a read-only map of header names and values.
+Throws:
+IllegalStateException
- if called outside the scope of a request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getDate
+Date getDate()
+Get message date.
+
+Returns:
+the message date, otherwise null
if not present.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.Builder.html
new file mode 100644
index 0000000000..f3c48ad6a5
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.Builder.html
@@ -0,0 +1,616 @@
+
+
+
+
+
+Link.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rel
+Link.Builder rel(String rel)
+Convenience method to set a link relation. More than one rel
value can
+ be specified by using one or more whitespace characters as delimiters
+ according to RFC 5988. The effect of calling this method is cumulative;
+ relations are appended using a single space character as separator.
+
+Parameters:
+rel
- relation name.
+Returns:
+the updated builder.
+Throws:
+IllegalArgumentException
- if the name is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+build
+Link build(Object ... values)
+Finish building this link using the supplied values as URI parameters.
+
+ The state of the builder is unaffected; this method may be called
+ multiple times on the same builder instance.
+
+Parameters:
+values
- parameters used to build underlying URI.
+Returns:
+newly built link.
+Throws:
+IllegalArgumentException
- if there are any URI template parameters
+ without a supplied value, or if a value is null
.
+UriBuilderException
- if a URI cannot be constructed based on the
+ current state of the underlying URI builder.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.JaxbAdapter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.JaxbAdapter.html
new file mode 100644
index 0000000000..723f5f01d4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.JaxbAdapter.html
@@ -0,0 +1,374 @@
+
+
+
+
+
+Link.JaxbAdapter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+JaxbAdapter ()
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+JaxbAdapter
+public JaxbAdapter()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.JaxbLink.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.JaxbLink.html
new file mode 100644
index 0000000000..d719e584cb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.JaxbLink.html
@@ -0,0 +1,426 @@
+
+
+
+
+
+Link.JaxbLink (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+JaxbLink ()
+
+Default constructor needed during unmarshalling.
+
+
+
+JaxbLink (URI uri)
+
+Construct an instance from a URI and no parameters.
+
+
+
+JaxbLink (URI uri,
+ Map <QName ,Object > params)
+
+Construct an instance from a URI and some parameters.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+JaxbLink
+public JaxbLink(URI uri,
+ Map <QName ,Object > params)
+Construct an instance from a URI and some parameters.
+
+Parameters:
+uri
- underlying URI.
+params
- parameters of this link.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.html
new file mode 100644
index 0000000000..6283e9e13c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Link.html
@@ -0,0 +1,850 @@
+
+
+
+
+
+Link (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Class
+Description
+
+
+static interface
+Link.Builder
+
+Builder class for hypermedia links.
+
+
+
+static class
+Link.JaxbAdapter
+
+An implementation of JAXB
XmlAdapter
+ that maps the
Link
type to a value that can be
+ marshalled and unmarshalled by JAXB.
+
+
+
+static class
+Link.JaxbLink
+
+Value type for
Link
that can be marshalled and
+ unmarshalled by JAXB.
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+static String
+REL
+
+Rel link param from RFC 5988.
+
+
+
+static String
+TITLE
+
+Title link param from RFC 5988.
+
+
+
+static String
+TYPE
+
+Type link param from RFC 5988.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+Link ()
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
+
+Modifier and Type
+Method
+Description
+
+
+static Link.Builder
+fromLink (Link link)
+
+Create a new builder instance initialized from another link.
+
+
+
+static Link.Builder
+fromMethod (Class <?> resource,
+ String method)
+
+Convenience method to build a link from a resource.
+
+
+
+static Link.Builder
+fromPath (String path)
+
+Convenience method to build a link from a path.
+
+
+
+static Link.Builder
+fromResource (Class <?> resource)
+
+Convenience method to build a link from a resource.
+
+
+
+static Link.Builder
+fromUri (String uri)
+
+Create a new builder instance initialized from an existing URI represented as a string.
+
+
+
+static Link.Builder
+fromUri (URI uri)
+
+Create a new builder instance initialized from an existing URI.
+
+
+
+static Link.Builder
+fromUriBuilder (UriBuilder uriBuilder)
+
+Create a new builder instance initialized from a URI builder.
+
+
+
+abstract Map <String ,String >
+getParams ()
+
+Returns an immutable map that includes all the link parameters
+ defined on this link.
+
+
+
+abstract String
+getRel ()
+
+Returns the value associated with the link rel
param, or
+ null
if this param is not specified.
+
+
+
+abstract List <String >
+getRels ()
+
+Returns the value associated with the link rel
param as a list
+ of strings or the empty list if rel
is not defined.
+
+
+
+abstract String
+getTitle ()
+
+Returns the value associated with the link title
param, or
+ null
if this param is not specified.
+
+
+
+abstract String
+getType ()
+
+Returns the value associated with the link type
param, or
+ null
if this param is not specified.
+
+
+
+abstract URI
+getUri ()
+
+Returns the underlying URI associated with this link.
+
+
+
+abstract UriBuilder
+getUriBuilder ()
+
+Convenience method that returns a
UriBuilder
+ initialized with this link's underlying URI.
+
+
+
+abstract String
+toString ()
+
+Returns a string representation as a link header (RFC 5988).
+
+
+
+static Link
+valueOf (String value)
+
+Simple parser to convert link header string representations into a link.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+Link
+public Link()
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+getRel
+public abstract String getRel()
+Returns the value associated with the link rel
param, or
+ null
if this param is not specified.
+
+Returns:
+relation types as string or null
.
+
+
+
+
+
+
+
+
+
+
+
+
+getTitle
+public abstract String getTitle()
+Returns the value associated with the link title
param, or
+ null
if this param is not specified.
+
+Returns:
+value of title parameter or null
.
+
+
+
+
+
+
+
+
+getType
+public abstract String getType()
+Returns the value associated with the link type
param, or
+ null
if this param is not specified.
+
+Returns:
+value of type parameter or null
.
+
+
+
+
+
+
+
+
+getParams
+public abstract Map <String ,String > getParams()
+Returns an immutable map that includes all the link parameters
+ defined on this link. If defined, this map will include entries
+ for rel
, title
and type
.
+
+Returns:
+immutable map of link parameters.
+
+
+
+
+
+
+
+
+toString
+public abstract String toString()
+Returns a string representation as a link header (RFC 5988).
+ All link params are serialized as link-param="value" where value
+ is a quoted-string. For example,
+
+ ; title="employee"; rel="manager friend"
+
+Overrides:
+toString
in class Object
+Returns:
+string link header representation for this link.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/MediaType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/MediaType.html
new file mode 100644
index 0000000000..3d18cc05d8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/MediaType.html
@@ -0,0 +1,1267 @@
+
+
+
+
+
+MediaType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+MediaType ()
+
+Creates a new instance of MediaType
, both type and subtype are wildcards.
+
+
+
+MediaType (String type,
+ String subtype)
+
+Creates a new instance of MediaType
with the supplied type and subtype.
+
+
+
+MediaType (String type,
+ String subtype,
+ String charset)
+
+Creates a new instance of MediaType
with the supplied type, subtype and
+ parameter.
+
+
+
+MediaType (String type,
+ String subtype,
+ Map <String ,String > parameters)
+
+Creates a new instance of MediaType
with the supplied type, subtype and
+ parameters.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Concrete Methods
+
+Modifier and Type
+Method
+Description
+
+
+boolean
+equals (Object obj)
+
+Compares obj
to this media type to see if they are the same by comparing
+ type, subtype and parameters.
+
+
+
+Map <String ,String >
+getParameters ()
+
+Getter for a read-only parameter map.
+
+
+
+String
+getSubtype ()
+
+Getter for subtype.
+
+
+
+String
+getType ()
+
+Getter for primary type.
+
+
+
+int
+hashCode ()
+
+Generate a hash code from the type, subtype and parameters.
+
+
+
+boolean
+isCompatible (MediaType other)
+
+Check if this media type is compatible with another media type.
+
+
+
+boolean
+isWildcardSubtype ()
+
+Checks if the subtype is a wildcard.
+
+
+
+boolean
+isWildcardType ()
+
+Checks if the primary type is a wildcard.
+
+
+
+String
+toString ()
+
+Convert the media type to a string suitable for use as the value of a
+ corresponding HTTP header.
+
+
+
+static MediaType
+valueOf (String type)
+
+Creates a new instance of MediaType
by parsing the supplied string.
+
+
+
+MediaType
+withCharset (String charset)
+
+Create a new MediaType
instance with the same type, subtype and parameters
+ copied from the original instance and the supplied parameter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+MediaType
+public MediaType(String type,
+ String subtype,
+ Map <String ,String > parameters)
+Creates a new instance of MediaType
with the supplied type, subtype and
+ parameters.
+
+Parameters:
+type
- the primary type, null
is equivalent to
+ MEDIA_TYPE_WILDCARD
.
+subtype
- the subtype, null
is equivalent to
+ MEDIA_TYPE_WILDCARD
.
+parameters
- a map of media type parameters, null
is the same as an
+ empty map.
+
+
+
+
+
+
+
+
+MediaType
+public MediaType(String type,
+ String subtype)
+Creates a new instance of MediaType
with the supplied type and subtype.
+
+Parameters:
+type
- the primary type, null
is equivalent to
+ MEDIA_TYPE_WILDCARD
+subtype
- the subtype, null
is equivalent to
+ MEDIA_TYPE_WILDCARD
+
+
+
+
+
+
+
+
+MediaType
+public MediaType(String type,
+ String subtype,
+ String charset)
+Creates a new instance of MediaType
with the supplied type, subtype and
+ parameter.
+
+Parameters:
+type
- the primary type, null
is equivalent to
+ MEDIA_TYPE_WILDCARD
+subtype
- the subtype, null
is equivalent to
+ MEDIA_TYPE_WILDCARD
+charset
- the parameter value. If null
or empty
+ the parameter will not be set.
+
+
+
+
+
+
+
+
+MediaType
+public MediaType()
+Creates a new instance of
MediaType
, both type and subtype are wildcards.
+ Consider using the constant
WILDCARD_TYPE
instead.
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+getType
+public String getType()
+Getter for primary type.
+
+Returns:
+value of primary type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getParameters
+public Map <String ,String > getParameters()
+Getter for a read-only parameter map. Keys are case-insensitive.
+
+Returns:
+an immutable map of parameters.
+
+
+
+
+
+
+
+
+withCharset
+public MediaType withCharset(String charset)
+Create a new MediaType
instance with the same type, subtype and parameters
+ copied from the original instance and the supplied parameter.
+
+Parameters:
+charset
- the parameter value. If null
or empty
+ the parameter will not be set or updated.
+Returns:
+copy of the current MediaType
instance with the
+ parameter set to the supplied value.
+Since:
+2.0
+
+
+
+
+
+
+
+
+isCompatible
+public boolean isCompatible(MediaType other)
+Check if this media type is compatible with another media type. E.g.
+ image/* is compatible with image/jpeg, image/png, etc. Media type
+ parameters are ignored. The function is commutative.
+
+Parameters:
+other
- the media type to compare with.
+Returns:
+true if the types are compatible, false otherwise.
+
+
+
+
+
+
+
+
+
+
+
+
+hashCode
+public int hashCode()
+Generate a hash code from the type, subtype and parameters.
+
+ Note that the
equals(java.lang.Object)
implementation does not perform
+ a class equality check (
this.getClass() == obj.getClass()
). Therefore
+ any class that extends from
MediaType
class and needs to override
+ one of the
equals(Object)
and
hashCode()
methods must
+ always override both methods to ensure the contract between
+
Object.equals(java.lang.Object)
and
Object.hashCode()
does
+ not break.
+
+Overrides:
+hashCode
in class Object
+Returns:
+a generated hash code.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/MultivaluedHashMap.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/MultivaluedHashMap.html
new file mode 100644
index 0000000000..ed2c96595e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/MultivaluedHashMap.html
@@ -0,0 +1,511 @@
+
+
+
+
+
+MultivaluedHashMap (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+MultivaluedHashMap ()
+
+Constructs an empty multivalued hash map with the default initial capacity
+ (16
) and the default load factor (0.75
).
+
+
+
+MultivaluedHashMap (int initialCapacity)
+
+Constructs an empty multivalued hash map with the specified initial
+ capacity and the default load factor (0.75
).
+
+
+
+MultivaluedHashMap (int initialCapacity,
+ float loadFactor)
+
+Constructs an empty multivalued hash map with the specified initial
+ capacity and load factor.
+
+
+
+MultivaluedHashMap (Map <? extends K ,? extends V > map)
+
+Constructs a new multivalued hash map with the same mappings as the
+ specified single-valued
Map
.
+
+
+
+MultivaluedHashMap (MultivaluedMap <? extends K ,? extends V > map)
+
+Constructs a new multivalued hash map with the same mappings as the
+ specified
MultivaluedMap
.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+Methods inherited from class javax.ws.rs.core.AbstractMultivaluedMap
+add , addAll , addAll , addFirst , addFirstNull , addNull , clear , containsKey , containsValue , entrySet , equals , equalsIgnoreValueOrder , get , getFirst , getValues , hashCode , isEmpty , keySet , put , putAll , putSingle , remove , size , toString , values
+
+
+
+
+
+Methods inherited from interface java.util.Map
+compute , computeIfAbsent , computeIfPresent , entry , forEach , getOrDefault , merge , of , of , of , of , of , of , of , of , of , of , of , ofEntries , putIfAbsent , remove , replace , replace , replaceAll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+MultivaluedHashMap
+public MultivaluedHashMap(int initialCapacity,
+ float loadFactor)
+Constructs an empty multivalued hash map with the specified initial
+ capacity and load factor.
+
+Parameters:
+initialCapacity
- the initial capacity
+loadFactor
- the load factor
+Throws:
+IllegalArgumentException
- if the initial capacity is negative
+ or the load factor is nonpositive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/MultivaluedMap.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/MultivaluedMap.html
new file mode 100644
index 0000000000..309fdcf649
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/MultivaluedMap.html
@@ -0,0 +1,485 @@
+
+
+
+
+
+MultivaluedMap (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Type Parameters:
+K
- the type of keys maintained by this map
+V
- the type of mapped values
+
+
+All Superinterfaces:
+Map <K,List <V>>
+
+
+All Known Implementing Classes:
+AbstractMultivaluedMap
, MultivaluedHashMap
+
+
+
+public interface MultivaluedMap<K,V>
+extends Map <K,List <V>>
+A map of key-values pairs. Each key can have zero or more values.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley, Marek Potociar
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+void
+add (K key,
+ V value)
+
+Add a value to the current list of values for the supplied key.
+
+
+
+void
+addAll (K key,
+ List <V > valueList)
+
+Add all the values from the supplied value list to the current list of
+ values for the supplied key.
+
+
+
+void
+addAll (K key,
+ V ... newValues)
+
+Add multiple values to the current list of values for the supplied key.
+
+
+
+void
+addFirst (K key,
+ V value)
+
+Add a value to the first position in the current list of values for the
+ supplied key.
+
+
+
+boolean
+equalsIgnoreValueOrder (MultivaluedMap <K ,V > otherMap)
+
+Compare the specified map with this map for equality modulo the order
+ of values for each key.
+
+
+
+V
+getFirst (K key)
+
+A shortcut to get the first value of the supplied key.
+
+
+
+void
+putSingle (K key,
+ V value)
+
+Set the key's value to be a one item list consisting of the supplied value.
+
+
+
+
+
+
+
+Methods inherited from interface java.util.Map
+clear , compute , computeIfAbsent , computeIfPresent , containsKey , containsValue , entry , entrySet , equals , forEach , get , getOrDefault , hashCode , isEmpty , keySet , merge , of , of , of , of , of , of , of , of , of , of , of , ofEntries , put , putAll , putIfAbsent , remove , remove , replace , replace , replaceAll , size , values
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+putSingle
+void putSingle(K key,
+ V value)
+Set the key's value to be a one item list consisting of the supplied value.
+ Any existing values will be replaced.
+
+Parameters:
+key
- the key
+value
- the single value of the key
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+addAll
+void addAll(K key,
+ V ... newValues)
+Add multiple values to the current list of values for the supplied key. If
+ the supplied array of new values is empty, method returns immediately.
+ Method throws a NullPointerException
if the supplied array of values
+ is null
.
+
+Parameters:
+key
- the key.
+newValues
- the values to be added.
+Throws:
+NullPointerException
- if the supplied array of new values is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+addAll
+void addAll(K key,
+ List <V > valueList)
+Add all the values from the supplied value list to the current list of
+ values for the supplied key. If the supplied value list is empty, method
+ returns immediately. Method throws a NullPointerException
if the
+ supplied array of values is null
.
+
+Parameters:
+key
- the key.
+valueList
- the list of values to be added.
+Throws:
+NullPointerException
- if the supplied value list is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+addFirst
+void addFirst(K key,
+ V value)
+Add a value to the first position in the current list of values for the
+ supplied key.
+
+Parameters:
+key
- the key
+value
- the value to be added.
+Since:
+2.0
+
+
+
+
+
+
+
+
+equalsIgnoreValueOrder
+boolean equalsIgnoreValueOrder(MultivaluedMap <K ,V > otherMap)
+Compare the specified map with this map for equality modulo the order
+ of values for each key. Specifically, the values associated with
+ each key are compared as if they were ordered lists.
+
+Parameters:
+otherMap
- map to be compared to this one.
+Returns:
+true if the maps are equal modulo value ordering.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/NewCookie.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/NewCookie.html
new file mode 100644
index 0000000000..cb353328c6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/NewCookie.html
@@ -0,0 +1,907 @@
+
+
+
+
+
+NewCookie (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+static int
+DEFAULT_MAX_AGE
+
+Specifies that the cookie expires with the current application/browser session.
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+NewCookie (String name,
+ String value)
+
+Create a new instance.
+
+
+
+NewCookie (String name,
+ String value,
+ String path,
+ String domain,
+ int version,
+ String comment,
+ int maxAge,
+ boolean secure)
+
+Create a new instance.
+
+
+
+NewCookie (String name,
+ String value,
+ String path,
+ String domain,
+ int version,
+ String comment,
+ int maxAge,
+ Date expiry,
+ boolean secure,
+ boolean httpOnly)
+
+Create a new instance.
+
+
+
+NewCookie (String name,
+ String value,
+ String path,
+ String domain,
+ String comment,
+ int maxAge,
+ boolean secure)
+
+Create a new instance.
+
+
+
+NewCookie (String name,
+ String value,
+ String path,
+ String domain,
+ String comment,
+ int maxAge,
+ boolean secure,
+ boolean httpOnly)
+
+Create a new instance.
+
+
+
+NewCookie (Cookie cookie)
+
+Create a new instance copying the information in the supplied cookie.
+
+
+
+NewCookie (Cookie cookie,
+ String comment,
+ int maxAge,
+ boolean secure)
+
+Create a new instance supplementing the information in the supplied cookie.
+
+
+
+NewCookie (Cookie cookie,
+ String comment,
+ int maxAge,
+ Date expiry,
+ boolean secure,
+ boolean httpOnly)
+
+Create a new instance supplementing the information in the supplied cookie.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Concrete Methods
+
+Modifier and Type
+Method
+Description
+
+
+boolean
+equals (Object obj)
+
+Compare for equality.
+
+
+
+String
+getComment ()
+
+Get the comment associated with the cookie.
+
+
+
+Date
+getExpiry ()
+
+Get the cookie expiry date.
+
+
+
+int
+getMaxAge ()
+
+Get the maximum age of the the cookie in seconds.
+
+
+
+int
+hashCode ()
+
+Generate a hash code by hashing all of the properties.
+
+
+
+boolean
+isHttpOnly ()
+
+Returns true
if this cookie contains the HttpOnly
attribute.
+
+
+
+boolean
+isSecure ()
+
+Whether the cookie will only be sent over a secure connection.
+
+
+
+Cookie
+toCookie ()
+
+Obtain a new instance of a
Cookie
with the same name, value, path,
+ domain and version as this
NewCookie
.
+
+
+
+String
+toString ()
+
+Convert the cookie to a string suitable for use as the value of the
+ corresponding HTTP header.
+
+
+
+static NewCookie
+valueOf (String value)
+
+Creates a new instance of NewCookie by parsing the supplied string.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+NewCookie
+public NewCookie(String name,
+ String value,
+ String path,
+ String domain,
+ String comment,
+ int maxAge,
+ boolean secure)
+Create a new instance.
+
+Parameters:
+name
- the name of the cookie.
+value
- the value of the cookie.
+path
- the URI path for which the cookie is valid.
+domain
- the host domain for which the cookie is valid.
+comment
- the comment.
+maxAge
- the maximum age of the cookie in seconds.
+secure
- specifies whether the cookie will only be sent over a secure connection.
+Throws:
+IllegalArgumentException
- if name is null
.
+
+
+
+
+
+
+
+
+NewCookie
+public NewCookie(String name,
+ String value,
+ String path,
+ String domain,
+ String comment,
+ int maxAge,
+ boolean secure,
+ boolean httpOnly)
+Create a new instance.
+
+Parameters:
+name
- the name of the cookie.
+value
- the value of the cookie.
+path
- the URI path for which the cookie is valid.
+domain
- the host domain for which the cookie is valid.
+comment
- the comment.
+maxAge
- the maximum age of the cookie in seconds.
+secure
- specifies whether the cookie will only be sent over a secure connection.
+httpOnly
- if true
make the cookie HTTP only, i.e. only visible as part of an HTTP request.
+Throws:
+IllegalArgumentException
- if name is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+NewCookie
+public NewCookie(String name,
+ String value,
+ String path,
+ String domain,
+ int version,
+ String comment,
+ int maxAge,
+ boolean secure)
+Create a new instance.
+
+Parameters:
+name
- the name of the cookie
+value
- the value of the cookie
+path
- the URI path for which the cookie is valid
+domain
- the host domain for which the cookie is valid
+version
- the version of the specification to which the cookie complies
+comment
- the comment
+maxAge
- the maximum age of the cookie in seconds
+secure
- specifies whether the cookie will only be sent over a secure connection
+Throws:
+IllegalArgumentException
- if name is null
.
+
+
+
+
+
+
+
+
+NewCookie
+public NewCookie(String name,
+ String value,
+ String path,
+ String domain,
+ int version,
+ String comment,
+ int maxAge,
+ Date expiry,
+ boolean secure,
+ boolean httpOnly)
+Create a new instance.
+
+Parameters:
+name
- the name of the cookie
+value
- the value of the cookie
+path
- the URI path for which the cookie is valid
+domain
- the host domain for which the cookie is valid
+version
- the version of the specification to which the cookie complies
+comment
- the comment
+maxAge
- the maximum age of the cookie in seconds
+expiry
- the cookie expiry date.
+secure
- specifies whether the cookie will only be sent over a secure connection
+httpOnly
- if true
make the cookie HTTP only, i.e. only visible as part of an HTTP request.
+Throws:
+IllegalArgumentException
- if name is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+NewCookie
+public NewCookie(Cookie cookie,
+ String comment,
+ int maxAge,
+ boolean secure)
+Create a new instance supplementing the information in the supplied cookie.
+
+Parameters:
+cookie
- the cookie to clone.
+comment
- the comment.
+maxAge
- the maximum age of the cookie in seconds.
+secure
- specifies whether the cookie will only be sent over a secure connection.
+Throws:
+IllegalArgumentException
- if cookie is null
.
+
+
+
+
+
+
+
+
+NewCookie
+public NewCookie(Cookie cookie,
+ String comment,
+ int maxAge,
+ Date expiry,
+ boolean secure,
+ boolean httpOnly)
+Create a new instance supplementing the information in the supplied cookie.
+
+Parameters:
+cookie
- the cookie to clone.
+comment
- the comment.
+maxAge
- the maximum age of the cookie in seconds.
+expiry
- the cookie expiry date.
+secure
- specifies whether the cookie will only be sent over a secure connection.
+httpOnly
- if true
make the cookie HTTP only, i.e. only visible as part of an HTTP request.
+Throws:
+IllegalArgumentException
- if cookie is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+getMaxAge
+public int getMaxAge()
+Get the maximum age of the the cookie in seconds. Cookies older than
+ the maximum age are discarded. A cookie can be unset by sending a new
+ cookie with maximum age of 0 since it will overwrite any existing cookie
+ and then be immediately discarded. The default value of
-1
indicates
+ that the cookie will be discarded at the end of the browser/application session.
+
+ Note that it is recommended to use Max-Age
to control cookie
+ expiration, however some browsers do not understand Max-Age
, in which case
+ setting getExpiry()
Expires} parameter may be necessary.
+
+
+Returns:
+the maximum age in seconds.
+See Also:
+getExpiry()
+
+
+
+
+
+
+
+
+getExpiry
+public Date getExpiry()
+Get the cookie expiry date. Cookies whose expiry date has passed are discarded.
+ A cookie can be unset by setting a new cookie with an expiry date in the past,
+ typically the lowest possible date that can be set.
+
+ Note that it is recommended to use Max-Age
to control cookie
+ expiration, however some browsers do not understand Max-Age
, in which case
+ setting Expires
parameter may be necessary.
+
+
+Returns:
+cookie expiry date or null
if no expiry date was set.
+Since:
+2.0
+See Also:
+getMaxAge()
+
+
+
+
+
+
+
+
+
+
+
+
+isHttpOnly
+public boolean isHttpOnly()
+Returns true
if this cookie contains the HttpOnly
attribute.
+ This means that the cookie should not be accessible to scripting engines,
+ like javascript.
+
+Returns:
+true
if this cookie should be considered http only, false
+ otherwise.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/NoContentException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/NoContentException.html
new file mode 100644
index 0000000000..29656a767b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/NoContentException.html
@@ -0,0 +1,363 @@
+
+
+
+
+
+NoContentException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+NoContentException
+public NoContentException(String message,
+ Throwable cause)
+Construct a new NoContentException
instance.
+
+Parameters:
+message
- the detail message (which is saved for later retrieval
+ by the Throwable.getMessage()
method).
+cause
- the underlying cause of the exception.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/PathSegment.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/PathSegment.html
new file mode 100644
index 0000000000..82ff7854e2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/PathSegment.html
@@ -0,0 +1,300 @@
+
+
+
+
+
+PathSegment (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getPath
+String getPath()
+
+
+Returns:
+the path segment
+
+
+
+
+
+
+
+
+getMatrixParameters
+MultivaluedMap <String ,String > getMatrixParameters()
+Get a map of the matrix parameters associated with the path segment.
+ The map keys are the names of the matrix parameters with any
+ percent-escaped octets decoded.
+
+Returns:
+the map of matrix parameters
+See Also:
+Matrix URIs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Request.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Request.html
new file mode 100644
index 0000000000..3a1f2c9388
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Request.html
@@ -0,0 +1,450 @@
+
+
+
+
+
+Request (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface Request
+An injectable helper for request processing, all methods throw an
+
IllegalStateException
if called outside the scope of a request
+ (e.g. from a provider constructor).
+
+ Precondition processing (see the
evaluatePreconditions
methods)
+ can result in either a
null
return value to indicate that
+ preconditions have been met and that the request should continue, or
+ a non-
null
return value to indicate that preconditions were not met. In the
+ event that preconditions were not met, the returned
ResponseBuilder
+ instance will have an appropriate status and will also include a
Vary
+ header if the
selectVariant(List)
method was called prior to to calling
+
evaluatePreconditions
. It is the responsibility of the caller
+ to check the status and add additional metadata if required. E.g., see
+
HTTP/1.1, section 10.3.5
+ for details of the headers that are expected to accompany a
304 Not Modified
+ response.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley, Marek Potociar
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+evaluatePreconditions
+Response.ResponseBuilder evaluatePreconditions(Date lastModified,
+ EntityTag eTag)
+Evaluate request preconditions based on the passed in value.
+
+Parameters:
+lastModified
- a date that specifies the modification date of the resource
+eTag
- an ETag for the current state of the resource
+Returns:
+null
if the preconditions are met or a ResponseBuilder
set with
+ the appropriate status if the preconditions are not met. A returned
+ ResponseBuilder
will include an ETag header set with the value of eTag,
+ provided none of the precondition evaluation has failed, in which case
+ the ETag header would not be included and the status code of the returned
+ ResponseBuilder
would be set to Response.Status.PRECONDITION_FAILED
.
+Throws:
+IllegalArgumentException
- if lastModified or eTag is null
.
+IllegalStateException
- if called outside the scope of a request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.ResponseBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.ResponseBuilder.html
new file mode 100644
index 0000000000..d161f30f68
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.ResponseBuilder.html
@@ -0,0 +1,1170 @@
+
+
+
+
+
+Response.ResponseBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+ResponseBuilder ()
+
+Protected constructor, use one of the static methods of
+ Response
to obtain an instance.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+ResponseBuilder
+protected ResponseBuilder()
+Protected constructor, use one of the static methods of
+ Response
to obtain an instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.Status.Family.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.Status.Family.html
new file mode 100644
index 0000000000..24136d4184
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.Status.Family.html
@@ -0,0 +1,475 @@
+
+
+
+
+
+Response.Status.Family (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Enum Constant Summary
+
+Enum Constants
+
+Enum Constant
+Description
+
+
+CLIENT_ERROR
+
+4xx
HTTP status codes.
+
+
+
+INFORMATIONAL
+
+1xx
HTTP status codes.
+
+
+
+OTHER
+
+Other, unrecognized HTTP status codes.
+
+
+
+REDIRECTION
+
+3xx
HTTP status codes.
+
+
+
+SERVER_ERROR
+
+5xx
HTTP status codes.
+
+
+
+SUCCESSFUL
+
+2xx
HTTP status codes.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+valueOf
+public static Response.Status.Family valueOf(String name)
+Returns the enum constant of this type with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this type. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum type has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.Status.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.Status.html
new file mode 100644
index 0000000000..d969ddb113
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.Status.html
@@ -0,0 +1,1228 @@
+
+
+
+
+
+Response.Status (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Class
+Description
+
+
+static class
+Response.Status.Family
+
+An enumeration representing the class of status code.
+
+
+
+
+
+
+
+
+
+
+Enum Constant Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+valueOf
+public static Response.Status valueOf(String name)
+Returns the enum constant of this type with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this type. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum type has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.StatusType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.StatusType.html
new file mode 100644
index 0000000000..3f6d02ec81
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.StatusType.html
@@ -0,0 +1,340 @@
+
+
+
+
+
+Response.StatusType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.html
new file mode 100644
index 0000000000..29e2502f7e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Response.html
@@ -0,0 +1,1822 @@
+
+
+
+
+
+Response (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Class
+Description
+
+
+static class
+Response.ResponseBuilder
+
+A class used to build Response instances that contain metadata instead
+ of or in addition to an entity.
+
+
+
+static class
+Response.Status
+
+
+
+
+
+static interface
+Response.StatusType
+
+Base interface for statuses used in responses.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+Response ()
+
+Protected constructor, use one of the static methods to obtain a
+
Response.ResponseBuilder
instance and obtain a Response from that.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
+
+Modifier and Type
+Method
+Description
+
+
+static Response.ResponseBuilder
+accepted ()
+
+Create a new ResponseBuilder with an ACCEPTED status.
+
+
+
+static Response.ResponseBuilder
+accepted (Object entity)
+
+Create a new ResponseBuilder with an ACCEPTED status that contains
+ a representation.
+
+
+
+abstract boolean
+bufferEntity ()
+
+Buffer the message entity data.
+
+
+
+abstract void
+close ()
+
+Close the underlying message entity input stream (if available and open)
+ as well as releases any other resources associated with the response
+ (e.g.
+
+
+
+static Response.ResponseBuilder
+created (URI location)
+
+Create a new ResponseBuilder for a created resource, set the location
+ header using the supplied value.
+
+
+
+static Response.ResponseBuilder
+fromResponse (Response response)
+
+Create a new ResponseBuilder by performing a shallow copy of an
+ existing Response.
+
+
+
+abstract Set <String >
+getAllowedMethods ()
+
+Get the allowed HTTP methods from the Allow HTTP header.
+
+
+
+abstract Map <String ,NewCookie >
+getCookies ()
+
+Get any new cookies set on the response message.
+
+
+
+abstract Date
+getDate ()
+
+Get message date.
+
+
+
+abstract Object
+getEntity ()
+
+Get the message entity Java instance.
+
+
+
+abstract EntityTag
+getEntityTag ()
+
+Get the entity tag.
+
+
+
+MultivaluedMap <String ,Object >
+getHeaders ()
+
+Get view of the response headers and their object values.
+
+
+
+abstract String
+getHeaderString (String name)
+
+Get a message header as a single string value.
+
+
+
+abstract Locale
+getLanguage ()
+
+Get the language of the message entity.
+
+
+
+abstract Date
+getLastModified ()
+
+Get the last modified date.
+
+
+
+abstract int
+getLength ()
+
+Get Content-Length value.
+
+
+
+abstract Link
+getLink (String relation)
+
+Get the link for the relation.
+
+
+
+abstract Link.Builder
+getLinkBuilder (String relation)
+
+Convenience method that returns a
Link.Builder
for the relation.
+
+
+
+abstract Set <Link >
+getLinks ()
+
+Get the links attached to the message as headers.
+
+
+
+abstract URI
+getLocation ()
+
+Get the location.
+
+
+
+abstract MediaType
+getMediaType ()
+
+Get the media type of the message entity.
+
+
+
+abstract MultivaluedMap <String ,Object >
+getMetadata ()
+
+
+
+
+
+abstract int
+getStatus ()
+
+Get the status code associated with the response.
+
+
+
+abstract Response.StatusType
+getStatusInfo ()
+
+Get the complete status information associated with the response.
+
+
+
+abstract MultivaluedMap <String ,String >
+getStringHeaders ()
+
+Get view of the response headers and their string values.
+
+
+
+abstract boolean
+hasEntity ()
+
+Check if there is an entity available in the response.
+
+
+
+abstract boolean
+hasLink (String relation)
+
+Check if link for relation exists.
+
+
+
+static Response.ResponseBuilder
+noContent ()
+
+Create a new ResponseBuilder for an empty response.
+
+
+
+static Response.ResponseBuilder
+notAcceptable (List <Variant > variants)
+
+Create a new ResponseBuilder for a not acceptable response.
+
+
+
+static Response.ResponseBuilder
+notModified ()
+
+Create a new ResponseBuilder with a not-modified status.
+
+
+
+static Response.ResponseBuilder
+notModified (String tag)
+
+Create a new ResponseBuilder with a not-modified status
+ and a strong entity tag.
+
+
+
+static Response.ResponseBuilder
+notModified (EntityTag tag)
+
+Create a new ResponseBuilder with a not-modified status.
+
+
+
+static Response.ResponseBuilder
+ok ()
+
+Create a new ResponseBuilder with an OK status.
+
+
+
+static Response.ResponseBuilder
+ok (Object entity)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+static Response.ResponseBuilder
+ok (Object entity,
+ String type)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+static Response.ResponseBuilder
+ok (Object entity,
+ MediaType type)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+static Response.ResponseBuilder
+ok (Object entity,
+ Variant variant)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+abstract <T> T
+readEntity (Class <T> entityType)
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+
+
+abstract <T> T
+readEntity (Class <T> entityType,
+ Annotation [] annotations)
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+
+
+abstract <T> T
+readEntity (GenericType <T> entityType)
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+
+
+abstract <T> T
+readEntity (GenericType <T> entityType,
+ Annotation [] annotations)
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+
+
+static Response.ResponseBuilder
+seeOther (URI location)
+
+Create a new ResponseBuilder for a redirection.
+
+
+
+static Response.ResponseBuilder
+serverError ()
+
+Create a new ResponseBuilder with an server error status.
+
+
+
+static Response.ResponseBuilder
+status (int status)
+
+Create a new ResponseBuilder with the supplied status.
+
+
+
+static Response.ResponseBuilder
+status (int status,
+ String reasonPhrase)
+
+Create a new ResponseBuilder with the supplied status and reason phrase.
+
+
+
+static Response.ResponseBuilder
+status (Response.Status status)
+
+Create a new ResponseBuilder with the supplied status.
+
+
+
+static Response.ResponseBuilder
+status (Response.StatusType status)
+
+Create a new ResponseBuilder with the supplied status.
+
+
+
+static Response.ResponseBuilder
+temporaryRedirect (URI location)
+
+Create a new ResponseBuilder for a temporary redirection.
+
+
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+Response
+protected Response()
+Protected constructor, use one of the static methods to obtain a
+
Response.ResponseBuilder
instance and obtain a Response from that.
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getLinks
+public abstract Set <Link > getLinks()
+Get the links attached to the message as headers. Any links in the message
+ that are relative must be resolved with respect to the actual request URI
+ that produced this response. Note that request URIs may be updated by
+ filters, so the actual request URI may differ from that in the original
+ invocation.
+
+Returns:
+links, may return empty Set
if no links are present. Does
+ not return null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+getLink
+public abstract Link getLink(String relation)
+Get the link for the relation. A relative link is resolved with respect
+ to the actual request URI that produced this response. Note that request
+ URIs may be updated by filters, so the actual request URI may differ from
+ that in the original invocation.
+
+Parameters:
+relation
- link relation.
+Returns:
+the link for the relation, otherwise null
if not present.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getStringHeaders
+public abstract MultivaluedMap <String ,String > getStringHeaders()
+Get view of the response headers and their string values.
+
+ The underlying header data may be subsequently modified by the runtime on
+ the server side. Changes in the underlying header data are reflected in this view.
+
+Returns:
+response headers as a string view of header values.
+Since:
+2.0
+See Also:
+getHeaders()
,
+getHeaderString(java.lang.String)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+status
+public static Response.ResponseBuilder status(int status,
+ String reasonPhrase)
+Create a new ResponseBuilder with the supplied status and reason phrase.
+
+Parameters:
+status
- the response status.
+reasonPhrase
- the reason phrase.
+Returns:
+the updated response builder.
+Throws:
+IllegalArgumentException
- if status is less than 100
or greater
+ than 599
.
+Since:
+2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+created
+public static Response.ResponseBuilder created(URI location)
+Create a new ResponseBuilder for a created resource, set the location
+ header using the supplied value.
+
+Parameters:
+location
- the URI of the new resource. If a relative URI is
+ supplied it will be converted into an absolute URI by resolving it
+ relative to the request URI (see UriInfo.getRequestUri()
).
+Returns:
+a new response builder.
+Throws:
+IllegalArgumentException
- if location is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+notModified
+public static Response.ResponseBuilder notModified(String tag)
+Create a new ResponseBuilder with a not-modified status
+ and a strong entity tag. This is a shortcut
+ for notModified(new EntityTag(value ))
.
+
+Parameters:
+tag
- the string content of a strong entity tag. The
+ runtime will quote the supplied value when creating the
+ header.
+Returns:
+a new response builder.
+Throws:
+IllegalArgumentException
- if tag is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/SecurityContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/SecurityContext.html
new file mode 100644
index 0000000000..2cc450311e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/SecurityContext.html
@@ -0,0 +1,470 @@
+
+
+
+
+
+SecurityContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+static String
+BASIC_AUTH
+
+String identifier for Basic authentication.
+
+
+
+static String
+CLIENT_CERT_AUTH
+
+String identifier for Client Certificate authentication.
+
+
+
+static String
+DIGEST_AUTH
+
+String identifier for Digest authentication.
+
+
+
+static String
+FORM_AUTH
+
+String identifier for Form authentication.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+String
+getAuthenticationScheme ()
+
+Returns the string value of the authentication scheme used to protect
+ the resource.
+
+
+
+Principal
+getUserPrincipal ()
+
+Returns a java.security.Principal
object containing the
+ name of the current authenticated user.
+
+
+
+boolean
+isSecure ()
+
+Returns a boolean indicating whether this request was made
+ using a secure channel, such as HTTPS.
+
+
+
+boolean
+isUserInRole (String role)
+
+Returns a boolean indicating whether the authenticated user is included
+ in the specified logical "role".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getUserPrincipal
+Principal getUserPrincipal()
+Returns a java.security.Principal
object containing the
+ name of the current authenticated user. If the user
+ has not been authenticated, the method returns null.
+
+Returns:
+a java.security.Principal
containing the name
+ of the user making this request; null if the user has not been
+ authenticated
+Throws:
+IllegalStateException
- if called outside the scope of a request
+
+
+
+
+
+
+
+
+isUserInRole
+boolean isUserInRole(String role)
+Returns a boolean indicating whether the authenticated user is included
+ in the specified logical "role". If the user has not been authenticated,
+ the method returns false
.
+
+Parameters:
+role
- a String
specifying the name of the role
+Returns:
+a boolean
indicating whether the user making
+ the request belongs to a given role; false
if the user
+ has not been authenticated
+Throws:
+IllegalStateException
- if called outside the scope of a request
+
+
+
+
+
+
+
+
+
+
+
+
+getAuthenticationScheme
+String getAuthenticationScheme()
+Returns the string value of the authentication scheme used to protect
+ the resource. If the resource is not authenticated, null is returned.
+
+ Values are the same as the CGI variable AUTH_TYPE
+
+Returns:
+one of the static members BASIC_AUTH, FORM_AUTH,
+ CLIENT_CERT_AUTH, DIGEST_AUTH (suitable for == comparison) or the
+ container-specific string indicating the authentication scheme,
+ or null if the request was not authenticated.
+Throws:
+IllegalStateException
- if called outside the scope of a request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/StreamingOutput.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/StreamingOutput.html
new file mode 100644
index 0000000000..699d0df8f4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/StreamingOutput.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+StreamingOutput (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriBuilder.html
new file mode 100644
index 0000000000..1b85ceab46
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriBuilder.html
@@ -0,0 +1,1710 @@
+
+
+
+
+
+UriBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+UriBuilder ()
+
+Protected constructor, use one of the static fromXxx (...)
+ methods to obtain an instance.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
+
+Modifier and Type
+Method
+Description
+
+
+abstract URI
+build (Object ... values)
+
+Build a URI, using the supplied values in order to replace any URI
+ template parameters.
+
+
+
+abstract URI
+build (Object [] values,
+ boolean encodeSlashInPath)
+
+Build a URI, using the supplied values in order to replace any URI
+ template parameters.
+
+
+
+abstract URI
+buildFromEncoded (Object ... values)
+
+Build a URI.
+
+
+
+abstract URI
+buildFromEncodedMap (Map <String ,?> values)
+
+Build a URI.
+
+
+
+abstract URI
+buildFromMap (Map <String ,?> values)
+
+Build a URI.
+
+
+
+abstract URI
+buildFromMap (Map <String ,?> values,
+ boolean encodeSlashInPath)
+
+Build a URI.
+
+
+
+abstract UriBuilder
+clone ()
+
+Create a copy of the UriBuilder preserving its state.
+
+
+
+abstract UriBuilder
+fragment (String fragment)
+
+Set the URI fragment.
+
+
+
+static UriBuilder
+fromLink (Link link)
+
+Create a new instance initialized from a Link.
+
+
+
+static UriBuilder
+fromMethod (Class <?> resource,
+ String method)
+
+Create a new instance representing a relative URI initialized from a
+
Path
-annotated method.
+
+
+
+static UriBuilder
+fromPath (String path)
+
+Create a new instance representing a relative URI initialized from a
+ URI path.
+
+
+
+static UriBuilder
+fromResource (Class <?> resource)
+
+Create a new instance representing a relative URI initialized from a
+ root resource class.
+
+
+
+static UriBuilder
+fromUri (String uriTemplate)
+
+Create a new instance initialized from an existing URI.
+
+
+
+static UriBuilder
+fromUri (URI uri)
+
+Create a new instance initialized from an existing URI.
+
+
+
+abstract UriBuilder
+host (String host)
+
+Set the URI host.
+
+
+
+abstract UriBuilder
+matrixParam (String name,
+ Object ... values)
+
+Append a matrix parameter to the existing set of matrix parameters of
+ the current final segment of the URI path.
+
+
+
+protected static UriBuilder
+newInstance ()
+
+Creates a new instance of UriBuilder.
+
+
+
+abstract UriBuilder
+path (Class resource)
+
+Append the path from a Path-annotated class to the
+ existing path.
+
+
+
+abstract UriBuilder
+path (Class resource,
+ String method)
+
+Append the path from a Path-annotated method to the
+ existing path.
+
+
+
+abstract UriBuilder
+path (Method method)
+
+Append the path from a
Path
-annotated method to the
+ existing path.
+
+
+
+abstract UriBuilder
+path (String path)
+
+Append path to the existing path.
+
+
+
+abstract UriBuilder
+port (int port)
+
+Set the URI port.
+
+
+
+abstract UriBuilder
+queryParam (String name,
+ Object ... values)
+
+Append a query parameter to the existing set of query parameters.
+
+
+
+abstract UriBuilder
+replaceMatrix (String matrix)
+
+Set the matrix parameters of the current final segment of the current URI path.
+
+
+
+abstract UriBuilder
+replaceMatrixParam (String name,
+ Object ... values)
+
+Replace the existing value(s) of a matrix parameter on
+ the current final segment of the URI path.
+
+
+
+abstract UriBuilder
+replacePath (String path)
+
+Set the URI path.
+
+
+
+abstract UriBuilder
+replaceQuery (String query)
+
+Set the URI query string.
+
+
+
+abstract UriBuilder
+replaceQueryParam (String name,
+ Object ... values)
+
+Replace the existing value(s) of a query parameter.
+
+
+
+abstract UriBuilder
+resolveTemplate (String name,
+ Object value)
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied value.
+
+
+
+abstract UriBuilder
+resolveTemplate (String name,
+ Object value,
+ boolean encodeSlashInPath)
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied value.
+
+
+
+abstract UriBuilder
+resolveTemplateFromEncoded (String name,
+ Object value)
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied encoded value.
+
+
+
+abstract UriBuilder
+resolveTemplates (Map <String ,Object > templateValues)
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+
+
+abstract UriBuilder
+resolveTemplates (Map <String ,Object > templateValues,
+ boolean encodeSlashInPath)
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+
+
+abstract UriBuilder
+resolveTemplatesFromEncoded (Map <String ,Object > templateValues)
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+
+
+abstract UriBuilder
+scheme (String scheme)
+
+Set the URI scheme.
+
+
+
+abstract UriBuilder
+schemeSpecificPart (String ssp)
+
+Set the URI scheme-specific-part (see
URI
).
+
+
+
+abstract UriBuilder
+segment (String ... segments)
+
+Append path segments to the existing path.
+
+
+
+abstract String
+toTemplate ()
+
+Get the URI template string represented by this URI builder.
+
+
+
+abstract UriBuilder
+uri (String uriTemplate)
+
+Parses the uriTemplate
string and copies the parsed components of the supplied
+ URI to the UriBuilder replacing any existing values for those components.
+
+
+
+abstract UriBuilder
+uri (URI uri)
+
+Copies the non-null components of the supplied URI to the UriBuilder replacing
+ any existing values for those components.
+
+
+
+abstract UriBuilder
+userInfo (String ui)
+
+Set the URI user-info.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+uri
+public abstract UriBuilder uri(String uriTemplate)
+Parses the uriTemplate
string and copies the parsed components of the supplied
+ URI to the UriBuilder replacing any existing values for those components.
+
+Parameters:
+uriTemplate
- a URI template that will be used to initialize the UriBuilder, may
+ contain URI parameters.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if uriTemplate
is not a valid URI template or
+ is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+replacePath
+public abstract UriBuilder replacePath(String path)
+Set the URI path. This method will overwrite
+ any existing path and associated matrix parameters.
+ Existing '/' characters are preserved thus a single value can
+ represent multiple URI path segments.
+
+Parameters:
+path
- the path, may contain URI template parameters.
+ A null
value will unset the path component of the URI.
+Returns:
+the updated UriBuilder.
+
+
+
+
+
+
+
+
+path
+public abstract UriBuilder path(String path)
+Append path to the existing path.
+ When constructing the final path, a '/' separator will be inserted
+ between the existing path and the supplied path if necessary.
+ Existing '/' characters are preserved thus a single value can
+ represent multiple URI path segments.
+
+Parameters:
+path
- the path, may contain URI template parameters.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if path is null
.
+
+
+
+
+
+
+
+
+path
+public abstract UriBuilder path(Class resource)
+Append the path from a Path-annotated class to the
+ existing path.
+ When constructing the final path, a '/' separator will be inserted
+ between the existing path and the supplied path if necessary.
+
+Parameters:
+resource
- a resource whose Path
value will be
+ used to obtain the path to append.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if resource is null
, or
+ if resource is not annotated with Path
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+segment
+public abstract UriBuilder segment(String ... segments)
+Append path segments to the existing path.
+ When constructing the final path, a '/' separator will be inserted
+ between the existing path and the first path segment if necessary and
+ each supplied segment will also be separated by '/'.
+ Existing '/' characters are encoded thus a single value can
+ only represent a single URI path segment.
+
+Parameters:
+segments
- the path segment values, each may contain URI template
+ parameters.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if segments or any element of segments
+ is null
.
+
+
+
+
+
+
+
+
+replaceMatrix
+public abstract UriBuilder replaceMatrix(String matrix)
+Set the matrix parameters of the current final segment of the current URI path.
+ This method will overwrite any existing matrix parameters on the current final
+ segment of the current URI path. Note that the matrix parameters
+ are tied to a particular path segment; subsequent addition of path segments
+ will not affect their position in the URI path.
+
+Parameters:
+matrix
- the matrix parameters, may contain URI template parameters.
+ A null
value will remove all matrix parameters of the current final segment
+ of the current URI path.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if matrix cannot be parsed.
+See Also:
+Matrix URIs
+
+
+
+
+
+
+
+
+matrixParam
+public abstract UriBuilder matrixParam(String name,
+ Object ... values)
+Append a matrix parameter to the existing set of matrix parameters of
+ the current final segment of the URI path. If multiple values are supplied
+ the parameter will be added once per value. Note that the matrix parameters
+ are tied to a particular path segment; subsequent addition of path segments
+ will not affect their position in the URI path.
+
+Parameters:
+name
- the matrix parameter name, may contain URI template parameters.
+values
- the matrix parameter value(s), each object will be converted.
+ to a String
using its toString()
method. Stringified
+ values may contain URI template parameters.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if name or values is null
.
+See Also:
+Matrix URIs
+
+
+
+
+
+
+
+
+replaceMatrixParam
+public abstract UriBuilder replaceMatrixParam(String name,
+ Object ... values)
+Replace the existing value(s) of a matrix parameter on
+ the current final segment of the URI path. If multiple values are supplied
+ the parameter will be added once per value. Note that the matrix parameters
+ are tied to a particular path segment; subsequent addition of path segments
+ will not affect their position in the URI path.
+
+Parameters:
+name
- the matrix parameter name, may contain URI template parameters.
+values
- the matrix parameter value(s), each object will be converted.
+ to a String
using its toString()
method. Stringified
+ values may contain URI template parameters. If values
is empty
+ or null
then all current values of the parameter are removed.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if name is null
.
+See Also:
+Matrix URIs
+
+
+
+
+
+
+
+
+
+
+
+
+queryParam
+public abstract UriBuilder queryParam(String name,
+ Object ... values)
+Append a query parameter to the existing set of query parameters. If
+ multiple values are supplied the parameter will be added once per value.
+
+Parameters:
+name
- the query parameter name, may contain URI template parameters.
+values
- the query parameter value(s), each object will be converted
+ to a String
using its toString()
method. Stringified
+ values may contain URI template parameters.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if name or values is null
.
+
+
+
+
+
+
+
+
+replaceQueryParam
+public abstract UriBuilder replaceQueryParam(String name,
+ Object ... values)
+Replace the existing value(s) of a query parameter. If
+ multiple values are supplied the parameter will be added once per value.
+
+Parameters:
+name
- the query parameter name, may contain URI template parameters.
+values
- the query parameter value(s), each object will be converted
+ to a String
using its toString()
method. Stringified
+ values may contain URI template parameters. If values
is empty
+ or null
then all current values of the parameter are removed.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if name is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+resolveTemplates
+public abstract UriBuilder resolveTemplates(Map <String ,Object > templateValues)
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+ A call to the method with an empty parameter map is ignored.
+
+Parameters:
+templateValues
- a map of URI template names and their values.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if the name-value map or any of the names or values
+ in the map is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+resolveTemplates
+public abstract UriBuilder resolveTemplates(Map <String ,Object > templateValues,
+ boolean encodeSlashInPath)
+ throws IllegalArgumentException
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+ A call to the method with an empty parameter map is ignored.
+
+Parameters:
+templateValues
- a map of URI template names and their values.
+encodeSlashInPath
- if true
, the slash ('/'
) characters
+ in template values will be encoded if the template
+ is placed in the URI path component, otherwise the slash
+ characters will not be encoded in path templates.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if the name-value map or any of the names or values
+ in the map is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+resolveTemplatesFromEncoded
+public abstract UriBuilder resolveTemplatesFromEncoded(Map <String ,Object > templateValues)
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+ All templates with their name matching one of the keys in the supplied map will be replaced
+ by the value in the supplied map. Values are converted to String
using
+ their toString()
method and are then encoded to match the
+ rules of the URI component to which they pertain. All % characters in
+ the stringified values that are not followed by two hexadecimal numbers
+ will be encoded.
+
+ A call to the method with an empty parameter map is ignored.
+
+Parameters:
+templateValues
- a map of URI template names and their values.
+Returns:
+the updated UriBuilder.
+Throws:
+IllegalArgumentException
- if the name-value map or any of the names or values
+ in the map is null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+buildFromMap
+public abstract URI buildFromMap(Map <String ,?> values,
+ boolean encodeSlashInPath)
+ throws IllegalArgumentException ,
+ UriBuilderException
+Build a URI.
+
+ Any URI template parameters will be replaced by the value in
+ the supplied map. Values are converted to
String
using
+ their
toString()
method and are then encoded to match the
+ rules of the URI component to which they pertain. All
'%'
characters
+ in the stringified values will be encoded.
+ The state of the builder is unaffected; this method may be called
+ multiple times on the same builder instance.
+
+ The encodeSlashInPath
parameter may be used to override the default
+ encoding of '/'
characters in the stringified template values
+ in cases when the template is part of the URI path component when using
+ the buildFromMap(java.util.Map)
method. If the encodeSlashInPath
+ parameter is set to true
(default), the slash ('/'
) characters in
+ parameter values will be encoded if the template is placed in the URI path component.
+ If set to false
the default encoding behavior is overridden an slash characters
+ in template values will not be encoded when used to substitute path templates.
+
+
+Parameters:
+values
- a map of URI template parameter names and values.
+encodeSlashInPath
- if true
, the slash ('/'
) characters
+ in parameter values will be encoded if the template
+ is placed in the URI path component, otherwise the slash
+ characters will not be encoded in path templates.
+Returns:
+the URI built from the UriBuilder.
+Throws:
+IllegalArgumentException
- if there are any URI template parameters
+ without a supplied value, or if a template parameter value is null
.
+UriBuilderException
- if a URI cannot be constructed based on the
+ current state of the builder.
+See Also:
+buildFromMap(java.util.Map)
,
+buildFromEncodedMap(java.util.Map)
+
+
+
+
+
+
+
+
+buildFromEncodedMap
+public abstract URI buildFromEncodedMap(Map <String ,?> values)
+ throws IllegalArgumentException ,
+ UriBuilderException
+Build a URI.
+
+ Any URI template parameters will be replaced by the value in
+ the supplied map. Values are converted to String
using
+ their toString()
method and are then encoded to match the
+ rules of the URI component to which they pertain. All % characters in
+ the stringified values that are not followed by two hexadecimal numbers
+ will be encoded.
+ The state of the builder is unaffected; this method may be called
+ multiple times on the same builder instance.
+
+Parameters:
+values
- a map of URI template parameter names and values.
+Returns:
+the URI built from the UriBuilder.
+Throws:
+IllegalArgumentException
- if there are any URI template parameters
+ without a supplied value, or if a template parameter value is null
.
+UriBuilderException
- if a URI cannot be constructed based on the
+ current state of the builder.
+Since:
+2.0
+See Also:
+buildFromMap(java.util.Map)
,
+buildFromMap(java.util.Map, boolean)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriBuilderException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriBuilderException.html
new file mode 100644
index 0000000000..8ea8093511
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriBuilderException.html
@@ -0,0 +1,377 @@
+
+
+
+
+
+UriBuilderException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+UriBuilderException ()
+
+Creates a new instance of UriBuilderException
without detail message.
+
+
+
+UriBuilderException (String msg)
+
+Constructs an instance of UriBuilderException
with the specified detail message.
+
+
+
+UriBuilderException (String msg,
+ Throwable cause)
+
+Constructs an instance of UriBuilderException
with the specified detail message and cause.
+
+
+
+UriBuilderException (Throwable cause)
+
+Constructs a new exception with the specified cause and a detail message
+ of (cause==null ? null : cause.toString()
) (which typically contains
+ the class and detail message of cause).
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Throwable
+addSuppressed , fillInStackTrace , getCause , getLocalizedMessage , getMessage , getStackTrace , getSuppressed , initCause , printStackTrace , printStackTrace , printStackTrace , setStackTrace , toString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+UriBuilderException
+public UriBuilderException(Throwable cause)
+Constructs a new exception with the specified cause and a detail message
+ of (cause==null ? null : cause.toString()
) (which typically contains
+ the class and detail message of cause). This constructor is useful
+ for exceptions that are little more than wrappers for other throwables.
+
+Parameters:
+cause
- the original exception
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriInfo.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriInfo.html
new file mode 100644
index 0000000000..58b7c19867
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/UriInfo.html
@@ -0,0 +1,882 @@
+
+
+
+
+
+UriInfo (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface UriInfo
+An injectable interface that provides access to application and request
+ URI information. Relative URIs are relative to the base URI of the
+ application, see
getBaseUri()
.
+
+
All methods throw java.lang.IllegalStateException
+ if called outside the scope of a request (e.g. from a provider constructor).
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+See Also:
+Context
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getPath
+String getPath()
+Get the path of the current request relative to the base URI as a string.
+ All sequences of escaped octets are decoded, equivalent to
+
getPath(true)
.
+
+Returns:
+the relative URI path.
+Throws:
+IllegalStateException
- if called outside the scope of
+ a request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getAbsolutePathBuilder
+UriBuilder getAbsolutePathBuilder()
+Get the absolute path of the request in the form of a UriBuilder.
+ This includes everything preceding the path (host, port etc) but excludes
+ query parameters.
+
+Returns:
+a UriBuilder initialized with the absolute path of the request.
+Throws:
+IllegalStateException
- if called outside the scope of a
+ request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getPathParameters
+MultivaluedMap <String ,String > getPathParameters(boolean decode)
+Get the values of any embedded URI template parameters.
+
+Parameters:
+decode
- controls whether sequences of escaped octets are decoded
+ (true
) or not (false
).
+Returns:
+an unmodifiable map of parameter names and values
+Throws:
+IllegalStateException
- if called outside the scope of a
+ request.
+See Also:
+Path
,
+PathParam
+
+
+
+
+
+
+
+
+
+
+
+
+getQueryParameters
+MultivaluedMap <String ,String > getQueryParameters(boolean decode)
+Get the URI query parameters of the current request. The map keys are the
+ names of the query parameters with any escaped characters decoded.
+
+Parameters:
+decode
- controls whether sequences of escaped octets in parameter
+ names and values are decoded (true
) or not (false
).
+Returns:
+an unmodifiable map of query parameter names and values.
+Throws:
+IllegalStateException
- if called outside the scope of a
+ request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+relativize
+URI relativize(URI uri)
+Relativize a URI with respect to the current request URI. Relativization
+ works as follows:
+
+ If the URI to relativize is already relative, it is first resolved using
+ resolve(java.net.URI)
.
+ The resulting URI is relativized with respect to the current request
+ URI. If the two URIs do not share a prefix, the URI computed in
+ step 1 is returned.
+
+
+
+
Examples (for base URI http://example.com:8080/app/root/
):
+
+ Request URI: http://example.com:8080/app/root/a/b/c/resource.html
+ Supplied URI: a/b/c/d/file.txt
+ Returned URI: d/file.txt
+
+ Request URI: http://example.com:8080/app/root/a/b/c/resource.html
+ Supplied URI: http://example2.com:9090/app2/root2/a/d/file.txt
+ Returned URI: http://example2.com:9090/app2/root2/a/d/file.txt
+
+
+
In the second example, the supplied URI is returned given that it is absolute
+ and there is no common prefix between it and the request URI.
+
+Parameters:
+uri
- URI to relativize against the request URI.
+Returns:
+newly relativized URI.
+Throws:
+IllegalStateException
- if called outside the scope of a request.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Variant.VariantListBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Variant.VariantListBuilder.html
new file mode 100644
index 0000000000..f2a4148a0e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Variant.VariantListBuilder.html
@@ -0,0 +1,466 @@
+
+
+
+
+
+Variant.VariantListBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+VariantListBuilder ()
+
+Protected constructor, use the static newInstance
+ method to obtain an instance.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+VariantListBuilder
+protected VariantListBuilder()
+Protected constructor, use the static newInstance
+ method to obtain an instance.
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+build
+public abstract List <Variant > build()
+Add the current combination of metadata to the list of supported variants
+ (provided the current combination of metadata is not empty) and
+ build a list of representation variants from the current state of
+ the builder. After this method is called the builder is reset to
+ an empty state.
+
+Returns:
+a list of representation variants.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/Variant.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Variant.html
new file mode 100644
index 0000000000..a58b840af1
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/Variant.html
@@ -0,0 +1,687 @@
+
+
+
+
+
+Variant (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public class Variant
+extends Object
+Abstraction for a resource representation variant.
+
+ Contains information about media type, language and encoding of the resource representation.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Class
+Description
+
+
+static class
+Variant.VariantListBuilder
+
+A builder for a list of representation variants.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Constructor
+Description
+
+
+Variant (MediaType mediaType,
+ String language,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+Variant (MediaType mediaType,
+ String language,
+ String country,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+Variant (MediaType mediaType,
+ String language,
+ String country,
+ String languageVariant,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+Variant (MediaType mediaType,
+ Locale language,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+Variant
+public Variant(MediaType mediaType,
+ String language,
+ String encoding)
+Create a new instance of Variant.
+
+Parameters:
+mediaType
- the media type of the variant - may be null
.
+language
- the language of the variant (two-letter ISO-639 code);
+ may be null
.
+encoding
- the content encoding of the variant - may be null
.
+Throws:
+IllegalArgumentException
- if all the parameters are null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+Variant
+public Variant(MediaType mediaType,
+ String language,
+ String country,
+ String encoding)
+Create a new instance of Variant.
+
+Parameters:
+mediaType
- the media type of the variant - may be null
.
+language
- the language of the variant (two-letter ISO-639 code);
+ may be null
.
+country
- uppercase two-letter ISO-3166 language code of the variant;
+ may be null
provided language
is null
too.
+encoding
- the content encoding of the variant - may be null
.
+Throws:
+IllegalArgumentException
- if all the parameters are null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+Variant
+public Variant(MediaType mediaType,
+ String language,
+ String country,
+ String languageVariant,
+ String encoding)
+Create a new instance of Variant.
+
+Parameters:
+mediaType
- the media type of the variant - may be null
.
+language
- the language of the variant (two-letter ISO-639 code);
+ may be null
.
+country
- uppercase two-letter ISO-3166 language code of the variant;
+ may be null
provided language
is null
too.
+languageVariant
- vendor and browser specific language code of the variant
+ (see also Locale
class description);
+ may be null
provided language
and
+ country
are null
too.
+encoding
- the content encoding of the variant - may be null
.
+Throws:
+IllegalArgumentException
- if all the parameters are null
.
+Since:
+2.0
+
+
+
+
+
+
+
+
+Variant
+public Variant(MediaType mediaType,
+ Locale language,
+ String encoding)
+Create a new instance of Variant.
+
+Parameters:
+mediaType
- the media type of the variant - may be null
.
+language
- the language of the variant - may be null
.
+encoding
- the content encoding of the variant - may be null
.
+Throws:
+IllegalArgumentException
- if all the parameters are null
.
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+getLanguageString
+public String getLanguageString()
+Get the string representation of the variant language,
+ or null
if no language has been set.
+
+Returns:
+the string representing variant language or null
+ if none set.
+Since:
+2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/AbstractMultivaluedMap.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/AbstractMultivaluedMap.html
new file mode 100644
index 0000000000..50f75b52d8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/AbstractMultivaluedMap.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.AbstractMultivaluedMap (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Application.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Application.html
new file mode 100644
index 0000000000..b7c0b2fb29
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Application.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Application (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use Application
+
+Package
+Description
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.ext with parameters of type Application
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract <T> T
+RuntimeDelegate. createEndpoint (Application application,
+ Class <T> endpointType)
+
+Create a configured instance of the supplied endpoint type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/CacheControl.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/CacheControl.html
new file mode 100644
index 0000000000..7520f59744
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/CacheControl.html
@@ -0,0 +1,245 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.CacheControl (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Configurable.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Configurable.html
new file mode 100644
index 0000000000..56216ebc1b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Configurable.html
@@ -0,0 +1,272 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.Configurable (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Subinterfaces of Configurable in javax.ws.rs.client
+
+Modifier and Type
+Interface
+Description
+
+
+
+interface
+Client
+
+Client is the main entry point to the fluent API used to build and execute client
+ requests in order to consume responses returned.
+
+
+
+interface
+WebTarget
+
+A resource target identified by the resource URI.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Configuration.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Configuration.html
new file mode 100644
index 0000000000..5d88ed6451
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Configuration.html
@@ -0,0 +1,253 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.Configuration (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client with parameters of type Configuration
+
+Modifier and Type
+Method
+Description
+
+
+
+static Client
+ClientBuilder. newClient (Configuration configuration)
+
+Create a new custom-configured
Client
instance using the default client builder
+ implementation class provided by the implementation provider.
+
+
+
+abstract ClientBuilder
+ClientBuilder. withConfig (Configuration config)
+
+Set the internal configuration state to an externally provided configuration state.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Context.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Context.html
new file mode 100644
index 0000000000..c570344dea
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Context.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Context (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.core.Context
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Cookie.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Cookie.html
new file mode 100644
index 0000000000..e4bb80bd70
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Cookie.html
@@ -0,0 +1,350 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Cookie (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Subclasses of Cookie in javax.ws.rs.core
+
+Modifier and Type
+Class
+Description
+
+
+
+class
+NewCookie
+
+Used to create a new HTTP cookie, transferred in a response.
+
+
+
+
+
+Methods in javax.ws.rs.core that return Cookie
+
+Modifier and Type
+Method
+Description
+
+
+
+Cookie
+NewCookie. toCookie ()
+
+Obtain a new instance of a
Cookie
with the same name, value, path,
+ domain and version as this
NewCookie
.
+
+
+
+static Cookie
+Cookie. valueOf (String value)
+
+Creates a new instance of Cookie
by parsing the supplied string.
+
+
+
+
+
+
+Constructors in javax.ws.rs.core with parameters of type Cookie
+
+Constructor
+Description
+
+
+
+NewCookie (Cookie cookie)
+
+Create a new instance copying the information in the supplied cookie.
+
+
+
+NewCookie (Cookie cookie,
+ String comment,
+ int maxAge,
+ boolean secure)
+
+Create a new instance supplementing the information in the supplied cookie.
+
+
+
+NewCookie (Cookie cookie,
+ String comment,
+ int maxAge,
+ Date expiry,
+ boolean secure,
+ boolean httpOnly)
+
+Create a new instance supplementing the information in the supplied cookie.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/EntityTag.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/EntityTag.html
new file mode 100644
index 0000000000..3b9494eb68
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/EntityTag.html
@@ -0,0 +1,302 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.EntityTag (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Feature.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Feature.html
new file mode 100644
index 0000000000..149f8a6eee
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Feature.html
@@ -0,0 +1,219 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.Feature (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use Feature
+
+Package
+Description
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core with parameters of type Feature
+
+Modifier and Type
+Method
+Description
+
+
+
+boolean
+Configuration. isEnabled (Feature feature)
+
+Check if a particular
feature
instance has been previously
+ enabled in the runtime configuration context.
+
+
+
+
+
+Method parameters in javax.ws.rs.core with type arguments of type Feature
+
+Modifier and Type
+Method
+Description
+
+
+
+boolean
+Configuration. isEnabled (Class <? extends Feature > featureClass)
+
+Check if a
feature
instance of
featureClass
class has been
+ previously enabled in the runtime configuration context.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/FeatureContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/FeatureContext.html
new file mode 100644
index 0000000000..7e5d25dde3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/FeatureContext.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.FeatureContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core with parameters of type FeatureContext
+
+Modifier and Type
+Method
+Description
+
+
+
+boolean
+Feature. configure (FeatureContext context)
+
+A call-back method called when the feature is to be enabled in a given
+ runtime configuration scope.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Form.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Form.html
new file mode 100644
index 0000000000..139ad50515
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Form.html
@@ -0,0 +1,256 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Form (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use Form
+
+Package
+Description
+
+
+
+javax.ws.rs.client
+
+The Client API
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/GenericEntity.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/GenericEntity.html
new file mode 100644
index 0000000000..61db1bf8ff
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/GenericEntity.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.GenericEntity (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.core.GenericEntity
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/GenericType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/GenericType.html
new file mode 100644
index 0000000000..a58083b7f0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/GenericType.html
@@ -0,0 +1,539 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.GenericType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client with parameters of type GenericType
+
+Modifier and Type
+Method
+Description
+
+
+
+<T> Future <T>
+AsyncInvoker. delete (GenericType <T> responseType)
+
+Invoke HTTP DELETE method for the current request asynchronously.
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. delete (GenericType <T> responseType)
+
+
+
+<R> T
+RxInvoker. delete (GenericType <R> responseType)
+
+Invoke HTTP DELETE method for the current request.
+
+
+
+<T> T
+SyncInvoker. delete (GenericType <T> responseType)
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. get (GenericType <T> responseType)
+
+Invoke HTTP GET method for the current request asynchronously.
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. get (GenericType <T> responseType)
+
+
+
+<R> T
+RxInvoker. get (GenericType <R> responseType)
+
+Invoke HTTP GET method for the current request.
+
+
+
+<T> T
+SyncInvoker. get (GenericType <T> responseType)
+
+Invoke HTTP GET method for the current request synchronously.
+
+
+
+<T> T
+Invocation. invoke (GenericType <T> responseType)
+
+Synchronously invoke the request and receive a response of the specified
+ generic type back.
+
+
+
+<T> Future <T>
+AsyncInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. method (String name,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request asynchronously.
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. method (String name,
+ GenericType <T> responseType)
+
+
+
+<R> T
+RxInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<R> T
+RxInvoker. method (String name,
+ GenericType <R> responseType)
+
+Invoke an arbitrary method for the current request.
+
+
+
+<T> T
+SyncInvoker. method (String name,
+ Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> T
+SyncInvoker. method (String name,
+ GenericType <T> responseType)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. options (GenericType <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request asynchronously.
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. options (GenericType <T> responseType)
+
+
+
+<R> T
+RxInvoker. options (GenericType <R> responseType)
+
+Invoke HTTP OPTIONS method for the current request.
+
+
+
+<T> T
+SyncInvoker. options (GenericType <T> responseType)
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. post (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP POST method for the current request asynchronously.
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. post (Entity <?> entity,
+ GenericType <T> type)
+
+
+
+<R> T
+RxInvoker. post (Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke HTTP POST method for the current request.
+
+
+
+<T> T
+SyncInvoker. post (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+<T> Future <T>
+AsyncInvoker. put (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP PUT method for the current request asynchronously.
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. put (Entity <?> entity,
+ GenericType <T> type)
+
+
+
+<R> T
+RxInvoker. put (Entity <?> entity,
+ GenericType <R> responseType)
+
+Invoke HTTP PUT method for the current request.
+
+
+
+<T> T
+SyncInvoker. put (Entity <?> entity,
+ GenericType <T> responseType)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+<T> Future <T>
+Invocation. submit (GenericType <T> responseType)
+
+Submit the request for an asynchronous invocation and receive a future
+ response of the specified generic type back.
+
+
+
+<T> Future <T>
+AsyncInvoker. trace (GenericType <T> responseType)
+
+Invoke HTTP TRACE method for the current request asynchronously.
+
+
+
+<T> CompletionStage <T>
+CompletionStageRxInvoker. trace (GenericType <T> responseType)
+
+
+
+<R> T
+RxInvoker. trace (GenericType <R> responseType)
+
+Invoke HTTP TRACE method for the current request.
+
+
+
+<T> T
+SyncInvoker. trace (GenericType <T> responseType)
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core with parameters of type GenericType
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract <T> T
+Response. readEntity (GenericType <T> entityType)
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+
+
+abstract <T> T
+Response. readEntity (GenericType <T> entityType,
+ Annotation [] annotations)
+
+Read the message entity input stream as an instance of specified Java type
+ using a
MessageBodyReader
that supports mapping the
+ message entity stream onto the requested type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/HttpHeaders.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/HttpHeaders.html
new file mode 100644
index 0000000000..bdc4d5cc85
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/HttpHeaders.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.HttpHeaders (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.core.HttpHeaders
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.Builder.html
new file mode 100644
index 0000000000..748bab99c7
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.Builder.html
@@ -0,0 +1,414 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.Link.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.JaxbAdapter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.JaxbAdapter.html
new file mode 100644
index 0000000000..4278a0ead2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.JaxbAdapter.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Link.JaxbAdapter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.core.Link.JaxbAdapter
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.JaxbLink.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.JaxbLink.html
new file mode 100644
index 0000000000..2cfd98d0b2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.JaxbLink.html
@@ -0,0 +1,217 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Link.JaxbLink (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use Link.JaxbLink
+
+Package
+Description
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.html
new file mode 100644
index 0000000000..73f738eb2c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Link.html
@@ -0,0 +1,406 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Link (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client that return types with arguments of type Link
+
+Modifier and Type
+Method
+Description
+
+
+
+Set <Link >
+ClientResponseContext. getLinks ()
+
+Get the links attached to the message as header.
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.container that return types with arguments of type Link
+
+Modifier and Type
+Method
+Description
+
+
+
+Set <Link >
+ContainerResponseContext. getLinks ()
+
+Get the links attached to the message as header.
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that return Link
+
+Modifier and Type
+Method
+Description
+
+
+
+Link
+Link.Builder. build (Object ... values)
+
+Finish building this link using the supplied values as URI parameters.
+
+
+
+Link
+Link.Builder. buildRelativized (URI uri,
+ Object ... values)
+
+Finish building this link using the supplied values as URI parameters
+ and relativize the result with respect to the supplied URI.
+
+
+
+abstract Link
+Response. getLink (String relation)
+
+Get the link for the relation.
+
+
+
+Link
+Link.JaxbAdapter. unmarshal (Link.JaxbLink v)
+
+
+
+
+
+static Link
+Link. valueOf (String value)
+
+Simple parser to convert link header string representations into a link.
+
+
+
+
+
+Methods in javax.ws.rs.core that return types with arguments of type Link
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract Set <Link >
+Response. getLinks ()
+
+Get the links attached to the message as headers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MediaType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MediaType.html
new file mode 100644
index 0000000000..962d3f0406
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MediaType.html
@@ -0,0 +1,818 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.MediaType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client with parameters of type MediaType
+
+Modifier and Type
+Method
+Description
+
+
+
+Invocation.Builder
+Invocation.Builder. accept (MediaType ... mediaTypes)
+
+Add the accepted response media types.
+
+
+
+static <T> Entity <T>
+Entity. entity (T entity,
+ MediaType mediaType)
+
+Create an entity using a supplied content media type.
+
+
+
+static <T> Entity <T>
+Entity. entity (T entity,
+ MediaType mediaType,
+ Annotation [] annotations)
+
+Create an entity using a supplied content media type.
+
+
+
+Invocation.Builder
+WebTarget. request (MediaType ... acceptedResponseTypes)
+
+Start building a request to the targeted web resource and define the accepted
+ response media types.
+
+
+
+void
+ClientRequestContext. setEntity (Object entity,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Set a new message entity, including the attached annotations and the media type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that return MediaType
+
+Modifier and Type
+Method
+Description
+
+
+
+MediaType
+HttpHeaders. getMediaType ()
+
+Get the media type of the request entity.
+
+
+
+abstract MediaType
+Response. getMediaType ()
+
+Get the media type of the message entity.
+
+
+
+MediaType
+Variant. getMediaType ()
+
+Get the media type of the variant.
+
+
+
+static MediaType
+MediaType. valueOf (String type)
+
+Creates a new instance of MediaType
by parsing the supplied string.
+
+
+
+MediaType
+MediaType. withCharset (String charset)
+
+Create a new MediaType
instance with the same type, subtype and parameters
+ copied from the original instance and the supplied parameter.
+
+
+
+
+
+
+
+Constructors in javax.ws.rs.core with parameters of type MediaType
+
+Constructor
+Description
+
+
+
+Variant (MediaType mediaType,
+ String language,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+Variant (MediaType mediaType,
+ String language,
+ String country,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+Variant (MediaType mediaType,
+ String language,
+ String country,
+ String languageVariant,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+Variant (MediaType mediaType,
+ Locale language,
+ String encoding)
+
+Create a new instance of Variant.
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.ext with parameters of type MediaType
+
+Modifier and Type
+Method
+Description
+
+
+
+<T> ContextResolver <T>
+Providers. getContextResolver (Class <T> contextType,
+ MediaType mediaType)
+
+Get a context resolver for a particular type of context and media type.
+
+
+
+<T> MessageBodyReader <T>
+Providers. getMessageBodyReader (Class <T> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Get a message body reader that matches a set of criteria.
+
+
+
+<T> MessageBodyWriter <T>
+Providers. getMessageBodyWriter (Class <T> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Get a message body writer that matches a set of criteria.
+
+
+
+default long
+MessageBodyWriter. getSize (T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Originally, the method has been called before writeTo
to ascertain the length in bytes of
+ the serialized form of t
.
+
+
+
+boolean
+MessageBodyReader. isReadable (Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Ascertain if the MessageBodyReader can produce an instance of a
+ particular type.
+
+
+
+boolean
+MessageBodyWriter. isWriteable (Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Ascertain if the MessageBodyWriter supports a particular type.
+
+
+
+T
+MessageBodyReader. readFrom (Class <T > type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,String > httpHeaders,
+ InputStream entityStream)
+
+
+
+
+
+void
+InterceptorContext. setMediaType (MediaType mediaType)
+
+Update media type of HTTP entity.
+
+
+
+void
+MessageBodyWriter. writeTo (T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,Object > httpHeaders,
+ OutputStream entityStream)
+
+Write a type to an HTTP message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MultivaluedHashMap.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MultivaluedHashMap.html
new file mode 100644
index 0000000000..8e7d75c0ec
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MultivaluedHashMap.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.MultivaluedHashMap (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.core.MultivaluedHashMap
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MultivaluedMap.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MultivaluedMap.html
new file mode 100644
index 0000000000..de7cc16e15
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/MultivaluedMap.html
@@ -0,0 +1,519 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.MultivaluedMap (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that return MultivaluedMap
+
+Modifier and Type
+Method
+Description
+
+
+
+MultivaluedMap <String ,String >
+Form. asMap ()
+
+Returns multivalued map representation of the form.
+
+
+
+MultivaluedMap <String ,Object >
+Response. getHeaders ()
+
+Get view of the response headers and their object values.
+
+
+
+MultivaluedMap <String ,String >
+PathSegment. getMatrixParameters ()
+
+Get a map of the matrix parameters associated with the path segment.
+
+
+
+abstract MultivaluedMap <String ,Object >
+Response. getMetadata ()
+
+
+
+
+
+MultivaluedMap <String ,String >
+UriInfo. getPathParameters ()
+
+Get the values of any embedded URI template parameters.
+
+
+
+MultivaluedMap <String ,String >
+UriInfo. getPathParameters (boolean decode)
+
+Get the values of any embedded URI template parameters.
+
+
+
+MultivaluedMap <String ,String >
+UriInfo. getQueryParameters ()
+
+Get the URI query parameters of the current request.
+
+
+
+MultivaluedMap <String ,String >
+UriInfo. getQueryParameters (boolean decode)
+
+Get the URI query parameters of the current request.
+
+
+
+MultivaluedMap <String ,String >
+HttpHeaders. getRequestHeaders ()
+
+Get the values of HTTP request headers.
+
+
+
+abstract MultivaluedMap <String ,String >
+Response. getStringHeaders ()
+
+Get view of the response headers and their string values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.ext with parameters of type MultivaluedMap
+
+Modifier and Type
+Method
+Description
+
+
+
+T
+MessageBodyReader. readFrom (Class <T > type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,String > httpHeaders,
+ InputStream entityStream)
+
+
+
+
+
+void
+MessageBodyWriter. writeTo (T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,Object > httpHeaders,
+ OutputStream entityStream)
+
+Write a type to an HTTP message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/NewCookie.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/NewCookie.html
new file mode 100644
index 0000000000..d7f606106f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/NewCookie.html
@@ -0,0 +1,290 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.NewCookie (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/NoContentException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/NoContentException.html
new file mode 100644
index 0000000000..56e0f861e6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/NoContentException.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.NoContentException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.core.NoContentException
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/PathSegment.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/PathSegment.html
new file mode 100644
index 0000000000..2d29108b09
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/PathSegment.html
@@ -0,0 +1,209 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.PathSegment (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use PathSegment
+
+Package
+Description
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Request.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Request.html
new file mode 100644
index 0000000000..7a83090ee3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Request.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.Request (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.ResponseBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.ResponseBuilder.html
new file mode 100644
index 0000000000..75036485f5
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.ResponseBuilder.html
@@ -0,0 +1,625 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Response.ResponseBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that return Response.ResponseBuilder
+
+Modifier and Type
+Method
+Description
+
+
+
+static Response.ResponseBuilder
+Response. accepted ()
+
+Create a new ResponseBuilder with an ACCEPTED status.
+
+
+
+static Response.ResponseBuilder
+Response. accepted (Object entity)
+
+Create a new ResponseBuilder with an ACCEPTED status that contains
+ a representation.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. allow (String ... methods)
+
+Set the list of allowed methods for the resource.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. allow (Set <String > methods)
+
+Set the list of allowed methods for the resource.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. cacheControl (CacheControl cacheControl)
+
+Set the cache control data of the message.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. clone ()
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. contentLocation (URI location)
+
+Set the content location.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. cookie (NewCookie ... cookies)
+
+Add cookies to the response message.
+
+
+
+static Response.ResponseBuilder
+Response. created (URI location)
+
+Create a new ResponseBuilder for a created resource, set the location
+ header using the supplied value.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. encoding (String encoding)
+
+Set the message entity content encoding.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. entity (Object entity)
+
+Set the response entity in the builder.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. entity (Object entity,
+ Annotation [] annotations)
+
+Set the response entity in the builder.
+
+
+
+Response.ResponseBuilder
+Request. evaluatePreconditions ()
+
+Evaluate request preconditions for a resource that does not currently
+ exist.
+
+
+
+Response.ResponseBuilder
+Request. evaluatePreconditions (Date lastModified)
+
+Evaluate request preconditions based on the passed in value.
+
+
+
+Response.ResponseBuilder
+Request. evaluatePreconditions (Date lastModified,
+ EntityTag eTag)
+
+Evaluate request preconditions based on the passed in value.
+
+
+
+Response.ResponseBuilder
+Request. evaluatePreconditions (EntityTag eTag)
+
+Evaluate request preconditions based on the passed in value.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. expires (Date expires)
+
+Set the response expiration date.
+
+
+
+static Response.ResponseBuilder
+Response. fromResponse (Response response)
+
+Create a new ResponseBuilder by performing a shallow copy of an
+ existing Response.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. header (String name,
+ Object value)
+
+Add an arbitrary header.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. language (String language)
+
+Set the message entity language.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. language (Locale language)
+
+Set the message entity language.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. lastModified (Date lastModified)
+
+Set the response entity last modification date.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. link (String uri,
+ String rel)
+
+Add a link header.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. link (URI uri,
+ String rel)
+
+Add a link header.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. links (Link ... links)
+
+Add one or more link headers.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. location (URI location)
+
+Set the location.
+
+
+
+protected static Response.ResponseBuilder
+Response.ResponseBuilder. newInstance ()
+
+Create a new builder instance.
+
+
+
+static Response.ResponseBuilder
+Response. noContent ()
+
+Create a new ResponseBuilder for an empty response.
+
+
+
+static Response.ResponseBuilder
+Response. notAcceptable (List <Variant > variants)
+
+Create a new ResponseBuilder for a not acceptable response.
+
+
+
+static Response.ResponseBuilder
+Response. notModified ()
+
+Create a new ResponseBuilder with a not-modified status.
+
+
+
+static Response.ResponseBuilder
+Response. notModified (String tag)
+
+Create a new ResponseBuilder with a not-modified status
+ and a strong entity tag.
+
+
+
+static Response.ResponseBuilder
+Response. notModified (EntityTag tag)
+
+Create a new ResponseBuilder with a not-modified status.
+
+
+
+static Response.ResponseBuilder
+Response. ok ()
+
+Create a new ResponseBuilder with an OK status.
+
+
+
+static Response.ResponseBuilder
+Response. ok (Object entity)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+static Response.ResponseBuilder
+Response. ok (Object entity,
+ String type)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+static Response.ResponseBuilder
+Response. ok (Object entity,
+ MediaType type)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+static Response.ResponseBuilder
+Response. ok (Object entity,
+ Variant variant)
+
+Create a new ResponseBuilder that contains a representation.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. replaceAll (MultivaluedMap <String ,Object > headers)
+
+Replaces all existing headers with the newly supplied headers.
+
+
+
+static Response.ResponseBuilder
+Response. seeOther (URI location)
+
+Create a new ResponseBuilder for a redirection.
+
+
+
+static Response.ResponseBuilder
+Response. serverError ()
+
+Create a new ResponseBuilder with an server error status.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. status (int status)
+
+Set the status on the ResponseBuilder.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. status (int status,
+ String reasonPhrase)
+
+Set the status on the ResponseBuilder.
+
+
+
+Response.ResponseBuilder
+Response.ResponseBuilder. status (Response.Status status)
+
+Set the status on the ResponseBuilder.
+
+
+
+Response.ResponseBuilder
+Response.ResponseBuilder. status (Response.StatusType status)
+
+Set the status on the ResponseBuilder.
+
+
+
+static Response.ResponseBuilder
+Response. status (int status)
+
+Create a new ResponseBuilder with the supplied status.
+
+
+
+static Response.ResponseBuilder
+Response. status (int status,
+ String reasonPhrase)
+
+Create a new ResponseBuilder with the supplied status and reason phrase.
+
+
+
+static Response.ResponseBuilder
+Response. status (Response.Status status)
+
+Create a new ResponseBuilder with the supplied status.
+
+
+
+static Response.ResponseBuilder
+Response. status (Response.StatusType status)
+
+Create a new ResponseBuilder with the supplied status.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. tag (String tag)
+
+Set a strong response entity tag.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. tag (EntityTag tag)
+
+Set a response entity tag.
+
+
+
+static Response.ResponseBuilder
+Response. temporaryRedirect (URI location)
+
+Create a new ResponseBuilder for a temporary redirection.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. type (String type)
+
+Set the message entity media type.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. type (MediaType type)
+
+Set the message entity media type.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. variant (Variant variant)
+
+Set message entity representation metadata.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. variants (List <Variant > variants)
+
+Add a Vary header that lists the available variants.
+
+
+
+abstract Response.ResponseBuilder
+Response.ResponseBuilder. variants (Variant ... variants)
+
+Add a Vary header that lists the available variants.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.Status.Family.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.Status.Family.html
new file mode 100644
index 0000000000..188ff569f3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.Status.Family.html
@@ -0,0 +1,229 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Response.Status.Family (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.Status.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.Status.html
new file mode 100644
index 0000000000..3ead02e801
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.Status.html
@@ -0,0 +1,368 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Response.Status (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use Response.Status
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+Constructors in javax.ws.rs with parameters of type Response.Status
+
+Constructor
+Description
+
+
+
+ClientErrorException (String message,
+ Response.Status status)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ Response.Status status,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response.Status status)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response.Status status,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+RedirectionException (String message,
+ Response.Status status,
+ URI location)
+
+Construct a new redirection exception.
+
+
+
+RedirectionException (Response.Status status,
+ URI location)
+
+Construct a new redirection exception.
+
+
+
+ServerErrorException (String message,
+ Response.Status status)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ Response.Status status,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response.Status status)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response.Status status,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+WebApplicationException (String message,
+ Throwable cause,
+ Response.Status status)
+
+Construct a new instance with a the supplied message, root cause and HTTP status code.
+
+
+
+WebApplicationException (String message,
+ Response.Status status)
+
+Construct a new instance with the supplied message and HTTP status.
+
+
+
+WebApplicationException (Throwable cause,
+ Response.Status status)
+
+Construct a new instance with the supplied root cause, HTTP status code
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (Response.Status status)
+
+Construct a new instance with the supplied HTTP status
+ and a default message generated from the HTTP status code and the associated HTTP status reason phrase.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.StatusType.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.StatusType.html
new file mode 100644
index 0000000000..ce9b3695ba
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.StatusType.html
@@ -0,0 +1,335 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.Response.StatusType (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.html
new file mode 100644
index 0000000000..a19eea95f8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Response.html
@@ -0,0 +1,967 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Response (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use Response
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.client
+
+The Client API
+
+
+
+javax.ws.rs.container
+
+Container-specific API.
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructors in javax.ws.rs with parameters of type Response
+
+Constructor
+Description
+
+
+
+BadRequestException (String message,
+ Response response)
+
+Construct a new bad client request exception.
+
+
+
+BadRequestException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new bad client request exception.
+
+
+
+BadRequestException (Response response)
+
+Construct a new bad client request exception.
+
+
+
+BadRequestException (Response response,
+ Throwable cause)
+
+Construct a new bad client request exception.
+
+
+
+ClientErrorException (String message,
+ Response response)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response response)
+
+Construct a new client error exception.
+
+
+
+ClientErrorException (Response response,
+ Throwable cause)
+
+Construct a new client error exception.
+
+
+
+ForbiddenException (String message,
+ Response response)
+
+Construct a new "forbidden" exception.
+
+
+
+ForbiddenException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new "forbidden" exception.
+
+
+
+ForbiddenException (Response response)
+
+Construct a new "forbidden" exception.
+
+
+
+ForbiddenException (Response response,
+ Throwable cause)
+
+Construct a new "forbidden" exception.
+
+
+
+InternalServerErrorException (String message,
+ Response response)
+
+Construct a new internal server error exception.
+
+
+
+InternalServerErrorException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new internal server error exception.
+
+
+
+InternalServerErrorException (Response response)
+
+Construct a new internal server error exception.
+
+
+
+InternalServerErrorException (Response response,
+ Throwable cause)
+
+Construct a new internal server error exception.
+
+
+
+NotAcceptableException (String message,
+ Response response)
+
+Construct a new "request not acceptable" exception.
+
+
+
+NotAcceptableException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new "request not acceptable" exception.
+
+
+
+NotAcceptableException (Response response)
+
+Construct a new "request not acceptable" exception.
+
+
+
+NotAcceptableException (Response response,
+ Throwable cause)
+
+Construct a new "request not acceptable" exception.
+
+
+
+NotAllowedException (String message,
+ Response response)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (Response response)
+
+Construct a new method not allowed exception.
+
+
+
+NotAllowedException (Response response,
+ Throwable cause)
+
+Construct a new method not allowed exception.
+
+
+
+NotAuthorizedException (String message,
+ Response response)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (Response response)
+
+Construct a new "not authorized" exception.
+
+
+
+NotAuthorizedException (Response response,
+ Throwable cause)
+
+Construct a new "not authorized" exception.
+
+
+
+NotFoundException (String message,
+ Response response)
+
+Construct a new "not found" exception.
+
+
+
+NotFoundException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new "not found" exception.
+
+
+
+NotFoundException (Response response)
+
+Construct a new "not found" exception.
+
+
+
+NotFoundException (Response response,
+ Throwable cause)
+
+Construct a new "not found" exception.
+
+
+
+NotSupportedException (String message,
+ Response response)
+
+Construct a new unsupported media type exception.
+
+
+
+NotSupportedException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new unsupported media type exception.
+
+
+
+NotSupportedException (Response response)
+
+Construct a new unsupported media type exception.
+
+
+
+NotSupportedException (Response response,
+ Throwable cause)
+
+Construct a new unsupported media type exception.
+
+
+
+RedirectionException (String message,
+ Response response)
+
+Construct a new redirection exception.
+
+
+
+RedirectionException (Response response)
+
+Construct a new redirection exception.
+
+
+
+ServerErrorException (String message,
+ Response response)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response response)
+
+Construct a new server error exception.
+
+
+
+ServerErrorException (Response response,
+ Throwable cause)
+
+Construct a new server error exception.
+
+
+
+ServiceUnavailableException (String message,
+ Response response)
+
+Construct a new "service unavailable" exception.
+
+
+
+ServiceUnavailableException (String message,
+ Response response,
+ Throwable cause)
+
+Construct a new "service unavailable" exception.
+
+
+
+ServiceUnavailableException (Response response)
+
+Construct a new "service unavailable" exception.
+
+
+
+ServiceUnavailableException (Response response,
+ Throwable cause)
+
+Construct a new "service unavailable" exception.
+
+
+
+WebApplicationException (String message,
+ Throwable cause,
+ Response response)
+
+Construct a new instance with the supplied message, root cause and response.
+
+
+
+WebApplicationException (String message,
+ Response response)
+
+Construct a new instance using the supplied message and response.
+
+
+
+WebApplicationException (Throwable cause,
+ Response response)
+
+Construct a new instance with the supplied root cause, response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+
+
+WebApplicationException (Response response)
+
+Construct a new instance using the supplied response
+ and a default message generated from the response's HTTP status code and the associated HTTP status reason phrase.
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client that return Response
+
+Modifier and Type
+Method
+Description
+
+
+
+Response
+SyncInvoker. delete ()
+
+Invoke HTTP DELETE method for the current request synchronously.
+
+
+
+Response
+SyncInvoker. get ()
+
+Invoke HTTP GET method for the current request synchronously.
+
+
+
+Response
+ResponseProcessingException. getResponse ()
+
+Get the HTTP response for which the processing has failed.
+
+
+
+Response
+SyncInvoker. head ()
+
+Invoke HTTP HEAD method for the current request synchronously.
+
+
+
+Response
+Invocation. invoke ()
+
+Synchronously invoke the request and receive a response back.
+
+
+
+Response
+SyncInvoker. method (String name)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+Response
+SyncInvoker. method (String name,
+ Entity <?> entity)
+
+Invoke an arbitrary method for the current request synchronously.
+
+
+
+Response
+SyncInvoker. options ()
+
+Invoke HTTP OPTIONS method for the current request synchronously.
+
+
+
+Response
+SyncInvoker. post (Entity <?> entity)
+
+Invoke HTTP POST method for the current request synchronously.
+
+
+
+Response
+SyncInvoker. put (Entity <?> entity)
+
+Invoke HTTP PUT method for the current request synchronously.
+
+
+
+Response
+SyncInvoker. trace ()
+
+Invoke HTTP TRACE method for the current request synchronously.
+
+
+
+
+
+
+Methods in javax.ws.rs.client with parameters of type Response
+
+Modifier and Type
+Method
+Description
+
+
+
+void
+ClientRequestContext. abortWith (Response response)
+
+Abort the filter chain with a response.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that return Response
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract Response
+Response.ResponseBuilder. build ()
+
+Create a Response instance from the current ResponseBuilder.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/SecurityContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/SecurityContext.html
new file mode 100644
index 0000000000..3997004294
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/SecurityContext.html
@@ -0,0 +1,216 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.SecurityContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/StreamingOutput.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/StreamingOutput.html
new file mode 100644
index 0000000000..e256854124
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/StreamingOutput.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.StreamingOutput (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.core.StreamingOutput
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriBuilder.html
new file mode 100644
index 0000000000..8744921b29
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriBuilder.html
@@ -0,0 +1,585 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.UriBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use UriBuilder
+
+Package
+Description
+
+
+
+javax.ws.rs.client
+
+The Client API
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that return UriBuilder
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract UriBuilder
+UriBuilder. clone ()
+
+Create a copy of the UriBuilder preserving its state.
+
+
+
+abstract UriBuilder
+UriBuilder. fragment (String fragment)
+
+Set the URI fragment.
+
+
+
+static UriBuilder
+UriBuilder. fromLink (Link link)
+
+Create a new instance initialized from a Link.
+
+
+
+static UriBuilder
+UriBuilder. fromMethod (Class <?> resource,
+ String method)
+
+Create a new instance representing a relative URI initialized from a
+
Path
-annotated method.
+
+
+
+static UriBuilder
+UriBuilder. fromPath (String path)
+
+Create a new instance representing a relative URI initialized from a
+ URI path.
+
+
+
+static UriBuilder
+UriBuilder. fromResource (Class <?> resource)
+
+Create a new instance representing a relative URI initialized from a
+ root resource class.
+
+
+
+static UriBuilder
+UriBuilder. fromUri (String uriTemplate)
+
+Create a new instance initialized from an existing URI.
+
+
+
+static UriBuilder
+UriBuilder. fromUri (URI uri)
+
+Create a new instance initialized from an existing URI.
+
+
+
+UriBuilder
+UriInfo. getAbsolutePathBuilder ()
+
+Get the absolute path of the request in the form of a UriBuilder.
+
+
+
+UriBuilder
+UriInfo. getBaseUriBuilder ()
+
+Get the base URI of the application in the form of a UriBuilder.
+
+
+
+UriBuilder
+UriInfo. getRequestUriBuilder ()
+
+Get the absolute request URI in the form of a UriBuilder.
+
+
+
+abstract UriBuilder
+Link. getUriBuilder ()
+
+Convenience method that returns a
UriBuilder
+ initialized with this link's underlying URI.
+
+
+
+abstract UriBuilder
+UriBuilder. host (String host)
+
+Set the URI host.
+
+
+
+abstract UriBuilder
+UriBuilder. matrixParam (String name,
+ Object ... values)
+
+Append a matrix parameter to the existing set of matrix parameters of
+ the current final segment of the URI path.
+
+
+
+protected static UriBuilder
+UriBuilder. newInstance ()
+
+Creates a new instance of UriBuilder.
+
+
+
+abstract UriBuilder
+UriBuilder. path (Class resource)
+
+Append the path from a Path-annotated class to the
+ existing path.
+
+
+
+abstract UriBuilder
+UriBuilder. path (Class resource,
+ String method)
+
+Append the path from a Path-annotated method to the
+ existing path.
+
+
+
+abstract UriBuilder
+UriBuilder. path (Method method)
+
+Append the path from a
Path
-annotated method to the
+ existing path.
+
+
+
+abstract UriBuilder
+UriBuilder. path (String path)
+
+Append path to the existing path.
+
+
+
+abstract UriBuilder
+UriBuilder. port (int port)
+
+Set the URI port.
+
+
+
+abstract UriBuilder
+UriBuilder. queryParam (String name,
+ Object ... values)
+
+Append a query parameter to the existing set of query parameters.
+
+
+
+abstract UriBuilder
+UriBuilder. replaceMatrix (String matrix)
+
+Set the matrix parameters of the current final segment of the current URI path.
+
+
+
+abstract UriBuilder
+UriBuilder. replaceMatrixParam (String name,
+ Object ... values)
+
+Replace the existing value(s) of a matrix parameter on
+ the current final segment of the URI path.
+
+
+
+abstract UriBuilder
+UriBuilder. replacePath (String path)
+
+Set the URI path.
+
+
+
+abstract UriBuilder
+UriBuilder. replaceQuery (String query)
+
+Set the URI query string.
+
+
+
+abstract UriBuilder
+UriBuilder. replaceQueryParam (String name,
+ Object ... values)
+
+Replace the existing value(s) of a query parameter.
+
+
+
+abstract UriBuilder
+UriBuilder. resolveTemplate (String name,
+ Object value)
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied value.
+
+
+
+abstract UriBuilder
+UriBuilder. resolveTemplate (String name,
+ Object value,
+ boolean encodeSlashInPath)
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied value.
+
+
+
+abstract UriBuilder
+UriBuilder. resolveTemplateFromEncoded (String name,
+ Object value)
+
+Resolve a URI template with a given name
in this UriBuilder
instance
+ using a supplied encoded value.
+
+
+
+abstract UriBuilder
+UriBuilder. resolveTemplates (Map <String ,Object > templateValues)
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+
+
+abstract UriBuilder
+UriBuilder. resolveTemplates (Map <String ,Object > templateValues,
+ boolean encodeSlashInPath)
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+
+
+abstract UriBuilder
+UriBuilder. resolveTemplatesFromEncoded (Map <String ,Object > templateValues)
+
+Resolve one or more URI templates in this UriBuilder
instance using supplied
+ name-value pairs.
+
+
+
+abstract UriBuilder
+UriBuilder. scheme (String scheme)
+
+Set the URI scheme.
+
+
+
+abstract UriBuilder
+UriBuilder. schemeSpecificPart (String ssp)
+
+Set the URI scheme-specific-part (see
URI
).
+
+
+
+abstract UriBuilder
+UriBuilder. segment (String ... segments)
+
+Append path segments to the existing path.
+
+
+
+abstract UriBuilder
+UriBuilder. uri (String uriTemplate)
+
+Parses the uriTemplate
string and copies the parsed components of the supplied
+ URI to the UriBuilder replacing any existing values for those components.
+
+
+
+abstract UriBuilder
+UriBuilder. uri (URI uri)
+
+Copies the non-null components of the supplied URI to the UriBuilder replacing
+ any existing values for those components.
+
+
+
+abstract UriBuilder
+UriBuilder. userInfo (String ui)
+
+Set the URI user-info.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriBuilderException.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriBuilderException.html
new file mode 100644
index 0000000000..147c6fe2fb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriBuilderException.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.UriBuilderException (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use UriBuilderException
+
+Package
+Description
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that throw UriBuilderException
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract URI
+UriBuilder. build (Object ... values)
+
+Build a URI, using the supplied values in order to replace any URI
+ template parameters.
+
+
+
+abstract URI
+UriBuilder. build (Object [] values,
+ boolean encodeSlashInPath)
+
+Build a URI, using the supplied values in order to replace any URI
+ template parameters.
+
+
+
+abstract URI
+UriBuilder. buildFromEncoded (Object ... values)
+
+Build a URI.
+
+
+
+abstract URI
+UriBuilder. buildFromEncodedMap (Map <String ,?> values)
+
+Build a URI.
+
+
+
+abstract URI
+UriBuilder. buildFromMap (Map <String ,?> values,
+ boolean encodeSlashInPath)
+
+Build a URI.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriInfo.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriInfo.html
new file mode 100644
index 0000000000..2f437192bb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/UriInfo.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.core.UriInfo (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Variant.VariantListBuilder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Variant.VariantListBuilder.html
new file mode 100644
index 0000000000..fc801d5ff2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Variant.VariantListBuilder.html
@@ -0,0 +1,281 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Variant.VariantListBuilder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Variant.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Variant.html
new file mode 100644
index 0000000000..a5920d16c0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/class-use/Variant.html
@@ -0,0 +1,338 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.core.Variant (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use Variant
+
+Package
+Description
+
+
+
+javax.ws.rs.client
+
+The Client API
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.client with parameters of type Variant
+
+Modifier and Type
+Method
+Description
+
+
+
+static <T> Entity <T>
+Entity. entity (T entity,
+ Variant variant)
+
+Create an entity using a supplied content media type.
+
+
+
+static <T> Entity <T>
+Entity. entity (T entity,
+ Variant variant,
+ Annotation [] annotations)
+
+Create an entity using a supplied content media type.
+
+
+
+
+
+
+
+
+
+
+
+Methods in javax.ws.rs.core that return types with arguments of type Variant
+
+Modifier and Type
+Method
+Description
+
+
+
+abstract List <Variant >
+Variant.VariantListBuilder. build ()
+
+Add the current combination of metadata to the list of supported variants
+ (provided the current combination of metadata is not empty) and
+ build a list of representation variants from the current state of
+ the builder.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-frame.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-frame.html
new file mode 100644
index 0000000000..8591621085
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-frame.html
@@ -0,0 +1,77 @@
+
+
+
+
+
+javax.ws.rs.core (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Interfaces
+
+
Classes
+
+
Enums
+
+
Exceptions
+
+
Annotation Types
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-summary.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-summary.html
new file mode 100644
index 0000000000..dd10aeece4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-summary.html
@@ -0,0 +1,457 @@
+
+
+
+
+
+javax.ws.rs.core (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+Configurable <C extends Configurable >
+
+Represents a client or server-side configurable context.
+
+
+
+Configuration
+
+A configuration state associated with a
configurable
context.
+
+
+
+Feature
+
+A feature extension contract.
+
+
+
+FeatureContext
+
+A configurable context passed to
Feature
and
DynamicFeature
+ instances by the runtime during the phase of their configuration.
+
+
+
+HttpHeaders
+
+An injectable interface that provides access to HTTP header information.
+
+
+
+Link.Builder
+
+Builder class for hypermedia links.
+
+
+
+MultivaluedMap <K,V>
+
+A map of key-values pairs.
+
+
+
+PathSegment
+
+Represents a URI path segment and any associated matrix parameters.
+
+
+
+Request
+
+An injectable helper for request processing, all methods throw an
+
IllegalStateException
if called outside the scope of a request
+ (e.g.
+
+
+
+Response.StatusType
+
+Base interface for statuses used in responses.
+
+
+
+SecurityContext
+
+An injectable interface that provides access to security related
+ information.
+
+
+
+StreamingOutput
+
+A type that may be used as a resource method return value or as the entity
+ in a
Response
when the application wishes to stream the output.
+
+
+
+UriInfo
+
+An injectable interface that provides access to application and request
+ URI information.
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+AbstractMultivaluedMap <K,V>
+
+
+
+
+
+Application
+
+Defines the components of an application and supplies additional
+ meta-data.
+
+
+
+CacheControl
+
+An abstraction for the value of a HTTP Cache-Control response header.
+
+
+
+Cookie
+
+Represents the value of a HTTP cookie, transferred in a request.
+
+
+
+EntityTag
+
+An abstraction for the value of a HTTP Entity Tag, used as the value
+ of an ETag response header.
+
+
+
+Form
+
+Represents the the HTML form data request entity encoded using the
+ "application/x-www-form-urlencoded"
content type.
+
+
+
+GenericEntity <T>
+
+Represents a message entity of a generic type T
.
+
+
+
+GenericType <T>
+
+Represents a generic message entity type T
.
+
+
+
+Link
+
+Class representing hypermedia links.
+
+
+
+Link.JaxbAdapter
+
+An implementation of JAXB
XmlAdapter
+ that maps the
Link
type to a value that can be
+ marshalled and unmarshalled by JAXB.
+
+
+
+Link.JaxbLink
+
+Value type for
Link
that can be marshalled and
+ unmarshalled by JAXB.
+
+
+
+MediaType
+
+An abstraction for a media type.
+
+
+
+MultivaluedHashMap <K,V>
+
+
+
+
+
+NewCookie
+
+Used to create a new HTTP cookie, transferred in a response.
+
+
+
+Response
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+
+
+Response.ResponseBuilder
+
+A class used to build Response instances that contain metadata instead
+ of or in addition to an entity.
+
+
+
+UriBuilder
+
+URI template-aware utility class for building URIs from their components.
+
+
+
+Variant
+
+Abstraction for a resource representation variant.
+
+
+
+Variant.VariantListBuilder
+
+A builder for a list of representation variants.
+
+
+
+
+
+
+
+
+
+
+Exception Summary
+
+Exception
+Description
+
+
+
+NoContentException
+
+An I/O exception thrown by
MessageBodyReader
implementations
+ when reading a zero-length message content to indicate that the message body reader
+ is not able to produce an instance representing an zero-length message content.
+
+
+
+UriBuilderException
+
+
+
+
+
+
+
+
+
+Annotation Types Summary
+
+Annotation Type
+Description
+
+
+
+Context
+
+This annotation is used to inject information into a class
+ field, bean property or method parameter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-tree.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-tree.html
new file mode 100644
index 0000000000..1a2c36ace4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-tree.html
@@ -0,0 +1,252 @@
+
+
+
+
+
+javax.ws.rs.core Class Hierarchy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Class Hierarchy
+
+
Interface Hierarchy
+
+
Annotation Type Hierarchy
+
+
Enum Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-use.html b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-use.html
new file mode 100644
index 0000000000..5dcbd1d131
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/core/package-use.html
@@ -0,0 +1,712 @@
+
+
+
+
+
+Uses of Package javax.ws.rs.core (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs.core used by javax.ws.rs
+
+Class
+Description
+
+
+
+Response
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+
+
+Response.Status
+
+
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs.core used by javax.ws.rs.client
+
+Class
+Description
+
+
+
+CacheControl
+
+An abstraction for the value of a HTTP Cache-Control response header.
+
+
+
+Configurable
+
+Represents a client or server-side configurable context.
+
+
+
+Configuration
+
+A configuration state associated with a
configurable
context.
+
+
+
+Cookie
+
+Represents the value of a HTTP cookie, transferred in a request.
+
+
+
+EntityTag
+
+An abstraction for the value of a HTTP Entity Tag, used as the value
+ of an ETag response header.
+
+
+
+Form
+
+Represents the the HTML form data request entity encoded using the
+ "application/x-www-form-urlencoded"
content type.
+
+
+
+GenericType
+
+Represents a generic message entity type T
.
+
+
+
+Link
+
+Class representing hypermedia links.
+
+
+
+Link.Builder
+
+Builder class for hypermedia links.
+
+
+
+MediaType
+
+An abstraction for a media type.
+
+
+
+MultivaluedMap
+
+A map of key-values pairs.
+
+
+
+NewCookie
+
+Used to create a new HTTP cookie, transferred in a response.
+
+
+
+Response
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+
+
+Response.StatusType
+
+Base interface for statuses used in responses.
+
+
+
+UriBuilder
+
+URI template-aware utility class for building URIs from their components.
+
+
+
+Variant
+
+Abstraction for a resource representation variant.
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs.core used by javax.ws.rs.container
+
+Class
+Description
+
+
+
+Cookie
+
+Represents the value of a HTTP cookie, transferred in a request.
+
+
+
+EntityTag
+
+An abstraction for the value of a HTTP Entity Tag, used as the value
+ of an ETag response header.
+
+
+
+FeatureContext
+
+A configurable context passed to
Feature
and
DynamicFeature
+ instances by the runtime during the phase of their configuration.
+
+
+
+Link
+
+Class representing hypermedia links.
+
+
+
+Link.Builder
+
+Builder class for hypermedia links.
+
+
+
+MediaType
+
+An abstraction for a media type.
+
+
+
+MultivaluedMap
+
+A map of key-values pairs.
+
+
+
+NewCookie
+
+Used to create a new HTTP cookie, transferred in a response.
+
+
+
+Request
+
+An injectable helper for request processing, all methods throw an
+
IllegalStateException
if called outside the scope of a request
+ (e.g.
+
+
+
+Response
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+
+
+Response.StatusType
+
+Base interface for statuses used in responses.
+
+
+
+SecurityContext
+
+An injectable interface that provides access to security related
+ information.
+
+
+
+UriInfo
+
+An injectable interface that provides access to application and request
+ URI information.
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs.core used by javax.ws.rs.core
+
+Class
+Description
+
+
+
+AbstractMultivaluedMap
+
+
+
+
+
+CacheControl
+
+An abstraction for the value of a HTTP Cache-Control response header.
+
+
+
+Configurable
+
+Represents a client or server-side configurable context.
+
+
+
+Configuration
+
+A configuration state associated with a
configurable
context.
+
+
+
+Cookie
+
+Represents the value of a HTTP cookie, transferred in a request.
+
+
+
+EntityTag
+
+An abstraction for the value of a HTTP Entity Tag, used as the value
+ of an ETag response header.
+
+
+
+Feature
+
+A feature extension contract.
+
+
+
+FeatureContext
+
+A configurable context passed to
Feature
and
DynamicFeature
+ instances by the runtime during the phase of their configuration.
+
+
+
+Form
+
+Represents the the HTML form data request entity encoded using the
+ "application/x-www-form-urlencoded"
content type.
+
+
+
+GenericType
+
+Represents a generic message entity type T
.
+
+
+
+Link
+
+Class representing hypermedia links.
+
+
+
+Link.Builder
+
+Builder class for hypermedia links.
+
+
+
+Link.JaxbLink
+
+Value type for
Link
that can be marshalled and
+ unmarshalled by JAXB.
+
+
+
+MediaType
+
+An abstraction for a media type.
+
+
+
+MultivaluedMap
+
+A map of key-values pairs.
+
+
+
+NewCookie
+
+Used to create a new HTTP cookie, transferred in a response.
+
+
+
+PathSegment
+
+Represents a URI path segment and any associated matrix parameters.
+
+
+
+Response
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+
+
+Response.ResponseBuilder
+
+A class used to build Response instances that contain metadata instead
+ of or in addition to an entity.
+
+
+
+Response.Status
+
+
+
+
+
+Response.Status.Family
+
+An enumeration representing the class of status code.
+
+
+
+Response.StatusType
+
+Base interface for statuses used in responses.
+
+
+
+UriBuilder
+
+URI template-aware utility class for building URIs from their components.
+
+
+
+UriBuilderException
+
+
+
+
+
+Variant
+
+Abstraction for a resource representation variant.
+
+
+
+Variant.VariantListBuilder
+
+A builder for a list of representation variants.
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs.core used by javax.ws.rs.ext
+
+Class
+Description
+
+
+
+Application
+
+Defines the components of an application and supplies additional
+ meta-data.
+
+
+
+Link.Builder
+
+Builder class for hypermedia links.
+
+
+
+MediaType
+
+An abstraction for a media type.
+
+
+
+MultivaluedMap
+
+A map of key-values pairs.
+
+
+
+Response
+
+Defines the contract between a returned instance and the runtime when
+ an application needs to provide meta-data to the runtime.
+
+
+
+Response.ResponseBuilder
+
+A class used to build Response instances that contain metadata instead
+ of or in addition to an entity.
+
+
+
+UriBuilder
+
+URI template-aware utility class for building URIs from their components.
+
+
+
+Variant.VariantListBuilder
+
+A builder for a list of representation variants.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ContextResolver.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ContextResolver.html
new file mode 100644
index 0000000000..d731144b46
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ContextResolver.html
@@ -0,0 +1,291 @@
+
+
+
+
+
+ContextResolver (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ExceptionMapper.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ExceptionMapper.html
new file mode 100644
index 0000000000..7644963eb9
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ExceptionMapper.html
@@ -0,0 +1,285 @@
+
+
+
+
+
+ExceptionMapper (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/InterceptorContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/InterceptorContext.html
new file mode 100644
index 0000000000..d1e9dab7cc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/InterceptorContext.html
@@ -0,0 +1,594 @@
+
+
+
+
+
+InterceptorContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+Annotation []
+getAnnotations ()
+
+Get an array of the annotations formally declared on the artifact that
+ initiated the intercepted entity provider invocation.
+
+
+
+Type
+getGenericType ()
+
+Get the type of the object to be produced or written.
+
+
+
+MediaType
+getMediaType ()
+
+Get media type of HTTP entity.
+
+
+
+Object
+getProperty (String name)
+
+Returns the property with the given name registered in the current request/response
+ exchange context, or null
if there is no property by that name.
+
+
+
+Collection <String >
+getPropertyNames ()
+
+Returns an immutable
collection
containing the property
+ names available within the context of the current request/response exchange context.
+
+
+
+Class <?>
+getType ()
+
+Get Java type supported by corresponding message body provider.
+
+
+
+void
+removeProperty (String name)
+
+Removes a property with the given name from the current request/response
+ exchange context.
+
+
+
+void
+setAnnotations (Annotation [] annotations)
+
+Update annotations on the formal declaration of the artifact that
+ initiated the intercepted entity provider invocation.
+
+
+
+void
+setGenericType (Type genericType)
+
+Update type of the object to be produced or written.
+
+
+
+void
+setMediaType (MediaType mediaType)
+
+Update media type of HTTP entity.
+
+
+
+void
+setProperty (String name,
+ Object object)
+
+Binds an object to a given property name in the current request/response
+ exchange context.
+
+
+
+void
+setType (Class <?> type)
+
+Update Java type before calling message body provider.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+setAnnotations
+void setAnnotations(Annotation [] annotations)
+Update annotations on the formal declaration of the artifact that
+ initiated the intercepted entity provider invocation.
+
+ Calling this method has no effect in the client API.
+
+Parameters:
+annotations
- updated annotations declarataion of the artifact that
+ initiated the intercepted entity provider invocation.
+ Must not be null
.
+Throws:
+NullPointerException
- in case the input parameter is null
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/MessageBodyReader.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/MessageBodyReader.html
new file mode 100644
index 0000000000..9038754fac
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/MessageBodyReader.html
@@ -0,0 +1,381 @@
+
+
+
+
+
+MessageBodyReader (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+isReadable
+boolean isReadable(Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+Ascertain if the MessageBodyReader can produce an instance of a
+ particular type. The
type
parameter gives the
+ class of the instance that should be produced, the
genericType
parameter
+ gives the
java.lang.reflect.Type
of the instance
+ that should be produced.
+ E.g. if the instance to be produced is
List<String>
, the
type
parameter
+ will be
java.util.List
and the
genericType
parameter will be
+
java.lang.reflect.ParameterizedType
.
+
+Parameters:
+type
- the class of instance to be produced.
+genericType
- the type of instance to be produced. E.g. if the
+ message body is to be converted into a method parameter, this will be
+ the formal type of the method parameter as returned by
+ Method.getGenericParameterTypes
.
+annotations
- an array of the annotations on the declaration of the
+ artifact that will be initialized with the produced instance. E.g. if the
+ message body is to be converted into a method parameter, this will be
+ the annotations on that parameter returned by
+ Method.getParameterAnnotations
.
+mediaType
- the media type of the HTTP entity, if one is not
+ specified in the request then application/octet-stream
is
+ used.
+Returns:
+true
if the type is supported, otherwise false
.
+
+
+
+
+
+
+
+
+readFrom
+T readFrom(Class <T > type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,String > httpHeaders,
+ InputStream entityStream)
+ throws IOException ,
+ WebApplicationException
+Read a type from the
InputStream
.
+
+ In case the entity input stream is empty, the reader is expected to either return a
+ Java representation of a zero-length entity or throw a NoContentException
+ in case no zero-length entity representation is defined for the supported Java type.
+ A NoContentException
, if thrown by a message body reader while reading a server
+ request entity, is automatically translated by the server runtime into a BadRequestException
+ wrapping the original NoContentException
and rethrown for a standard processing by
+ the registered exception mappers
.
+
+
+Parameters:
+type
- the type that is to be read from the entity stream.
+genericType
- the type of instance to be produced. E.g. if the
+ message body is to be converted into a method parameter, this will be
+ the formal type of the method parameter as returned by
+ Method.getGenericParameterTypes
.
+annotations
- an array of the annotations on the declaration of the
+ artifact that will be initialized with the produced instance. E.g.
+ if the message body is to be converted into a method parameter, this
+ will be the annotations on that parameter returned by
+ Method.getParameterAnnotations
.
+mediaType
- the media type of the HTTP entity.
+httpHeaders
- the read-only HTTP headers associated with HTTP entity.
+entityStream
- the InputStream
of the HTTP entity. The
+ caller is responsible for ensuring that the input stream ends when the
+ entity has been consumed. The implementation should not close the input
+ stream.
+Returns:
+the type that was read from the stream. In case the entity input stream is empty, the reader
+ is expected to either return an instance representing a zero-length entity or throw
+ a NoContentException
in case no zero-length entity representation is
+ defined for the supported Java type.
+Throws:
+IOException
- if an IO error arises. In case the entity input stream is empty
+ and the reader is not able to produce a Java representation for
+ a zero-length entity, NoContentException
is expected to
+ be thrown.
+WebApplicationException
- if a specific HTTP error response needs to be produced.
+ Only effective if thrown prior to the response being committed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/MessageBodyWriter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/MessageBodyWriter.html
new file mode 100644
index 0000000000..1f3fd2904f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/MessageBodyWriter.html
@@ -0,0 +1,396 @@
+
+
+
+
+
+MessageBodyWriter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods Default Methods
+
+Modifier and Type
+Method
+Description
+
+
+default long
+getSize (T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Originally, the method has been called before writeTo
to ascertain the length in bytes of
+ the serialized form of t
.
+
+
+
+boolean
+isWriteable (Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+
+Ascertain if the MessageBodyWriter supports a particular type.
+
+
+
+void
+writeTo (T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,Object > httpHeaders,
+ OutputStream entityStream)
+
+Write a type to an HTTP message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+isWriteable
+boolean isWriteable(Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+Ascertain if the MessageBodyWriter supports a particular type.
+
+Parameters:
+type
- the class of instance that is to be written.
+genericType
- the type of instance to be written, obtained either
+ by reflection of a resource method return type or via inspection
+ of the returned instance. GenericEntity
+ provides a way to specify this information at runtime.
+annotations
- an array of the annotations attached to the message entity instance.
+mediaType
- the media type of the HTTP entity.
+Returns:
+true
if the type is supported, otherwise false
.
+
+
+
+
+
+
+
+
+
+
+getSize
+default long getSize(T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+Originally, the method has been called before
writeTo
to ascertain the length in bytes of
+ the serialized form of
t
. A non-negative return value has been used in a HTTP
+
Content-Length
header.
+
+ As of version 2.0 of this API, the method has been deprecated and the value returned by the method is ignored
+ by an API runtime. All MessageBodyWriter
implementations are advised to return -1
+ from the method. Responsibility to compute the actual Content-Length
header value has been
+ delegated to the runtime.
+
+
+Parameters:
+t
- the instance to write
+type
- the class of instance that is to be written.
+genericType
- the type of instance to be written. GenericEntity
+ provides a way to specify this information at runtime.
+annotations
- an array of the annotations attached to the message entity instance.
+mediaType
- the media type of the HTTP entity.
+Returns:
+length in bytes or -1 if the length cannot be determined in advance.
+
+
+
+
+
+
+
+
+
+
+writeTo
+void writeTo(T t,
+ Class <?> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType,
+ MultivaluedMap <String ,Object > httpHeaders,
+ OutputStream entityStream)
+ throws IOException ,
+ WebApplicationException
+Write a type to an HTTP message. The message header map is mutable
+ but any changes must be made before writing to the output stream since
+ the headers will be flushed prior to writing the message body.
+
+Parameters:
+t
- the instance to write.
+type
- the class of instance that is to be written.
+genericType
- the type of instance to be written. GenericEntity
+ provides a way to specify this information at runtime.
+annotations
- an array of the annotations attached to the message entity instance.
+mediaType
- the media type of the HTTP entity.
+httpHeaders
- a mutable map of the HTTP message headers.
+entityStream
- the OutputStream
for the HTTP entity. The
+ implementation should not close the output stream.
+Throws:
+IOException
- if an IO error arises.
+WebApplicationException
- if a specific HTTP error response needs to be produced.
+ Only effective if thrown prior to the message being committed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverter.Lazy.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverter.Lazy.html
new file mode 100644
index 0000000000..ff509cde74
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverter.Lazy.html
@@ -0,0 +1,203 @@
+
+
+
+
+
+ParamConverter.Lazy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverter.html
new file mode 100644
index 0000000000..3f9ec489eb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverter.html
@@ -0,0 +1,362 @@
+
+
+
+
+
+ParamConverter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Interface
+Description
+
+
+static interface
+ParamConverter.Lazy
+
+Mandates that a conversion of any
default value
delegated
+ to a
parameter converter
annotated with
@Lazy
+ annotation SHOULD occur only once the value is actually required (e.g.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverterProvider.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverterProvider.html
new file mode 100644
index 0000000000..f91f733713
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ParamConverterProvider.html
@@ -0,0 +1,290 @@
+
+
+
+
+
+ParamConverterProvider (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/Provider.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/Provider.html
new file mode 100644
index 0000000000..23fca85961
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/Provider.html
@@ -0,0 +1,203 @@
+
+
+
+
+
+Provider (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@Target (TYPE )
+@Retention (RUNTIME )
+@Documented
+public @interface Provider
+Marks an implementation of an extension interface that should be discoverable
+ by the runtime during a provider scanning phase.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Field |
+Required |
+Optional
+
+
+Detail:
+Field |
+Element
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/Providers.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/Providers.html
new file mode 100644
index 0000000000..c5b00c7be6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/Providers.html
@@ -0,0 +1,425 @@
+
+
+
+
+
+Providers (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getMessageBodyReader
+<T> MessageBodyReader <T> getMessageBodyReader(Class <T> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+Get a message body reader that matches a set of criteria. The set of
+ readers is first filtered by comparing the supplied value of
+
mediaType
with the value of each reader's
+
Consumes
, ensuring the supplied value of
+
type
is assignable to the generic type of the reader, and
+ eliminating those that do not match.
+ The list of matching readers is then ordered with those with the best
+ matching values of
Consumes
(x/y > x/* > */*)
+ sorted first. Finally, the
+
MessageBodyReader.isReadable(Class, Type, Annotation[], MediaType)
+ method is called on each reader in order using the supplied criteria and
+ the first reader that returns
true
is selected and returned.
+
+Type Parameters:
+T
- type of the the object that is to be read.
+Parameters:
+type
- the class of the object that is to be read.
+genericType
- the type of object to be produced. E.g. if the
+ message body is to be converted into a method parameter, this will be
+ the formal type of the method parameter as returned by
+ Class.getGenericParameterTypes
.
+annotations
- an array of the annotations on the declaration of the
+ artifact that will be initialized with the produced instance. E.g. if
+ the message body is to be converted into a method parameter, this will
+ be the annotations on that parameter returned by
+ Class.getParameterAnnotations
.
+mediaType
- the media type of the data that will be read.
+Returns:
+a MessageBodyReader that matches the supplied criteria or null
+ if none is found.
+
+
+
+
+
+
+
+
+getMessageBodyWriter
+<T> MessageBodyWriter <T> getMessageBodyWriter(Class <T> type,
+ Type genericType,
+ Annotation [] annotations,
+ MediaType mediaType)
+Get a message body writer that matches a set of criteria. The set of
+ writers is first filtered by comparing the supplied value of
+
mediaType
with the value of each writer's
+
Produces
, ensuring the supplied value of
+
type
is assignable to the generic type of the reader, and
+ eliminating those that do not match.
+ The list of matching writers is then ordered with those with the best
+ matching values of
Produces
(x/y > x/* > */*)
+ sorted first. Finally, the
+
MessageBodyWriter.isWriteable(Class, Type, Annotation[], MediaType)
+ method is called on each writer in order using the supplied criteria and
+ the first writer that returns
true
is selected and returned.
+
+Type Parameters:
+T
- type of the object that is to be written.
+Parameters:
+type
- the class of the object that is to be written.
+genericType
- the type of object to be written. E.g. if the
+ message body is to be produced from a field, this will be
+ the declared type of the field as returned by Field.getGenericType
.
+annotations
- an array of the annotations on the declaration of the
+ artifact that will be written. E.g. if the
+ message body is to be produced from a field, this will be
+ the annotations on that field returned by
+ Field.getDeclaredAnnotations
.
+mediaType
- the media type of the data that will be written.
+Returns:
+a MessageBodyReader that matches the supplied criteria or null
+ if none is found.
+
+
+
+
+
+
+
+
+getExceptionMapper
+<T extends Throwable > ExceptionMapper <T> getExceptionMapper(Class <T> type)
+Get an exception mapping provider for a particular class of exception.
+ Returns the provider whose generic type is the nearest superclass of
+ type
.
+
+Type Parameters:
+T
- type of the exception handled by the exception mapping provider.
+Parameters:
+type
- the class of exception.
+Returns:
+an ExceptionMapper
for the supplied type or null
+ if none is found.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ReaderInterceptor.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ReaderInterceptor.html
new file mode 100644
index 0000000000..08fd6561a8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ReaderInterceptor.html
@@ -0,0 +1,290 @@
+
+
+
+
+
+ReaderInterceptor (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ReaderInterceptorContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ReaderInterceptorContext.html
new file mode 100644
index 0000000000..eb12c45fbf
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/ReaderInterceptorContext.html
@@ -0,0 +1,365 @@
+
+
+
+
+
+ReaderInterceptorContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from interface javax.ws.rs.ext.InterceptorContext
+getAnnotations , getGenericType , getMediaType , getProperty , getPropertyNames , getType , removeProperty , setAnnotations , setGenericType , setMediaType , setProperty , setType
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+setInputStream
+void setInputStream(InputStream is)
+Set the input stream of the object to be read. For example, by wrapping
+ it with another input stream. The runtime is responsible for closing
+ the input stream that is set.
+
+Parameters:
+is
- new input stream.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/RuntimeDelegate.HeaderDelegate.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/RuntimeDelegate.HeaderDelegate.html
new file mode 100644
index 0000000000..90342507a0
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/RuntimeDelegate.HeaderDelegate.html
@@ -0,0 +1,303 @@
+
+
+
+
+
+RuntimeDelegate.HeaderDelegate (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Type Parameters:
+T
- an type that corresponds to the value of a HTTP header.
+
+
+Enclosing class:
+RuntimeDelegate
+
+
+
+public static interface RuntimeDelegate.HeaderDelegate<T>
+Defines the contract for a delegate that is responsible for
+ converting between the String form of a HTTP header and
+ the corresponding type T
.
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/RuntimeDelegate.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/RuntimeDelegate.html
new file mode 100644
index 0000000000..5bbf5c370e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/RuntimeDelegate.html
@@ -0,0 +1,615 @@
+
+
+
+
+
+RuntimeDelegate (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public abstract class RuntimeDelegate
+extends Object
+Implementations of this API provide a concrete subclass of RuntimeDelegate and
+ various API methods defer to methods of RuntimeDelegate for their
+ functionality. Regular users of the API are not expected to use this class
+ directly and overriding an implementation of this class with a user supplied
+ subclass may cause unexpected behavior.
+
+Since:
+1.0
+Author:
+Paul Sandoz, Marc Hadley
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Class
+Description
+
+
+static interface
+RuntimeDelegate.HeaderDelegate <T >
+
+Defines the contract for a delegate that is responsible for
+ converting between the String form of a HTTP header and
+ the corresponding type T
.
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+RuntimeDelegate ()
+
+Allows custom implementations to extend the RuntimeDelegate
class.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+createEndpoint
+public abstract <T> T createEndpoint(Application application,
+ Class <T> endpointType)
+ throws IllegalArgumentException ,
+ UnsupportedOperationException
+Create a configured instance of the supplied endpoint type. How the
+ returned endpoint instance is published is dependent on the type of
+ endpoint.
+
+Type Parameters:
+T
- endpoint type.
+Parameters:
+application
- the application configuration.
+endpointType
- the type of endpoint instance to be created.
+Returns:
+a configured instance of the requested type.
+Throws:
+IllegalArgumentException
- if application is null or the requested endpoint type is
+ not supported.
+UnsupportedOperationException
- if the implementation supports no endpoint types.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/WriterInterceptor.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/WriterInterceptor.html
new file mode 100644
index 0000000000..cc39823f74
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/WriterInterceptor.html
@@ -0,0 +1,288 @@
+
+
+
+
+
+WriterInterceptor (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/WriterInterceptorContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/WriterInterceptorContext.html
new file mode 100644
index 0000000000..d09a02f977
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/WriterInterceptorContext.html
@@ -0,0 +1,400 @@
+
+
+
+
+
+WriterInterceptorContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from interface javax.ws.rs.ext.InterceptorContext
+getAnnotations , getGenericType , getMediaType , getProperty , getPropertyNames , getType , removeProperty , setAnnotations , setGenericType , setMediaType , setProperty , setType
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+setOutputStream
+void setOutputStream(OutputStream os)
+Set a new output stream for the object to be written. For example, by wrapping
+ it with another output stream. The runtime is responsible for closing
+ the output stream that is set.
+
+Parameters:
+os
- new output stream for the object to be written.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ContextResolver.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ContextResolver.html
new file mode 100644
index 0000000000..c45c2a1fcc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ContextResolver.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.ContextResolver (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use ContextResolver
+
+Package
+Description
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ExceptionMapper.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ExceptionMapper.html
new file mode 100644
index 0000000000..77d4ef37c3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ExceptionMapper.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.ExceptionMapper (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use ExceptionMapper
+
+Package
+Description
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/InterceptorContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/InterceptorContext.html
new file mode 100644
index 0000000000..9d8d5ee123
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/InterceptorContext.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.InterceptorContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/MessageBodyReader.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/MessageBodyReader.html
new file mode 100644
index 0000000000..dc32bcca0d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/MessageBodyReader.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.MessageBodyReader (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/MessageBodyWriter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/MessageBodyWriter.html
new file mode 100644
index 0000000000..3327aceaa6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/MessageBodyWriter.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.MessageBodyWriter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverter.Lazy.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverter.Lazy.html
new file mode 100644
index 0000000000..ddc14e5120
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverter.Lazy.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ext.ParamConverter.Lazy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ext.ParamConverter.Lazy
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverter.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverter.html
new file mode 100644
index 0000000000..fd2ad25f19
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverter.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.ParamConverter (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use ParamConverter
+
+Package
+Description
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverterProvider.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverterProvider.html
new file mode 100644
index 0000000000..097ec853fe
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ParamConverterProvider.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.ParamConverterProvider (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ext.ParamConverterProvider
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/Provider.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/Provider.html
new file mode 100644
index 0000000000..786f973d01
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/Provider.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ext.Provider (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ext.Provider
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/Providers.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/Providers.html
new file mode 100644
index 0000000000..91d5a6b727
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/Providers.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.Providers (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ext.Providers
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ReaderInterceptor.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ReaderInterceptor.html
new file mode 100644
index 0000000000..3483b25aea
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ReaderInterceptor.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.ReaderInterceptor (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ext.ReaderInterceptor
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ReaderInterceptorContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ReaderInterceptorContext.html
new file mode 100644
index 0000000000..e04f45d195
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/ReaderInterceptorContext.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.ReaderInterceptorContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/RuntimeDelegate.HeaderDelegate.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/RuntimeDelegate.HeaderDelegate.html
new file mode 100644
index 0000000000..446b8206d4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/RuntimeDelegate.HeaderDelegate.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/RuntimeDelegate.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/RuntimeDelegate.html
new file mode 100644
index 0000000000..73db0614f8
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/RuntimeDelegate.html
@@ -0,0 +1,216 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.ext.RuntimeDelegate (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use RuntimeDelegate
+
+Package
+Description
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/WriterInterceptor.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/WriterInterceptor.html
new file mode 100644
index 0000000000..583622f82d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/WriterInterceptor.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.WriterInterceptor (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.ext.WriterInterceptor
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/WriterInterceptorContext.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/WriterInterceptorContext.html
new file mode 100644
index 0000000000..a2f3672d96
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/class-use/WriterInterceptorContext.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.ext.WriterInterceptorContext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-frame.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-frame.html
new file mode 100644
index 0000000000..2ab934a280
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-frame.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+javax.ws.rs.ext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Interfaces
+
+
Classes
+
+
Annotation Types
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-summary.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-summary.html
new file mode 100644
index 0000000000..3e13b83cbf
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-summary.html
@@ -0,0 +1,304 @@
+
+
+
+
+
+javax.ws.rs.ext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
APIs that provide extensions to the types supported by the API.
+
+
+
+Interface Summary
+
+Interface
+Description
+
+
+
+ContextResolver <T>
+
+Contract for a provider that supplies context information to resource
+ classes and other providers.
+
+
+
+ExceptionMapper <E extends Throwable >
+
+Contract for a provider that maps Java exceptions to
Response
.
+
+
+
+InterceptorContext
+
+Context shared by message body interceptors that can be used to wrap
+ calls to
MessageBodyReader.readFrom(java.lang.Class<T>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.String>, java.io.InputStream)
and
+
MessageBodyWriter.writeTo(T, java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.Object>, java.io.OutputStream)
.
+
+
+
+MessageBodyReader <T>
+
+Contract for a provider that supports the conversion of a stream to a
+ Java type.
+
+
+
+MessageBodyWriter <T>
+
+Contract for a provider that supports the conversion of a Java type to a
+ stream.
+
+
+
+ParamConverter <T>
+
+Defines a contract for a delegate responsible for converting between a
+ String
form of a message parameter value and the corresponding custom
+ Java type T
.
+
+
+
+ParamConverterProvider
+
+
+
+
+
+Providers
+
+An injectable interface providing runtime lookup of provider instances.
+
+
+
+ReaderInterceptor
+
+
+
+
+
+ReaderInterceptorContext
+
+Context class used by
ReaderInterceptor
+ to intercept calls to (@link javax.ws.rs.ext.MessageBodyReader#readFrom}.
+
+
+
+RuntimeDelegate.HeaderDelegate <T>
+
+Defines the contract for a delegate that is responsible for
+ converting between the String form of a HTTP header and
+ the corresponding type T
.
+
+
+
+WriterInterceptor
+
+
+
+
+
+WriterInterceptorContext
+
+
+
+
+
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+RuntimeDelegate
+
+Implementations of this API provide a concrete subclass of RuntimeDelegate and
+ various API methods defer to methods of RuntimeDelegate for their
+ functionality.
+
+
+
+
+
+
+
+Annotation Types Summary
+
+Annotation Type
+Description
+
+
+
+ParamConverter.Lazy
+
+Mandates that a conversion of any
default value
delegated
+ to a
parameter converter
annotated with
@Lazy
+ annotation SHOULD occur only once the value is actually required (e.g.
+
+
+
+Provider
+
+Marks an implementation of an extension interface that should be discoverable
+ by the runtime during a provider scanning phase.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-tree.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-tree.html
new file mode 100644
index 0000000000..81b5adbb95
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-tree.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+javax.ws.rs.ext Class Hierarchy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Class Hierarchy
+
+
Interface Hierarchy
+
+
Annotation Type Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-use.html b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-use.html
new file mode 100644
index 0000000000..83f75012ff
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/ext/package-use.html
@@ -0,0 +1,259 @@
+
+
+
+
+
+Uses of Package javax.ws.rs.ext (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use javax.ws.rs.ext
+
+Package
+Description
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+Classes in javax.ws.rs.ext used by javax.ws.rs.ext
+
+Class
+Description
+
+
+
+ContextResolver
+
+Contract for a provider that supplies context information to resource
+ classes and other providers.
+
+
+
+ExceptionMapper
+
+Contract for a provider that maps Java exceptions to
Response
.
+
+
+
+InterceptorContext
+
+Context shared by message body interceptors that can be used to wrap
+ calls to
MessageBodyReader.readFrom(java.lang.Class<T>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.String>, java.io.InputStream)
and
+
MessageBodyWriter.writeTo(T, java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.Object>, java.io.OutputStream)
.
+
+
+
+MessageBodyReader
+
+Contract for a provider that supports the conversion of a stream to a
+ Java type.
+
+
+
+MessageBodyWriter
+
+Contract for a provider that supports the conversion of a Java type to a
+ stream.
+
+
+
+ParamConverter
+
+Defines a contract for a delegate responsible for converting between a
+ String
form of a message parameter value and the corresponding custom
+ Java type T
.
+
+
+
+ReaderInterceptorContext
+
+Context class used by
ReaderInterceptor
+ to intercept calls to (@link javax.ws.rs.ext.MessageBodyReader#readFrom}.
+
+
+
+RuntimeDelegate
+
+Implementations of this API provide a concrete subclass of RuntimeDelegate and
+ various API methods defer to methods of RuntimeDelegate for their
+ functionality.
+
+
+
+RuntimeDelegate.HeaderDelegate
+
+Defines the contract for a delegate that is responsible for
+ converting between the String form of a HTTP header and
+ the corresponding type T
.
+
+
+
+WriterInterceptorContext
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/package-frame.html b/restful-web-services/2.1/apidocs/javax/ws/rs/package-frame.html
new file mode 100644
index 0000000000..3b393b29bc
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/package-frame.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+javax.ws.rs (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Classes
+
+
Enums
+
+
Exceptions
+
+
Annotation Types
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/package-summary.html b/restful-web-services/2.1/apidocs/javax/ws/rs/package-summary.html
new file mode 100644
index 0000000000..29f931608d
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/package-summary.html
@@ -0,0 +1,497 @@
+
+
+
+
+
+javax.ws.rs (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
High-level interfaces and annotations used to create RESTful service
+ resources. For example:
+
+ @Path("widgets/{widgetid}")
+ @Consumes("application/widgets+xml")
+ @Produces("application/widgets+xml")
+ public class WidgetResource {
+
+ @GET
+ public String getWidget(@PathParam("widgetid") String id) {
+ return getWidgetAsXml(id);
+ }
+
+ @PUT
+ public void updateWidget(@PathParam("widgetid") String id,
+ Source update) {
+ updateWidgetFromXml(id, update);
+ }
+
+ ...
+ }
+
+
+
+
+Class Summary
+
+Class
+Description
+
+
+
+Priorities
+
+A collection of built-in priority constants for the components that are supposed to be
+ ordered based on their javax.annotation.Priority
class-level annotation value when used
+ or applied by the runtime.
+
+
+
+
+
+
+
+Enum Summary
+
+Enum
+Description
+
+
+
+RuntimeType
+
+Enumeration of runtime types.
+
+
+
+
+
+
+
+
+
+
+Annotation Types Summary
+
+Annotation Type
+Description
+
+
+
+ApplicationPath
+
+Identifies the application path that serves as the base URI
+ for all resource URIs provided by
Path
.
+
+
+
+BeanParam
+
+The annotation that may be used to inject a custom "parameter aggregator" value object
+ into a resource class field, property or resource method parameter.
+
+
+
+ConstrainedTo
+
+Indicates the run-time context in which an annotated provider
+ is applicable.
+
+
+
+Consumes
+
+Defines the media types that the methods of a resource class or
+
MessageBodyReader
can accept.
+
+
+
+CookieParam
+
+Binds the value of a HTTP cookie to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+DefaultValue
+
+
+
+
+
+DELETE
+
+Indicates that the annotated method responds to HTTP DELETE requests.
+
+
+
+Encoded
+
+
+
+
+
+FormParam
+
+Binds the value(s) of a form parameter contained within a request entity body
+ to a resource method parameter.
+
+
+
+GET
+
+Indicates that the annotated method responds to HTTP GET requests.
+
+
+
+HEAD
+
+Indicates that the annotated method responds to HTTP HEAD requests.
+
+
+
+HeaderParam
+
+Binds the value(s) of a HTTP header to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+HttpMethod
+
+Associates the name of a HTTP method with an annotation.
+
+
+
+MatrixParam
+
+Binds the value(s) of a URI matrix parameter to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+NameBinding
+
+Meta-annotation used to create name binding annotations for filters
+ and interceptors.
+
+
+
+OPTIONS
+
+Indicates that the annotated method responds to HTTP OPTIONS requests.
+
+
+
+PATCH
+
+Indicates that the annotated method responds to HTTP PATCH requests.
+
+
+
+Path
+
+Identifies the URI path that a resource class or class method will serve
+ requests for.
+
+
+
+PathParam
+
+Binds the value of a URI template parameter or a path segment
+ containing the template parameter to a resource method parameter, resource
+ class field, or resource class
+ bean property.
+
+
+
+POST
+
+Indicates that the annotated method responds to HTTP POST requests.
+
+
+
+Produces
+
+Defines the media type(s) that the methods of a resource class or
+
MessageBodyWriter
can produce.
+
+
+
+PUT
+
+Indicates that the annotated method responds to HTTP PUT requests.
+
+
+
+QueryParam
+
+Binds the value(s) of a HTTP query parameter to a resource method parameter,
+ resource class field, or resource class bean property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/package-tree.html b/restful-web-services/2.1/apidocs/javax/ws/rs/package-tree.html
new file mode 100644
index 0000000000..2584f11514
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/package-tree.html
@@ -0,0 +1,239 @@
+
+
+
+
+
+javax.ws.rs Class Hierarchy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Class Hierarchy
+
+
Annotation Type Hierarchy
+
+
Enum Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/package-use.html b/restful-web-services/2.1/apidocs/javax/ws/rs/package-use.html
new file mode 100644
index 0000000000..7263fb9f4c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/package-use.html
@@ -0,0 +1,301 @@
+
+
+
+
+
+Uses of Package javax.ws.rs (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use javax.ws.rs
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.client
+
+The Client API
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/InboundSseEvent.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/InboundSseEvent.html
new file mode 100644
index 0000000000..161ba6719f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/InboundSseEvent.html
@@ -0,0 +1,424 @@
+
+
+
+
+
+InboundSseEvent (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+readData
+String readData()
+Get the original event data as
String
.
+
+Returns:
+event data de-serialized into a string.
+Throws:
+ProcessingException
- when provided type can't be read. The thrown exception wraps the original cause.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/OutboundSseEvent.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/OutboundSseEvent.Builder.html
new file mode 100644
index 0000000000..bbc7aa3e1c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/OutboundSseEvent.Builder.html
@@ -0,0 +1,507 @@
+
+
+
+
+
+OutboundSseEvent.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/OutboundSseEvent.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/OutboundSseEvent.html
new file mode 100644
index 0000000000..bfb48b92a4
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/OutboundSseEvent.html
@@ -0,0 +1,395 @@
+
+
+
+
+
+OutboundSseEvent (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getType
+Class <?> getType()
+
+
+Returns:
+data type. May return null
, if the event does not contain any data.
+
+
+
+
+
+
+
+
+getGenericType
+Type getGenericType()
+
+
+Returns:
+generic data type. May return null
, if the event does not contain any data.
+
+
+
+
+
+
+
+
+
+
+
+
+getData
+Object getData()
+Get event data.
+
+ The event data, if specified, are serialized and sent as one or more SSE event "data"
fields
+ (depending on the line breaks in the actual serialized data content). The data are serialized
+ using an available MessageBodyWriter
that is selected based on the event
+ type
, getGenericType()
generic type} and getMediaType()
media type}.
+
+Returns:
+event data. May return null
, if the event does not contain any data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/Sse.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/Sse.html
new file mode 100644
index 0000000000..fafb18dd2b
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/Sse.html
@@ -0,0 +1,346 @@
+
+
+
+
+
+Sse (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public interface Sse
+Server-side entry point for creating
OutboundSseEvent
and
SseBroadcaster
.
+
+ Instance of this interface can be injected into a field or as a parameter of a method or
+ a constructor. Also, the instance is thread safe, meaning that it can be shared and its
+ method invoked from different threads without causing inconsistent internal state.
+
+Since:
+2.1
+Author:
+Marek Potociar (marek.potociar at oracle.com)
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseBroadcaster.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseBroadcaster.html
new file mode 100644
index 0000000000..bc1fa18565
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseBroadcaster.html
@@ -0,0 +1,383 @@
+
+
+
+
+
+SseBroadcaster (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+close
+void close()
+Close the broadcaster and all registered
SseEventSink
instances.
+
+ Any other resources associated with the SseBroadcaster
should be released.
+
+ Subsequent calls have no effect and are ignored. Once the SseBroadcaster
is closed,
+ invoking any other method on the broadcaster instance would result in an IllegalStateException
+ being thrown.
+
+Specified by:
+close
in interface AutoCloseable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEvent.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEvent.html
new file mode 100644
index 0000000000..5c58d5a006
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEvent.html
@@ -0,0 +1,420 @@
+
+
+
+
+
+SseEvent (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields
+
+Modifier and Type
+Field
+Description
+
+
+static long
+RECONNECT_NOT_SET
+
+A "reconnection not set" value for the SSE reconnect delay set via SSE event retry
field.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods
+
+Modifier and Type
+Method
+Description
+
+
+String
+getComment ()
+
+Get a comment string that accompanies the event.
+
+
+
+String
+getId ()
+
+Get event identifier.
+
+
+
+String
+getName ()
+
+Get event name.
+
+
+
+long
+getReconnectDelay ()
+
+Get new connection retry time in milliseconds the event receiver should wait before attempting to
+ reconnect after a connection to the SSE event source is lost.
+
+
+
+boolean
+isReconnectDelaySet ()
+
+Check if the connection retry time has been set in the event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+getId
+String getId()
+Get event identifier.
+
+ Contains value of SSE "id"
field. This field is optional. Method may return null
, if the event
+ identifier is not specified.
+
+Returns:
+event id.
+
+
+
+
+
+
+
+
+getName
+String getName()
+Get event name.
+
+ Contains value of SSE "event"
field. This field is optional. Method may return null
, if the event
+ name is not specified.
+
+Returns:
+event name, or null
if not set.
+
+
+
+
+
+
+
+
+getComment
+String getComment()
+Get a comment string that accompanies the event.
+
+ Contains value of the comment associated with SSE event. This field is optional. Method may return null
,
+ if the event comment is not specified.
+
+Returns:
+comment associated with the event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSink.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSink.html
new file mode 100644
index 0000000000..d7371f4bb6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSink.html
@@ -0,0 +1,343 @@
+
+
+
+
+
+SseEventSink (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+isClosed
+boolean isClosed()
+Check if the stream has been closed already.
+
+ Please note that the client connection represented by this SseServerSink
can be closed by the
+ client side when a client decides to close connection and disconnect from the server.
+
+Returns:
+true
when closed, false
otherwise.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+Summary:
+Nested |
+Field |
+Constr |
+Method
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSource.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSource.Builder.html
new file mode 100644
index 0000000000..15e3095edf
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSource.Builder.html
@@ -0,0 +1,435 @@
+
+
+
+
+
+SseEventSource.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
+
+
+
+
+
+Constructor Summary
+
+Constructors
+
+Modifier
+Constructor
+Description
+
+
+protected
+Builder ()
+
+Allows custom implementations to extend the SSE event source builder class.
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Detail
+
+
+
+
+
+
+
+
+
+
+
+Constructor Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSource.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSource.html
new file mode 100644
index 0000000000..bc37c7a203
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/SseEventSource.html
@@ -0,0 +1,526 @@
+
+
+
+
+
+SseEventSource (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes
+
+Modifier and Type
+Interface
+Description
+
+
+static class
+SseEventSource.Builder
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+open
+void open()
+Open the connection to the supplied SSE underlying
web target
and start processing incoming
+
events
.
+
+Throws:
+IllegalStateException
- in case the event source has already been opened earlier.
+
+
+
+
+
+
+
+
+isOpen
+boolean isOpen()
+Check if this event source instance has already been
opened
.
+
+Returns:
+true
if this event source is open, false
otherwise.
+
+
+
+
+
+
+
+
+close
+default void close()
+Close this event source.
+
+ The method will wait up to 5 seconds for the internal event processing tasks to complete.
+
+Specified by:
+close
in interface AutoCloseable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Detail:
+Field |
+Constr |
+Method
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/InboundSseEvent.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/InboundSseEvent.html
new file mode 100644
index 0000000000..baf0c0e35e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/InboundSseEvent.html
@@ -0,0 +1,216 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.InboundSseEvent (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/OutboundSseEvent.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/OutboundSseEvent.Builder.html
new file mode 100644
index 0000000000..1f03e93ff3
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/OutboundSseEvent.Builder.html
@@ -0,0 +1,258 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.OutboundSseEvent.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/OutboundSseEvent.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/OutboundSseEvent.html
new file mode 100644
index 0000000000..8fd8d766bb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/OutboundSseEvent.html
@@ -0,0 +1,238 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.OutboundSseEvent (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/Sse.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/Sse.html
new file mode 100644
index 0000000000..38c1108bbb
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/Sse.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.Sse (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+No usage of javax.ws.rs.sse.Sse
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseBroadcaster.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseBroadcaster.html
new file mode 100644
index 0000000000..297e03ebc1
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseBroadcaster.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.SseBroadcaster (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEvent.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEvent.html
new file mode 100644
index 0000000000..661ec4b366
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEvent.html
@@ -0,0 +1,206 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.SseEvent (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Packages that use SseEvent
+
+Package
+Description
+
+
+
+javax.ws.rs.sse
+
+Server-Sent Events related API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSink.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSink.html
new file mode 100644
index 0000000000..82ed5489fe
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSink.html
@@ -0,0 +1,225 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.SseEventSink (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method parameters in javax.ws.rs.sse with type arguments of type SseEventSink
+
+Modifier and Type
+Method
+Description
+
+
+
+void
+SseBroadcaster. onClose (Consumer <SseEventSink > onClose)
+
+Register a listener, which will be called when the SSE event output has been closed (either by client closing
+ the connection or by calling
close()
on the server side.
+
+
+
+void
+SseBroadcaster. onError (BiConsumer <SseEventSink ,Throwable > onError)
+
+Register a listener, which will be called when an exception was thrown by a given SSE event output when trying
+ to write to it or close it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSource.Builder.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSource.Builder.html
new file mode 100644
index 0000000000..fb598b565f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSource.Builder.html
@@ -0,0 +1,213 @@
+
+
+
+
+
+Uses of Class javax.ws.rs.sse.SseEventSource.Builder (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSource.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSource.html
new file mode 100644
index 0000000000..5939a7d934
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/class-use/SseEventSource.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+Uses of Interface javax.ws.rs.sse.SseEventSource (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-frame.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-frame.html
new file mode 100644
index 0000000000..a40369de14
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-frame.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+javax.ws.rs.sse (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Interfaces
+
+
Classes
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-summary.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-summary.html
new file mode 100644
index 0000000000..6cd0b6ab9e
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-summary.html
@@ -0,0 +1,236 @@
+
+
+
+
+
+javax.ws.rs.sse (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Server-Sent Events related API.
+
+ This package provides support for providing event streams from the server
+ and also for processing then on the client side.
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-tree.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-tree.html
new file mode 100644
index 0000000000..91ce125f43
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-tree.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+javax.ws.rs.sse Class Hierarchy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Class Hierarchy
+
+
Interface Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-use.html b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-use.html
new file mode 100644
index 0000000000..a6f13c065f
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/javax/ws/rs/sse/package-use.html
@@ -0,0 +1,234 @@
+
+
+
+
+
+Uses of Package javax.ws.rs.sse (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/jquery/external/jquery/jquery.js b/restful-web-services/2.1/apidocs/jquery/external/jquery/jquery.js
new file mode 100644
index 0000000000..c5c648255c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/jquery/external/jquery/jquery.js
@@ -0,0 +1,9789 @@
+/*!
+ * jQuery JavaScript Library v1.10.2
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:48Z
+ */
+(function( window, undefined ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
+var
+ // The deferred used on DOM ready
+ readyList,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // Support: IE<10
+ // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
+ core_strundefined = typeof undefined,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ location = window.location,
+ document = window.document,
+ docElem = document.documentElement,
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // [[Class]] -> type pairs
+ class2type = {},
+
+ // List of deleted data cache ids, so we can reuse them
+ core_deletedIds = [],
+
+ core_version = "1.10.2",
+
+ // Save a reference to some core methods
+ core_concat = core_deletedIds.concat,
+ core_push = core_deletedIds.push,
+ core_slice = core_deletedIds.slice,
+ core_indexOf = core_deletedIds.indexOf,
+ core_toString = class2type.toString,
+ core_hasOwn = class2type.hasOwnProperty,
+ core_trim = core_version.trim,
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Used for matching numbers
+ core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+ // Used for splitting on whitespace
+ core_rnotwhite = /\S+/g,
+
+ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ },
+
+ // The ready event handler
+ completed = function( event ) {
+
+ // readyState === "complete" is good enough for us to call the dom ready in oldIE
+ if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+ detach();
+ jQuery.ready();
+ }
+ },
+ // Clean-up method for dom ready events
+ detach = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+
+ } else {
+ document.detachEvent( "onreadystatechange", completed );
+ window.detachEvent( "onload", completed );
+ }
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: core_version,
+
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // scripts is true for back-compat
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return core_slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+ },
+
+ slice: function() {
+ return this.pushStack( core_slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: core_push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var src, copyIsArray, copy, name, options, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger("ready").off("ready");
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ isWindow: function( obj ) {
+ /* jshint eqeqeq: false */
+ return obj != null && obj == obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return String( obj );
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ core_toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ isPlainObject: function( obj ) {
+ var key;
+
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !core_hasOwn.call(obj, "constructor") &&
+ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Support: IE<9
+ // Handle iteration over inherited properties before own properties.
+ if ( jQuery.support.ownLast ) {
+ for ( key in obj ) {
+ return core_hasOwn.call( obj, key );
+ }
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+ for ( key in obj ) {}
+
+ return key === undefined || core_hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ // data: string of html
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
+ // keepScripts (optional): If true, will include scripts passed in the html string
+ parseHTML: function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+ if ( scripts ) {
+ jQuery( scripts ).remove();
+ }
+ return jQuery.merge( [], parsed.childNodes );
+ },
+
+ parseJSON: function( data ) {
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ if ( data === null ) {
+ return data;
+ }
+
+ if ( typeof data === "string" ) {
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ if ( data ) {
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return ( new Function( "return " + data ) )();
+ }
+ }
+ }
+
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && jQuery.trim( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+ function( text ) {
+ return text == null ?
+ "" :
+ core_trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ core_push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ var len;
+
+ if ( arr ) {
+ if ( core_indexOf ) {
+ return core_indexOf.call( arr, elem, i );
+ }
+
+ len = arr.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in arr && arr[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var l = second.length,
+ i = first.length,
+ j = 0;
+
+ if ( typeof l === "number" ) {
+ for ( ; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var retVal,
+ ret = [],
+ i = 0,
+ length = elems.length;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return core_concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var args, proxy, tmp;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = core_slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Multifunctional method to get and set values of a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ length = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < length; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
+ },
+
+ now: function() {
+ return ( new Date() ).getTime();
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations.
+ // Note: this method belongs to the css module but it's needed here for the support module.
+ // If support gets modularized, this method should be moved back to the css module.
+ swap: function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+ }
+});
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
+
+ // Standards-based browsers support DOMContentLoaded
+ } else if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
+
+ // If IE event model is used
+ } else {
+ // Ensure firing before onload, maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", completed );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", completed );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var top = false;
+
+ try {
+ top = window.frameElement == null && document.documentElement;
+ } catch(e) {}
+
+ if ( top && top.doScroll ) {
+ (function doScrollCheck() {
+ if ( !jQuery.isReady ) {
+
+ try {
+ // Use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ top.doScroll("left");
+ } catch(e) {
+ return setTimeout( doScrollCheck, 50 );
+ }
+
+ // detach all dom ready events
+ detach();
+
+ // and execute any waiting functions
+ jQuery.ready();
+ }
+ })();
+ }
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+ var length = obj.length,
+ type = jQuery.type( obj );
+
+ if ( jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || type !== "function" &&
+ ( length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj );
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+/*!
+ * Sizzle CSS Selector Engine v1.10.2
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03
+ */
+(function( window, undefined ) {
+
+var i,
+ support,
+ cachedruns,
+ Expr,
+ getText,
+ isXML,
+ compile,
+ outermostContext,
+ sortInput,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + -(new Date()),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ hasDuplicate = false,
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ strundefined = typeof undefined,
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf if we can't use a native one
+ indexOf = arr.indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+ "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+ // Prefer arguments quoted,
+ // then not containing pseudos/brackets,
+ // then attribute selectors/non-parenthetical expressions,
+ // then anything else
+ // These preferences are here to reduce the number of selectors
+ // needing tokenize in the PSEUDO preFilter
+ pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rsibling = new RegExp( whitespace + "*[+~]" ),
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ // BMP codepoint
+ high < 0 ?
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( documentIsHTML && !seed ) {
+
+ // Shortcuts
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && context.parentNode || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key += " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.defaultView;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+
+ // Support tests
+ documentIsHTML = !isXML( doc );
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent.attachEvent && parent !== parent.top ) {
+ parent.attachEvent( "onbeforeunload", function() {
+ setDocument();
+ });
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Check if getElementsByClassName can be trusted
+ support.getElementsByClassName = assert(function( div ) {
+ div.innerHTML = "
";
+
+ // Support: Safari<4
+ // Catch class over-caching
+ div.firstChild.className = "i";
+ // Support: Opera<10
+ // Catch gEBCN failure to find non-leading classes
+ return div.getElementsByClassName("i").length === 2;
+ });
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = " ";
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+
+ // Support: Opera 10-12/IE8
+ // ^= $= *= and empty values
+ // Should not select anything
+ // Support: Windows 8 Native Apps
+ // The type attribute is restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "t", "" );
+
+ if ( div.querySelectorAll("[t^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = docElem.compareDocumentPosition ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+ if ( compare ) {
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ }
+
+ // Not directly comparable, sort on existence of method
+ return a.compareDocumentPosition ? -1 : 1;
+ } :
+ function( a, b ) {
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Parentless nodes are either documents or disconnected
+ } else if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, document, null, [elem] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val === undefined ?
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null :
+ val;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ for ( ; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (see #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[5] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] && match[4] !== undefined ) {
+ match[2] = match[4];
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+ // not comment, processing instructions, or others
+ // Thanks to Diego Perini for the nodeName shortcut
+ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+function tokenize( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( tokens = [] );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+}
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var data, cache, outerCache,
+ dirkey = dirruns + " " + doneName;
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+ if ( (data = cache[1]) === true || data === cachedruns ) {
+ return data === true;
+ }
+ } else {
+ cache = outerCache[ dir ] = [ dirkey ];
+ cache[1] = matcher( elem, context, xml ) || cachedruns;
+ if ( cache[1] === true ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ // A counter to specify which element is currently being matched
+ var matcherCachedRuns = 0,
+ bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, expandContext ) {
+ var elem, j, matcher,
+ setMatched = [],
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ outermost = expandContext != null,
+ contextBackup = outermostContext,
+ // We must always have either seed elements or context
+ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ cachedruns = matcherCachedRuns;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ cachedruns = ++matcherCachedRuns;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !group ) {
+ group = tokenize( selector );
+ }
+ i = group.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( group[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ }
+ return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function select( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ match = tokenize( selector );
+
+ if ( !seed ) {
+ // Try to minimize operations if there is only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+ }
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && context.parentNode || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function
+ // Provide `match` to avoid retokenization if we modified the selector above
+ compile( selector, match )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector )
+ );
+ return results;
+}
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = " ";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = " ";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ elem[ name ] === true ? name.toLowerCase() : null;
+ }
+ });
+}
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var action = tuple[ 0 ],
+ fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = core_slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+ if( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // if we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+jQuery.support = (function( support ) {
+
+ var all, a, input, select, fragment, opt, eventName, isSupported, i,
+ div = document.createElement("div");
+
+ // Setup
+ div.setAttribute( "className", "t" );
+ div.innerHTML = " a ";
+
+ // Finish early in limited (non-browser) environments
+ all = div.getElementsByTagName("*") || [];
+ a = div.getElementsByTagName("a")[ 0 ];
+ if ( !a || !a.style || !all.length ) {
+ return support;
+ }
+
+ // First batch of tests
+ select = document.createElement("select");
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName("input")[ 0 ];
+
+ a.style.cssText = "top:1px;float:left;opacity:.5";
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ support.getSetAttribute = div.className !== "t";
+
+ // IE strips leading whitespace when .innerHTML is used
+ support.leadingWhitespace = div.firstChild.nodeType === 3;
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ support.tbody = !div.getElementsByTagName("tbody").length;
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ support.htmlSerialize = !!div.getElementsByTagName("link").length;
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ support.style = /top/.test( a.getAttribute("style") );
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ support.hrefNormalized = a.getAttribute("href") === "/a";
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ support.opacity = /^0.5/.test( a.style.opacity );
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ support.cssFloat = !!a.style.cssFloat;
+
+ // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+ support.checkOn = !!input.value;
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ support.optSelected = opt.selected;
+
+ // Tests for enctype support on a form (#6743)
+ support.enctype = !!document.createElement("form").enctype;
+
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>";
+
+ // Will be defined later
+ support.inlineBlockNeedsLayout = false;
+ support.shrinkWrapBlocks = false;
+ support.pixelPosition = false;
+ support.deleteExpando = true;
+ support.noCloneEvent = true;
+ support.reliableMarginRight = true;
+ support.boxSizingReliable = true;
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Support: IE<9
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ // Check if we can trust getAttribute("value")
+ input = document.createElement("input");
+ input.setAttribute( "value", "" );
+ support.input = input.getAttribute( "value" ) === "";
+
+ // Check if an input maintains its value after becoming a radio
+ input.value = "t";
+ input.setAttribute( "type", "radio" );
+ support.radioValue = input.value === "t";
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "checked", "t" );
+ input.setAttribute( "name", "t" );
+
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( input );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<9
+ // Opera does not clone events (and typeof div.attachEvent === undefined).
+ // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+ if ( div.attachEvent ) {
+ div.attachEvent( "onclick", function() {
+ support.noCloneEvent = false;
+ });
+
+ div.cloneNode( true ).click();
+ }
+
+ // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+ // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
+ for ( i in { submit: true, change: true, focusin: true }) {
+ div.setAttribute( eventName = "on" + i, "t" );
+
+ support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+ }
+
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ // Support: IE<9
+ // Iteration over object's inherited properties before its own.
+ for ( i in jQuery( support ) ) {
+ break;
+ }
+ support.ownLast = i !== "0";
+
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, marginDiv, tds,
+ divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+ body = document.getElementsByTagName("body")[0];
+
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
+ }
+
+ container = document.createElement("div");
+ container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+ body.appendChild( container ).appendChild( div );
+
+ // Support: IE8
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ div.innerHTML = "";
+ tds = div.getElementsByTagName("td");
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Support: IE8
+ // Check if empty table cells still have offsetWidth/Height
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Check box-sizing and margin behavior.
+ div.innerHTML = "";
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+
+ // Workaround failing boxSizing test due to offsetWidth returning wrong value
+ // with some non-1 values of body zoom, ticket #13543
+ jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+ support.boxSizing = div.offsetWidth === 4;
+ });
+
+ // Use window.getComputedStyle because jsdom on node.js will break without it.
+ if ( window.getComputedStyle ) {
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ marginDiv = div.appendChild( document.createElement("div") );
+ marginDiv.style.cssText = div.style.cssText = divReset;
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+
+ support.reliableMarginRight =
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+ }
+
+ if ( typeof div.style.zoom !== core_strundefined ) {
+ // Support: IE<8
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ div.innerHTML = "";
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+ // Support: IE6
+ // Check if elements with layout shrink-wrap their children
+ div.style.display = "block";
+ div.innerHTML = "
";
+ div.firstChild.style.width = "5px";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+ if ( support.inlineBlockNeedsLayout ) {
+ // Prevent IE 6 from affecting layout for positioned elements #11048
+ // Prevent IE from shrinking the body in IE 7 mode #12869
+ // Support: IE<8
+ body.style.zoom = 1;
+ }
+ }
+
+ body.removeChild( container );
+
+ // Null elements to avoid leaks in IE
+ container = div = tds = marginDiv = null;
+ });
+
+ // Null elements to avoid leaks in IE
+ all = select = fragment = opt = a = input = null;
+
+ return support;
+})({});
+
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var ret, thisCache,
+ internalKey = jQuery.expando,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
+ } else {
+ id = internalKey;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ // Avoid exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( typeof name === "string" ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+}
+
+function internalRemoveData( elem, name, pvt ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i,
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
+
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split(" ");
+ }
+ }
+ } else {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = name.concat( jQuery.map( name, jQuery.camelCase ) );
+ }
+
+ i = name.length;
+ while ( i-- ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
+ return;
+ }
+ }
+
+ // Destroy the cache
+ if ( isNode ) {
+ jQuery.cleanData( [ elem ], true );
+
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+ /* jshint eqeqeq: false */
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+ /* jshint eqeqeq: true */
+ delete cache[ id ];
+
+ // When all else fails, null
+ } else {
+ cache[ id ] = null;
+ }
+}
+
+jQuery.extend({
+ cache: {},
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "applet": true,
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return internalData( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ return internalRemoveData( elem, name );
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return internalData( elem, name, data, true );
+ },
+
+ _removeData: function( elem, name ) {
+ return internalRemoveData( elem, name, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ // Do not set data on non-element because it will not be cleared (#8335).
+ if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+ return false;
+ }
+
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ // nodes accept data unless otherwise specified; rejection can be conditional
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var attrs, name,
+ data = null,
+ i = 0,
+ elem = this[0];
+
+ // Special expections of .data basically thwart jQuery.access,
+ // so implement the relevant behavior ourselves
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = jQuery.data( elem );
+
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attrs = elem.attributes;
+ for ( ; i < attrs.length; i++ ) {
+ name = attrs[i].name;
+
+ if ( name.indexOf("data-") === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ jQuery._data( elem, "parsedAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ return arguments.length > 1 ?
+
+ // Sets one value
+ this.each(function() {
+ jQuery.data( this, key, value );
+ }) :
+
+ // Gets one value
+ // Try to fetch any internally stored data first
+ elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ var name;
+ for ( name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray(data) ) {
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ jQuery._removeData( elem, type + "queue" );
+ jQuery._removeData( elem, key );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while( i-- ) {
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var nodeHook, boolHook,
+ rclass = /[\t\r\n\f]/g,
+ rreturn = /\r/g,
+ rfocusable = /^(?:input|select|textarea|button|object)$/i,
+ rclickable = /^(?:a|area)$/i,
+ ruseDefault = /^(?:checked|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute,
+ getSetInput = jQuery.support.input;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
+ }
+
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+ elem.className = jQuery.trim( cur );
+
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = arguments.length === 0 || typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
+ }
+ if ( proceed ) {
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+ elem.className = value ? jQuery.trim( cur ) : "";
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( core_rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( type === core_strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // If the element has a class name or if we're passed "false",
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var ret, hooks, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // Use proper attribute retrieval(#6932, #12072)
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === core_strundefined ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( core_rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ elem[ propName ] = false;
+ // Support: IE<9
+ // Also clear defaultChecked/defaultSelected (if appropriate)
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] =
+ elem[ propName ] = false;
+ }
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ } else {
+ jQuery.attr( elem, name, "" );
+ }
+
+ elem.removeAttribute( getSetAttribute ? name : propName );
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to default in case type is set after value during creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
+
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ return tabindex ?
+ parseInt( tabindex, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ -1;
+ }
+ }
+ }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ // IE<8 needs the *property* name
+ elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
+
+ // Use defaultChecked and defaultSelected for oldIE
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
+ }
+
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
+
+ jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+ function( elem, name, isXML ) {
+ var fn = jQuery.expr.attrHandle[ name ],
+ ret = isXML ?
+ undefined :
+ /* jshint eqeqeq: false */
+ (jQuery.expr.attrHandle[ name ] = undefined) !=
+ getter( elem, name, isXML ) ?
+
+ name.toLowerCase() :
+ null;
+ jQuery.expr.attrHandle[ name ] = fn;
+ return ret;
+ } :
+ function( elem, name, isXML ) {
+ return isXML ?
+ undefined :
+ elem[ jQuery.camelCase( "default-" + name ) ] ?
+ name.toLowerCase() :
+ null;
+ };
+});
+
+// fix oldIE attroperties
+if ( !getSetInput || !getSetAttribute ) {
+ jQuery.attrHooks.value = {
+ set: function( elem, value, name ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ // Does not return so that setAttribute is also used
+ elem.defaultValue = value;
+ } else {
+ // Use nodeHook if defined (#1954); otherwise setAttribute is fine
+ return nodeHook && nodeHook.set( elem, value, name );
+ }
+ }
+ };
+}
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = {
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ elem.setAttributeNode(
+ (ret = elem.ownerDocument.createAttribute( name ))
+ );
+ }
+
+ ret.value = value += "";
+
+ // Break association with cloned elements by also using setAttribute (#9646)
+ return name === "value" || value === elem.getAttribute( name ) ?
+ value :
+ undefined;
+ }
+ };
+ jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
+ // Some attributes are constructed with empty-string values when not defined
+ function( elem, name, isXML ) {
+ var ret;
+ return isXML ?
+ undefined :
+ (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
+ ret.value :
+ null;
+ };
+ jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret = elem.getAttributeNode( name );
+ return ret && ret.specified ?
+ ret.value :
+ undefined;
+ },
+ set: nodeHook.set
+ };
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ set: function( elem, value, name ) {
+ nodeHook.set( elem, value === "" ? false : value, name );
+ }
+ };
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ };
+ });
+}
+
+
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+ // href/src property should get the full normalized URL (#10299/#12915)
+ jQuery.each([ "href", "src" ], function( i, name ) {
+ jQuery.propHooks[ name ] = {
+ get: function( elem ) {
+ return elem.getAttribute( name, 4 );
+ }
+ };
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Note: IE uppercases css property names, but if we were to .toLowerCase()
+ // .cssText, that would destroy case senstitivity in URL's, like in "background"
+ return elem.style.cssText || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = value + "" );
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ };
+}
+
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ };
+ if ( !jQuery.support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ // Support: Webkit
+ // "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+ var tmp, events, t, handleObjIn,
+ special, eventHandle, handleObj,
+ handlers, type, namespaces, origType,
+ elemData = jQuery._data( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+ var j, handleObj, tmp,
+ origCount, t, events,
+ special, handlers, type,
+ namespaces, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery._removeData( elem, "events" );
+ }
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ var handle, ontype, cur,
+ bubbleType, special, tmp, i,
+ eventPath = [ elem || document ],
+ type = core_hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ try {
+ elem[ type ]();
+ } catch ( e ) {
+ // IE<9 dies on focus/blur to hidden element (#1486,#12518)
+ // only reproducible on winXP IE8 native, not IE9 in IE8 mode
+ }
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, ret, handleObj, matched, j,
+ handlerQueue = [],
+ args = core_slice.call( arguments ),
+ handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var sel, handleObj, matches, i,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ // Black-hole SVG instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+ /* jshint eqeqeq: false */
+ for ( ; cur != this; cur = cur.parentNode || this ) {
+ /* jshint eqeqeq: true */
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
+
+ return handlerQueue;
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: IE<9
+ // Fix target property (#1925)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Support: Chrome 23+, Safari?
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Support: IE<9
+ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+ event.metaKey = !!event.metaKey;
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var body, eventDoc, doc,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ try {
+ this.focus();
+ return false;
+ } catch ( e ) {
+ // Support: IE<9
+ // If we error on focus to hidden element (#1486, #12518),
+ // let .trigger() run the handlers
+ }
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Even when returnValue equals to undefined Firefox will still show alert
+ if ( event.result !== undefined ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ var name = "on" + type;
+
+ if ( elem.detachEvent ) {
+
+ // #8545, #7054, preventing memory leaks for custom events in IE6-8
+ // detachEvent needed property on element, by name of that event, to properly expose it to GC
+ if ( typeof elem[ name ] === core_strundefined ) {
+ elem[ name ] = null;
+ }
+
+ elem.detachEvent( name, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+ if ( !e ) {
+ return;
+ }
+
+ // If preventDefault exists, run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // Support: IE
+ // Otherwise set the returnValue property of the original event to false
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+ if ( !e ) {
+ return;
+ }
+ // If stopPropagation exists, run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+
+ // Support: IE
+ // Set the cancelBubble property of the original event to true
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ event._submit_bubble = true;
+ });
+ jQuery._data( form, "submitBubbles", true );
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ }
+ // Allow triggered, simulated change events (#11500)
+ jQuery.event.simulate( "change", this, event, true );
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ jQuery._data( elem, "changeBubbles", true );
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return !rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var type, origFn;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+});
+var isSimple = /^.[^:#\[\.,]*$/,
+ rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ rneedsContext = jQuery.expr.match.needsContext,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ ret = [],
+ self = this,
+ len = self.length;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+
+ has: function( target ) {
+ var i,
+ targets = jQuery( target, this ),
+ len = targets.length;
+
+ return this.filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ ret = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ cur = ret.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( jQuery.unique(all) );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ do {
+ cur = cur[ dir ];
+ } while ( cur && cur.nodeType !== 1 );
+
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ ret = jQuery.unique( ret );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
+ });
+}
+function createSafeFragment( document ) {
+ var list = nodeNames.split( "|" ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( list.length ) {
+ safeFrag.createElement(
+ list.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rtbody = /\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
+ wrapMap = {
+ option: [ 1, "", " " ],
+ legend: [ 1, "", " " ],
+ area: [ 1, "", " " ],
+ param: [ 1, "", " " ],
+ thead: [ 1, "" ],
+ tr: [ 2, "" ],
+ col: [ 2, "" ],
+ td: [ 3, "" ],
+
+ // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+ // unless wrapped in a div with non-breaking characters in front of it.
+ _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X", "
" ]
+ },
+ safeFragment = createSafeFragment( document ),
+ fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return jQuery.access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ });
+ },
+
+ after: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ });
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ var elem,
+ elems = selector ? jQuery.filter( selector, this ) : this,
+ i = 0;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem ) );
+ }
+
+ if ( elem.parentNode ) {
+ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+ setGlobalEval( getAll( elem, "script" ) );
+ }
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+
+ // If this is a select, ensure that it displays empty (#12336)
+ // Support: IE<9
+ if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
+ elem.options.length = 0;
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return jQuery.access( this, function( value ) {
+ var elem = this[0] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined ) {
+ return elem.nodeType === 1 ?
+ elem.innerHTML.replace( rinlinejQuery, "" ) :
+ undefined;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
+ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1>$2>" );
+
+ try {
+ for (; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ elem = this[i] || {};
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var
+ // Snapshot the DOM in case .domManip sweeps something relevant into its fragment
+ args = jQuery.map( this, function( elem ) {
+ return [ elem.nextSibling, elem.parentNode ];
+ }),
+ i = 0;
+
+ // Make the changes, replacing each context element with the new content
+ this.domManip( arguments, function( elem ) {
+ var next = args[ i++ ],
+ parent = args[ i++ ];
+
+ if ( parent ) {
+ // Don't use the snapshot next if it has moved (#13810)
+ if ( next && next.parentNode !== parent ) {
+ next = this.nextSibling;
+ }
+ jQuery( this ).remove();
+ parent.insertBefore( elem, next );
+ }
+ // Allow new content to include elements from the context set
+ }, true );
+
+ // Force removal if there was no new content (e.g., from empty arguments)
+ return i ? this : this.remove();
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, callback, allowIntersection ) {
+
+ // Flatten any nested arrays
+ args = core_concat.apply( [], args );
+
+ var first, node, hasScripts,
+ scripts, doc, fragment,
+ i = 0,
+ l = this.length,
+ set = this,
+ iNoClone = l - 1,
+ value = args[0],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
+ return this.each(function( index ) {
+ var self = set.eq( index );
+ if ( isFunction ) {
+ args[0] = value.call( this, index, self.html() );
+ }
+ self.domManip( args, callback, allowIntersection );
+ });
+ }
+
+ if ( l ) {
+ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( this[i], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+ // Hope ajax is available...
+ jQuery._evalUrl( node.src );
+ } else {
+ jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+
+ // Fix #11809: Avoid leaking memory
+ fragment = first = null;
+ }
+ }
+
+ return this;
+ }
+});
+
+// Support: IE<8
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+ if ( match ) {
+ elem.type = match[1];
+ } else {
+ elem.removeAttribute("type");
+ }
+ return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var elem,
+ i = 0;
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
+ }
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function fixCloneNodeIssues( src, dest ) {
+ var nodeName, e, data;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 copies events bound via attachEvent when using cloneNode.
+ if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
+ data = jQuery._data( dest );
+
+ for ( e in data.events ) {
+ jQuery.removeEvent( dest, e, data.handle );
+ }
+
+ // Event data gets referenced instead of copied if the expando gets copied too
+ dest.removeAttribute( jQuery.expando );
+ }
+
+ // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
+ if ( nodeName === "script" && dest.text !== src.text ) {
+ disableScript( dest ).text = src.text;
+ restoreScript( dest );
+
+ // IE6-10 improperly clones children of object elements using classid.
+ // IE10 throws NoModificationAllowedError if parent is null, #12132.
+ } else if ( nodeName === "object" ) {
+ if ( dest.parentNode ) {
+ dest.outerHTML = src.outerHTML;
+ }
+
+ // This path appears unavoidable for IE9. When cloning an object
+ // element in IE9, the outerHTML strategy above is not sufficient.
+ // If the src has innerHTML and the destination does not,
+ // copy the src.innerHTML into the dest.innerHTML. #10324
+ if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
+ dest.innerHTML = src.innerHTML;
+ }
+
+ } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+
+ dest.defaultChecked = dest.checked = src.checked;
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.defaultSelected = dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ i = 0,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone(true);
+ jQuery( insert[i] )[ original ]( elems );
+
+ // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+ core_push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+function getAll( context, tag ) {
+ var elems, elem,
+ i = 0,
+ found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+ typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
+ undefined;
+
+ if ( !found ) {
+ for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
+ if ( !tag || jQuery.nodeName( elem, tag ) ) {
+ found.push( elem );
+ } else {
+ jQuery.merge( found, getAll( elem, tag ) );
+ }
+ }
+ }
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], found ) :
+ found;
+}
+
+// Used in buildFragment, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( manipulation_rcheckableType.test( elem.type ) ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var destElements, node, clone, i, srcElements,
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+ clone = elem.cloneNode( true );
+
+ // IE<=8 does not properly clone detached, unknown element nodes
+ } else {
+ fragmentDiv.innerHTML = elem.outerHTML;
+ fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+ }
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ // Fix all IE cloning issues
+ for ( i = 0; (node = srcElements[i]) != null; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ fixCloneNodeIssues( node, destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0; (node = srcElements[i]) != null; i++ ) {
+ cloneCopyEvent( node, destElements[i] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ destElements = srcElements = node = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ buildFragment: function( elems, context, scripts, selection ) {
+ var j, elem, contains,
+ tmp, tag, tbody, wrap,
+ l = elems.length,
+
+ // Ensure a safe fragment
+ safe = createSafeFragment( context ),
+
+ nodes = [],
+ i = 0;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || safe.appendChild( context.createElement("div") );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+
+ tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>$2>" ) + wrap[2];
+
+ // Descend through wrappers to the right content
+ j = wrap[0];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Manually add leading whitespace removed by IE
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
+ }
+
+ // Remove IE's autoinserted from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a , *may* have spurious
+ elem = tag === "table" && !rtbody.test( elem ) ?
+ tmp.firstChild :
+
+ // String was a bare or
+ wrap[1] === "" && !rtbody.test( elem ) ?
+ tmp :
+ 0;
+
+ j = elem && elem.childNodes.length;
+ while ( j-- ) {
+ if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
+ elem.removeChild( tbody );
+ }
+ }
+ }
+
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Fix #12392 for WebKit and IE > 9
+ tmp.textContent = "";
+
+ // Fix #12392 for oldIE
+ while ( tmp.firstChild ) {
+ tmp.removeChild( tmp.firstChild );
+ }
+
+ // Remember the top-level container for proper cleanup
+ tmp = safe.lastChild;
+ }
+ }
+ }
+
+ // Fix #11356: Clear elements from fragment
+ if ( tmp ) {
+ safe.removeChild( tmp );
+ }
+
+ // Reset defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ if ( !jQuery.support.appendChecked ) {
+ jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
+ }
+
+ i = 0;
+ while ( (elem = nodes[ i++ ]) ) {
+
+ // #4087 - If origin and destination elements are the same, and this is
+ // that element, do not do anything
+ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( safe.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( (elem = tmp[ j++ ]) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ tmp = null;
+
+ return safe;
+ },
+
+ cleanData: function( elems, /* internal */ acceptData ) {
+ var elem, type, id, data,
+ i = 0,
+ internalKey = jQuery.expando,
+ cache = jQuery.cache,
+ deleteExpando = jQuery.support.deleteExpando,
+ special = jQuery.event.special;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( acceptData || jQuery.acceptData( elem ) ) {
+
+ id = elem[ internalKey ];
+ data = id && cache[ id ];
+
+ if ( data ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Remove cache only if it was not already removed by jQuery.event.remove
+ if ( cache[ id ] ) {
+
+ delete cache[ id ];
+
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( deleteExpando ) {
+ delete elem[ internalKey ];
+
+ } else if ( typeof elem.removeAttribute !== core_strundefined ) {
+ elem.removeAttribute( internalKey );
+
+ } else {
+ elem[ internalKey ] = null;
+ }
+
+ core_deletedIds.push( id );
+ }
+ }
+ }
+ }
+ },
+
+ _evalUrl: function( url ) {
+ return jQuery.ajax({
+ url: url,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+ }
+});
+jQuery.fn.extend({
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function(i) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ }
+});
+var iframe, getStyles, curCSS,
+ ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity\s*=\s*([^)]*)/,
+ rposition = /^(top|right|bottom|left)$/,
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rmargin = /^margin/,
+ rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+ rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+ rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
+ elemdisplay = { BODY: "block" },
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: 0,
+ fontWeight: 400
+ },
+
+ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // check for vendor prefixed names
+ var capName = name.charAt(0).toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function isHidden( elem, el ) {
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = jQuery._data( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+ }
+ } else {
+
+ if ( !values[ index ] ) {
+ hidden = isHidden( elem );
+
+ if ( display && display !== "none" || !hidden ) {
+ jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+ }
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return jQuery.access( this, function( elem, name, value ) {
+ var len, styles,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each(function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "columnCount": true,
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
+ // but it would mean to define eight (for every problematic property) identical functions
+ if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var num, val, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ //convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+});
+
+// NOTE: we've included the "window" in window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+ getStyles = function( elem ) {
+ return window.getComputedStyle( elem, null );
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var width, minWidth, maxWidth,
+ computed = _computed || getStyles( elem ),
+
+ // getPropertyValue is only needed for .css('filter') in IE9, see #12537
+ ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
+ style = elem.style;
+
+ if ( computed ) {
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+ // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret;
+ };
+} else if ( document.documentElement.currentStyle ) {
+ getStyles = function( elem ) {
+ return elem.currentStyle;
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var left, rs, rsLeft,
+ computed = _computed || getStyles( elem ),
+ ret = computed ? computed[ name ] : undefined,
+ style = elem.style;
+
+ // Avoid setting ret to empty string here
+ // so we don't default to auto
+ if ( ret == null && style && style[ name ] ) {
+ ret = style[ name ];
+ }
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ // but not position css attributes, as those are proportional to the parent element instead
+ // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+ if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+ // Remember the original values
+ left = style.left;
+ rs = elem.runtimeStyle;
+ rsLeft = rs && rs.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ rs.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : ret;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ rs.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // at this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+ // at this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // at this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // we need the check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+ // Use the already-created iframe if possible
+ iframe = ( iframe ||
+ jQuery("")
+ .css( "cssText", "display:block !important" )
+ ).appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
+ doc.write("");
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+
+// Called ONLY from within css_defaultDisplay
+function actualDisplay( name, doc ) {
+ var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+ display = jQuery.css( elem[0], "display" );
+ elem.remove();
+ return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ // certain elements can have dimension info if we invisibly show them
+ // however, it must have a current display style that would benefit from this
+ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+ jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ }) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var styles = extra && getStyles( elem );
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ ) : 0
+ );
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ // if value === "", then remove inline opacity #12685
+ if ( ( value >= 1 || value === "" ) &&
+ jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+ style.removeAttribute ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there is no filter style applied in a css rule or unset inline opacity, we are done
+ if ( value === "" || currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+ };
+ }
+
+ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+ // getComputedStyle returns percent when specified for top/left/bottom/right
+ // rather than make the css module depend on the offset module, we just check for it here
+ if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+ jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+ // if curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ };
+ });
+ }
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+ (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ })
+ .filter(function(){
+ var type = this.type;
+ // Use .is(":disabled") so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !manipulation_rcheckableType.test( type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+});
+
+jQuery.fn.extend({
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ }
+});
+var
+ // Document location
+ ajaxLocParts,
+ ajaxLocation,
+ ajax_nonce = jQuery.now(),
+
+ ajax_rquery = /\?/,
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ while ( (dataType = dataTypes[i++]) ) {
+ // Prepend if requested
+ if ( dataType[0] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+ // Otherwise append
+ } else {
+ (structure[ dataType ] = structure[ dataType ] || []).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ });
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var deep, key,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, response, type,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+ jQuery.fn[ type ] = function( fn ){
+ return this.on( type, fn );
+ };
+});
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Cross-domain detection vars
+ parts,
+ // Loop variable
+ i,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers as string
+ responseHeadersString,
+ // timeout handle
+ timeoutTimer,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ transport,
+ // Response headers
+ responseHeaders,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+ var firstDataType, ct, finalDataType, type,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || jQuery("head")[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement("script");
+
+ script.async = true;
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( script.parentNode ) {
+ script.parentNode.removeChild( script );
+ }
+
+ // Dereference the script
+ script = null;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+
+ // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( undefined, true );
+ }
+ }
+ };
+ }
+});
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+var xhrCallbacks, xhrSupported,
+ xhrId = 0,
+ // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject && function() {
+ // Abort all pending requests
+ var key;
+ for ( key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( undefined, true );
+ }
+ };
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var handle, i,
+ xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( err ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+ var status, responseHeaders, statusText, responses;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occurred
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ responses = {};
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ if ( typeof xhr.responseText === "string" ) {
+ responses.text = xhr.responseText;
+ }
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ if ( !s.async ) {
+ // if we're in sync mode we fire the callback
+ callback();
+ } else if ( xhr.readyState === 4 ) {
+ // (IE6 & IE7) if it's in cache and has been
+ // retrieved directly we need to fire the callback
+ setTimeout( callback );
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback( undefined, true );
+ }
+ }
+ };
+ }
+ });
+}
+var fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ }]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // we're done with this property
+ return tween;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // if we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // resolve when we played the last frame
+ // otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'index' from above because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = jQuery._data( elem, "fxshow" );
+
+ // handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // doing this makes sure that the complete handler will be called
+ // before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( elem, "display" ) === "inline" &&
+ jQuery.css( elem, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+ style.display = "inline-block";
+
+ } else {
+ style.zoom = 1;
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ if ( !jQuery.support.shrinkWrapBlocks ) {
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+ }
+
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+ continue;
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = jQuery._data( elem, "fxshow", {} );
+ }
+
+ // store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+ jQuery._removeData( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+ }
+}
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails
+ // so, simple values such as "10px" are parsed to Float.
+ // complex values such as "rotate(1rad)" are returned as is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // use step hook for back compat - use cssHook if its there - use .style if its
+ // available and use plain properties where available
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || jQuery._data( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = jQuery._data( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // enable finishing flag on private data
+ data.finish = true;
+
+ // empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ attrs = { height: type },
+ i = 0;
+
+ // if we include width, step value is 1 to do all cssExpand values,
+ // if we don't include width, step value is 2 to skip over Left and Right
+ includeWidth = includeWidth? 1 : 0;
+ for( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p*Math.PI ) / 2;
+ }
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ if ( timer() && jQuery.timers.push( timer ) ) {
+ jQuery.fx.start();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ box = { top: 0, left: 0 },
+ elem = this[ 0 ],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // If we don't have gBCR, just use 0,0 rather than error
+ // BlackBerry 5, iOS 3 (original iPhone)
+ if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
+ left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+ };
+};
+
+jQuery.offset = {
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ parentOffset = { top: 0, left: 0 },
+ elem = this[ 0 ];
+
+ // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // we assume that getBoundingClientRect is available when computed position is fixed
+ offset = elem.getBoundingClientRect();
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || docElem;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
+
+ jQuery.fn[ method ] = function( val ) {
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ win.document.documentElement[ method ] :
+ elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+ // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// })();
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+ // Expose jQuery as module.exports in loaders that implement the Node
+ // module pattern (including browserify). Do not create the global, since
+ // the user will be storing it themselves locally, and globals are frowned
+ // upon in the Node module world.
+ module.exports = jQuery;
+} else {
+ // Otherwise expose jQuery to the global object as usual
+ window.jQuery = window.$ = jQuery;
+
+ // Register as a named AMD module, since jQuery can be concatenated with other
+ // files that may use define, but not via a proper concatenation script that
+ // understands anonymous AMD modules. A named AMD is safest and most robust
+ // way to register. Lowercase jquery is used because AMD module names are
+ // derived from file names, and jQuery is normally delivered in a lowercase
+ // file name. Do this after creating the global so that if an AMD module wants
+ // to call noConflict to hide this version of jQuery, it will work.
+ if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function () { return jQuery; } );
+ }
+}
+
+})( window );
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000000..ca17cb753b
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_flat_75_ffffff_40x100.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 0000000000..e6a4176cf0
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000000..0a084fd937
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_65_ffffff_1x400.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000000..5b48209976
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_75_dadada_1x400.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000000..820ef7b466
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000000..26770496a2
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_95_fef1ec_1x400.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000000..671bc6bf9b
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000000..368044d432
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-icons_222222_256x240.png b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000000..e9c8e16ac5
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_222222_256x240.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-icons_2e83ff_256x240.png b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000000..f2bf838837
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_2e83ff_256x240.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-icons_454545_256x240.png b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000000..d6169e8bf9
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_454545_256x240.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-icons_888888_256x240.png b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_888888_256x240.png
new file mode 100644
index 0000000000..d3e6e02a03
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_888888_256x240.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/images/ui-icons_cd0a0a_256x240.png b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000000..4937018923
Binary files /dev/null and b/restful-web-services/2.1/apidocs/jquery/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/restful-web-services/2.1/apidocs/jquery/jquery-1.10.2.js b/restful-web-services/2.1/apidocs/jquery/jquery-1.10.2.js
new file mode 100644
index 0000000000..c5c648255c
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/jquery/jquery-1.10.2.js
@@ -0,0 +1,9789 @@
+/*!
+ * jQuery JavaScript Library v1.10.2
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:48Z
+ */
+(function( window, undefined ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
+var
+ // The deferred used on DOM ready
+ readyList,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // Support: IE<10
+ // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
+ core_strundefined = typeof undefined,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ location = window.location,
+ document = window.document,
+ docElem = document.documentElement,
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // [[Class]] -> type pairs
+ class2type = {},
+
+ // List of deleted data cache ids, so we can reuse them
+ core_deletedIds = [],
+
+ core_version = "1.10.2",
+
+ // Save a reference to some core methods
+ core_concat = core_deletedIds.concat,
+ core_push = core_deletedIds.push,
+ core_slice = core_deletedIds.slice,
+ core_indexOf = core_deletedIds.indexOf,
+ core_toString = class2type.toString,
+ core_hasOwn = class2type.hasOwnProperty,
+ core_trim = core_version.trim,
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Used for matching numbers
+ core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+ // Used for splitting on whitespace
+ core_rnotwhite = /\S+/g,
+
+ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over
to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ },
+
+ // The ready event handler
+ completed = function( event ) {
+
+ // readyState === "complete" is good enough for us to call the dom ready in oldIE
+ if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+ detach();
+ jQuery.ready();
+ }
+ },
+ // Clean-up method for dom ready events
+ detach = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
+
+ } else {
+ document.detachEvent( "onreadystatechange", completed );
+ window.detachEvent( "onload", completed );
+ }
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: core_version,
+
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // scripts is true for back-compat
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return core_slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+ },
+
+ slice: function() {
+ return this.pushStack( core_slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: core_push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var src, copyIsArray, copy, name, options, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger("ready").off("ready");
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ isWindow: function( obj ) {
+ /* jshint eqeqeq: false */
+ return obj != null && obj == obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ return !isNaN( parseFloat(obj) ) && isFinite( obj );
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return String( obj );
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ core_toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ isPlainObject: function( obj ) {
+ var key;
+
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !core_hasOwn.call(obj, "constructor") &&
+ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Support: IE<9
+ // Handle iteration over inherited properties before own properties.
+ if ( jQuery.support.ownLast ) {
+ for ( key in obj ) {
+ return core_hasOwn.call( obj, key );
+ }
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+ for ( key in obj ) {}
+
+ return key === undefined || core_hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ // data: string of html
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
+ // keepScripts (optional): If true, will include scripts passed in the html string
+ parseHTML: function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
+
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+ if ( scripts ) {
+ jQuery( scripts ).remove();
+ }
+ return jQuery.merge( [], parsed.childNodes );
+ },
+
+ parseJSON: function( data ) {
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ if ( data === null ) {
+ return data;
+ }
+
+ if ( typeof data === "string" ) {
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ if ( data ) {
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return ( new Function( "return " + data ) )();
+ }
+ }
+ }
+
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && jQuery.trim( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+ function( text ) {
+ return text == null ?
+ "" :
+ core_trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ core_push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ var len;
+
+ if ( arr ) {
+ if ( core_indexOf ) {
+ return core_indexOf.call( arr, elem, i );
+ }
+
+ len = arr.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in arr && arr[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var l = second.length,
+ i = first.length,
+ j = 0;
+
+ if ( typeof l === "number" ) {
+ for ( ; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var retVal,
+ ret = [],
+ i = 0,
+ length = elems.length;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return core_concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var args, proxy, tmp;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = core_slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Multifunctional method to get and set values of a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ length = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < length; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
+ },
+
+ now: function() {
+ return ( new Date() ).getTime();
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations.
+ // Note: this method belongs to the css module but it's needed here for the support module.
+ // If support gets modularized, this method should be moved back to the css module.
+ swap: function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+ }
+});
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
+
+ // Standards-based browsers support DOMContentLoaded
+ } else if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
+
+ // If IE event model is used
+ } else {
+ // Ensure firing before onload, maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", completed );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", completed );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var top = false;
+
+ try {
+ top = window.frameElement == null && document.documentElement;
+ } catch(e) {}
+
+ if ( top && top.doScroll ) {
+ (function doScrollCheck() {
+ if ( !jQuery.isReady ) {
+
+ try {
+ // Use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ top.doScroll("left");
+ } catch(e) {
+ return setTimeout( doScrollCheck, 50 );
+ }
+
+ // detach all dom ready events
+ detach();
+
+ // and execute any waiting functions
+ jQuery.ready();
+ }
+ })();
+ }
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+ var length = obj.length,
+ type = jQuery.type( obj );
+
+ if ( jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || type !== "function" &&
+ ( length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj );
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+/*!
+ * Sizzle CSS Selector Engine v1.10.2
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03
+ */
+(function( window, undefined ) {
+
+var i,
+ support,
+ cachedruns,
+ Expr,
+ getText,
+ isXML,
+ compile,
+ outermostContext,
+ sortInput,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + -(new Date()),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ hasDuplicate = false,
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ strundefined = typeof undefined,
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf if we can't use a native one
+ indexOf = arr.indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+ "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+ // Prefer arguments quoted,
+ // then not containing pseudos/brackets,
+ // then attribute selectors/non-parenthetical expressions,
+ // then anything else
+ // These preferences are here to reduce the number of selectors
+ // needing tokenize in the PSEUDO preFilter
+ pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rsibling = new RegExp( whitespace + "*[+~]" ),
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ // BMP codepoint
+ high < 0 ?
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( documentIsHTML && !seed ) {
+
+ // Shortcuts
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && context.parentNode || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key += " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.defaultView;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+
+ // Support tests
+ documentIsHTML = !isXML( doc );
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent.attachEvent && parent !== parent.top ) {
+ parent.attachEvent( "onbeforeunload", function() {
+ setDocument();
+ });
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Check if getElementsByClassName can be trusted
+ support.getElementsByClassName = assert(function( div ) {
+ div.innerHTML = "
";
+
+ // Support: Safari<4
+ // Catch class over-caching
+ div.firstChild.className = "i";
+ // Support: Opera<10
+ // Catch gEBCN failure to find non-leading classes
+ return div.getElementsByClassName("i").length === 2;
+ });
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = " ";
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+
+ // Support: Opera 10-12/IE8
+ // ^= $= *= and empty values
+ // Should not select anything
+ // Support: Windows 8 Native Apps
+ // The type attribute is restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "t", "" );
+
+ if ( div.querySelectorAll("[t^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = docElem.compareDocumentPosition ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+ if ( compare ) {
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ }
+
+ // Not directly comparable, sort on existence of method
+ return a.compareDocumentPosition ? -1 : 1;
+ } :
+ function( a, b ) {
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Parentless nodes are either documents or disconnected
+ } else if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, document, null, [elem] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val === undefined ?
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null :
+ val;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ for ( ; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (see #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[5] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] && match[4] !== undefined ) {
+ match[2] = match[4];
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+ // not comment, processing instructions, or others
+ // Thanks to Diego Perini for the nodeName shortcut
+ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+function tokenize( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( tokens = [] );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+}
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var data, cache, outerCache,
+ dirkey = dirruns + " " + doneName;
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+ if ( (data = cache[1]) === true || data === cachedruns ) {
+ return data === true;
+ }
+ } else {
+ cache = outerCache[ dir ] = [ dirkey ];
+ cache[1] = matcher( elem, context, xml ) || cachedruns;
+ if ( cache[1] === true ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ // A counter to specify which element is currently being matched
+ var matcherCachedRuns = 0,
+ bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, expandContext ) {
+ var elem, j, matcher,
+ setMatched = [],
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ outermost = expandContext != null,
+ contextBackup = outermostContext,
+ // We must always have either seed elements or context
+ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ cachedruns = matcherCachedRuns;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ cachedruns = ++matcherCachedRuns;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !group ) {
+ group = tokenize( selector );
+ }
+ i = group.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( group[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ }
+ return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function select( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ match = tokenize( selector );
+
+ if ( !seed ) {
+ // Try to minimize operations if there is only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+ }
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && context.parentNode || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function
+ // Provide `match` to avoid retokenization if we modified the selector above
+ compile( selector, match )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector )
+ );
+ return results;
+}
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = " ";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = " ";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ elem[ name ] === true ? name.toLowerCase() : null;
+ }
+ });
+}
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var action = tuple[ 0 ],
+ fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = core_slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+ if( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // if we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+});
+jQuery.support = (function( support ) {
+
+ var all, a, input, select, fragment, opt, eventName, isSupported, i,
+ div = document.createElement("div");
+
+ // Setup
+ div.setAttribute( "className", "t" );
+ div.innerHTML = " a ";
+
+ // Finish early in limited (non-browser) environments
+ all = div.getElementsByTagName("*") || [];
+ a = div.getElementsByTagName("a")[ 0 ];
+ if ( !a || !a.style || !all.length ) {
+ return support;
+ }
+
+ // First batch of tests
+ select = document.createElement("select");
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName("input")[ 0 ];
+
+ a.style.cssText = "top:1px;float:left;opacity:.5";
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ support.getSetAttribute = div.className !== "t";
+
+ // IE strips leading whitespace when .innerHTML is used
+ support.leadingWhitespace = div.firstChild.nodeType === 3;
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ support.tbody = !div.getElementsByTagName("tbody").length;
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ support.htmlSerialize = !!div.getElementsByTagName("link").length;
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ support.style = /top/.test( a.getAttribute("style") );
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ support.hrefNormalized = a.getAttribute("href") === "/a";
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ support.opacity = /^0.5/.test( a.style.opacity );
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ support.cssFloat = !!a.style.cssFloat;
+
+ // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+ support.checkOn = !!input.value;
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ support.optSelected = opt.selected;
+
+ // Tests for enctype support on a form (#6743)
+ support.enctype = !!document.createElement("form").enctype;
+
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>";
+
+ // Will be defined later
+ support.inlineBlockNeedsLayout = false;
+ support.shrinkWrapBlocks = false;
+ support.pixelPosition = false;
+ support.deleteExpando = true;
+ support.noCloneEvent = true;
+ support.reliableMarginRight = true;
+ support.boxSizingReliable = true;
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Support: IE<9
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ // Check if we can trust getAttribute("value")
+ input = document.createElement("input");
+ input.setAttribute( "value", "" );
+ support.input = input.getAttribute( "value" ) === "";
+
+ // Check if an input maintains its value after becoming a radio
+ input.value = "t";
+ input.setAttribute( "type", "radio" );
+ support.radioValue = input.value === "t";
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "checked", "t" );
+ input.setAttribute( "name", "t" );
+
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( input );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<9
+ // Opera does not clone events (and typeof div.attachEvent === undefined).
+ // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+ if ( div.attachEvent ) {
+ div.attachEvent( "onclick", function() {
+ support.noCloneEvent = false;
+ });
+
+ div.cloneNode( true ).click();
+ }
+
+ // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+ // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
+ for ( i in { submit: true, change: true, focusin: true }) {
+ div.setAttribute( eventName = "on" + i, "t" );
+
+ support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+ }
+
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ // Support: IE<9
+ // Iteration over object's inherited properties before its own.
+ for ( i in jQuery( support ) ) {
+ break;
+ }
+ support.ownLast = i !== "0";
+
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, marginDiv, tds,
+ divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+ body = document.getElementsByTagName("body")[0];
+
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
+ }
+
+ container = document.createElement("div");
+ container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+ body.appendChild( container ).appendChild( div );
+
+ // Support: IE8
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ div.innerHTML = "";
+ tds = div.getElementsByTagName("td");
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Support: IE8
+ // Check if empty table cells still have offsetWidth/Height
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Check box-sizing and margin behavior.
+ div.innerHTML = "";
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+
+ // Workaround failing boxSizing test due to offsetWidth returning wrong value
+ // with some non-1 values of body zoom, ticket #13543
+ jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+ support.boxSizing = div.offsetWidth === 4;
+ });
+
+ // Use window.getComputedStyle because jsdom on node.js will break without it.
+ if ( window.getComputedStyle ) {
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ marginDiv = div.appendChild( document.createElement("div") );
+ marginDiv.style.cssText = div.style.cssText = divReset;
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+
+ support.reliableMarginRight =
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+ }
+
+ if ( typeof div.style.zoom !== core_strundefined ) {
+ // Support: IE<8
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ div.innerHTML = "";
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+ // Support: IE6
+ // Check if elements with layout shrink-wrap their children
+ div.style.display = "block";
+ div.innerHTML = "
";
+ div.firstChild.style.width = "5px";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+ if ( support.inlineBlockNeedsLayout ) {
+ // Prevent IE 6 from affecting layout for positioned elements #11048
+ // Prevent IE from shrinking the body in IE 7 mode #12869
+ // Support: IE<8
+ body.style.zoom = 1;
+ }
+ }
+
+ body.removeChild( container );
+
+ // Null elements to avoid leaks in IE
+ container = div = tds = marginDiv = null;
+ });
+
+ // Null elements to avoid leaks in IE
+ all = select = fragment = opt = a = input = null;
+
+ return support;
+})({});
+
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var ret, thisCache,
+ internalKey = jQuery.expando,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
+ } else {
+ id = internalKey;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ // Avoid exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( typeof name === "string" ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+}
+
+function internalRemoveData( elem, name, pvt ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i,
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
+
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split(" ");
+ }
+ }
+ } else {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = name.concat( jQuery.map( name, jQuery.camelCase ) );
+ }
+
+ i = name.length;
+ while ( i-- ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
+ return;
+ }
+ }
+
+ // Destroy the cache
+ if ( isNode ) {
+ jQuery.cleanData( [ elem ], true );
+
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+ /* jshint eqeqeq: false */
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+ /* jshint eqeqeq: true */
+ delete cache[ id ];
+
+ // When all else fails, null
+ } else {
+ cache[ id ] = null;
+ }
+}
+
+jQuery.extend({
+ cache: {},
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "applet": true,
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return internalData( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ return internalRemoveData( elem, name );
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return internalData( elem, name, data, true );
+ },
+
+ _removeData: function( elem, name ) {
+ return internalRemoveData( elem, name, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ // Do not set data on non-element because it will not be cleared (#8335).
+ if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+ return false;
+ }
+
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ // nodes accept data unless otherwise specified; rejection can be conditional
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var attrs, name,
+ data = null,
+ i = 0,
+ elem = this[0];
+
+ // Special expections of .data basically thwart jQuery.access,
+ // so implement the relevant behavior ourselves
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = jQuery.data( elem );
+
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attrs = elem.attributes;
+ for ( ; i < attrs.length; i++ ) {
+ name = attrs[i].name;
+
+ if ( name.indexOf("data-") === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ jQuery._data( elem, "parsedAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ return arguments.length > 1 ?
+
+ // Sets one value
+ this.each(function() {
+ jQuery.data( this, key, value );
+ }) :
+
+ // Gets one value
+ // Try to fetch any internally stored data first
+ elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ var name;
+ for ( name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray(data) ) {
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ jQuery._removeData( elem, type + "queue" );
+ jQuery._removeData( elem, key );
+ })
+ });
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while( i-- ) {
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var nodeHook, boolHook,
+ rclass = /[\t\r\n\f]/g,
+ rreturn = /\r/g,
+ rfocusable = /^(?:input|select|textarea|button|object)$/i,
+ rclickable = /^(?:a|area)$/i,
+ ruseDefault = /^(?:checked|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute,
+ getSetInput = jQuery.support.input;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
+ }
+
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+ elem.className = jQuery.trim( cur );
+
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = arguments.length === 0 || typeof value === "string" && value;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
+ }
+ if ( proceed ) {
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
+
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+ elem.className = value ? jQuery.trim( cur ) : "";
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( core_rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( type === core_strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // If the element has a class name or if we're passed "false",
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var ret, hooks, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // Use proper attribute retrieval(#6932, #12072)
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === core_strundefined ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( core_rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ elem[ propName ] = false;
+ // Support: IE<9
+ // Also clear defaultChecked/defaultSelected (if appropriate)
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] =
+ elem[ propName ] = false;
+ }
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ } else {
+ jQuery.attr( elem, name, "" );
+ }
+
+ elem.removeAttribute( getSetAttribute ? name : propName );
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to default in case type is set after value during creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
+
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
+
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ return tabindex ?
+ parseInt( tabindex, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ -1;
+ }
+ }
+ }
+});
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ // IE<8 needs the *property* name
+ elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
+
+ // Use defaultChecked and defaultSelected for oldIE
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
+ }
+
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
+
+ jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+ function( elem, name, isXML ) {
+ var fn = jQuery.expr.attrHandle[ name ],
+ ret = isXML ?
+ undefined :
+ /* jshint eqeqeq: false */
+ (jQuery.expr.attrHandle[ name ] = undefined) !=
+ getter( elem, name, isXML ) ?
+
+ name.toLowerCase() :
+ null;
+ jQuery.expr.attrHandle[ name ] = fn;
+ return ret;
+ } :
+ function( elem, name, isXML ) {
+ return isXML ?
+ undefined :
+ elem[ jQuery.camelCase( "default-" + name ) ] ?
+ name.toLowerCase() :
+ null;
+ };
+});
+
+// fix oldIE attroperties
+if ( !getSetInput || !getSetAttribute ) {
+ jQuery.attrHooks.value = {
+ set: function( elem, value, name ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ // Does not return so that setAttribute is also used
+ elem.defaultValue = value;
+ } else {
+ // Use nodeHook if defined (#1954); otherwise setAttribute is fine
+ return nodeHook && nodeHook.set( elem, value, name );
+ }
+ }
+ };
+}
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = {
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ elem.setAttributeNode(
+ (ret = elem.ownerDocument.createAttribute( name ))
+ );
+ }
+
+ ret.value = value += "";
+
+ // Break association with cloned elements by also using setAttribute (#9646)
+ return name === "value" || value === elem.getAttribute( name ) ?
+ value :
+ undefined;
+ }
+ };
+ jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
+ // Some attributes are constructed with empty-string values when not defined
+ function( elem, name, isXML ) {
+ var ret;
+ return isXML ?
+ undefined :
+ (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
+ ret.value :
+ null;
+ };
+ jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret = elem.getAttributeNode( name );
+ return ret && ret.specified ?
+ ret.value :
+ undefined;
+ },
+ set: nodeHook.set
+ };
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ set: function( elem, value, name ) {
+ nodeHook.set( elem, value === "" ? false : value, name );
+ }
+ };
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ };
+ });
+}
+
+
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+ // href/src property should get the full normalized URL (#10299/#12915)
+ jQuery.each([ "href", "src" ], function( i, name ) {
+ jQuery.propHooks[ name ] = {
+ get: function( elem ) {
+ return elem.getAttribute( name, 4 );
+ }
+ };
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Note: IE uppercases css property names, but if we were to .toLowerCase()
+ // .cssText, that would destroy case senstitivity in URL's, like in "background"
+ return elem.style.cssText || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = value + "" );
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ };
+}
+
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+ }
+ }
+ };
+ if ( !jQuery.support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ // Support: Webkit
+ // "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+ var tmp, events, t, handleObjIn,
+ special, eventHandle, handleObj,
+ handlers, type, namespaces, origType,
+ elemData = jQuery._data( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+ var j, handleObj, tmp,
+ origCount, t, events,
+ special, handlers, type,
+ namespaces, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery._removeData( elem, "events" );
+ }
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ var handle, ontype, cur,
+ bubbleType, special, tmp, i,
+ eventPath = [ elem || document ],
+ type = core_hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ try {
+ elem[ type ]();
+ } catch ( e ) {
+ // IE<9 dies on focus/blur to hidden element (#1486,#12518)
+ // only reproducible on winXP IE8 native, not IE9 in IE8 mode
+ }
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, ret, handleObj, matched, j,
+ handlerQueue = [],
+ args = core_slice.call( arguments ),
+ handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var sel, handleObj, matches, i,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ // Black-hole SVG instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+ /* jshint eqeqeq: false */
+ for ( ; cur != this; cur = cur.parentNode || this ) {
+ /* jshint eqeqeq: true */
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
+
+ return handlerQueue;
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: IE<9
+ // Fix target property (#1925)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Support: Chrome 23+, Safari?
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Support: IE<9
+ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+ event.metaKey = !!event.metaKey;
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var body, eventDoc, doc,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ try {
+ this.focus();
+ return false;
+ } catch ( e ) {
+ // Support: IE<9
+ // If we error on focus to hidden element (#1486, #12518),
+ // let .trigger() run the handlers
+ }
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Even when returnValue equals to undefined Firefox will still show alert
+ if ( event.result !== undefined ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ var name = "on" + type;
+
+ if ( elem.detachEvent ) {
+
+ // #8545, #7054, preventing memory leaks for custom events in IE6-8
+ // detachEvent needed property on element, by name of that event, to properly expose it to GC
+ if ( typeof elem[ name ] === core_strundefined ) {
+ elem[ name ] = null;
+ }
+
+ elem.detachEvent( name, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+ if ( !e ) {
+ return;
+ }
+
+ // If preventDefault exists, run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // Support: IE
+ // Otherwise set the returnValue property of the original event to false
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+ if ( !e ) {
+ return;
+ }
+ // If stopPropagation exists, run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+
+ // Support: IE
+ // Set the cancelBubble property of the original event to true
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ event._submit_bubble = true;
+ });
+ jQuery._data( form, "submitBubbles", true );
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ }
+ // Allow triggered, simulated change events (#11500)
+ jQuery.event.simulate( "change", this, event, true );
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ jQuery._data( elem, "changeBubbles", true );
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return !rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var type, origFn;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+});
+var isSimple = /^.[^:#\[\.,]*$/,
+ rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ rneedsContext = jQuery.expr.match.needsContext,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ ret = [],
+ self = this,
+ len = self.length;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+
+ has: function( target ) {
+ var i,
+ targets = jQuery( target, this ),
+ len = targets.length;
+
+ return this.filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ ret = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ cur = ret.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( jQuery.unique(all) );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ do {
+ cur = cur[ dir ];
+ } while ( cur && cur.nodeType !== 1 );
+
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ ret = jQuery.unique( ret );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
+ });
+}
+function createSafeFragment( document ) {
+ var list = nodeNames.split( "|" ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( list.length ) {
+ safeFrag.createElement(
+ list.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+ "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ rtagName = /<([\w:]+)/,
+ rtbody = /\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
+ wrapMap = {
+ option: [ 1, "", " " ],
+ legend: [ 1, "", " " ],
+ area: [ 1, "", " " ],
+ param: [ 1, "", " " ],
+ thead: [ 1, "" ],
+ tr: [ 2, "" ],
+ col: [ 2, "" ],
+ td: [ 3, "" ],
+
+ // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+ // unless wrapped in a div with non-breaking characters in front of it.
+ _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X", "
" ]
+ },
+ safeFragment = createSafeFragment( document ),
+ fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+jQuery.fn.extend({
+ text: function( value ) {
+ return jQuery.access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ });
+ },
+
+ after: function() {
+ return this.domManip( arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ });
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ var elem,
+ elems = selector ? jQuery.filter( selector, this ) : this,
+ i = 0;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem ) );
+ }
+
+ if ( elem.parentNode ) {
+ if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+ setGlobalEval( getAll( elem, "script" ) );
+ }
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+
+ // If this is a select, ensure that it displays empty (#12336)
+ // Support: IE<9
+ if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
+ elem.options.length = 0;
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ return jQuery.access( this, function( value ) {
+ var elem = this[0] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined ) {
+ return elem.nodeType === 1 ?
+ elem.innerHTML.replace( rinlinejQuery, "" ) :
+ undefined;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
+ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+ value = value.replace( rxhtmlTag, "<$1>$2>" );
+
+ try {
+ for (; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ elem = this[i] || {};
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var
+ // Snapshot the DOM in case .domManip sweeps something relevant into its fragment
+ args = jQuery.map( this, function( elem ) {
+ return [ elem.nextSibling, elem.parentNode ];
+ }),
+ i = 0;
+
+ // Make the changes, replacing each context element with the new content
+ this.domManip( arguments, function( elem ) {
+ var next = args[ i++ ],
+ parent = args[ i++ ];
+
+ if ( parent ) {
+ // Don't use the snapshot next if it has moved (#13810)
+ if ( next && next.parentNode !== parent ) {
+ next = this.nextSibling;
+ }
+ jQuery( this ).remove();
+ parent.insertBefore( elem, next );
+ }
+ // Allow new content to include elements from the context set
+ }, true );
+
+ // Force removal if there was no new content (e.g., from empty arguments)
+ return i ? this : this.remove();
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, callback, allowIntersection ) {
+
+ // Flatten any nested arrays
+ args = core_concat.apply( [], args );
+
+ var first, node, hasScripts,
+ scripts, doc, fragment,
+ i = 0,
+ l = this.length,
+ set = this,
+ iNoClone = l - 1,
+ value = args[0],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
+ return this.each(function( index ) {
+ var self = set.eq( index );
+ if ( isFunction ) {
+ args[0] = value.call( this, index, self.html() );
+ }
+ self.domManip( args, callback, allowIntersection );
+ });
+ }
+
+ if ( l ) {
+ fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ if ( first ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( this[i], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+ // Hope ajax is available...
+ jQuery._evalUrl( node.src );
+ } else {
+ jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+
+ // Fix #11809: Avoid leaking memory
+ fragment = first = null;
+ }
+ }
+
+ return this;
+ }
+});
+
+// Support: IE<8
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+ if ( match ) {
+ elem.type = match[1];
+ } else {
+ elem.removeAttribute("type");
+ }
+ return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var elem,
+ i = 0;
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
+ }
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function fixCloneNodeIssues( src, dest ) {
+ var nodeName, e, data;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 copies events bound via attachEvent when using cloneNode.
+ if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
+ data = jQuery._data( dest );
+
+ for ( e in data.events ) {
+ jQuery.removeEvent( dest, e, data.handle );
+ }
+
+ // Event data gets referenced instead of copied if the expando gets copied too
+ dest.removeAttribute( jQuery.expando );
+ }
+
+ // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
+ if ( nodeName === "script" && dest.text !== src.text ) {
+ disableScript( dest ).text = src.text;
+ restoreScript( dest );
+
+ // IE6-10 improperly clones children of object elements using classid.
+ // IE10 throws NoModificationAllowedError if parent is null, #12132.
+ } else if ( nodeName === "object" ) {
+ if ( dest.parentNode ) {
+ dest.outerHTML = src.outerHTML;
+ }
+
+ // This path appears unavoidable for IE9. When cloning an object
+ // element in IE9, the outerHTML strategy above is not sufficient.
+ // If the src has innerHTML and the destination does not,
+ // copy the src.innerHTML into the dest.innerHTML. #10324
+ if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
+ dest.innerHTML = src.innerHTML;
+ }
+
+ } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+
+ dest.defaultChecked = dest.checked = src.checked;
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.defaultSelected = dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ i = 0,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone(true);
+ jQuery( insert[i] )[ original ]( elems );
+
+ // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+ core_push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+});
+
+function getAll( context, tag ) {
+ var elems, elem,
+ i = 0,
+ found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+ typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
+ undefined;
+
+ if ( !found ) {
+ for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
+ if ( !tag || jQuery.nodeName( elem, tag ) ) {
+ found.push( elem );
+ } else {
+ jQuery.merge( found, getAll( elem, tag ) );
+ }
+ }
+ }
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], found ) :
+ found;
+}
+
+// Used in buildFragment, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( manipulation_rcheckableType.test( elem.type ) ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var destElements, node, clone, i, srcElements,
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+ clone = elem.cloneNode( true );
+
+ // IE<=8 does not properly clone detached, unknown element nodes
+ } else {
+ fragmentDiv.innerHTML = elem.outerHTML;
+ fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+ }
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ // Fix all IE cloning issues
+ for ( i = 0; (node = srcElements[i]) != null; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ fixCloneNodeIssues( node, destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0; (node = srcElements[i]) != null; i++ ) {
+ cloneCopyEvent( node, destElements[i] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ destElements = srcElements = node = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ buildFragment: function( elems, context, scripts, selection ) {
+ var j, elem, contains,
+ tmp, tag, tbody, wrap,
+ l = elems.length,
+
+ // Ensure a safe fragment
+ safe = createSafeFragment( context ),
+
+ nodes = [],
+ i = 0;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || safe.appendChild( context.createElement("div") );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+
+ tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>$2>" ) + wrap[2];
+
+ // Descend through wrappers to the right content
+ j = wrap[0];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Manually add leading whitespace removed by IE
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
+ }
+
+ // Remove IE's autoinserted from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a , *may* have spurious
+ elem = tag === "table" && !rtbody.test( elem ) ?
+ tmp.firstChild :
+
+ // String was a bare or
+ wrap[1] === "" && !rtbody.test( elem ) ?
+ tmp :
+ 0;
+
+ j = elem && elem.childNodes.length;
+ while ( j-- ) {
+ if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
+ elem.removeChild( tbody );
+ }
+ }
+ }
+
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Fix #12392 for WebKit and IE > 9
+ tmp.textContent = "";
+
+ // Fix #12392 for oldIE
+ while ( tmp.firstChild ) {
+ tmp.removeChild( tmp.firstChild );
+ }
+
+ // Remember the top-level container for proper cleanup
+ tmp = safe.lastChild;
+ }
+ }
+ }
+
+ // Fix #11356: Clear elements from fragment
+ if ( tmp ) {
+ safe.removeChild( tmp );
+ }
+
+ // Reset defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ if ( !jQuery.support.appendChecked ) {
+ jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
+ }
+
+ i = 0;
+ while ( (elem = nodes[ i++ ]) ) {
+
+ // #4087 - If origin and destination elements are the same, and this is
+ // that element, do not do anything
+ if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( safe.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( (elem = tmp[ j++ ]) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ tmp = null;
+
+ return safe;
+ },
+
+ cleanData: function( elems, /* internal */ acceptData ) {
+ var elem, type, id, data,
+ i = 0,
+ internalKey = jQuery.expando,
+ cache = jQuery.cache,
+ deleteExpando = jQuery.support.deleteExpando,
+ special = jQuery.event.special;
+
+ for ( ; (elem = elems[i]) != null; i++ ) {
+
+ if ( acceptData || jQuery.acceptData( elem ) ) {
+
+ id = elem[ internalKey ];
+ data = id && cache[ id ];
+
+ if ( data ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Remove cache only if it was not already removed by jQuery.event.remove
+ if ( cache[ id ] ) {
+
+ delete cache[ id ];
+
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( deleteExpando ) {
+ delete elem[ internalKey ];
+
+ } else if ( typeof elem.removeAttribute !== core_strundefined ) {
+ elem.removeAttribute( internalKey );
+
+ } else {
+ elem[ internalKey ] = null;
+ }
+
+ core_deletedIds.push( id );
+ }
+ }
+ }
+ }
+ },
+
+ _evalUrl: function( url ) {
+ return jQuery.ajax({
+ url: url,
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ });
+ }
+});
+jQuery.fn.extend({
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each(function(i) {
+ jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ }
+});
+var iframe, getStyles, curCSS,
+ ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity\s*=\s*([^)]*)/,
+ rposition = /^(top|right|bottom|left)$/,
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rmargin = /^margin/,
+ rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+ rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+ rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
+ elemdisplay = { BODY: "block" },
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: 0,
+ fontWeight: 400
+ },
+
+ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+ // shortcut for names that are not vendor prefixed
+ if ( name in style ) {
+ return name;
+ }
+
+ // check for vendor prefixed names
+ var capName = name.charAt(0).toUpperCase() + name.slice(1),
+ origName = name,
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in style ) {
+ return name;
+ }
+ }
+
+ return origName;
+}
+
+function isHidden( elem, el ) {
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = jQuery._data( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+ }
+ } else {
+
+ if ( !values[ index ] ) {
+ hidden = isHidden( elem );
+
+ if ( display && display !== "none" || !hidden ) {
+ jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+ }
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend({
+ css: function( name, value ) {
+ return jQuery.access( this, function( elem, name, value ) {
+ var len, styles,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each(function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "columnCount": true,
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
+ // but it would mean to define eight (for every problematic property) identical functions
+ if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var num, val, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+ // gets hook for the prefixed version
+ // followed by the unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ //convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+});
+
+// NOTE: we've included the "window" in window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+ getStyles = function( elem ) {
+ return window.getComputedStyle( elem, null );
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var width, minWidth, maxWidth,
+ computed = _computed || getStyles( elem ),
+
+ // getPropertyValue is only needed for .css('filter') in IE9, see #12537
+ ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
+ style = elem.style;
+
+ if ( computed ) {
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+ // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+ // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret;
+ };
+} else if ( document.documentElement.currentStyle ) {
+ getStyles = function( elem ) {
+ return elem.currentStyle;
+ };
+
+ curCSS = function( elem, name, _computed ) {
+ var left, rs, rsLeft,
+ computed = _computed || getStyles( elem ),
+ ret = computed ? computed[ name ] : undefined,
+ style = elem.style;
+
+ // Avoid setting ret to empty string here
+ // so we don't default to auto
+ if ( ret == null && style && style[ name ] ) {
+ ret = style[ name ];
+ }
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ // but not position css attributes, as those are proportional to the parent element instead
+ // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+ if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+ // Remember the original values
+ left = style.left;
+ rs = elem.runtimeStyle;
+ rsLeft = rs && rs.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ rs.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : ret;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ rs.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+ var matches = rnumsplit.exec( value );
+ return matches ?
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+ // both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // at this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+ // at this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // at this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
+ // we need the check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+ // Use the already-created iframe if possible
+ iframe = ( iframe ||
+ jQuery("")
+ .css( "cssText", "display:block !important" )
+ ).appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
+ doc.write("");
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+
+// Called ONLY from within css_defaultDisplay
+function actualDisplay( name, doc ) {
+ var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+ display = jQuery.css( elem[0], "display" );
+ elem.remove();
+ return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ // certain elements can have dimension info if we invisibly show them
+ // however, it must have a current display style that would benefit from this
+ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+ jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ }) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var styles = extra && getStyles( elem );
+ return setPositiveNumber( elem, value, extra ?
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ ) : 0
+ );
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ // if value === "", then remove inline opacity #12685
+ if ( ( value >= 1 || value === "" ) &&
+ jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+ style.removeAttribute ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there is no filter style applied in a css rule or unset inline opacity, we are done
+ if ( value === "" || currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+ };
+ }
+
+ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+ // getComputedStyle returns percent when specified for top/left/bottom/right
+ // rather than make the css module depend on the offset module, we just check for it here
+ if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+ jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+ // if curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ };
+ });
+ }
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+ (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+});
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+jQuery.fn.extend({
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ })
+ .filter(function(){
+ var type = this.type;
+ // Use .is(":disabled") so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !manipulation_rcheckableType.test( type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+});
+
+jQuery.fn.extend({
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+ }
+});
+var
+ // Document location
+ ajaxLocParts,
+ ajaxLocation,
+ ajax_nonce = jQuery.now(),
+
+ ajax_rquery = /\?/,
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+ // For each dataType in the dataTypeExpression
+ while ( (dataType = dataTypes[i++]) ) {
+ // Prepend if requested
+ if ( dataType[0] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+ // Otherwise append
+ } else {
+ (structure[ dataType ] = structure[ dataType ] || []).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ });
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var deep, key,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, response, type,
+ self = this,
+ off = url.indexOf(" ");
+
+ if ( off >= 0 ) {
+ selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax({
+ url: url,
+
+ // if "type" variable is undefined, then "GET" method will be used
+ type: type,
+ dataType: "html",
+ data: params
+ }).done(function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery("").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ }).complete( callback && function( jqXHR, status ) {
+ self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+ });
+ }
+
+ return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+ jQuery.fn[ type ] = function( fn ){
+ return this.on( type, fn );
+ };
+});
+
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ type: "GET",
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Cross-domain detection vars
+ parts,
+ // Loop variable
+ i,
+ // URL without anti-cache param
+ cacheURL,
+ // Response headers as string
+ responseHeadersString,
+ // timeout handle
+ timeoutTimer,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ transport,
+ // Response headers
+ responseHeaders,
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks("once memory"),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // The jqXHR state
+ state = 0,
+ // Default abort message
+ strAbort = "canceled",
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( (match = rheaders.exec( responseHeadersString )) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+ // A cross-domain request is in order when we have a protocol:host:port mismatch
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger("ajaxStart");
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout(function() {
+ jqXHR.abort("timeout");
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader("Last-Modified");
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader("etag");
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger("ajaxStop");
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ });
+ };
+});
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+ var firstDataType, ct, finalDataType, type,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s[ "throws" ] ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /(?:java|ecma)script/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || jQuery("head")[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement("script");
+
+ script.async = true;
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( script.parentNode ) {
+ script.parentNode.removeChild( script );
+ }
+
+ // Dereference the script
+ script = null;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+
+ // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( undefined, true );
+ }
+ }
+ };
+ }
+});
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always(function() {
+ // Restore preexisting value
+ window[ callbackName ] = overwritten;
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+ // make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ });
+
+ // Delegate to script
+ return "script";
+ }
+});
+var xhrCallbacks, xhrSupported,
+ xhrId = 0,
+ // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject && function() {
+ // Abort all pending requests
+ var key;
+ for ( key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( undefined, true );
+ }
+ };
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var handle, i,
+ xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( err ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+ var status, responseHeaders, statusText, responses;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occurred
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ responses = {};
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ if ( typeof xhr.responseText === "string" ) {
+ responses.text = xhr.responseText;
+ }
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ if ( !s.async ) {
+ // if we're in sync mode we fire the callback
+ callback();
+ } else if ( xhr.readyState === 4 ) {
+ // (IE6 & IE7) if it's in cache and has been
+ // retrieved directly we need to fire the callback
+ setTimeout( callback );
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback( undefined, true );
+ }
+ }
+ };
+ }
+ });
+}
+var fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+ rrun = /queueHooks$/,
+ animationPrefilters = [ defaultPrefilter ],
+ tweeners = {
+ "*": [function( prop, value ) {
+ var tween = this.createTween( prop, value ),
+ target = tween.cur(),
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+ scale = 1,
+ maxIterations = 20;
+
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
+
+ // Make sure we update the tween properties later on
+ parts = parts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
+
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+ }
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
+ return tween;
+ }]
+ };
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout(function() {
+ fxNow = undefined;
+ });
+ return ( fxNow = jQuery.now() );
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+ // we're done with this property
+ return tween;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = animationPrefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+ // don't match elem in the :animated selector
+ delete tick.elem;
+ }),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+ // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise({
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, { specialEasing: {} }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+ // if we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // resolve when we played the last frame
+ // otherwise, reject
+ if ( gotoEnd ) {
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ }),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ })
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'index' from above because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.split(" ");
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ tweeners[ prop ] = tweeners[ prop ] || [];
+ tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ animationPrefilters.unshift( callback );
+ } else {
+ animationPrefilters.push( callback );
+ }
+ }
+});
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = jQuery._data( elem, "fxshow" );
+
+ // handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always(function() {
+ // doing this makes sure that the complete handler will be called
+ // before this completes
+ anim.always(function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ });
+ });
+ }
+
+ // height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( elem, "display" ) === "inline" &&
+ jQuery.css( elem, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+ style.display = "inline-block";
+
+ } else {
+ style.zoom = 1;
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ if ( !jQuery.support.shrinkWrapBlocks ) {
+ anim.always(function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ });
+ }
+ }
+
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+ continue;
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = jQuery._data( elem, "fxshow", {} );
+ }
+
+ // store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done(function() {
+ jQuery( elem ).hide();
+ });
+ }
+ anim.done(function() {
+ var prop;
+ jQuery._removeData( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ });
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+ }
+}
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || "swing";
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ if ( tween.elem[ tween.prop ] != null &&
+ (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails
+ // so, simple values such as "10px" are parsed to Float.
+ // complex values such as "rotate(1rad)" are returned as is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+ // use step hook for back compat - use cssHook if its there - use .style if its
+ // available and use plain properties where available
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+});
+
+jQuery.fn.extend({
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // animate to the value specified
+ .end().animate({ opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || jQuery._data( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each(function() {
+ var index,
+ data = jQuery._data( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // enable finishing flag on private data
+ data.finish = true;
+
+ // empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // turn off finishing flag
+ delete data.finish;
+ });
+ }
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ attrs = { height: type },
+ i = 0;
+
+ // if we include width, step value is 1 to do all cssExpand values,
+ // if we don't include width, step value is 2 to skip over Left and Right
+ includeWidth = includeWidth? 1 : 0;
+ for( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show"),
+ slideUp: genFx("hide"),
+ slideToggle: genFx("toggle"),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p*Math.PI ) / 2;
+ }
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ if ( timer() && jQuery.timers.push( timer ) ) {
+ jQuery.fx.start();
+ }
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ clearInterval( timerId );
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var docElem, win,
+ box = { top: 0, left: 0 },
+ elem = this[ 0 ],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ // If we don't have gBCR, just use 0,0 rather than error
+ // BlackBerry 5, iOS 3 (original iPhone)
+ if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+ box = elem.getBoundingClientRect();
+ }
+ win = getWindow( doc );
+ return {
+ top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
+ left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+ };
+};
+
+jQuery.offset = {
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ parentOffset = { top: 0, left: 0 },
+ elem = this[ 0 ];
+
+ // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+ // we assume that getBoundingClientRect is available when computed position is fixed
+ offset = elem.getBoundingClientRect();
+ } else {
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || docElem;
+ while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || docElem;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
+
+ jQuery.fn[ method ] = function( val ) {
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ win.document.documentElement[ method ] :
+ elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length, null );
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+ // margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+ // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ });
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+ return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// })();
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+ // Expose jQuery as module.exports in loaders that implement the Node
+ // module pattern (including browserify). Do not create the global, since
+ // the user will be storing it themselves locally, and globals are frowned
+ // upon in the Node module world.
+ module.exports = jQuery;
+} else {
+ // Otherwise expose jQuery to the global object as usual
+ window.jQuery = window.$ = jQuery;
+
+ // Register as a named AMD module, since jQuery can be concatenated with other
+ // files that may use define, but not via a proper concatenation script that
+ // understands anonymous AMD modules. A named AMD is safest and most robust
+ // way to register. Lowercase jquery is used because AMD module names are
+ // derived from file names, and jQuery is normally delivered in a lowercase
+ // file name. Do this after creating the global so that if an AMD module wants
+ // to call noConflict to hide this version of jQuery, it will work.
+ if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function () { return jQuery; } );
+ }
+}
+
+})( window );
diff --git a/restful-web-services/2.1/apidocs/jquery/jquery-3.3.1.js b/restful-web-services/2.1/apidocs/jquery/jquery-3.3.1.js
new file mode 100644
index 0000000000..9b5206bcc6
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/jquery/jquery-3.3.1.js
@@ -0,0 +1,10364 @@
+/*!
+ * jQuery JavaScript Library v3.3.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2018-01-20T17:24Z
+ */
+( function( global, factory ) {
+
+ "use strict";
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+var isFunction = function isFunction( obj ) {
+
+ // Support: Chrome <=57, Firefox <=52
+ // In some browsers, typeof returns "function" for HTML
elements
+ // (i.e., `typeof document.createElement( "object" ) === "function"`).
+ // We don't want to classify *any* DOM node as a function.
+ return typeof obj === "function" && typeof obj.nodeType !== "number";
+ };
+
+
+var isWindow = function isWindow( obj ) {
+ return obj != null && obj === obj.window;
+ };
+
+
+
+
+ var preservedScriptAttributes = {
+ type: true,
+ src: true,
+ noModule: true
+ };
+
+ function DOMEval( code, doc, node ) {
+ doc = doc || document;
+
+ var i,
+ script = doc.createElement( "script" );
+
+ script.text = code;
+ if ( node ) {
+ for ( i in preservedScriptAttributes ) {
+ if ( node[ i ] ) {
+ script[ i ] = node[ i ];
+ }
+ }
+ }
+ doc.head.appendChild( script ).parentNode.removeChild( script );
+ }
+
+
+function toType( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android <=2.3 only (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+}
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+ version = "3.3.1",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android <=4.0 only
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+
+ // Return all the elements in a clean array
+ if ( num == null ) {
+ return slice.call( this );
+ }
+
+ // Return just the one element from the set
+ return num < 0 ? this[ num + this.length ] : this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && Array.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isPlainObject: function( obj ) {
+ var proto, Ctor;
+
+ // Detect obvious negatives
+ // Use toString instead of jQuery.type to catch host objects
+ if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+ return false;
+ }
+
+ proto = getProto( obj );
+
+ // Objects with no prototype (e.g., `Object.create( null )`) are plain
+ if ( !proto ) {
+ return true;
+ }
+
+ // Objects with prototype are plain iff they were constructed by a global Object function
+ Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+ },
+
+ isEmptyObject: function( obj ) {
+
+ /* eslint-disable no-unused-vars */
+ // See https://github.com/eslint/eslint/issues/6125
+ var name;
+
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ DOMEval( code );
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android <=4.0 only
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: real iOS 8.2 only (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = toType( obj );
+
+ if ( isFunction( obj ) || isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // https://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+
+ // CSS escapes
+ // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // CSS string/identifier serialization
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+ fcssescape = function( ch, asCodePoint ) {
+ if ( asCodePoint ) {
+
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+ if ( ch === "\0" ) {
+ return "\uFFFD";
+ }
+
+ // Control characters and (dependent upon position) numbers get escaped as code points
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ }
+
+ // Other potentially-special ASCII characters get backslash-escaped
+ return "\\" + ch;
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ },
+
+ disabledAncestor = addCombinator(
+ function( elem ) {
+ return elem.disabled === true && ("form" in elem || "label" in elem);
+ },
+ { dir: "parentNode", next: "legend" }
+ );
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !compilerCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+ if ( nodeType !== 1 ) {
+ newContext = context;
+ newSelector = selector;
+
+ // qSA looks outside Element context, which is not what we want
+ // Thanks to Andrew Dupont for this workaround technique
+ // Support: IE <=8
+ // Exclude object elements
+ } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rcssescape, fcssescape );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = "#" + nid + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+ var el = document.createElement("fieldset");
+
+ try {
+ return !!fn( el );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( el.parentNode ) {
+ el.parentNode.removeChild( el );
+ }
+ // release memory in IE
+ el = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ a.sourceIndex - b.sourceIndex;
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+ // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+ return function( elem ) {
+
+ // Only certain elements can match :enabled or :disabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+ if ( "form" in elem ) {
+
+ // Check for inherited disabledness on relevant non-disabled elements:
+ // * listed form-associated elements in a disabled fieldset
+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+ // * option elements in a disabled optgroup
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+ // All such elements have a "form" property.
+ if ( elem.parentNode && elem.disabled === false ) {
+
+ // Option elements defer to a parent optgroup if present
+ if ( "label" in elem ) {
+ if ( "label" in elem.parentNode ) {
+ return elem.parentNode.disabled === disabled;
+ } else {
+ return elem.disabled === disabled;
+ }
+ }
+
+ // Support: IE 6 - 11
+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+ return elem.isDisabled === disabled ||
+
+ // Where there is no isDisabled, check manually
+ /* jshint -W018 */
+ elem.isDisabled !== !disabled &&
+ disabledAncestor( elem ) === disabled;
+ }
+
+ return elem.disabled === disabled;
+
+ // Try to winnow out elements that can't be disabled before trusting the disabled property.
+ // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+ // even exist on them, let alone have a boolean value.
+ } else if ( "label" in elem ) {
+ return elem.disabled === disabled;
+ }
+
+ // Remaining elements are neither :enabled nor :disabled
+ return false;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, subWindow,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( preferredDoc !== document &&
+ (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+ // Support: IE 11, Edge
+ if ( subWindow.addEventListener ) {
+ subWindow.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( subWindow.attachEvent ) {
+ subWindow.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( el ) {
+ el.className = "i";
+ return !el.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( el ) {
+ el.appendChild( document.createComment("") );
+ return !el.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programmatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( el ) {
+ docElem.appendChild( el ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID filter and find
+ if ( support.getById ) {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var elem = context.getElementById( id );
+ return elem ? [ elem ] : [];
+ }
+ };
+ } else {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+
+ // Support: IE 6 - 7 only
+ // getElementById is not reliable as a find shortcut
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var node, i, elems,
+ elem = context.getElementById( id );
+
+ if ( elem ) {
+
+ // Verify the id attribute
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+
+ // Fall back on getElementsByName
+ elems = context.getElementsByName( id );
+ i = 0;
+ while ( (elem = elems[i++]) ) {
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+ }
+ }
+
+ return [];
+ }
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See https://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( el ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // https://bugs.jquery.com/ticket/12359
+ docElem.appendChild( el ).innerHTML = " " +
+ "" +
+ " ";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !el.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !el.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibling-combinator selector` fails
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( el ) {
+ el.innerHTML = " " +
+ " ";
+
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ el.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( el.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( el.querySelectorAll(":enabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Support: IE9-11+
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
+ docElem.appendChild( el ).disabled = true;
+ if ( el.querySelectorAll(":disabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ el.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( el ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( el, "*" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( el, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !compilerCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.escape = function( sel ) {
+ return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": createDisabledPseudo( false ),
+ "disabled": createDisabledPseudo( true ),
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ skip = combinator.next,
+ key = skip || dir,
+ checkNonElements = base && key === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ return false;
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( skip && skip === elem.nodeName.toLowerCase() ) {
+ elem = elem[ dir ] || elem;
+ } else if ( (oldCache = uniqueCache[ key ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ key ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+ // Should return 1, but returns 4 (following)
+ return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+ el.innerHTML = " ";
+ return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+ el.innerHTML = " ";
+ el.firstChild.setAttribute( "value", "" );
+ return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+ return el.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+
+var siblings = function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+ }
+
+ // Single element
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+ }
+
+ // Arraylike of elements (jQuery, arguments, Array)
+ if ( typeof qualifier !== "string" ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ } );
+ }
+
+ // Filtered directly for both simple and complex selectors
+ return jQuery.filter( qualifier, elements, not );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ if ( elems.length === 1 && elem.nodeType === 1 ) {
+ return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+ }
+
+ return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i, ret,
+ len = this.length,
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ ret = this.pushStack( [] );
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ // Shortcut simple #id case for speed
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ if ( elem ) {
+
+ // Inject the element directly into the jQuery object
+ this[ 0 ] = elem;
+ this.length = 1;
+ }
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ targets = typeof selectors !== "string" && jQuery( selectors );
+
+ // Positional selectors never match, since there's no _selection_ context
+ if ( !rneedsContext.test( selectors ) ) {
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( targets ?
+ targets.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ if ( nodeName( elem, "iframe" ) ) {
+ return elem.contentDocument;
+ }
+
+ // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+ // Treat the template element as a regular one in browsers that
+ // don't support it.
+ if ( nodeName( elem, "template" ) ) {
+ elem = elem.content || elem;
+ }
+
+ return jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = locked || options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && toType( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory && !firing ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+function Identity( v ) {
+ return v;
+}
+function Thrower( ex ) {
+ throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+ var method;
+
+ try {
+
+ // Check for promise aspect first to privilege synchronous behavior
+ if ( value && isFunction( ( method = value.promise ) ) ) {
+ method.call( value ).done( resolve ).fail( reject );
+
+ // Other thenables
+ } else if ( value && isFunction( ( method = value.then ) ) ) {
+ method.call( value, resolve, reject );
+
+ // Other non-thenables
+ } else {
+
+ // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+ // * false: [ value ].slice( 0 ) => resolve( value )
+ // * true: [ value ].slice( 1 ) => resolve()
+ resolve.apply( undefined, [ value ].slice( noValue ) );
+ }
+
+ // For Promises/A+, convert exceptions into rejections
+ // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+ // Deferred#then to conditionally suppress rejection.
+ } catch ( value ) {
+
+ // Support: Android 4.0 only
+ // Strict mode functions invoked without .call/.apply get global-object context
+ reject.apply( undefined, [ value ] );
+ }
+}
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, callbacks,
+ // ... .then handlers, argument index, [final state]
+ [ "notify", "progress", jQuery.Callbacks( "memory" ),
+ jQuery.Callbacks( "memory" ), 2 ],
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ "catch": function( fn ) {
+ return promise.then( null, fn );
+ },
+
+ // Keep pipe for back-compat
+ pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+
+ // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+ var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+ // deferred.progress(function() { bind to newDefer or newDefer.notify })
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+ then: function( onFulfilled, onRejected, onProgress ) {
+ var maxDepth = 0;
+ function resolve( depth, deferred, handler, special ) {
+ return function() {
+ var that = this,
+ args = arguments,
+ mightThrow = function() {
+ var returned, then;
+
+ // Support: Promises/A+ section 2.3.3.3.3
+ // https://promisesaplus.com/#point-59
+ // Ignore double-resolution attempts
+ if ( depth < maxDepth ) {
+ return;
+ }
+
+ returned = handler.apply( that, args );
+
+ // Support: Promises/A+ section 2.3.1
+ // https://promisesaplus.com/#point-48
+ if ( returned === deferred.promise() ) {
+ throw new TypeError( "Thenable self-resolution" );
+ }
+
+ // Support: Promises/A+ sections 2.3.3.1, 3.5
+ // https://promisesaplus.com/#point-54
+ // https://promisesaplus.com/#point-75
+ // Retrieve `then` only once
+ then = returned &&
+
+ // Support: Promises/A+ section 2.3.4
+ // https://promisesaplus.com/#point-64
+ // Only check objects and functions for thenability
+ ( typeof returned === "object" ||
+ typeof returned === "function" ) &&
+ returned.then;
+
+ // Handle a returned thenable
+ if ( isFunction( then ) ) {
+
+ // Special processors (notify) just wait for resolution
+ if ( special ) {
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special )
+ );
+
+ // Normal processors (resolve) also hook into progress
+ } else {
+
+ // ...and disregard older resolution values
+ maxDepth++;
+
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special ),
+ resolve( maxDepth, deferred, Identity,
+ deferred.notifyWith )
+ );
+ }
+
+ // Handle all other returned values
+ } else {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Identity ) {
+ that = undefined;
+ args = [ returned ];
+ }
+
+ // Process the value(s)
+ // Default process is resolve
+ ( special || deferred.resolveWith )( that, args );
+ }
+ },
+
+ // Only normal processors (resolve) catch and reject exceptions
+ process = special ?
+ mightThrow :
+ function() {
+ try {
+ mightThrow();
+ } catch ( e ) {
+
+ if ( jQuery.Deferred.exceptionHook ) {
+ jQuery.Deferred.exceptionHook( e,
+ process.stackTrace );
+ }
+
+ // Support: Promises/A+ section 2.3.3.3.4.1
+ // https://promisesaplus.com/#point-61
+ // Ignore post-resolution exceptions
+ if ( depth + 1 >= maxDepth ) {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Thrower ) {
+ that = undefined;
+ args = [ e ];
+ }
+
+ deferred.rejectWith( that, args );
+ }
+ }
+ };
+
+ // Support: Promises/A+ section 2.3.3.3.1
+ // https://promisesaplus.com/#point-57
+ // Re-resolve promises immediately to dodge false rejection from
+ // subsequent errors
+ if ( depth ) {
+ process();
+ } else {
+
+ // Call an optional hook to record the stack, in case of exception
+ // since it's otherwise lost when execution goes async
+ if ( jQuery.Deferred.getStackHook ) {
+ process.stackTrace = jQuery.Deferred.getStackHook();
+ }
+ window.setTimeout( process );
+ }
+ };
+ }
+
+ return jQuery.Deferred( function( newDefer ) {
+
+ // progress_handlers.add( ... )
+ tuples[ 0 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction( onProgress ) ?
+ onProgress :
+ Identity,
+ newDefer.notifyWith
+ )
+ );
+
+ // fulfilled_handlers.add( ... )
+ tuples[ 1 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction( onFulfilled ) ?
+ onFulfilled :
+ Identity
+ )
+ );
+
+ // rejected_handlers.add( ... )
+ tuples[ 2 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction( onRejected ) ?
+ onRejected :
+ Thrower
+ )
+ );
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 5 ];
+
+ // promise.progress = list.add
+ // promise.done = list.add
+ // promise.fail = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(
+ function() {
+
+ // state = "resolved" (i.e., fulfilled)
+ // state = "rejected"
+ state = stateString;
+ },
+
+ // rejected_callbacks.disable
+ // fulfilled_callbacks.disable
+ tuples[ 3 - i ][ 2 ].disable,
+
+ // rejected_handlers.disable
+ // fulfilled_handlers.disable
+ tuples[ 3 - i ][ 3 ].disable,
+
+ // progress_callbacks.lock
+ tuples[ 0 ][ 2 ].lock,
+
+ // progress_handlers.lock
+ tuples[ 0 ][ 3 ].lock
+ );
+ }
+
+ // progress_handlers.fire
+ // fulfilled_handlers.fire
+ // rejected_handlers.fire
+ list.add( tuple[ 3 ].fire );
+
+ // deferred.notify = function() { deferred.notifyWith(...) }
+ // deferred.resolve = function() { deferred.resolveWith(...) }
+ // deferred.reject = function() { deferred.rejectWith(...) }
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+ return this;
+ };
+
+ // deferred.notifyWith = list.fireWith
+ // deferred.resolveWith = list.fireWith
+ // deferred.rejectWith = list.fireWith
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( singleValue ) {
+ var
+
+ // count of uncompleted subordinates
+ remaining = arguments.length,
+
+ // count of unprocessed arguments
+ i = remaining,
+
+ // subordinate fulfillment data
+ resolveContexts = Array( i ),
+ resolveValues = slice.call( arguments ),
+
+ // the master Deferred
+ master = jQuery.Deferred(),
+
+ // subordinate callback factory
+ updateFunc = function( i ) {
+ return function( value ) {
+ resolveContexts[ i ] = this;
+ resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( !( --remaining ) ) {
+ master.resolveWith( resolveContexts, resolveValues );
+ }
+ };
+ };
+
+ // Single- and empty arguments are adopted like Promise.resolve
+ if ( remaining <= 1 ) {
+ adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+ !remaining );
+
+ // Use .then() to unwrap secondary thenables (cf. gh-3000)
+ if ( master.state() === "pending" ||
+ isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+ return master.then();
+ }
+ }
+
+ // Multiple arguments are aggregated like Promise.all array elements
+ while ( i-- ) {
+ adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+ }
+
+ return master.promise();
+ }
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+ // Support: IE 8 - 9 only
+ // Console exists when dev tools are open, which can happen at any time
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+ window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+ }
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+ window.setTimeout( function() {
+ throw error;
+ } );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+ readyList
+ .then( fn )
+
+ // Wrap jQuery.readyException in a function so that the lookup
+ // happens at the time of error handling instead of callback
+ // registration.
+ .catch( function( error ) {
+ jQuery.readyException( error );
+ } );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+ }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+} else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( toType( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ if ( chainable ) {
+ return elems;
+ }
+
+ // Gets
+ if ( bulk ) {
+ return fn.call( elems );
+ }
+
+ return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+
+
+// Matches dashed string for camelizing
+var rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([a-z])/g;
+
+// Used by camelCase as callback to replace()
+function fcamelCase( all, letter ) {
+ return letter.toUpperCase();
+}
+
+// Convert dashed to camelCase; used by the css and data modules
+// Support: IE <=9 - 11, Edge 12 - 15
+// Microsoft forgot to hump their vendor prefix (#9572)
+function camelCase( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+}
+var acceptData = function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ cache: function( owner ) {
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ // Always use camelCase key (gh-2257)
+ if ( typeof data === "string" ) {
+ cache[ camelCase( data ) ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ camelCase( prop ) ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+
+ // Always use camelCase key (gh-2257)
+ owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
+ },
+ access: function( owner, key, value ) {
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ return this.get( owner, key );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key !== undefined ) {
+
+ // Support array or space separated string of keys
+ if ( Array.isArray( key ) ) {
+
+ // If key is an array of keys...
+ // We always set camelCase keys, so remove that.
+ key = key.map( camelCase );
+ } else {
+ key = camelCase( key );
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ key = key in cache ?
+ [ key ] :
+ ( key.match( rnothtmlwhite ) || [] );
+ }
+
+ i = key.length;
+
+ while ( i-- ) {
+ delete cache[ key[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <=35 - 45
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+ if ( data === "true" ) {
+ return true;
+ }
+
+ if ( data === "false" ) {
+ return false;
+ }
+
+ if ( data === "null" ) {
+ return null;
+ }
+
+ // Only convert to a number if it doesn't change the string
+ if ( data === +data + "" ) {
+ return +data;
+ }
+
+ if ( rbrace.test( data ) ) {
+ return JSON.parse( data );
+ }
+
+ return data;
+}
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = getData( data );
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE 11 only
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // The key will always be camelCased in Data
+ data = dataUser.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each( function() {
+
+ // We always store the camelCased key
+ dataUser.set( this, key, value );
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || Array.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+ // isHiddenWithinTree might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+
+ // Inline style trumps all
+ return elem.style.display === "none" ||
+ elem.style.display === "" &&
+
+ // Otherwise, check computed style
+ // Support: Firefox <=43 - 45
+ // Disconnected elements can have computed display: none, so first confirm that elem is
+ // in the document.
+ jQuery.contains( elem.ownerDocument, elem ) &&
+
+ jQuery.css( elem, "display" ) === "none";
+ };
+
+var swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted, scale,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() {
+ return tween.cur();
+ } :
+ function() {
+ return jQuery.css( elem, prop, "" );
+ },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Support: Firefox <=54
+ // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
+ initial = initial / 2;
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ while ( maxIterations-- ) {
+
+ // Evaluate and update our best guess (doubling guesses that zero out).
+ // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
+ jQuery.style( elem, prop, initialInUnit + unit );
+ if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
+ maxIterations = 0;
+ }
+ initialInUnit = initialInUnit / scale;
+
+ }
+
+ initialInUnit = initialInUnit * 2;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+ var temp,
+ doc = elem.ownerDocument,
+ nodeName = elem.nodeName,
+ display = defaultDisplayMap[ nodeName ];
+
+ if ( display ) {
+ return display;
+ }
+
+ temp = doc.body.appendChild( doc.createElement( nodeName ) );
+ display = jQuery.css( temp, "display" );
+
+ temp.parentNode.removeChild( temp );
+
+ if ( display === "none" ) {
+ display = "block";
+ }
+ defaultDisplayMap[ nodeName ] = display;
+
+ return display;
+}
+
+function showHide( elements, show ) {
+ var display, elem,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ // Determine new display value for elements that need to change
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ display = elem.style.display;
+ if ( show ) {
+
+ // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+ // check is required in this first loop unless we have a nonempty display value (either
+ // inline or about-to-be-restored)
+ if ( display === "none" ) {
+ values[ index ] = dataPriv.get( elem, "display" ) || null;
+ if ( !values[ index ] ) {
+ elem.style.display = "";
+ }
+ }
+ if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+ values[ index ] = getDefaultDisplay( elem );
+ }
+ } else {
+ if ( display !== "none" ) {
+ values[ index ] = "none";
+
+ // Remember what we're overwriting
+ dataPriv.set( elem, "display", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop to avoid constant reflow
+ for ( index = 0; index < length; index++ ) {
+ if ( values[ index ] != null ) {
+ elements[ index ].style.display = values[ index ];
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend( {
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each( function() {
+ if ( isHiddenWithinTree( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ } );
+ }
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE <=9 only
+ option: [ 1, "", " " ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting or other required elements.
+ thead: [ 1, "" ],
+ col: [ 2, "" ],
+ tr: [ 2, "" ],
+ td: [ 3, "" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+ // Support: IE <=9 - 11 only
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret;
+
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ ret = context.getElementsByTagName( tag || "*" );
+
+ } else if ( typeof context.querySelectorAll !== "undefined" ) {
+ ret = context.querySelectorAll( tag || "*" );
+
+ } else {
+ ret = [];
+ }
+
+ if ( tag === undefined || tag && nodeName( context, tag ) ) {
+ return jQuery.merge( [ context ], ret );
+ }
+
+ return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+
+var rhtml = /<|?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( toType( elem ) === "object" ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0 - 4.3 only
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Android <=4.1 only
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE <=11 only
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Ensure that invalid selectors throw exceptions at attach time
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+ if ( selector ) {
+ jQuery.find.matchesSelector( documentElement, selector );
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( nativeEvent ) {
+
+ // Make a writable jQuery.Event from the native event object
+ var event = jQuery.event.fix( nativeEvent );
+
+ var i, j, ret, matched, handleObj, handlerQueue,
+ args = new Array( arguments.length ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+
+ for ( i = 1; i < arguments.length; i++ ) {
+ args[ i ] = arguments[ i ];
+ }
+
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, handleObj, sel, matchedHandlers, matchedSelectors,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ if ( delegateCount &&
+
+ // Support: IE <=9
+ // Black-hole SVG instance trees (trac-13180)
+ cur.nodeType &&
+
+ // Support: Firefox <=42
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+ // Support: IE 11 only
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+ !( event.type === "click" && event.button >= 1 ) ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+ matchedHandlers = [];
+ matchedSelectors = {};
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matchedSelectors[ sel ] === undefined ) {
+ matchedSelectors[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) > -1 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matchedSelectors[ sel ] ) {
+ matchedHandlers.push( handleObj );
+ }
+ }
+ if ( matchedHandlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ cur = this;
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+ }
+
+ return handlerQueue;
+ },
+
+ addProp: function( name, hook ) {
+ Object.defineProperty( jQuery.Event.prototype, name, {
+ enumerable: true,
+ configurable: true,
+
+ get: isFunction( hook ) ?
+ function() {
+ if ( this.originalEvent ) {
+ return hook( this.originalEvent );
+ }
+ } :
+ function() {
+ if ( this.originalEvent ) {
+ return this.originalEvent[ name ];
+ }
+ },
+
+ set: function( value ) {
+ Object.defineProperty( this, name, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: value
+ } );
+ }
+ } );
+ },
+
+ fix: function( originalEvent ) {
+ return originalEvent[ jQuery.expando ] ?
+ originalEvent :
+ new jQuery.Event( originalEvent );
+ },
+
+ special: {
+ load: {
+
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+ // This "if" is needed for plain objects
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+
+ // Allow instantiation without the 'new' keyword
+ if ( !( this instanceof jQuery.Event ) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+
+ // Support: Android <=2.3 only
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Create target properties
+ // Support: Safari <=6 - 7 only
+ // Target should not be a text node (#504, #13143)
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
+ src.target.parentNode :
+ src.target;
+
+ this.currentTarget = src.currentTarget;
+ this.relatedTarget = src.relatedTarget;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || Date.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+ isSimulated: false,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+ altKey: true,
+ bubbles: true,
+ cancelable: true,
+ changedTouches: true,
+ ctrlKey: true,
+ detail: true,
+ eventPhase: true,
+ metaKey: true,
+ pageX: true,
+ pageY: true,
+ shiftKey: true,
+ view: true,
+ "char": true,
+ charCode: true,
+ key: true,
+ keyCode: true,
+ button: true,
+ buttons: true,
+ clientX: true,
+ clientY: true,
+ offsetX: true,
+ offsetY: true,
+ pointerId: true,
+ pointerType: true,
+ screenX: true,
+ screenY: true,
+ targetTouches: true,
+ toElement: true,
+ touches: true,
+
+ which: function( event ) {
+ var button = event.button;
+
+ // Add which for key events
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
+ return event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+ if ( button & 1 ) {
+ return 1;
+ }
+
+ if ( button & 2 ) {
+ return 3;
+ }
+
+ if ( button & 4 ) {
+ return 2;
+ }
+
+ return 0;
+ }
+
+ return event.which;
+ }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mouseenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+} );
+
+jQuery.fn.extend( {
+
+ on: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn );
+ },
+ one: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ?
+ handleObj.origType + "." + handleObj.namespace :
+ handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each( function() {
+ jQuery.event.remove( this, types, fn, selector );
+ } );
+ }
+} );
+
+
+var
+
+ /* eslint-disable max-len */
+
+ // See https://github.com/eslint/eslint/issues/3229
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+ /* eslint-enable */
+
+ // Support: IE <=10 - 11, Edge 12 - 13 only
+ // In IE/Edge using regex groups here causes severe slowdowns.
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
+ rnoInnerhtml = /\r\n";
+
+// inject VBScript
+document.write(IEBinaryToArray_ByteStr_Script);
+
+global.JSZipUtils._getBinaryFromXHR = function (xhr) {
+ var binary = xhr.responseBody;
+ var byteMapping = {};
+ for ( var i = 0; i < 256; i++ ) {
+ for ( var j = 0; j < 256; j++ ) {
+ byteMapping[ String.fromCharCode( i + (j << 8) ) ] =
+ String.fromCharCode(i) + String.fromCharCode(j);
+ }
+ }
+ var rawBytes = IEBinaryToArray_ByteStr(binary);
+ var lastChr = IEBinaryToArray_ByteStr_Last(binary);
+ return rawBytes.replace(/[\s\S]/g, function( match ) {
+ return byteMapping[match];
+ }) + lastChr;
+};
+
+// enforcing Stuk's coding style
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{}]},{},[1])
+;
diff --git a/restful-web-services/2.1/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.min.js b/restful-web-services/2.1/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.min.js
new file mode 100644
index 0000000000..93d8bc8ef2
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.min.js
@@ -0,0 +1,10 @@
+/*!
+
+JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
+
+
+(c) 2014 Stuart Knightley, David Duponchel
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
+
+*/
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g\r\n\r\n";document.write(b),a.JSZipUtils._getBinaryFromXHR=function(a){for(var b=a.responseBody,c={},d=0;256>d;d++)for(var e=0;256>e;e++)c[String.fromCharCode(d+(e<<8))]=String.fromCharCode(d)+String.fromCharCode(e);var f=IEBinaryToArray_ByteStr(b),g=IEBinaryToArray_ByteStr_Last(b);return f.replace(/[\s\S]/g,function(a){return c[a]})+g}},{}]},{},[1]);
diff --git a/restful-web-services/2.1/apidocs/jquery/jszip-utils/dist/jszip-utils.js b/restful-web-services/2.1/apidocs/jquery/jszip-utils/dist/jszip-utils.js
new file mode 100644
index 0000000000..775895ec92
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/jquery/jszip-utils/dist/jszip-utils.js
@@ -0,0 +1,118 @@
+/*!
+
+JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
+
+
+(c) 2014 Stuart Knightley, David Duponchel
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
+
+*/
+!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.JSZipUtils=e():"undefined"!=typeof global?global.JSZipUtils=e():"undefined"!=typeof self&&(self.JSZipUtils=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o
+
+(c) 2014 Stuart Knightley, David Duponchel
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
+
+*/
+!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g
+
+(c) 2009-2014 Stuart Knightley
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.JSZip=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ }
+ else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+
+ }
+
+ return output;
+};
+
+// public method for decoding
+exports.decode = function(input, utf8) {
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+ while (i < input.length) {
+
+ enc1 = _keyStr.indexOf(input.charAt(i++));
+ enc2 = _keyStr.indexOf(input.charAt(i++));
+ enc3 = _keyStr.indexOf(input.charAt(i++));
+ enc4 = _keyStr.indexOf(input.charAt(i++));
+
+ chr1 = (enc1 << 2) | (enc2 >> 4);
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+ chr3 = ((enc3 & 3) << 6) | enc4;
+
+ output = output + String.fromCharCode(chr1);
+
+ if (enc3 != 64) {
+ output = output + String.fromCharCode(chr2);
+ }
+ if (enc4 != 64) {
+ output = output + String.fromCharCode(chr3);
+ }
+
+ }
+
+ return output;
+
+};
+
+},{}],2:[function(_dereq_,module,exports){
+'use strict';
+function CompressedObject() {
+ this.compressedSize = 0;
+ this.uncompressedSize = 0;
+ this.crc32 = 0;
+ this.compressionMethod = null;
+ this.compressedContent = null;
+}
+
+CompressedObject.prototype = {
+ /**
+ * Return the decompressed content in an unspecified format.
+ * The format will depend on the decompressor.
+ * @return {Object} the decompressed content.
+ */
+ getContent: function() {
+ return null; // see implementation
+ },
+ /**
+ * Return the compressed content in an unspecified format.
+ * The format will depend on the compressed conten source.
+ * @return {Object} the compressed content.
+ */
+ getCompressedContent: function() {
+ return null; // see implementation
+ }
+};
+module.exports = CompressedObject;
+
+},{}],3:[function(_dereq_,module,exports){
+'use strict';
+exports.STORE = {
+ magic: "\x00\x00",
+ compress: function(content, compressionOptions) {
+ return content; // no compression
+ },
+ uncompress: function(content) {
+ return content; // no compression
+ },
+ compressInputType: null,
+ uncompressInputType: null
+};
+exports.DEFLATE = _dereq_('./flate');
+
+},{"./flate":8}],4:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+var table = [
+ 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
+ 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
+ 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
+ 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
+ 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
+ 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
+ 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
+ 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
+ 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
+ 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
+ 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
+ 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
+ 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
+ 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
+ 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
+ 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
+ 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
+ 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
+ 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
+ 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
+ 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
+ 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
+ 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
+ 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
+ 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
+ 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
+ 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
+ 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
+ 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
+ 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
+ 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
+ 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
+ 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
+ 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
+ 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
+ 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
+ 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
+ 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
+ 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
+ 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
+ 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
+ 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
+ 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
+ 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
+ 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
+ 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
+ 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
+ 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
+ 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
+ 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
+ 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
+ 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
+ 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
+ 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
+ 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
+ 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
+ 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
+ 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
+ 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
+ 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
+ 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
+ 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
+ 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
+ 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
+];
+
+/**
+ *
+ * Javascript crc32
+ * http://www.webtoolkit.info/
+ *
+ */
+module.exports = function crc32(input, crc) {
+ if (typeof input === "undefined" || !input.length) {
+ return 0;
+ }
+
+ var isArray = utils.getTypeOf(input) !== "string";
+
+ if (typeof(crc) == "undefined") {
+ crc = 0;
+ }
+ var x = 0;
+ var y = 0;
+ var b = 0;
+
+ crc = crc ^ (-1);
+ for (var i = 0, iTop = input.length; i < iTop; i++) {
+ b = isArray ? input[i] : input.charCodeAt(i);
+ y = (crc ^ b) & 0xFF;
+ x = table[y];
+ crc = (crc >>> 8) ^ x;
+ }
+
+ return crc ^ (-1);
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./utils":21}],5:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+function DataReader(data) {
+ this.data = null; // type : see implementation
+ this.length = 0;
+ this.index = 0;
+}
+DataReader.prototype = {
+ /**
+ * Check that the offset will not go too far.
+ * @param {string} offset the additional offset to check.
+ * @throws {Error} an Error if the offset is out of bounds.
+ */
+ checkOffset: function(offset) {
+ this.checkIndex(this.index + offset);
+ },
+ /**
+ * Check that the specifed index will not be too far.
+ * @param {string} newIndex the index to check.
+ * @throws {Error} an Error if the index is out of bounds.
+ */
+ checkIndex: function(newIndex) {
+ if (this.length < newIndex || newIndex < 0) {
+ throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
+ }
+ },
+ /**
+ * Change the index.
+ * @param {number} newIndex The new index.
+ * @throws {Error} if the new index is out of the data.
+ */
+ setIndex: function(newIndex) {
+ this.checkIndex(newIndex);
+ this.index = newIndex;
+ },
+ /**
+ * Skip the next n bytes.
+ * @param {number} n the number of bytes to skip.
+ * @throws {Error} if the new index is out of the data.
+ */
+ skip: function(n) {
+ this.setIndex(this.index + n);
+ },
+ /**
+ * Get the byte at the specified index.
+ * @param {number} i the index to use.
+ * @return {number} a byte.
+ */
+ byteAt: function(i) {
+ // see implementations
+ },
+ /**
+ * Get the next number with a given byte size.
+ * @param {number} size the number of bytes to read.
+ * @return {number} the corresponding number.
+ */
+ readInt: function(size) {
+ var result = 0,
+ i;
+ this.checkOffset(size);
+ for (i = this.index + size - 1; i >= this.index; i--) {
+ result = (result << 8) + this.byteAt(i);
+ }
+ this.index += size;
+ return result;
+ },
+ /**
+ * Get the next string with a given byte size.
+ * @param {number} size the number of bytes to read.
+ * @return {string} the corresponding string.
+ */
+ readString: function(size) {
+ return utils.transformTo("string", this.readData(size));
+ },
+ /**
+ * Get raw data without conversion, bytes.
+ * @param {number} size the number of bytes to read.
+ * @return {Object} the raw data, implementation specific.
+ */
+ readData: function(size) {
+ // see implementations
+ },
+ /**
+ * Find the last occurence of a zip signature (4 bytes).
+ * @param {string} sig the signature to find.
+ * @return {number} the index of the last occurence, -1 if not found.
+ */
+ lastIndexOfSignature: function(sig) {
+ // see implementations
+ },
+ /**
+ * Get the next date.
+ * @return {Date} the date.
+ */
+ readDate: function() {
+ var dostime = this.readInt(4);
+ return new Date(
+ ((dostime >> 25) & 0x7f) + 1980, // year
+ ((dostime >> 21) & 0x0f) - 1, // month
+ (dostime >> 16) & 0x1f, // day
+ (dostime >> 11) & 0x1f, // hour
+ (dostime >> 5) & 0x3f, // minute
+ (dostime & 0x1f) << 1); // second
+ }
+};
+module.exports = DataReader;
+
+},{"./utils":21}],6:[function(_dereq_,module,exports){
+'use strict';
+exports.base64 = false;
+exports.binary = false;
+exports.dir = false;
+exports.createFolders = false;
+exports.date = null;
+exports.compression = null;
+exports.compressionOptions = null;
+exports.comment = null;
+exports.unixPermissions = null;
+exports.dosPermissions = null;
+
+},{}],7:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2binary = function(str) {
+ return utils.string2binary(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Uint8Array = function(str) {
+ return utils.transformTo("uint8array", str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.uint8Array2String = function(array) {
+ return utils.transformTo("string", array);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Blob = function(str) {
+ var buffer = utils.transformTo("arraybuffer", str);
+ return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.arrayBuffer2Blob = function(buffer) {
+ return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.transformTo = function(outputType, input) {
+ return utils.transformTo(outputType, input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.getTypeOf = function(input) {
+ return utils.getTypeOf(input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.checkSupport = function(type) {
+ return utils.checkSupport(type);
+};
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;
+
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.pretty = function(str) {
+ return utils.pretty(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.findCompression = function(compressionMethod) {
+ return utils.findCompression(compressionMethod);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.isRegExp = function (object) {
+ return utils.isRegExp(object);
+};
+
+
+},{"./utils":21}],8:[function(_dereq_,module,exports){
+'use strict';
+var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
+
+var pako = _dereq_("pako");
+exports.uncompressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+exports.compressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+
+exports.magic = "\x08\x00";
+exports.compress = function(input, compressionOptions) {
+ return pako.deflateRaw(input, {
+ level : compressionOptions.level || -1 // default compression
+ });
+};
+exports.uncompress = function(input) {
+ return pako.inflateRaw(input);
+};
+
+},{"pako":24}],9:[function(_dereq_,module,exports){
+'use strict';
+
+var base64 = _dereq_('./base64');
+
+/**
+Usage:
+ zip = new JSZip();
+ zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing");
+ zip.folder("images").file("smile.gif", base64Data, {base64: true});
+ zip.file("Xmas.txt", "Ho ho ho !", {date : new Date("December 25, 2007 00:00:01")});
+ zip.remove("tempfile");
+
+ base64zip = zip.generate();
+
+**/
+
+/**
+ * Representation a of zip file in js
+ * @constructor
+ * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).
+ * @param {Object=} options the options for creating this objects (optional).
+ */
+function JSZip(data, options) {
+ // if this constructor is used without `new`, it adds `new` before itself:
+ if(!(this instanceof JSZip)) return new JSZip(data, options);
+
+ // object containing the files :
+ // {
+ // "folder/" : {...},
+ // "folder/data.txt" : {...}
+ // }
+ this.files = {};
+
+ this.comment = null;
+
+ // Where we are in the hierarchy
+ this.root = "";
+ if (data) {
+ this.load(data, options);
+ }
+ this.clone = function() {
+ var newObj = new JSZip();
+ for (var i in this) {
+ if (typeof this[i] !== "function") {
+ newObj[i] = this[i];
+ }
+ }
+ return newObj;
+ };
+}
+JSZip.prototype = _dereq_('./object');
+JSZip.prototype.load = _dereq_('./load');
+JSZip.support = _dereq_('./support');
+JSZip.defaults = _dereq_('./defaults');
+
+/**
+ * @deprecated
+ * This namespace will be removed in a future version without replacement.
+ */
+JSZip.utils = _dereq_('./deprecatedPublicUtils');
+
+JSZip.base64 = {
+ /**
+ * @deprecated
+ * This method will be removed in a future version without replacement.
+ */
+ encode : function(input) {
+ return base64.encode(input);
+ },
+ /**
+ * @deprecated
+ * This method will be removed in a future version without replacement.
+ */
+ decode : function(input) {
+ return base64.decode(input);
+ }
+};
+JSZip.compressions = _dereq_('./compressions');
+module.exports = JSZip;
+
+},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(_dereq_,module,exports){
+'use strict';
+var base64 = _dereq_('./base64');
+var ZipEntries = _dereq_('./zipEntries');
+module.exports = function(data, options) {
+ var files, zipEntries, i, input;
+ options = options || {};
+ if (options.base64) {
+ data = base64.decode(data);
+ }
+
+ zipEntries = new ZipEntries(data, options);
+ files = zipEntries.files;
+ for (i = 0; i < files.length; i++) {
+ input = files[i];
+ this.file(input.fileName, input.decompressed, {
+ binary: true,
+ optimizedBinaryString: true,
+ date: input.date,
+ dir: input.dir,
+ comment : input.fileComment.length ? input.fileComment : null,
+ unixPermissions : input.unixPermissions,
+ dosPermissions : input.dosPermissions,
+ createFolders: options.createFolders
+ });
+ }
+ if (zipEntries.zipComment.length) {
+ this.comment = zipEntries.zipComment;
+ }
+
+ return this;
+};
+
+},{"./base64":1,"./zipEntries":22}],11:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+module.exports = function(data, encoding){
+ return new Buffer(data, encoding);
+};
+module.exports.test = function(b){
+ return Buffer.isBuffer(b);
+};
+
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],12:[function(_dereq_,module,exports){
+'use strict';
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+
+function NodeBufferReader(data) {
+ this.data = data;
+ this.length = this.data.length;
+ this.index = 0;
+}
+NodeBufferReader.prototype = new Uint8ArrayReader();
+
+/**
+ * @see DataReader.readData
+ */
+NodeBufferReader.prototype.readData = function(size) {
+ this.checkOffset(size);
+ var result = this.data.slice(this.index, this.index + size);
+ this.index += size;
+ return result;
+};
+module.exports = NodeBufferReader;
+
+},{"./uint8ArrayReader":18}],13:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var utils = _dereq_('./utils');
+var crc32 = _dereq_('./crc32');
+var signature = _dereq_('./signature');
+var defaults = _dereq_('./defaults');
+var base64 = _dereq_('./base64');
+var compressions = _dereq_('./compressions');
+var CompressedObject = _dereq_('./compressedObject');
+var nodeBuffer = _dereq_('./nodeBuffer');
+var utf8 = _dereq_('./utf8');
+var StringWriter = _dereq_('./stringWriter');
+var Uint8ArrayWriter = _dereq_('./uint8ArrayWriter');
+
+/**
+ * Returns the raw data of a ZipObject, decompress the content if necessary.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getRawData = function(file) {
+ if (file._data instanceof CompressedObject) {
+ file._data = file._data.getContent();
+ file.options.binary = true;
+ file.options.base64 = false;
+
+ if (utils.getTypeOf(file._data) === "uint8array") {
+ var copy = file._data;
+ // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.
+ // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).
+ file._data = new Uint8Array(copy.length);
+ // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+ if (copy.length !== 0) {
+ file._data.set(copy, 0);
+ }
+ }
+ }
+ return file._data;
+};
+
+/**
+ * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getBinaryData = function(file) {
+ var result = getRawData(file),
+ type = utils.getTypeOf(result);
+ if (type === "string") {
+ if (!file.options.binary) {
+ // unicode text !
+ // unicode string => binary string is a painful process, check if we can avoid it.
+ if (support.nodebuffer) {
+ return nodeBuffer(result, "utf-8");
+ }
+ }
+ return file.asBinary();
+ }
+ return result;
+};
+
+/**
+ * Transform this._data into a string.
+ * @param {function} filter a function String -> String, applied if not null on the result.
+ * @return {String} the string representing this._data.
+ */
+var dataToString = function(asUTF8) {
+ var result = getRawData(this);
+ if (result === null || typeof result === "undefined") {
+ return "";
+ }
+ // if the data is a base64 string, we decode it before checking the encoding !
+ if (this.options.base64) {
+ result = base64.decode(result);
+ }
+ if (asUTF8 && this.options.binary) {
+ // JSZip.prototype.utf8decode supports arrays as input
+ // skip to array => string step, utf8decode will do it.
+ result = out.utf8decode(result);
+ }
+ else {
+ // no utf8 transformation, do the array => string step.
+ result = utils.transformTo("string", result);
+ }
+
+ if (!asUTF8 && !this.options.binary) {
+ result = utils.transformTo("string", out.utf8encode(result));
+ }
+ return result;
+};
+/**
+ * A simple object representing a file in the zip file.
+ * @constructor
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
+ * @param {Object} options the options of the file
+ */
+var ZipObject = function(name, data, options) {
+ this.name = name;
+ this.dir = options.dir;
+ this.date = options.date;
+ this.comment = options.comment;
+ this.unixPermissions = options.unixPermissions;
+ this.dosPermissions = options.dosPermissions;
+
+ this._data = data;
+ this.options = options;
+
+ /*
+ * This object contains initial values for dir and date.
+ * With them, we can check if the user changed the deprecated metadata in
+ * `ZipObject#options` or not.
+ */
+ this._initialMetadata = {
+ dir : options.dir,
+ date : options.date
+ };
+};
+
+ZipObject.prototype = {
+ /**
+ * Return the content as UTF8 string.
+ * @return {string} the UTF8 string.
+ */
+ asText: function() {
+ return dataToString.call(this, true);
+ },
+ /**
+ * Returns the binary content.
+ * @return {string} the content as binary.
+ */
+ asBinary: function() {
+ return dataToString.call(this, false);
+ },
+ /**
+ * Returns the content as a nodejs Buffer.
+ * @return {Buffer} the content as a Buffer.
+ */
+ asNodeBuffer: function() {
+ var result = getBinaryData(this);
+ return utils.transformTo("nodebuffer", result);
+ },
+ /**
+ * Returns the content as an Uint8Array.
+ * @return {Uint8Array} the content as an Uint8Array.
+ */
+ asUint8Array: function() {
+ var result = getBinaryData(this);
+ return utils.transformTo("uint8array", result);
+ },
+ /**
+ * Returns the content as an ArrayBuffer.
+ * @return {ArrayBuffer} the content as an ArrayBufer.
+ */
+ asArrayBuffer: function() {
+ return this.asUint8Array().buffer;
+ }
+};
+
+/**
+ * Transform an integer into a string in hexadecimal.
+ * @private
+ * @param {number} dec the number to convert.
+ * @param {number} bytes the number of bytes to generate.
+ * @returns {string} the result.
+ */
+var decToHex = function(dec, bytes) {
+ var hex = "",
+ i;
+ for (i = 0; i < bytes; i++) {
+ hex += String.fromCharCode(dec & 0xff);
+ dec = dec >>> 8;
+ }
+ return hex;
+};
+
+/**
+ * Merge the objects passed as parameters into a new one.
+ * @private
+ * @param {...Object} var_args All objects to merge.
+ * @return {Object} a new object with the data of the others.
+ */
+var extend = function() {
+ var result = {}, i, attr;
+ for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
+ for (attr in arguments[i]) {
+ if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
+ result[attr] = arguments[i][attr];
+ }
+ }
+ }
+ return result;
+};
+
+/**
+ * Transforms the (incomplete) options from the user into the complete
+ * set of options to create a file.
+ * @private
+ * @param {Object} o the options from the user.
+ * @return {Object} the complete set of options.
+ */
+var prepareFileAttrs = function(o) {
+ o = o || {};
+ if (o.base64 === true && (o.binary === null || o.binary === undefined)) {
+ o.binary = true;
+ }
+ o = extend(o, defaults);
+ o.date = o.date || new Date();
+ if (o.compression !== null) o.compression = o.compression.toUpperCase();
+
+ return o;
+};
+
+/**
+ * Add a file in the current folder.
+ * @private
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
+ * @param {Object} o the options of the file
+ * @return {Object} the new file.
+ */
+var fileAdd = function(name, data, o) {
+ // be sure sub folders exist
+ var dataType = utils.getTypeOf(data),
+ parent;
+
+ o = prepareFileAttrs(o);
+
+ if (typeof o.unixPermissions === "string") {
+ o.unixPermissions = parseInt(o.unixPermissions, 8);
+ }
+
+ // UNX_IFDIR 0040000 see zipinfo.c
+ if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
+ o.dir = true;
+ }
+ // Bit 4 Directory
+ if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
+ o.dir = true;
+ }
+
+ if (o.dir) {
+ name = forceTrailingSlash(name);
+ }
+
+ if (o.createFolders && (parent = parentFolder(name))) {
+ folderAdd.call(this, parent, true);
+ }
+
+ if (o.dir || data === null || typeof data === "undefined") {
+ o.base64 = false;
+ o.binary = false;
+ data = null;
+ dataType = null;
+ }
+ else if (dataType === "string") {
+ if (o.binary && !o.base64) {
+ // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask
+ if (o.optimizedBinaryString !== true) {
+ // this is a string, not in a base64 format.
+ // Be sure that this is a correct "binary string"
+ data = utils.string2binary(data);
+ }
+ }
+ }
+ else { // arraybuffer, uint8array, ...
+ o.base64 = false;
+ o.binary = true;
+
+ if (!dataType && !(data instanceof CompressedObject)) {
+ throw new Error("The data of '" + name + "' is in an unsupported format !");
+ }
+
+ // special case : it's way easier to work with Uint8Array than with ArrayBuffer
+ if (dataType === "arraybuffer") {
+ data = utils.transformTo("uint8array", data);
+ }
+ }
+
+ var object = new ZipObject(name, data, o);
+ this.files[name] = object;
+ return object;
+};
+
+/**
+ * Find the parent folder of the path.
+ * @private
+ * @param {string} path the path to use
+ * @return {string} the parent folder, or ""
+ */
+var parentFolder = function (path) {
+ if (path.slice(-1) == '/') {
+ path = path.substring(0, path.length - 1);
+ }
+ var lastSlash = path.lastIndexOf('/');
+ return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
+};
+
+
+/**
+ * Returns the path with a slash at the end.
+ * @private
+ * @param {String} path the path to check.
+ * @return {String} the path with a trailing slash.
+ */
+var forceTrailingSlash = function(path) {
+ // Check the name ends with a /
+ if (path.slice(-1) != "/") {
+ path += "/"; // IE doesn't like substr(-1)
+ }
+ return path;
+};
+/**
+ * Add a (sub) folder in the current folder.
+ * @private
+ * @param {string} name the folder's name
+ * @param {boolean=} [createFolders] If true, automatically create sub
+ * folders. Defaults to false.
+ * @return {Object} the new folder.
+ */
+var folderAdd = function(name, createFolders) {
+ createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;
+
+ name = forceTrailingSlash(name);
+
+ // Does this folder already exist?
+ if (!this.files[name]) {
+ fileAdd.call(this, name, null, {
+ dir: true,
+ createFolders: createFolders
+ });
+ }
+ return this.files[name];
+};
+
+/**
+ * Generate a JSZip.CompressedObject for a given zipOject.
+ * @param {ZipObject} file the object to read.
+ * @param {JSZip.compression} compression the compression to use.
+ * @param {Object} compressionOptions the options to use when compressing.
+ * @return {JSZip.CompressedObject} the compressed result.
+ */
+var generateCompressedObjectFrom = function(file, compression, compressionOptions) {
+ var result = new CompressedObject(),
+ content;
+
+ // the data has not been decompressed, we might reuse things !
+ if (file._data instanceof CompressedObject) {
+ result.uncompressedSize = file._data.uncompressedSize;
+ result.crc32 = file._data.crc32;
+
+ if (result.uncompressedSize === 0 || file.dir) {
+ compression = compressions['STORE'];
+ result.compressedContent = "";
+ result.crc32 = 0;
+ }
+ else if (file._data.compressionMethod === compression.magic) {
+ result.compressedContent = file._data.getCompressedContent();
+ }
+ else {
+ content = file._data.getContent();
+ // need to decompress / recompress
+ result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+ }
+ }
+ else {
+ // have uncompressed data
+ content = getBinaryData(file);
+ if (!content || content.length === 0 || file.dir) {
+ compression = compressions['STORE'];
+ content = "";
+ }
+ result.uncompressedSize = content.length;
+ result.crc32 = crc32(content);
+ result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+ }
+
+ result.compressedSize = result.compressedContent.length;
+ result.compressionMethod = compression.magic;
+
+ return result;
+};
+
+
+
+
+/**
+ * Generate the UNIX part of the external file attributes.
+ * @param {Object} unixPermissions the unix permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :
+ *
+ * TTTTsstrwxrwxrwx0000000000ADVSHR
+ * ^^^^____________________________ file type, see zipinfo.c (UNX_*)
+ * ^^^_________________________ setuid, setgid, sticky
+ * ^^^^^^^^^________________ permissions
+ * ^^^^^^^^^^______ not used ?
+ * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only
+ */
+var generateUnixExternalFileAttr = function (unixPermissions, isDir) {
+
+ var result = unixPermissions;
+ if (!unixPermissions) {
+ // I can't use octal values in strict mode, hence the hexa.
+ // 040775 => 0x41fd
+ // 0100664 => 0x81b4
+ result = isDir ? 0x41fd : 0x81b4;
+ }
+
+ return (result & 0xFFFF) << 16;
+};
+
+/**
+ * Generate the DOS part of the external file attributes.
+ * @param {Object} dosPermissions the dos permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * Bit 0 Read-Only
+ * Bit 1 Hidden
+ * Bit 2 System
+ * Bit 3 Volume Label
+ * Bit 4 Directory
+ * Bit 5 Archive
+ */
+var generateDosExternalFileAttr = function (dosPermissions, isDir) {
+
+ // the dir flag is already set for compatibility
+
+ return (dosPermissions || 0) & 0x3F;
+};
+
+/**
+ * Generate the various parts used in the construction of the final zip file.
+ * @param {string} name the file name.
+ * @param {ZipObject} file the file content.
+ * @param {JSZip.CompressedObject} compressedObject the compressed object.
+ * @param {number} offset the current offset from the start of the zip file.
+ * @param {String} platform let's pretend we are this platform (change platform dependents fields)
+ * @return {object} the zip parts.
+ */
+var generateZipParts = function(name, file, compressedObject, offset, platform) {
+ var data = compressedObject.compressedContent,
+ utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
+ comment = file.comment || "",
+ utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
+ useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
+ useUTF8ForComment = utfEncodedComment.length !== comment.length,
+ o = file.options,
+ dosTime,
+ dosDate,
+ extraFields = "",
+ unicodePathExtraField = "",
+ unicodeCommentExtraField = "",
+ dir, date;
+
+
+ // handle the deprecated options.dir
+ if (file._initialMetadata.dir !== file.dir) {
+ dir = file.dir;
+ } else {
+ dir = o.dir;
+ }
+
+ // handle the deprecated options.date
+ if(file._initialMetadata.date !== file.date) {
+ date = file.date;
+ } else {
+ date = o.date;
+ }
+
+ var extFileAttr = 0;
+ var versionMadeBy = 0;
+ if (dir) {
+ // dos or unix, we set the dos dir flag
+ extFileAttr |= 0x00010;
+ }
+ if(platform === "UNIX") {
+ versionMadeBy = 0x031E; // UNIX, version 3.0
+ extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);
+ } else { // DOS or other, fallback to DOS
+ versionMadeBy = 0x0014; // DOS, version 2.0
+ extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);
+ }
+
+ // date
+ // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
+ // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
+ // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
+
+ dosTime = date.getHours();
+ dosTime = dosTime << 6;
+ dosTime = dosTime | date.getMinutes();
+ dosTime = dosTime << 5;
+ dosTime = dosTime | date.getSeconds() / 2;
+
+ dosDate = date.getFullYear() - 1980;
+ dosDate = dosDate << 4;
+ dosDate = dosDate | (date.getMonth() + 1);
+ dosDate = dosDate << 5;
+ dosDate = dosDate | date.getDate();
+
+ if (useUTF8ForFileName) {
+ // set the unicode path extra field. unzip needs at least one extra
+ // field to correctly handle unicode path, so using the path is as good
+ // as any other information. This could improve the situation with
+ // other archive managers too.
+ // This field is usually used without the utf8 flag, with a non
+ // unicode path in the header (winrar, winzip). This helps (a bit)
+ // with the messy Windows' default compressed folders feature but
+ // breaks on p7zip which doesn't seek the unicode path extra field.
+ // So for now, UTF-8 everywhere !
+ unicodePathExtraField =
+ // Version
+ decToHex(1, 1) +
+ // NameCRC32
+ decToHex(crc32(utfEncodedFileName), 4) +
+ // UnicodeName
+ utfEncodedFileName;
+
+ extraFields +=
+ // Info-ZIP Unicode Path Extra Field
+ "\x75\x70" +
+ // size
+ decToHex(unicodePathExtraField.length, 2) +
+ // content
+ unicodePathExtraField;
+ }
+
+ if(useUTF8ForComment) {
+
+ unicodeCommentExtraField =
+ // Version
+ decToHex(1, 1) +
+ // CommentCRC32
+ decToHex(this.crc32(utfEncodedComment), 4) +
+ // UnicodeName
+ utfEncodedComment;
+
+ extraFields +=
+ // Info-ZIP Unicode Path Extra Field
+ "\x75\x63" +
+ // size
+ decToHex(unicodeCommentExtraField.length, 2) +
+ // content
+ unicodeCommentExtraField;
+ }
+
+ var header = "";
+
+ // version needed to extract
+ header += "\x0A\x00";
+ // general purpose bit flag
+ // set bit 11 if utf8
+ header += (useUTF8ForFileName || useUTF8ForComment) ? "\x00\x08" : "\x00\x00";
+ // compression method
+ header += compressedObject.compressionMethod;
+ // last mod file time
+ header += decToHex(dosTime, 2);
+ // last mod file date
+ header += decToHex(dosDate, 2);
+ // crc-32
+ header += decToHex(compressedObject.crc32, 4);
+ // compressed size
+ header += decToHex(compressedObject.compressedSize, 4);
+ // uncompressed size
+ header += decToHex(compressedObject.uncompressedSize, 4);
+ // file name length
+ header += decToHex(utfEncodedFileName.length, 2);
+ // extra field length
+ header += decToHex(extraFields.length, 2);
+
+
+ var fileRecord = signature.LOCAL_FILE_HEADER + header + utfEncodedFileName + extraFields;
+
+ var dirRecord = signature.CENTRAL_FILE_HEADER +
+ // version made by (00: DOS)
+ decToHex(versionMadeBy, 2) +
+ // file header (common to file and central directory)
+ header +
+ // file comment length
+ decToHex(utfEncodedComment.length, 2) +
+ // disk number start
+ "\x00\x00" +
+ // internal file attributes TODO
+ "\x00\x00" +
+ // external file attributes
+ decToHex(extFileAttr, 4) +
+ // relative offset of local header
+ decToHex(offset, 4) +
+ // file name
+ utfEncodedFileName +
+ // extra field
+ extraFields +
+ // file comment
+ utfEncodedComment;
+
+ return {
+ fileRecord: fileRecord,
+ dirRecord: dirRecord,
+ compressedObject: compressedObject
+ };
+};
+
+
+// return the actual prototype of JSZip
+var out = {
+ /**
+ * Read an existing zip and merge the data in the current JSZip object.
+ * The implementation is in jszip-load.js, don't forget to include it.
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} stream The stream to load
+ * @param {Object} options Options for loading the stream.
+ * options.base64 : is the stream in base64 ? default : false
+ * @return {JSZip} the current JSZip object
+ */
+ load: function(stream, options) {
+ throw new Error("Load method is not defined. Is the file jszip-load.js included ?");
+ },
+
+ /**
+ * Filter nested files/folders with the specified function.
+ * @param {Function} search the predicate to use :
+ * function (relativePath, file) {...}
+ * It takes 2 arguments : the relative path and the file.
+ * @return {Array} An array of matching elements.
+ */
+ filter: function(search) {
+ var result = [],
+ filename, relativePath, file, fileClone;
+ for (filename in this.files) {
+ if (!this.files.hasOwnProperty(filename)) {
+ continue;
+ }
+ file = this.files[filename];
+ // return a new object, don't let the user mess with our internal objects :)
+ fileClone = new ZipObject(file.name, file._data, extend(file.options));
+ relativePath = filename.slice(this.root.length, filename.length);
+ if (filename.slice(0, this.root.length) === this.root && // the file is in the current root
+ search(relativePath, fileClone)) { // and the file matches the function
+ result.push(fileClone);
+ }
+ }
+ return result;
+ },
+
+ /**
+ * Add a file to the zip file, or search a file.
+ * @param {string|RegExp} name The name of the file to add (if data is defined),
+ * the name of the file to find (if no data) or a regex to match files.
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded
+ * @param {Object} o File options
+ * @return {JSZip|Object|Array} this JSZip object (when adding a file),
+ * a file (when searching by string) or an array of files (when searching by regex).
+ */
+ file: function(name, data, o) {
+ if (arguments.length === 1) {
+ if (utils.isRegExp(name)) {
+ var regexp = name;
+ return this.filter(function(relativePath, file) {
+ return !file.dir && regexp.test(relativePath);
+ });
+ }
+ else { // text
+ return this.filter(function(relativePath, file) {
+ return !file.dir && relativePath === name;
+ })[0] || null;
+ }
+ }
+ else { // more than one argument : we have data !
+ name = this.root + name;
+ fileAdd.call(this, name, data, o);
+ }
+ return this;
+ },
+
+ /**
+ * Add a directory to the zip file, or search.
+ * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.
+ * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.
+ */
+ folder: function(arg) {
+ if (!arg) {
+ return this;
+ }
+
+ if (utils.isRegExp(arg)) {
+ return this.filter(function(relativePath, file) {
+ return file.dir && arg.test(relativePath);
+ });
+ }
+
+ // else, name is a new folder
+ var name = this.root + arg;
+ var newFolder = folderAdd.call(this, name);
+
+ // Allow chaining by returning a new object with this folder as the root
+ var ret = this.clone();
+ ret.root = newFolder.name;
+ return ret;
+ },
+
+ /**
+ * Delete a file, or a directory and all sub-files, from the zip
+ * @param {string} name the name of the file to delete
+ * @return {JSZip} this JSZip object
+ */
+ remove: function(name) {
+ name = this.root + name;
+ var file = this.files[name];
+ if (!file) {
+ // Look for any folders
+ if (name.slice(-1) != "/") {
+ name += "/";
+ }
+ file = this.files[name];
+ }
+
+ if (file && !file.dir) {
+ // file
+ delete this.files[name];
+ } else {
+ // maybe a folder, delete recursively
+ var kids = this.filter(function(relativePath, file) {
+ return file.name.slice(0, name.length) === name;
+ });
+ for (var i = 0; i < kids.length; i++) {
+ delete this.files[kids[i].name];
+ }
+ }
+
+ return this;
+ },
+
+ /**
+ * Generate the complete zip file
+ * @param {Object} options the options to generate the zip file :
+ * - base64, (deprecated, use type instead) true to generate base64.
+ * - compression, "STORE" by default.
+ * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
+ * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
+ */
+ generate: function(options) {
+ options = extend(options || {}, {
+ base64: true,
+ compression: "STORE",
+ compressionOptions : null,
+ type: "base64",
+ platform: "DOS",
+ comment: null,
+ mimeType: 'application/zip'
+ });
+
+ utils.checkSupport(options.type);
+
+ // accept nodejs `process.platform`
+ if(
+ options.platform === 'darwin' ||
+ options.platform === 'freebsd' ||
+ options.platform === 'linux' ||
+ options.platform === 'sunos'
+ ) {
+ options.platform = "UNIX";
+ }
+ if (options.platform === 'win32') {
+ options.platform = "DOS";
+ }
+
+ var zipData = [],
+ localDirLength = 0,
+ centralDirLength = 0,
+ writer, i,
+ utfEncodedComment = utils.transformTo("string", this.utf8encode(options.comment || this.comment || ""));
+
+ // first, generate all the zip parts.
+ for (var name in this.files) {
+ if (!this.files.hasOwnProperty(name)) {
+ continue;
+ }
+ var file = this.files[name];
+
+ var compressionName = file.options.compression || options.compression.toUpperCase();
+ var compression = compressions[compressionName];
+ if (!compression) {
+ throw new Error(compressionName + " is not a valid compression method !");
+ }
+ var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
+
+ var compressedObject = generateCompressedObjectFrom.call(this, file, compression, compressionOptions);
+
+ var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength, options.platform);
+ localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;
+ centralDirLength += zipPart.dirRecord.length;
+ zipData.push(zipPart);
+ }
+
+ var dirEnd = "";
+
+ // end of central dir signature
+ dirEnd = signature.CENTRAL_DIRECTORY_END +
+ // number of this disk
+ "\x00\x00" +
+ // number of the disk with the start of the central directory
+ "\x00\x00" +
+ // total number of entries in the central directory on this disk
+ decToHex(zipData.length, 2) +
+ // total number of entries in the central directory
+ decToHex(zipData.length, 2) +
+ // size of the central directory 4 bytes
+ decToHex(centralDirLength, 4) +
+ // offset of start of central directory with respect to the starting disk number
+ decToHex(localDirLength, 4) +
+ // .ZIP file comment length
+ decToHex(utfEncodedComment.length, 2) +
+ // .ZIP file comment
+ utfEncodedComment;
+
+
+ // we have all the parts (and the total length)
+ // time to create a writer !
+ var typeName = options.type.toLowerCase();
+ if(typeName==="uint8array"||typeName==="arraybuffer"||typeName==="blob"||typeName==="nodebuffer") {
+ writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
+ }else{
+ writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
+ }
+
+ for (i = 0; i < zipData.length; i++) {
+ writer.append(zipData[i].fileRecord);
+ writer.append(zipData[i].compressedObject.compressedContent);
+ }
+ for (i = 0; i < zipData.length; i++) {
+ writer.append(zipData[i].dirRecord);
+ }
+
+ writer.append(dirEnd);
+
+ var zip = writer.finalize();
+
+
+
+ switch(options.type.toLowerCase()) {
+ // case "zip is an Uint8Array"
+ case "uint8array" :
+ case "arraybuffer" :
+ case "nodebuffer" :
+ return utils.transformTo(options.type.toLowerCase(), zip);
+ case "blob" :
+ return utils.arrayBuffer2Blob(utils.transformTo("arraybuffer", zip), options.mimeType);
+ // case "zip is a string"
+ case "base64" :
+ return (options.base64) ? base64.encode(zip) : zip;
+ default : // case "string" :
+ return zip;
+ }
+
+ },
+
+ /**
+ * @deprecated
+ * This method will be removed in a future version without replacement.
+ */
+ crc32: function (input, crc) {
+ return crc32(input, crc);
+ },
+
+ /**
+ * @deprecated
+ * This method will be removed in a future version without replacement.
+ */
+ utf8encode: function (string) {
+ return utils.transformTo("string", utf8.utf8encode(string));
+ },
+
+ /**
+ * @deprecated
+ * This method will be removed in a future version without replacement.
+ */
+ utf8decode: function (input) {
+ return utf8.utf8decode(input);
+ }
+};
+module.exports = out;
+
+},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(_dereq_,module,exports){
+'use strict';
+exports.LOCAL_FILE_HEADER = "PK\x03\x04";
+exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
+exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
+exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
+exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
+exports.DATA_DESCRIPTOR = "PK\x07\x08";
+
+},{}],15:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+var utils = _dereq_('./utils');
+
+function StringReader(data, optimizedBinaryString) {
+ this.data = data;
+ if (!optimizedBinaryString) {
+ this.data = utils.string2binary(this.data);
+ }
+ this.length = this.data.length;
+ this.index = 0;
+}
+StringReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+StringReader.prototype.byteAt = function(i) {
+ return this.data.charCodeAt(i);
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+StringReader.prototype.lastIndexOfSignature = function(sig) {
+ return this.data.lastIndexOf(sig);
+};
+/**
+ * @see DataReader.readData
+ */
+StringReader.prototype.readData = function(size) {
+ this.checkOffset(size);
+ // this will work because the constructor applied the "& 0xff" mask.
+ var result = this.data.slice(this.index, this.index + size);
+ this.index += size;
+ return result;
+};
+module.exports = StringReader;
+
+},{"./dataReader":5,"./utils":21}],16:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to a string.
+ * @constructor
+ */
+var StringWriter = function() {
+ this.data = [];
+};
+StringWriter.prototype = {
+ /**
+ * Append any content to the current string.
+ * @param {Object} input the content to add.
+ */
+ append: function(input) {
+ input = utils.transformTo("string", input);
+ this.data.push(input);
+ },
+ /**
+ * Finalize the construction an return the result.
+ * @return {string} the generated string.
+ */
+ finalize: function() {
+ return this.data.join("");
+ }
+};
+
+module.exports = StringWriter;
+
+},{"./utils":21}],17:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+exports.base64 = true;
+exports.array = true;
+exports.string = true;
+exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
+// contains true if JSZip can read/generate nodejs Buffer, false otherwise.
+// Browserify will provide a Buffer implementation for browsers, which is
+// an augmented Uint8Array (i.e., can be used as either Buffer or U8).
+exports.nodebuffer = typeof Buffer !== "undefined";
+// contains true if JSZip can read/generate Uint8Array, false otherwise.
+exports.uint8array = typeof Uint8Array !== "undefined";
+
+if (typeof ArrayBuffer === "undefined") {
+ exports.blob = false;
+}
+else {
+ var buffer = new ArrayBuffer(0);
+ try {
+ exports.blob = new Blob([buffer], {
+ type: "application/zip"
+ }).size === 0;
+ }
+ catch (e) {
+ try {
+ var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+ var builder = new Builder();
+ builder.append(buffer);
+ exports.blob = builder.getBlob('application/zip').size === 0;
+ }
+ catch (e) {
+ exports.blob = false;
+ }
+ }
+}
+
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],18:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+
+function Uint8ArrayReader(data) {
+ if (data) {
+ this.data = data;
+ this.length = this.data.length;
+ this.index = 0;
+ }
+}
+Uint8ArrayReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+Uint8ArrayReader.prototype.byteAt = function(i) {
+ return this.data[i];
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+Uint8ArrayReader.prototype.lastIndexOfSignature = function(sig) {
+ var sig0 = sig.charCodeAt(0),
+ sig1 = sig.charCodeAt(1),
+ sig2 = sig.charCodeAt(2),
+ sig3 = sig.charCodeAt(3);
+ for (var i = this.length - 4; i >= 0; --i) {
+ if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
+ return i;
+ }
+ }
+
+ return -1;
+};
+/**
+ * @see DataReader.readData
+ */
+Uint8ArrayReader.prototype.readData = function(size) {
+ this.checkOffset(size);
+ if(size === 0) {
+ // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
+ return new Uint8Array(0);
+ }
+ var result = this.data.subarray(this.index, this.index + size);
+ this.index += size;
+ return result;
+};
+module.exports = Uint8ArrayReader;
+
+},{"./dataReader":5}],19:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to an Uint8Array.
+ * @constructor
+ * @param {number} length The length of the array.
+ */
+var Uint8ArrayWriter = function(length) {
+ this.data = new Uint8Array(length);
+ this.index = 0;
+};
+Uint8ArrayWriter.prototype = {
+ /**
+ * Append any content to the current array.
+ * @param {Object} input the content to add.
+ */
+ append: function(input) {
+ if (input.length !== 0) {
+ // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+ input = utils.transformTo("uint8array", input);
+ this.data.set(input, this.index);
+ this.index += input.length;
+ }
+ },
+ /**
+ * Finalize the construction an return the result.
+ * @return {Uint8Array} the generated array.
+ */
+ finalize: function() {
+ return this.data;
+ }
+};
+
+module.exports = Uint8ArrayWriter;
+
+},{"./utils":21}],20:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+var support = _dereq_('./support');
+var nodeBuffer = _dereq_('./nodeBuffer');
+
+/**
+ * The following functions come from pako, from pako/lib/utils/strings
+ * released under the MIT license, see pako https://github.com/nodeca/pako/
+ */
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new Array(256);
+for (var i=0; i<256; i++) {
+ _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+// convert string to array (typed, when possible)
+var string2buf = function (str) {
+ var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+ // count binary size
+ for (m_pos = 0; m_pos < str_len; m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+ c2 = str.charCodeAt(m_pos+1);
+ if ((c2 & 0xfc00) === 0xdc00) {
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+ m_pos++;
+ }
+ }
+ buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+ }
+
+ // allocate buffer
+ if (support.uint8array) {
+ buf = new Uint8Array(buf_len);
+ } else {
+ buf = new Array(buf_len);
+ }
+
+ // convert
+ for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+ c2 = str.charCodeAt(m_pos+1);
+ if ((c2 & 0xfc00) === 0xdc00) {
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+ m_pos++;
+ }
+ }
+ if (c < 0x80) {
+ /* one byte */
+ buf[i++] = c;
+ } else if (c < 0x800) {
+ /* two bytes */
+ buf[i++] = 0xC0 | (c >>> 6);
+ buf[i++] = 0x80 | (c & 0x3f);
+ } else if (c < 0x10000) {
+ /* three bytes */
+ buf[i++] = 0xE0 | (c >>> 12);
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+ buf[i++] = 0x80 | (c & 0x3f);
+ } else {
+ /* four bytes */
+ buf[i++] = 0xf0 | (c >>> 18);
+ buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+ buf[i++] = 0x80 | (c & 0x3f);
+ }
+ }
+
+ return buf;
+};
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max - length limit (mandatory);
+var utf8border = function(buf, max) {
+ var pos;
+
+ max = max || buf.length;
+ if (max > buf.length) { max = buf.length; }
+
+ // go back from last position, until start of sequence found
+ pos = max-1;
+ while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+ // Fuckup - very small and broken sequence,
+ // return max, because we should return something anyway.
+ if (pos < 0) { return max; }
+
+ // If we came to start of buffer - that means vuffer is too small,
+ // return max too.
+ if (pos === 0) { return max; }
+
+ return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+// convert array to string
+var buf2string = function (buf) {
+ var str, i, out, c, c_len;
+ var len = buf.length;
+
+ // Reserve max possible length (2 words per char)
+ // NB: by unknown reasons, Array is significantly faster for
+ // String.fromCharCode.apply than Uint16Array.
+ var utf16buf = new Array(len*2);
+
+ for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+ // apply mask on first byte
+ c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+ // join the rest
+ while (c_len > 1 && i < len) {
+ c = (c << 6) | (buf[i++] & 0x3f);
+ c_len--;
+ }
+
+ // terminated by end of string?
+ if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+ if (c < 0x10000) {
+ utf16buf[out++] = c;
+ } else {
+ c -= 0x10000;
+ utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+ utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+ }
+ }
+
+ // shrinkBuf(utf16buf, out)
+ if (utf16buf.length !== out) {
+ if(utf16buf.subarray) {
+ utf16buf = utf16buf.subarray(0, out);
+ } else {
+ utf16buf.length = out;
+ }
+ }
+
+ // return String.fromCharCode.apply(null, utf16buf);
+ return utils.applyFromCharCode(utf16buf);
+};
+
+
+// That's all for the pako functions.
+
+
+/**
+ * Transform a javascript string into an array (typed if possible) of bytes,
+ * UTF-8 encoded.
+ * @param {String} str the string to encode
+ * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
+ */
+exports.utf8encode = function utf8encode(str) {
+ if (support.nodebuffer) {
+ return nodeBuffer(str, "utf-8");
+ }
+
+ return string2buf(str);
+};
+
+
+/**
+ * Transform a bytes array (or a representation) representing an UTF-8 encoded
+ * string into a javascript string.
+ * @param {Array|Uint8Array|Buffer} buf the data de decode
+ * @return {String} the decoded string.
+ */
+exports.utf8decode = function utf8decode(buf) {
+ if (support.nodebuffer) {
+ return utils.transformTo("nodebuffer", buf).toString("utf-8");
+ }
+
+ buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
+
+ // return buf2string(buf);
+ // Chrome prefers to work with "small" chunks of data
+ // for the method buf2string.
+ // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.
+ var result = [], k = 0, len = buf.length, chunk = 65536;
+ while (k < len) {
+ var nextBoundary = utf8border(buf, Math.min(k + chunk, len));
+ if (support.uint8array) {
+ result.push(buf2string(buf.subarray(k, nextBoundary)));
+ } else {
+ result.push(buf2string(buf.slice(k, nextBoundary)));
+ }
+ k = nextBoundary;
+ }
+ return result.join("");
+
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var compressions = _dereq_('./compressions');
+var nodeBuffer = _dereq_('./nodeBuffer');
+/**
+ * Convert a string to a "binary string" : a string containing only char codes between 0 and 255.
+ * @param {string} str the string to transform.
+ * @return {String} the binary string.
+ */
+exports.string2binary = function(str) {
+ var result = "";
+ for (var i = 0; i < str.length; i++) {
+ result += String.fromCharCode(str.charCodeAt(i) & 0xff);
+ }
+ return result;
+};
+exports.arrayBuffer2Blob = function(buffer, mimeType) {
+ exports.checkSupport("blob");
+ mimeType = mimeType || 'application/zip';
+
+ try {
+ // Blob constructor
+ return new Blob([buffer], {
+ type: mimeType
+ });
+ }
+ catch (e) {
+
+ try {
+ // deprecated, browser only, old way
+ var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+ var builder = new Builder();
+ builder.append(buffer);
+ return builder.getBlob(mimeType);
+ }
+ catch (e) {
+
+ // well, fuck ?!
+ throw new Error("Bug : can't construct the Blob.");
+ }
+ }
+
+
+};
+/**
+ * The identity function.
+ * @param {Object} input the input.
+ * @return {Object} the same input.
+ */
+function identity(input) {
+ return input;
+}
+
+/**
+ * Fill in an array with a string.
+ * @param {String} str the string to use.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
+ */
+function stringToArrayLike(str, array) {
+ for (var i = 0; i < str.length; ++i) {
+ array[i] = str.charCodeAt(i) & 0xFF;
+ }
+ return array;
+}
+
+/**
+ * Transform an array-like object to a string.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @return {String} the result.
+ */
+function arrayLikeToString(array) {
+ // Performances notes :
+ // --------------------
+ // String.fromCharCode.apply(null, array) is the fastest, see
+ // see http://jsperf.com/converting-a-uint8array-to-a-string/2
+ // but the stack is limited (and we can get huge arrays !).
+ //
+ // result += String.fromCharCode(array[i]); generate too many strings !
+ //
+ // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
+ var chunk = 65536;
+ var result = [],
+ len = array.length,
+ type = exports.getTypeOf(array),
+ k = 0,
+ canUseApply = true;
+ try {
+ switch(type) {
+ case "uint8array":
+ String.fromCharCode.apply(null, new Uint8Array(0));
+ break;
+ case "nodebuffer":
+ String.fromCharCode.apply(null, nodeBuffer(0));
+ break;
+ }
+ } catch(e) {
+ canUseApply = false;
+ }
+
+ // no apply : slow and painful algorithm
+ // default browser on android 4.*
+ if (!canUseApply) {
+ var resultStr = "";
+ for(var i = 0; i < array.length;i++) {
+ resultStr += String.fromCharCode(array[i]);
+ }
+ return resultStr;
+ }
+ while (k < len && chunk > 1) {
+ try {
+ if (type === "array" || type === "nodebuffer") {
+ result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
+ }
+ else {
+ result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
+ }
+ k += chunk;
+ }
+ catch (e) {
+ chunk = Math.floor(chunk / 2);
+ }
+ }
+ return result.join("");
+}
+
+exports.applyFromCharCode = arrayLikeToString;
+
+
+/**
+ * Copy the data from an array-like to an other array-like.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
+ */
+function arrayLikeToArrayLike(arrayFrom, arrayTo) {
+ for (var i = 0; i < arrayFrom.length; i++) {
+ arrayTo[i] = arrayFrom[i];
+ }
+ return arrayTo;
+}
+
+// a matrix containing functions to transform everything into everything.
+var transform = {};
+
+// string to ?
+transform["string"] = {
+ "string": identity,
+ "array": function(input) {
+ return stringToArrayLike(input, new Array(input.length));
+ },
+ "arraybuffer": function(input) {
+ return transform["string"]["uint8array"](input).buffer;
+ },
+ "uint8array": function(input) {
+ return stringToArrayLike(input, new Uint8Array(input.length));
+ },
+ "nodebuffer": function(input) {
+ return stringToArrayLike(input, nodeBuffer(input.length));
+ }
+};
+
+// array to ?
+transform["array"] = {
+ "string": arrayLikeToString,
+ "array": identity,
+ "arraybuffer": function(input) {
+ return (new Uint8Array(input)).buffer;
+ },
+ "uint8array": function(input) {
+ return new Uint8Array(input);
+ },
+ "nodebuffer": function(input) {
+ return nodeBuffer(input);
+ }
+};
+
+// arraybuffer to ?
+transform["arraybuffer"] = {
+ "string": function(input) {
+ return arrayLikeToString(new Uint8Array(input));
+ },
+ "array": function(input) {
+ return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
+ },
+ "arraybuffer": identity,
+ "uint8array": function(input) {
+ return new Uint8Array(input);
+ },
+ "nodebuffer": function(input) {
+ return nodeBuffer(new Uint8Array(input));
+ }
+};
+
+// uint8array to ?
+transform["uint8array"] = {
+ "string": arrayLikeToString,
+ "array": function(input) {
+ return arrayLikeToArrayLike(input, new Array(input.length));
+ },
+ "arraybuffer": function(input) {
+ return input.buffer;
+ },
+ "uint8array": identity,
+ "nodebuffer": function(input) {
+ return nodeBuffer(input);
+ }
+};
+
+// nodebuffer to ?
+transform["nodebuffer"] = {
+ "string": arrayLikeToString,
+ "array": function(input) {
+ return arrayLikeToArrayLike(input, new Array(input.length));
+ },
+ "arraybuffer": function(input) {
+ return transform["nodebuffer"]["uint8array"](input).buffer;
+ },
+ "uint8array": function(input) {
+ return arrayLikeToArrayLike(input, new Uint8Array(input.length));
+ },
+ "nodebuffer": identity
+};
+
+/**
+ * Transform an input into any type.
+ * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
+ * If no output type is specified, the unmodified input will be returned.
+ * @param {String} outputType the output type.
+ * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
+ * @throws {Error} an Error if the browser doesn't support the requested output type.
+ */
+exports.transformTo = function(outputType, input) {
+ if (!input) {
+ // undefined, null, etc
+ // an empty string won't harm.
+ input = "";
+ }
+ if (!outputType) {
+ return input;
+ }
+ exports.checkSupport(outputType);
+ var inputType = exports.getTypeOf(input);
+ var result = transform[inputType][outputType](input);
+ return result;
+};
+
+/**
+ * Return the type of the input.
+ * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
+ * @param {Object} input the input to identify.
+ * @return {String} the (lowercase) type of the input.
+ */
+exports.getTypeOf = function(input) {
+ if (typeof input === "string") {
+ return "string";
+ }
+ if (Object.prototype.toString.call(input) === "[object Array]") {
+ return "array";
+ }
+ if (support.nodebuffer && nodeBuffer.test(input)) {
+ return "nodebuffer";
+ }
+ if (support.uint8array && input instanceof Uint8Array) {
+ return "uint8array";
+ }
+ if (support.arraybuffer && input instanceof ArrayBuffer) {
+ return "arraybuffer";
+ }
+};
+
+/**
+ * Throw an exception if the type is not supported.
+ * @param {String} type the type to check.
+ * @throws {Error} an Error if the browser doesn't support the requested type.
+ */
+exports.checkSupport = function(type) {
+ var supported = support[type.toLowerCase()];
+ if (!supported) {
+ throw new Error(type + " is not supported by this browser");
+ }
+};
+exports.MAX_VALUE_16BITS = 65535;
+exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
+
+/**
+ * Prettify a string read as binary.
+ * @param {string} str the string to prettify.
+ * @return {string} a pretty string.
+ */
+exports.pretty = function(str) {
+ var res = '',
+ code, i;
+ for (i = 0; i < (str || "").length; i++) {
+ code = str.charCodeAt(i);
+ res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
+ }
+ return res;
+};
+
+/**
+ * Find a compression registered in JSZip.
+ * @param {string} compressionMethod the method magic to find.
+ * @return {Object|null} the JSZip compression object, null if none found.
+ */
+exports.findCompression = function(compressionMethod) {
+ for (var method in compressions) {
+ if (!compressions.hasOwnProperty(method)) {
+ continue;
+ }
+ if (compressions[method].magic === compressionMethod) {
+ return compressions[method];
+ }
+ }
+ return null;
+};
+/**
+* Cross-window, cross-Node-context regular expression detection
+* @param {Object} object Anything
+* @return {Boolean} true if the object is a regular expression,
+* false otherwise
+*/
+exports.isRegExp = function (object) {
+ return Object.prototype.toString.call(object) === "[object RegExp]";
+};
+
+
+},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var NodeBufferReader = _dereq_('./nodeBufferReader');
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+var utils = _dereq_('./utils');
+var sig = _dereq_('./signature');
+var ZipEntry = _dereq_('./zipEntry');
+var support = _dereq_('./support');
+var jszipProto = _dereq_('./object');
+// class ZipEntries {{{
+/**
+ * All the entries in the zip file.
+ * @constructor
+ * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntries(data, loadOptions) {
+ this.files = [];
+ this.loadOptions = loadOptions;
+ if (data) {
+ this.load(data);
+ }
+}
+ZipEntries.prototype = {
+ /**
+ * Check that the reader is on the speficied signature.
+ * @param {string} expectedSignature the expected signature.
+ * @throws {Error} if it is an other signature.
+ */
+ checkSignature: function(expectedSignature) {
+ var signature = this.reader.readString(4);
+ if (signature !== expectedSignature) {
+ throw new Error("Corrupted zip or bug : unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
+ }
+ },
+ /**
+ * Read the end of the central directory.
+ */
+ readBlockEndOfCentral: function() {
+ this.diskNumber = this.reader.readInt(2);
+ this.diskWithCentralDirStart = this.reader.readInt(2);
+ this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
+ this.centralDirRecords = this.reader.readInt(2);
+ this.centralDirSize = this.reader.readInt(4);
+ this.centralDirOffset = this.reader.readInt(4);
+
+ this.zipCommentLength = this.reader.readInt(2);
+ // warning : the encoding depends of the system locale
+ // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
+ // On a windows machine, this field is encoded with the localized windows code page.
+ this.zipComment = this.reader.readString(this.zipCommentLength);
+ // To get consistent behavior with the generation part, we will assume that
+ // this is utf8 encoded.
+ this.zipComment = jszipProto.utf8decode(this.zipComment);
+ },
+ /**
+ * Read the end of the Zip 64 central directory.
+ * Not merged with the method readEndOfCentral :
+ * The end of central can coexist with its Zip64 brother,
+ * I don't want to read the wrong number of bytes !
+ */
+ readBlockZip64EndOfCentral: function() {
+ this.zip64EndOfCentralSize = this.reader.readInt(8);
+ this.versionMadeBy = this.reader.readString(2);
+ this.versionNeeded = this.reader.readInt(2);
+ this.diskNumber = this.reader.readInt(4);
+ this.diskWithCentralDirStart = this.reader.readInt(4);
+ this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
+ this.centralDirRecords = this.reader.readInt(8);
+ this.centralDirSize = this.reader.readInt(8);
+ this.centralDirOffset = this.reader.readInt(8);
+
+ this.zip64ExtensibleData = {};
+ var extraDataSize = this.zip64EndOfCentralSize - 44,
+ index = 0,
+ extraFieldId,
+ extraFieldLength,
+ extraFieldValue;
+ while (index < extraDataSize) {
+ extraFieldId = this.reader.readInt(2);
+ extraFieldLength = this.reader.readInt(4);
+ extraFieldValue = this.reader.readString(extraFieldLength);
+ this.zip64ExtensibleData[extraFieldId] = {
+ id: extraFieldId,
+ length: extraFieldLength,
+ value: extraFieldValue
+ };
+ }
+ },
+ /**
+ * Read the end of the Zip 64 central directory locator.
+ */
+ readBlockZip64EndOfCentralLocator: function() {
+ this.diskWithZip64CentralDirStart = this.reader.readInt(4);
+ this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
+ this.disksCount = this.reader.readInt(4);
+ if (this.disksCount > 1) {
+ throw new Error("Multi-volumes zip are not supported");
+ }
+ },
+ /**
+ * Read the local files, based on the offset read in the central part.
+ */
+ readLocalFiles: function() {
+ var i, file;
+ for (i = 0; i < this.files.length; i++) {
+ file = this.files[i];
+ this.reader.setIndex(file.localHeaderOffset);
+ this.checkSignature(sig.LOCAL_FILE_HEADER);
+ file.readLocalPart(this.reader);
+ file.handleUTF8();
+ file.processAttributes();
+ }
+ },
+ /**
+ * Read the central directory.
+ */
+ readCentralDir: function() {
+ var file;
+
+ this.reader.setIndex(this.centralDirOffset);
+ while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {
+ file = new ZipEntry({
+ zip64: this.zip64
+ }, this.loadOptions);
+ file.readCentralPart(this.reader);
+ this.files.push(file);
+ }
+ },
+ /**
+ * Read the end of central directory.
+ */
+ readEndOfCentral: function() {
+ var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
+ if (offset === -1) {
+ // Check if the content is a truncated zip or complete garbage.
+ // A "LOCAL_FILE_HEADER" is not required at the beginning (auto
+ // extractible zip for example) but it can give a good hint.
+ // If an ajax request was used without responseType, we will also
+ // get unreadable data.
+ var isGarbage = true;
+ try {
+ this.reader.setIndex(0);
+ this.checkSignature(sig.LOCAL_FILE_HEADER);
+ isGarbage = false;
+ } catch (e) {}
+
+ if (isGarbage) {
+ throw new Error("Can't find end of central directory : is this a zip file ? " +
+ "If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html");
+ } else {
+ throw new Error("Corrupted zip : can't find end of central directory");
+ }
+ }
+ this.reader.setIndex(offset);
+ this.checkSignature(sig.CENTRAL_DIRECTORY_END);
+ this.readBlockEndOfCentral();
+
+
+ /* extract from the zip spec :
+ 4) If one of the fields in the end of central directory
+ record is too small to hold required data, the field
+ should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
+ ZIP64 format record should be created.
+ 5) The end of central directory record and the
+ Zip64 end of central directory locator record must
+ reside on the same disk when splitting or spanning
+ an archive.
+ */
+ if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
+ this.zip64 = true;
+
+ /*
+ Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
+ the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents
+ all numbers as 64-bit double precision IEEE 754 floating point numbers.
+ So, we have 53bits for integers and bitwise operations treat everything as 32bits.
+ see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
+ and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
+ */
+
+ // should look for a zip64 EOCD locator
+ offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+ if (offset === -1) {
+ throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");
+ }
+ this.reader.setIndex(offset);
+ this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+ this.readBlockZip64EndOfCentralLocator();
+
+ // now the zip64 EOCD record
+ this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
+ this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+ this.readBlockZip64EndOfCentral();
+ }
+ },
+ prepareReader: function(data) {
+ var type = utils.getTypeOf(data);
+ if (type === "string" && !support.uint8array) {
+ this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);
+ }
+ else if (type === "nodebuffer") {
+ this.reader = new NodeBufferReader(data);
+ }
+ else {
+ this.reader = new Uint8ArrayReader(utils.transformTo("uint8array", data));
+ }
+ },
+ /**
+ * Read a zip file and create ZipEntries.
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
+ */
+ load: function(data) {
+ this.prepareReader(data);
+ this.readEndOfCentral();
+ this.readCentralDir();
+ this.readLocalFiles();
+ }
+};
+// }}} end of ZipEntries
+module.exports = ZipEntries;
+
+},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var utils = _dereq_('./utils');
+var CompressedObject = _dereq_('./compressedObject');
+var jszipProto = _dereq_('./object');
+
+var MADE_BY_DOS = 0x00;
+var MADE_BY_UNIX = 0x03;
+
+// class ZipEntry {{{
+/**
+ * An entry in the zip file.
+ * @constructor
+ * @param {Object} options Options of the current file.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntry(options, loadOptions) {
+ this.options = options;
+ this.loadOptions = loadOptions;
+}
+ZipEntry.prototype = {
+ /**
+ * say if the file is encrypted.
+ * @return {boolean} true if the file is encrypted, false otherwise.
+ */
+ isEncrypted: function() {
+ // bit 1 is set
+ return (this.bitFlag & 0x0001) === 0x0001;
+ },
+ /**
+ * say if the file has utf-8 filename/comment.
+ * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
+ */
+ useUTF8: function() {
+ // bit 11 is set
+ return (this.bitFlag & 0x0800) === 0x0800;
+ },
+ /**
+ * Prepare the function used to generate the compressed content from this ZipFile.
+ * @param {DataReader} reader the reader to use.
+ * @param {number} from the offset from where we should read the data.
+ * @param {number} length the length of the data to read.
+ * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).
+ */
+ prepareCompressedContent: function(reader, from, length) {
+ return function() {
+ var previousIndex = reader.index;
+ reader.setIndex(from);
+ var compressedFileData = reader.readData(length);
+ reader.setIndex(previousIndex);
+
+ return compressedFileData;
+ };
+ },
+ /**
+ * Prepare the function used to generate the uncompressed content from this ZipFile.
+ * @param {DataReader} reader the reader to use.
+ * @param {number} from the offset from where we should read the data.
+ * @param {number} length the length of the data to read.
+ * @param {JSZip.compression} compression the compression used on this file.
+ * @param {number} uncompressedSize the uncompressed size to expect.
+ * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).
+ */
+ prepareContent: function(reader, from, length, compression, uncompressedSize) {
+ return function() {
+
+ var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());
+ var uncompressedFileData = compression.uncompress(compressedFileData);
+
+ if (uncompressedFileData.length !== uncompressedSize) {
+ throw new Error("Bug : uncompressed data size mismatch");
+ }
+
+ return uncompressedFileData;
+ };
+ },
+ /**
+ * Read the local part of a zip file and add the info in this object.
+ * @param {DataReader} reader the reader to use.
+ */
+ readLocalPart: function(reader) {
+ var compression, localExtraFieldsLength;
+
+ // we already know everything from the central dir !
+ // If the central dir data are false, we are doomed.
+ // On the bright side, the local part is scary : zip64, data descriptors, both, etc.
+ // The less data we get here, the more reliable this should be.
+ // Let's skip the whole header and dash to the data !
+ reader.skip(22);
+ // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
+ // Strangely, the filename here is OK.
+ // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
+ // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
+ // Search "unzip mismatching "local" filename continuing with "central" filename version" on
+ // the internet.
+ //
+ // I think I see the logic here : the central directory is used to display
+ // content and the local directory is used to extract the files. Mixing / and \
+ // may be used to display \ to windows users and use / when extracting the files.
+ // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
+ this.fileNameLength = reader.readInt(2);
+ localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
+ this.fileName = reader.readString(this.fileNameLength);
+ reader.skip(localExtraFieldsLength);
+
+ if (this.compressedSize == -1 || this.uncompressedSize == -1) {
+ throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize == -1 || uncompressedSize == -1)");
+ }
+
+ compression = utils.findCompression(this.compressionMethod);
+ if (compression === null) { // no compression found
+ throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + this.fileName + ")");
+ }
+ this.decompressed = new CompressedObject();
+ this.decompressed.compressedSize = this.compressedSize;
+ this.decompressed.uncompressedSize = this.uncompressedSize;
+ this.decompressed.crc32 = this.crc32;
+ this.decompressed.compressionMethod = this.compressionMethod;
+ this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);
+ this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);
+
+ // we need to compute the crc32...
+ if (this.loadOptions.checkCRC32) {
+ this.decompressed = utils.transformTo("string", this.decompressed.getContent());
+ if (jszipProto.crc32(this.decompressed) !== this.crc32) {
+ throw new Error("Corrupted zip : CRC32 mismatch");
+ }
+ }
+ },
+
+ /**
+ * Read the central part of a zip file and add the info in this object.
+ * @param {DataReader} reader the reader to use.
+ */
+ readCentralPart: function(reader) {
+ this.versionMadeBy = reader.readInt(2);
+ this.versionNeeded = reader.readInt(2);
+ this.bitFlag = reader.readInt(2);
+ this.compressionMethod = reader.readString(2);
+ this.date = reader.readDate();
+ this.crc32 = reader.readInt(4);
+ this.compressedSize = reader.readInt(4);
+ this.uncompressedSize = reader.readInt(4);
+ this.fileNameLength = reader.readInt(2);
+ this.extraFieldsLength = reader.readInt(2);
+ this.fileCommentLength = reader.readInt(2);
+ this.diskNumberStart = reader.readInt(2);
+ this.internalFileAttributes = reader.readInt(2);
+ this.externalFileAttributes = reader.readInt(4);
+ this.localHeaderOffset = reader.readInt(4);
+
+ if (this.isEncrypted()) {
+ throw new Error("Encrypted zip are not supported");
+ }
+
+ this.fileName = reader.readString(this.fileNameLength);
+ this.readExtraFields(reader);
+ this.parseZIP64ExtraField(reader);
+ this.fileComment = reader.readString(this.fileCommentLength);
+ },
+
+ /**
+ * Parse the external file attributes and get the unix/dos permissions.
+ */
+ processAttributes: function () {
+ this.unixPermissions = null;
+ this.dosPermissions = null;
+ var madeBy = this.versionMadeBy >> 8;
+
+ // Check if we have the DOS directory flag set.
+ // We look for it in the DOS and UNIX permissions
+ // but some unknown platform could set it as a compatibility flag.
+ this.dir = this.externalFileAttributes & 0x0010 ? true : false;
+
+ if(madeBy === MADE_BY_DOS) {
+ // first 6 bits (0 to 5)
+ this.dosPermissions = this.externalFileAttributes & 0x3F;
+ }
+
+ if(madeBy === MADE_BY_UNIX) {
+ this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;
+ // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);
+ }
+
+ // fail safe : if the name ends with a / it probably means a folder
+ if (!this.dir && this.fileName.slice(-1) === '/') {
+ this.dir = true;
+ }
+ },
+
+ /**
+ * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
+ * @param {DataReader} reader the reader to use.
+ */
+ parseZIP64ExtraField: function(reader) {
+
+ if (!this.extraFields[0x0001]) {
+ return;
+ }
+
+ // should be something, preparing the extra reader
+ var extraReader = new StringReader(this.extraFields[0x0001].value);
+
+ // I really hope that these 64bits integer can fit in 32 bits integer, because js
+ // won't let us have more.
+ if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
+ this.uncompressedSize = extraReader.readInt(8);
+ }
+ if (this.compressedSize === utils.MAX_VALUE_32BITS) {
+ this.compressedSize = extraReader.readInt(8);
+ }
+ if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
+ this.localHeaderOffset = extraReader.readInt(8);
+ }
+ if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
+ this.diskNumberStart = extraReader.readInt(4);
+ }
+ },
+ /**
+ * Read the central part of a zip file and add the info in this object.
+ * @param {DataReader} reader the reader to use.
+ */
+ readExtraFields: function(reader) {
+ var start = reader.index,
+ extraFieldId,
+ extraFieldLength,
+ extraFieldValue;
+
+ this.extraFields = this.extraFields || {};
+
+ while (reader.index < start + this.extraFieldsLength) {
+ extraFieldId = reader.readInt(2);
+ extraFieldLength = reader.readInt(2);
+ extraFieldValue = reader.readString(extraFieldLength);
+
+ this.extraFields[extraFieldId] = {
+ id: extraFieldId,
+ length: extraFieldLength,
+ value: extraFieldValue
+ };
+ }
+ },
+ /**
+ * Apply an UTF8 transformation if needed.
+ */
+ handleUTF8: function() {
+ if (this.useUTF8()) {
+ this.fileName = jszipProto.utf8decode(this.fileName);
+ this.fileComment = jszipProto.utf8decode(this.fileComment);
+ } else {
+ var upath = this.findExtraFieldUnicodePath();
+ if (upath !== null) {
+ this.fileName = upath;
+ }
+ var ucomment = this.findExtraFieldUnicodeComment();
+ if (ucomment !== null) {
+ this.fileComment = ucomment;
+ }
+ }
+ },
+
+ /**
+ * Find the unicode path declared in the extra field, if any.
+ * @return {String} the unicode path, null otherwise.
+ */
+ findExtraFieldUnicodePath: function() {
+ var upathField = this.extraFields[0x7075];
+ if (upathField) {
+ var extraReader = new StringReader(upathField.value);
+
+ // wrong version
+ if (extraReader.readInt(1) !== 1) {
+ return null;
+ }
+
+ // the crc of the filename changed, this field is out of date.
+ if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {
+ return null;
+ }
+
+ return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));
+ }
+ return null;
+ },
+
+ /**
+ * Find the unicode comment declared in the extra field, if any.
+ * @return {String} the unicode comment, null otherwise.
+ */
+ findExtraFieldUnicodeComment: function() {
+ var ucommentField = this.extraFields[0x6375];
+ if (ucommentField) {
+ var extraReader = new StringReader(ucommentField.value);
+
+ // wrong version
+ if (extraReader.readInt(1) !== 1) {
+ return null;
+ }
+
+ // the crc of the comment changed, this field is out of date.
+ if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {
+ return null;
+ }
+
+ return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));
+ }
+ return null;
+ }
+};
+module.exports = ZipEntry;
+
+},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(_dereq_,module,exports){
+// Top level file is just a mixin of submodules & constants
+'use strict';
+
+var assign = _dereq_('./lib/utils/common').assign;
+
+var deflate = _dereq_('./lib/deflate');
+var inflate = _dereq_('./lib/inflate');
+var constants = _dereq_('./lib/zlib/constants');
+
+var pako = {};
+
+assign(pako, deflate, inflate, constants);
+
+module.exports = pako;
+},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_deflate = _dereq_('./zlib/deflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+var Z_NO_FLUSH = 0;
+var Z_FINISH = 4;
+
+var Z_OK = 0;
+var Z_STREAM_END = 1;
+
+var Z_DEFAULT_COMPRESSION = -1;
+
+var Z_DEFAULT_STRATEGY = 0;
+
+var Z_DEFLATED = 8;
+
+/* ===========================================================================*/
+
+
+/**
+ * class Deflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[deflate]],
+ * [[deflateRaw]] and [[gzip]].
+ **/
+
+/* internal
+ * Deflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Deflate#onData]] not overriden.
+ **/
+
+/**
+ * Deflate.result -> Uint8Array|Array
+ *
+ * Compressed result, generated by default [[Deflate#onData]]
+ * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Deflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Deflate.err -> Number
+ *
+ * Error code after deflate finished. 0 (Z_OK) on success.
+ * You will not need it in real life, because deflate errors
+ * are possible only on wrong options or bad `onData` / `onEnd`
+ * custom handlers.
+ **/
+
+/**
+ * Deflate.msg -> String
+ *
+ * Error message, if [[Deflate.err]] != 0
+ **/
+
+
+/**
+ * new Deflate(options)
+ * - options (Object): zlib deflate options.
+ *
+ * Creates new deflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `level`
+ * - `windowBits`
+ * - `memLevel`
+ * - `strategy`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw deflate
+ * - `gzip` (Boolean) - create gzip wrapper
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ * (each char code [0..255])
+ * - `header` (Object) - custom header for gzip
+ * - `text` (Boolean) - true if compressed data believed to be text
+ * - `time` (Number) - modification time, unix timestamp
+ * - `os` (Number) - operation system code
+ * - `extra` (Array) - array of bytes with extra data (max 65536)
+ * - `name` (String) - file name (binary string)
+ * - `comment` (String) - comment (binary string)
+ * - `hcrc` (Boolean) - true if header crc should be added
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var deflate = new pako.Deflate({ level: 3});
+ *
+ * deflate.push(chunk1, false);
+ * deflate.push(chunk2, true); // true -> last chunk
+ *
+ * if (deflate.err) { throw new Error(deflate.err); }
+ *
+ * console.log(deflate.result);
+ * ```
+ **/
+var Deflate = function(options) {
+
+ this.options = utils.assign({
+ level: Z_DEFAULT_COMPRESSION,
+ method: Z_DEFLATED,
+ chunkSize: 16384,
+ windowBits: 15,
+ memLevel: 8,
+ strategy: Z_DEFAULT_STRATEGY,
+ to: ''
+ }, options || {});
+
+ var opt = this.options;
+
+ if (opt.raw && (opt.windowBits > 0)) {
+ opt.windowBits = -opt.windowBits;
+ }
+
+ else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
+ opt.windowBits += 16;
+ }
+
+ this.err = 0; // error code, if happens (0 = Z_OK)
+ this.msg = ''; // error message
+ this.ended = false; // used to avoid multiple onEnd() calls
+ this.chunks = []; // chunks of compressed data
+
+ this.strm = new zstream();
+ this.strm.avail_out = 0;
+
+ var status = zlib_deflate.deflateInit2(
+ this.strm,
+ opt.level,
+ opt.method,
+ opt.windowBits,
+ opt.memLevel,
+ opt.strategy
+ );
+
+ if (status !== Z_OK) {
+ throw new Error(msg[status]);
+ }
+
+ if (opt.header) {
+ zlib_deflate.deflateSetHeader(this.strm, opt.header);
+ }
+};
+
+/**
+ * Deflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data. Strings will be converted to
+ * utf8 byte sequence.
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
+ * new compressed chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Deflate#onEnd]].
+ *
+ * On fail call [[Deflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * array format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true); // push last chunk
+ * ```
+ **/
+Deflate.prototype.push = function(data, mode) {
+ var strm = this.strm;
+ var chunkSize = this.options.chunkSize;
+ var status, _mode;
+
+ if (this.ended) { return false; }
+
+ _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
+
+ // Convert data if needed
+ if (typeof data === 'string') {
+ // If we need to compress text, change encoding to utf8.
+ strm.input = strings.string2buf(data);
+ } else {
+ strm.input = data;
+ }
+
+ strm.next_in = 0;
+ strm.avail_in = strm.input.length;
+
+ do {
+ if (strm.avail_out === 0) {
+ strm.output = new utils.Buf8(chunkSize);
+ strm.next_out = 0;
+ strm.avail_out = chunkSize;
+ }
+ status = zlib_deflate.deflate(strm, _mode); /* no bad return value */
+
+ if (status !== Z_STREAM_END && status !== Z_OK) {
+ this.onEnd(status);
+ this.ended = true;
+ return false;
+ }
+ if (strm.avail_out === 0 || (strm.avail_in === 0 && _mode === Z_FINISH)) {
+ if (this.options.to === 'string') {
+ this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
+ } else {
+ this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+ }
+ }
+ } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
+
+ // Finalize on the last chunk.
+ if (_mode === Z_FINISH) {
+ status = zlib_deflate.deflateEnd(this.strm);
+ this.onEnd(status);
+ this.ended = true;
+ return status === Z_OK;
+ }
+
+ return true;
+};
+
+
+/**
+ * Deflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ * on js engine support. When string output requested, each chunk
+ * will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Deflate.prototype.onData = function(chunk) {
+ this.chunks.push(chunk);
+};
+
+
+/**
+ * Deflate#onEnd(status) -> Void
+ * - status (Number): deflate status. 0 (Z_OK) on success,
+ * other if not.
+ *
+ * Called once after you tell deflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Deflate.prototype.onEnd = function(status) {
+ // On success - join
+ if (status === Z_OK) {
+ if (this.options.to === 'string') {
+ this.result = this.chunks.join('');
+ } else {
+ this.result = utils.flattenChunks(this.chunks);
+ }
+ }
+ this.chunks = [];
+ this.err = status;
+ this.msg = this.strm.msg;
+};
+
+
+/**
+ * deflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * Compress `data` with deflate alrorythm and `options`.
+ *
+ * Supported options are:
+ *
+ * - level
+ * - windowBits
+ * - memLevel
+ * - strategy
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ * negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ * (each char code [0..255])
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
+ *
+ * console.log(pako.deflate(data));
+ * ```
+ **/
+function deflate(input, options) {
+ var deflator = new Deflate(options);
+
+ deflator.push(input, true);
+
+ // That will never happens, if you don't cheat with options :)
+ if (deflator.err) { throw deflator.msg; }
+
+ return deflator.result;
+}
+
+
+/**
+ * deflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function deflateRaw(input, options) {
+ options = options || {};
+ options.raw = true;
+ return deflate(input, options);
+}
+
+
+/**
+ * gzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but create gzip wrapper instead of
+ * deflate one.
+ **/
+function gzip(input, options) {
+ options = options || {};
+ options.gzip = true;
+ return deflate(input, options);
+}
+
+
+exports.Deflate = Deflate;
+exports.deflate = deflate;
+exports.deflateRaw = deflateRaw;
+exports.gzip = gzip;
+},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_inflate = _dereq_('./zlib/inflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var c = _dereq_('./zlib/constants');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+var gzheader = _dereq_('./zlib/gzheader');
+
+
+/**
+ * class Inflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[inflate]]
+ * and [[inflateRaw]].
+ **/
+
+/* internal
+ * inflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Inflate#onData]] not overriden.
+ **/
+
+/**
+ * Inflate.result -> Uint8Array|Array|String
+ *
+ * Uncompressed result, generated by default [[Inflate#onData]]
+ * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Inflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Inflate.err -> Number
+ *
+ * Error code after inflate finished. 0 (Z_OK) on success.
+ * Should be checked if broken data possible.
+ **/
+
+/**
+ * Inflate.msg -> String
+ *
+ * Error message, if [[Inflate.err]] != 0
+ **/
+
+
+/**
+ * new Inflate(options)
+ * - options (Object): zlib inflate options.
+ *
+ * Creates new inflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `windowBits`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw inflate
+ * - `to` (String) - if equal to 'string', then result will be converted
+ * from utf8 to utf16 (javascript) string. When string output requested,
+ * chunk length can differ from `chunkSize`, depending on content.
+ *
+ * By default, when no options set, autodetect deflate/gzip data format via
+ * wrapper header.
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var inflate = new pako.Inflate({ level: 3});
+ *
+ * inflate.push(chunk1, false);
+ * inflate.push(chunk2, true); // true -> last chunk
+ *
+ * if (inflate.err) { throw new Error(inflate.err); }
+ *
+ * console.log(inflate.result);
+ * ```
+ **/
+var Inflate = function(options) {
+
+ this.options = utils.assign({
+ chunkSize: 16384,
+ windowBits: 0,
+ to: ''
+ }, options || {});
+
+ var opt = this.options;
+
+ // Force window size for `raw` data, if not set directly,
+ // because we have no header for autodetect.
+ if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
+ opt.windowBits = -opt.windowBits;
+ if (opt.windowBits === 0) { opt.windowBits = -15; }
+ }
+
+ // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
+ if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
+ !(options && options.windowBits)) {
+ opt.windowBits += 32;
+ }
+
+ // Gzip header has no info about windows size, we can do autodetect only
+ // for deflate. So, if window size not set, force it to max when gzip possible
+ if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
+ // bit 3 (16) -> gzipped data
+ // bit 4 (32) -> autodetect gzip/deflate
+ if ((opt.windowBits & 15) === 0) {
+ opt.windowBits |= 15;
+ }
+ }
+
+ this.err = 0; // error code, if happens (0 = Z_OK)
+ this.msg = ''; // error message
+ this.ended = false; // used to avoid multiple onEnd() calls
+ this.chunks = []; // chunks of compressed data
+
+ this.strm = new zstream();
+ this.strm.avail_out = 0;
+
+ var status = zlib_inflate.inflateInit2(
+ this.strm,
+ opt.windowBits
+ );
+
+ if (status !== c.Z_OK) {
+ throw new Error(msg[status]);
+ }
+
+ this.header = new gzheader();
+
+ zlib_inflate.inflateGetHeader(this.strm, this.header);
+};
+
+/**
+ * Inflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
+ * new output chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Inflate#onEnd]].
+ *
+ * On fail call [[Inflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true); // push last chunk
+ * ```
+ **/
+Inflate.prototype.push = function(data, mode) {
+ var strm = this.strm;
+ var chunkSize = this.options.chunkSize;
+ var status, _mode;
+ var next_out_utf8, tail, utf8str;
+
+ if (this.ended) { return false; }
+ _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
+
+ // Convert data if needed
+ if (typeof data === 'string') {
+ // Only binary strings can be decompressed on practice
+ strm.input = strings.binstring2buf(data);
+ } else {
+ strm.input = data;
+ }
+
+ strm.next_in = 0;
+ strm.avail_in = strm.input.length;
+
+ do {
+ if (strm.avail_out === 0) {
+ strm.output = new utils.Buf8(chunkSize);
+ strm.next_out = 0;
+ strm.avail_out = chunkSize;
+ }
+
+ status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */
+
+ if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
+ this.onEnd(status);
+ this.ended = true;
+ return false;
+ }
+
+ if (strm.next_out) {
+ if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && _mode === c.Z_FINISH)) {
+
+ if (this.options.to === 'string') {
+
+ next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
+
+ tail = strm.next_out - next_out_utf8;
+ utf8str = strings.buf2string(strm.output, next_out_utf8);
+
+ // move tail
+ strm.next_out = tail;
+ strm.avail_out = chunkSize - tail;
+ if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
+
+ this.onData(utf8str);
+
+ } else {
+ this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+ }
+ }
+ }
+ } while ((strm.avail_in > 0) && status !== c.Z_STREAM_END);
+
+ if (status === c.Z_STREAM_END) {
+ _mode = c.Z_FINISH;
+ }
+ // Finalize on the last chunk.
+ if (_mode === c.Z_FINISH) {
+ status = zlib_inflate.inflateEnd(this.strm);
+ this.onEnd(status);
+ this.ended = true;
+ return status === c.Z_OK;
+ }
+
+ return true;
+};
+
+
+/**
+ * Inflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ * on js engine support. When string output requested, each chunk
+ * will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Inflate.prototype.onData = function(chunk) {
+ this.chunks.push(chunk);
+};
+
+
+/**
+ * Inflate#onEnd(status) -> Void
+ * - status (Number): inflate status. 0 (Z_OK) on success,
+ * other if not.
+ *
+ * Called once after you tell inflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Inflate.prototype.onEnd = function(status) {
+ // On success - join
+ if (status === c.Z_OK) {
+ if (this.options.to === 'string') {
+ // Glue & convert here, until we teach pako to send
+ // utf8 alligned strings to onData
+ this.result = this.chunks.join('');
+ } else {
+ this.result = utils.flattenChunks(this.chunks);
+ }
+ }
+ this.chunks = [];
+ this.err = status;
+ this.msg = this.strm.msg;
+};
+
+
+/**
+ * inflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Decompress `data` with inflate/ungzip and `options`. Autodetect
+ * format via wrapper header by default. That's why we don't provide
+ * separate `ungzip` method.
+ *
+ * Supported options are:
+ *
+ * - windowBits
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ * negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be converted
+ * from utf8 to utf16 (javascript) string. When string output requested,
+ * chunk length can differ from `chunkSize`, depending on content.
+ *
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ * , input = pako.deflate([1,2,3,4,5,6,7,8,9])
+ * , output;
+ *
+ * try {
+ * output = pako.inflate(input);
+ * } catch (err)
+ * console.log(err);
+ * }
+ * ```
+ **/
+function inflate(input, options) {
+ var inflator = new Inflate(options);
+
+ inflator.push(input, true);
+
+ // That will never happens, if you don't cheat with options :)
+ if (inflator.err) { throw inflator.msg; }
+
+ return inflator.result;
+}
+
+
+/**
+ * inflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * The same as [[inflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function inflateRaw(input, options) {
+ options = options || {};
+ options.raw = true;
+ return inflate(input, options);
+}
+
+
+/**
+ * ungzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Just shortcut to [[inflate]], because it autodetects format
+ * by header.content. Done for convenience.
+ **/
+
+
+exports.Inflate = Inflate;
+exports.inflate = inflate;
+exports.inflateRaw = inflateRaw;
+exports.ungzip = inflate;
+
+},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(_dereq_,module,exports){
+'use strict';
+
+
+var TYPED_OK = (typeof Uint8Array !== 'undefined') &&
+ (typeof Uint16Array !== 'undefined') &&
+ (typeof Int32Array !== 'undefined');
+
+
+exports.assign = function (obj /*from1, from2, from3, ...*/) {
+ var sources = Array.prototype.slice.call(arguments, 1);
+ while (sources.length) {
+ var source = sources.shift();
+ if (!source) { continue; }
+
+ if (typeof(source) !== 'object') {
+ throw new TypeError(source + 'must be non-object');
+ }
+
+ for (var p in source) {
+ if (source.hasOwnProperty(p)) {
+ obj[p] = source[p];
+ }
+ }
+ }
+
+ return obj;
+};
+
+
+// reduce buffer size, avoiding mem copy
+exports.shrinkBuf = function (buf, size) {
+ if (buf.length === size) { return buf; }
+ if (buf.subarray) { return buf.subarray(0, size); }
+ buf.length = size;
+ return buf;
+};
+
+
+var fnTyped = {
+ arraySet: function (dest, src, src_offs, len, dest_offs) {
+ if (src.subarray && dest.subarray) {
+ dest.set(src.subarray(src_offs, src_offs+len), dest_offs);
+ return;
+ }
+ // Fallback to ordinary array
+ for(var i=0; i= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+
+// convert string to array (typed, when possible)
+exports.string2buf = function (str) {
+ var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+ // count binary size
+ for (m_pos = 0; m_pos < str_len; m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+ c2 = str.charCodeAt(m_pos+1);
+ if ((c2 & 0xfc00) === 0xdc00) {
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+ m_pos++;
+ }
+ }
+ buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+ }
+
+ // allocate buffer
+ buf = new utils.Buf8(buf_len);
+
+ // convert
+ for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+ c2 = str.charCodeAt(m_pos+1);
+ if ((c2 & 0xfc00) === 0xdc00) {
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+ m_pos++;
+ }
+ }
+ if (c < 0x80) {
+ /* one byte */
+ buf[i++] = c;
+ } else if (c < 0x800) {
+ /* two bytes */
+ buf[i++] = 0xC0 | (c >>> 6);
+ buf[i++] = 0x80 | (c & 0x3f);
+ } else if (c < 0x10000) {
+ /* three bytes */
+ buf[i++] = 0xE0 | (c >>> 12);
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+ buf[i++] = 0x80 | (c & 0x3f);
+ } else {
+ /* four bytes */
+ buf[i++] = 0xf0 | (c >>> 18);
+ buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+ buf[i++] = 0x80 | (c & 0x3f);
+ }
+ }
+
+ return buf;
+};
+
+// Helper (used in 2 places)
+function buf2binstring(buf, len) {
+ // use fallback for big arrays to avoid stack overflow
+ if (len < 65537) {
+ if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
+ return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
+ }
+ }
+
+ var result = '';
+ for(var i=0; i < len; i++) {
+ result += String.fromCharCode(buf[i]);
+ }
+ return result;
+}
+
+
+// Convert byte array to binary string
+exports.buf2binstring = function(buf) {
+ return buf2binstring(buf, buf.length);
+};
+
+
+// Convert binary string (typed, when possible)
+exports.binstring2buf = function(str) {
+ var buf = new utils.Buf8(str.length);
+ for(var i=0, len=buf.length; i < len; i++) {
+ buf[i] = str.charCodeAt(i);
+ }
+ return buf;
+};
+
+
+// convert array to string
+exports.buf2string = function (buf, max) {
+ var i, out, c, c_len;
+ var len = max || buf.length;
+
+ // Reserve max possible length (2 words per char)
+ // NB: by unknown reasons, Array is significantly faster for
+ // String.fromCharCode.apply than Uint16Array.
+ var utf16buf = new Array(len*2);
+
+ for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+ // apply mask on first byte
+ c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+ // join the rest
+ while (c_len > 1 && i < len) {
+ c = (c << 6) | (buf[i++] & 0x3f);
+ c_len--;
+ }
+
+ // terminated by end of string?
+ if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+ if (c < 0x10000) {
+ utf16buf[out++] = c;
+ } else {
+ c -= 0x10000;
+ utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+ utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+ }
+ }
+
+ return buf2binstring(utf16buf, out);
+};
+
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max - length limit (mandatory);
+exports.utf8border = function(buf, max) {
+ var pos;
+
+ max = max || buf.length;
+ if (max > buf.length) { max = buf.length; }
+
+ // go back from last position, until start of sequence found
+ pos = max-1;
+ while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+ // Fuckup - very small and broken sequence,
+ // return max, because we should return something anyway.
+ if (pos < 0) { return max; }
+
+ // If we came to start of buffer - that means vuffer is too small,
+ // return max too.
+ if (pos === 0) { return max; }
+
+ return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+},{"./common":27}],29:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It doesn't worth to make additional optimizationa as in original.
+// Small size is preferable.
+
+function adler32(adler, buf, len, pos) {
+ var s1 = (adler & 0xffff) |0
+ , s2 = ((adler >>> 16) & 0xffff) |0
+ , n = 0;
+
+ while (len !== 0) {
+ // Set limit ~ twice less than 5552, to keep
+ // s2 in 31-bits, because we force signed ints.
+ // in other case %= will fail.
+ n = len > 2000 ? 2000 : len;
+ len -= n;
+
+ do {
+ s1 = (s1 + buf[pos++]) |0;
+ s2 = (s2 + s1) |0;
+ } while (--n);
+
+ s1 %= 65521;
+ s2 %= 65521;
+ }
+
+ return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;
+},{}],30:[function(_dereq_,module,exports){
+module.exports = {
+
+ /* Allowed flush values; see deflate() and inflate() below for details */
+ Z_NO_FLUSH: 0,
+ Z_PARTIAL_FLUSH: 1,
+ Z_SYNC_FLUSH: 2,
+ Z_FULL_FLUSH: 3,
+ Z_FINISH: 4,
+ Z_BLOCK: 5,
+ Z_TREES: 6,
+
+ /* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+ Z_OK: 0,
+ Z_STREAM_END: 1,
+ Z_NEED_DICT: 2,
+ Z_ERRNO: -1,
+ Z_STREAM_ERROR: -2,
+ Z_DATA_ERROR: -3,
+ //Z_MEM_ERROR: -4,
+ Z_BUF_ERROR: -5,
+ //Z_VERSION_ERROR: -6,
+
+ /* compression levels */
+ Z_NO_COMPRESSION: 0,
+ Z_BEST_SPEED: 1,
+ Z_BEST_COMPRESSION: 9,
+ Z_DEFAULT_COMPRESSION: -1,
+
+
+ Z_FILTERED: 1,
+ Z_HUFFMAN_ONLY: 2,
+ Z_RLE: 3,
+ Z_FIXED: 4,
+ Z_DEFAULT_STRATEGY: 0,
+
+ /* Possible values of the data_type field (though see inflate()) */
+ Z_BINARY: 0,
+ Z_TEXT: 1,
+ //Z_ASCII: 1, // = Z_TEXT (deprecated)
+ Z_UNKNOWN: 2,
+
+ /* The deflate compression method */
+ Z_DEFLATED: 8
+ //Z_NULL: null // Use -1 or null inline, depending on var type
+};
+},{}],31:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+ var c, table = [];
+
+ for(var n =0; n < 256; n++){
+ c = n;
+ for(var k =0; k < 8; k++){
+ c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+ }
+ table[n] = c;
+ }
+
+ return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+ var t = crcTable
+ , end = pos + len;
+
+ crc = crc ^ (-1);
+
+ for (var i = pos; i < end; i++ ) {
+ crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+ }
+
+ return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;
+},{}],32:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('../utils/common');
+var trees = _dereq_('./trees');
+var adler32 = _dereq_('./adler32');
+var crc32 = _dereq_('./crc32');
+var msg = _dereq_('./messages');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+var Z_NO_FLUSH = 0;
+var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH = 2;
+var Z_FULL_FLUSH = 3;
+var Z_FINISH = 4;
+var Z_BLOCK = 5;
+//var Z_TREES = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK = 0;
+var Z_STREAM_END = 1;
+//var Z_NEED_DICT = 2;
+//var Z_ERRNO = -1;
+var Z_STREAM_ERROR = -2;
+var Z_DATA_ERROR = -3;
+//var Z_MEM_ERROR = -4;
+var Z_BUF_ERROR = -5;
+//var Z_VERSION_ERROR = -6;
+
+
+/* compression levels */
+//var Z_NO_COMPRESSION = 0;
+//var Z_BEST_SPEED = 1;
+//var Z_BEST_COMPRESSION = 9;
+var Z_DEFAULT_COMPRESSION = -1;
+
+
+var Z_FILTERED = 1;
+var Z_HUFFMAN_ONLY = 2;
+var Z_RLE = 3;
+var Z_FIXED = 4;
+var Z_DEFAULT_STRATEGY = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+//var Z_BINARY = 0;
+//var Z_TEXT = 1;
+//var Z_ASCII = 1; // = Z_TEXT
+var Z_UNKNOWN = 2;
+
+
+/* The deflate compression method */
+var Z_DEFLATED = 8;
+
+/*============================================================================*/
+
+
+var MAX_MEM_LEVEL = 9;
+/* Maximum value for memLevel in deflateInit2 */
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_MEM_LEVEL = 8;
+
+
+var LENGTH_CODES = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+var LITERALS = 256;
+/* number of literal bytes 0..255 */
+var L_CODES = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+var D_CODES = 30;
+/* number of distance codes */
+var BL_CODES = 19;
+/* number of codes used to transfer the bit lengths */
+var HEAP_SIZE = 2*L_CODES + 1;
+/* maximum heap size */
+var MAX_BITS = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
+
+var PRESET_DICT = 0x20;
+
+var INIT_STATE = 42;
+var EXTRA_STATE = 69;
+var NAME_STATE = 73;
+var COMMENT_STATE = 91;
+var HCRC_STATE = 103;
+var BUSY_STATE = 113;
+var FINISH_STATE = 666;
+
+var BS_NEED_MORE = 1; /* block not completed, need more input or more output */
+var BS_BLOCK_DONE = 2; /* block flush performed */
+var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
+var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */
+
+var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
+
+function err(strm, errorCode) {
+ strm.msg = msg[errorCode];
+ return errorCode;
+}
+
+function rank(f) {
+ return ((f) << 1) - ((f) > 4 ? 9 : 0);
+}
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->output buffer and copying into it.
+ * (See also read_buf()).
+ */
+function flush_pending(strm) {
+ var s = strm.state;
+
+ //_tr_flush_bits(s);
+ var len = s.pending;
+ if (len > strm.avail_out) {
+ len = strm.avail_out;
+ }
+ if (len === 0) { return; }
+
+ utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
+ strm.next_out += len;
+ s.pending_out += len;
+ strm.total_out += len;
+ strm.avail_out -= len;
+ s.pending -= len;
+ if (s.pending === 0) {
+ s.pending_out = 0;
+ }
+}
+
+
+function flush_block_only (s, last) {
+ trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
+ s.block_start = s.strstart;
+ flush_pending(s.strm);
+}
+
+
+function put_byte(s, b) {
+ s.pending_buf[s.pending++] = b;
+}
+
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+function putShortMSB(s, b) {
+// put_byte(s, (Byte)(b >> 8));
+// put_byte(s, (Byte)(b & 0xff));
+ s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
+ s.pending_buf[s.pending++] = b & 0xff;
+}
+
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read. All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->input buffer and copying from it.
+ * (See also flush_pending()).
+ */
+function read_buf(strm, buf, start, size) {
+ var len = strm.avail_in;
+
+ if (len > size) { len = size; }
+ if (len === 0) { return 0; }
+
+ strm.avail_in -= len;
+
+ utils.arraySet(buf, strm.input, strm.next_in, len, start);
+ if (strm.state.wrap === 1) {
+ strm.adler = adler32(strm.adler, buf, len, start);
+ }
+
+ else if (strm.state.wrap === 2) {
+ strm.adler = crc32(strm.adler, buf, len, start);
+ }
+
+ strm.next_in += len;
+ strm.total_in += len;
+
+ return len;
+}
+
+
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+function longest_match(s, cur_match) {
+ var chain_length = s.max_chain_length; /* max hash chain length */
+ var scan = s.strstart; /* current string */
+ var match; /* matched string */
+ var len; /* length of current match */
+ var best_len = s.prev_length; /* best match length so far */
+ var nice_match = s.nice_match; /* stop if match long enough */
+ var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
+ s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
+
+ var _win = s.window; // shortcut
+
+ var wmask = s.w_mask;
+ var prev = s.prev;
+
+ /* Stop when cur_match becomes <= limit. To simplify the code,
+ * we prevent matches with the string of window index 0.
+ */
+
+ var strend = s.strstart + MAX_MATCH;
+ var scan_end1 = _win[scan + best_len - 1];
+ var scan_end = _win[scan + best_len];
+
+ /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+ * It is easy to get rid of this optimization if necessary.
+ */
+ // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+ /* Do not waste too much time if we already have a good match: */
+ if (s.prev_length >= s.good_match) {
+ chain_length >>= 2;
+ }
+ /* Do not look for matches beyond the end of the input. This is necessary
+ * to make deflate deterministic.
+ */
+ if (nice_match > s.lookahead) { nice_match = s.lookahead; }
+
+ // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+ do {
+ // Assert(cur_match < s->strstart, "no future");
+ match = cur_match;
+
+ /* Skip to next match if the match length cannot increase
+ * or if the match length is less than 2. Note that the checks below
+ * for insufficient lookahead only occur occasionally for performance
+ * reasons. Therefore uninitialized memory will be accessed, and
+ * conditional jumps will be made that depend on those values.
+ * However the length of the match is limited to the lookahead, so
+ * the output of deflate is not affected by the uninitialized values.
+ */
+
+ if (_win[match + best_len] !== scan_end ||
+ _win[match + best_len - 1] !== scan_end1 ||
+ _win[match] !== _win[scan] ||
+ _win[++match] !== _win[scan + 1]) {
+ continue;
+ }
+
+ /* The check at best_len-1 can be removed because it will be made
+ * again later. (This heuristic is not always a win.)
+ * It is not necessary to compare scan[2] and match[2] since they
+ * are always equal when the other bytes match, given that
+ * the hash keys are equal and that HASH_BITS >= 8.
+ */
+ scan += 2;
+ match++;
+ // Assert(*scan == *match, "match[2]?");
+
+ /* We check for insufficient lookahead only every 8th comparison;
+ * the 256th check will be made at strstart+258.
+ */
+ do {
+ /*jshint noempty:false*/
+ } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+ _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+ _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+ _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+ scan < strend);
+
+ // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+ len = MAX_MATCH - (strend - scan);
+ scan = strend - MAX_MATCH;
+
+ if (len > best_len) {
+ s.match_start = cur_match;
+ best_len = len;
+ if (len >= nice_match) {
+ break;
+ }
+ scan_end1 = _win[scan + best_len - 1];
+ scan_end = _win[scan + best_len];
+ }
+ } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
+
+ if (best_len <= s.lookahead) {
+ return best_len;
+ }
+ return s.lookahead;
+}
+
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ * At least one byte has been read, or avail_in == 0; reads are
+ * performed for at least two bytes (required for the zip translate_eol
+ * option -- not supported here).
+ */
+function fill_window(s) {
+ var _w_size = s.w_size;
+ var p, n, m, more, str;
+
+ //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+ do {
+ more = s.window_size - s.lookahead - s.strstart;
+
+ // JS ints have 32 bit, block below not needed
+ /* Deal with !@#$% 64K limit: */
+ //if (sizeof(int) <= 2) {
+ // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+ // more = wsize;
+ //
+ // } else if (more == (unsigned)(-1)) {
+ // /* Very unlikely, but possible on 16 bit machine if
+ // * strstart == 0 && lookahead == 1 (input done a byte at time)
+ // */
+ // more--;
+ // }
+ //}
+
+
+ /* If the window is almost full and there is insufficient lookahead,
+ * move the upper half to the lower one to make room in the upper half.
+ */
+ if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
+
+ utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
+ s.match_start -= _w_size;
+ s.strstart -= _w_size;
+ /* we now have strstart >= MAX_DIST */
+ s.block_start -= _w_size;
+
+ /* Slide the hash table (could be avoided with 32 bit values
+ at the expense of memory usage). We slide even when level == 0
+ to keep the hash table consistent if we switch back to level > 0
+ later. (Using level 0 permanently is not an optimal usage of
+ zlib, so we don't care about this pathological case.)
+ */
+
+ n = s.hash_size;
+ p = n;
+ do {
+ m = s.head[--p];
+ s.head[p] = (m >= _w_size ? m - _w_size : 0);
+ } while (--n);
+
+ n = _w_size;
+ p = n;
+ do {
+ m = s.prev[--p];
+ s.prev[p] = (m >= _w_size ? m - _w_size : 0);
+ /* If n is not on any hash chain, prev[n] is garbage but
+ * its value will never be used.
+ */
+ } while (--n);
+
+ more += _w_size;
+ }
+ if (s.strm.avail_in === 0) {
+ break;
+ }
+
+ /* If there was no sliding:
+ * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+ * more == window_size - lookahead - strstart
+ * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+ * => more >= window_size - 2*WSIZE + 2
+ * In the BIG_MEM or MMAP case (not yet supported),
+ * window_size == input_size + MIN_LOOKAHEAD &&
+ * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+ * Otherwise, window_size == 2*WSIZE so more >= 2.
+ * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+ */
+ //Assert(more >= 2, "more < 2");
+ n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
+ s.lookahead += n;
+
+ /* Initialize the hash value now that we have some input: */
+ if (s.lookahead + s.insert >= MIN_MATCH) {
+ str = s.strstart - s.insert;
+ s.ins_h = s.window[str];
+
+ /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
+//#if MIN_MATCH != 3
+// Call update_hash() MIN_MATCH-3 more times
+//#endif
+ while (s.insert) {
+ /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH-1]) & s.hash_mask;
+
+ s.prev[str & s.w_mask] = s.head[s.ins_h];
+ s.head[s.ins_h] = str;
+ str++;
+ s.insert--;
+ if (s.lookahead + s.insert < MIN_MATCH) {
+ break;
+ }
+ }
+ }
+ /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+ * but this is not important since only literal bytes will be emitted.
+ */
+
+ } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
+
+ /* If the WIN_INIT bytes after the end of the current data have never been
+ * written, then zero those bytes in order to avoid memory check reports of
+ * the use of uninitialized (or uninitialised as Julian writes) bytes by
+ * the longest match routines. Update the high water mark for the next
+ * time through here. WIN_INIT is set to MAX_MATCH since the longest match
+ * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+ */
+// if (s.high_water < s.window_size) {
+// var curr = s.strstart + s.lookahead;
+// var init = 0;
+//
+// if (s.high_water < curr) {
+// /* Previous high water mark below current data -- zero WIN_INIT
+// * bytes or up to end of window, whichever is less.
+// */
+// init = s.window_size - curr;
+// if (init > WIN_INIT)
+// init = WIN_INIT;
+// zmemzero(s->window + curr, (unsigned)init);
+// s->high_water = curr + init;
+// }
+// else if (s->high_water < (ulg)curr + WIN_INIT) {
+// /* High water mark at or above current data, but below current data
+// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+// * to end of window, whichever is less.
+// */
+// init = (ulg)curr + WIN_INIT - s->high_water;
+// if (init > s->window_size - s->high_water)
+// init = s->window_size - s->high_water;
+// zmemzero(s->window + s->high_water, (unsigned)init);
+// s->high_water += init;
+// }
+// }
+//
+// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+// "not enough room for search");
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+function deflate_stored(s, flush) {
+ /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+ * to pending_buf_size, and each stored block has a 5 byte header:
+ */
+ var max_block_size = 0xffff;
+
+ if (max_block_size > s.pending_buf_size - 5) {
+ max_block_size = s.pending_buf_size - 5;
+ }
+
+ /* Copy as much as possible from input to output: */
+ for (;;) {
+ /* Fill the window as much as possible: */
+ if (s.lookahead <= 1) {
+
+ //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+ // s->block_start >= (long)s->w_size, "slide too late");
+// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
+// s.block_start >= s.w_size)) {
+// throw new Error("slide too late");
+// }
+
+ fill_window(s);
+ if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
+ return BS_NEED_MORE;
+ }
+
+ if (s.lookahead === 0) {
+ break;
+ }
+ /* flush the current block */
+ }
+ //Assert(s->block_start >= 0L, "block gone");
+// if (s.block_start < 0) throw new Error("block gone");
+
+ s.strstart += s.lookahead;
+ s.lookahead = 0;
+
+ /* Emit a stored block if pending_buf will be full: */
+ var max_start = s.block_start + max_block_size;
+
+ if (s.strstart === 0 || s.strstart >= max_start) {
+ /* strstart == 0 is possible when wraparound on 16-bit machine */
+ s.lookahead = s.strstart - max_start;
+ s.strstart = max_start;
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+
+
+ }
+ /* Flush if we may have to slide, otherwise block_start may become
+ * negative and the data will be gone:
+ */
+ if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+ }
+
+ s.insert = 0;
+
+ if (flush === Z_FINISH) {
+ /*** FLUSH_BLOCK(s, 1); ***/
+ flush_block_only(s, true);
+ if (s.strm.avail_out === 0) {
+ return BS_FINISH_STARTED;
+ }
+ /***/
+ return BS_FINISH_DONE;
+ }
+
+ if (s.strstart > s.block_start) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+
+ return BS_NEED_MORE;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+function deflate_fast(s, flush) {
+ var hash_head; /* head of the hash chain */
+ var bflush; /* set if current block must be flushed */
+
+ for (;;) {
+ /* Make sure that we always have enough lookahead, except
+ * at the end of the input file. We need MAX_MATCH bytes
+ * for the next match, plus MIN_MATCH bytes to insert the
+ * string following the next match.
+ */
+ if (s.lookahead < MIN_LOOKAHEAD) {
+ fill_window(s);
+ if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+ return BS_NEED_MORE;
+ }
+ if (s.lookahead === 0) {
+ break; /* flush the current block */
+ }
+ }
+
+ /* Insert the string window[strstart .. strstart+2] in the
+ * dictionary, and set hash_head to the head of the hash chain:
+ */
+ hash_head = 0/*NIL*/;
+ if (s.lookahead >= MIN_MATCH) {
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+ s.head[s.ins_h] = s.strstart;
+ /***/
+ }
+
+ /* Find the longest match, discarding those <= prev_length.
+ * At this point we have always match_length < MIN_MATCH
+ */
+ if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
+ /* To simplify the code, we prevent matches with the string
+ * of window index 0 (in particular we have to avoid a match
+ * of the string with itself at the start of the input file).
+ */
+ s.match_length = longest_match(s, hash_head);
+ /* longest_match() sets match_start */
+ }
+ if (s.match_length >= MIN_MATCH) {
+ // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
+
+ /*** _tr_tally_dist(s, s.strstart - s.match_start,
+ s.match_length - MIN_MATCH, bflush); ***/
+ bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
+
+ s.lookahead -= s.match_length;
+
+ /* Insert new strings in the hash table only if the match length
+ * is not too large. This saves time but degrades compression.
+ */
+ if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
+ s.match_length--; /* string at strstart already in table */
+ do {
+ s.strstart++;
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+ s.head[s.ins_h] = s.strstart;
+ /***/
+ /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+ * always MIN_MATCH bytes ahead.
+ */
+ } while (--s.match_length !== 0);
+ s.strstart++;
+ } else
+ {
+ s.strstart += s.match_length;
+ s.match_length = 0;
+ s.ins_h = s.window[s.strstart];
+ /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
+
+//#if MIN_MATCH != 3
+// Call UPDATE_HASH() MIN_MATCH-3 more times
+//#endif
+ /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+ * matter since it will be recomputed at next deflate call.
+ */
+ }
+ } else {
+ /* No match, output a literal byte */
+ //Tracevv((stderr,"%c", s.window[s.strstart]));
+ /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+ s.lookahead--;
+ s.strstart++;
+ }
+ if (bflush) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+ }
+ s.insert = ((s.strstart < (MIN_MATCH-1)) ? s.strstart : MIN_MATCH-1);
+ if (flush === Z_FINISH) {
+ /*** FLUSH_BLOCK(s, 1); ***/
+ flush_block_only(s, true);
+ if (s.strm.avail_out === 0) {
+ return BS_FINISH_STARTED;
+ }
+ /***/
+ return BS_FINISH_DONE;
+ }
+ if (s.last_lit) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+ return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+function deflate_slow(s, flush) {
+ var hash_head; /* head of hash chain */
+ var bflush; /* set if current block must be flushed */
+
+ var max_insert;
+
+ /* Process the input block. */
+ for (;;) {
+ /* Make sure that we always have enough lookahead, except
+ * at the end of the input file. We need MAX_MATCH bytes
+ * for the next match, plus MIN_MATCH bytes to insert the
+ * string following the next match.
+ */
+ if (s.lookahead < MIN_LOOKAHEAD) {
+ fill_window(s);
+ if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+ return BS_NEED_MORE;
+ }
+ if (s.lookahead === 0) { break; } /* flush the current block */
+ }
+
+ /* Insert the string window[strstart .. strstart+2] in the
+ * dictionary, and set hash_head to the head of the hash chain:
+ */
+ hash_head = 0/*NIL*/;
+ if (s.lookahead >= MIN_MATCH) {
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+ s.head[s.ins_h] = s.strstart;
+ /***/
+ }
+
+ /* Find the longest match, discarding those <= prev_length.
+ */
+ s.prev_length = s.match_length;
+ s.prev_match = s.match_start;
+ s.match_length = MIN_MATCH-1;
+
+ if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
+ s.strstart - hash_head <= (s.w_size-MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
+ /* To simplify the code, we prevent matches with the string
+ * of window index 0 (in particular we have to avoid a match
+ * of the string with itself at the start of the input file).
+ */
+ s.match_length = longest_match(s, hash_head);
+ /* longest_match() sets match_start */
+
+ if (s.match_length <= 5 &&
+ (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
+
+ /* If prev_match is also MIN_MATCH, match_start is garbage
+ * but we will ignore the current match anyway.
+ */
+ s.match_length = MIN_MATCH-1;
+ }
+ }
+ /* If there was a match at the previous step and the current
+ * match is not better, output the previous match:
+ */
+ if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
+ max_insert = s.strstart + s.lookahead - MIN_MATCH;
+ /* Do not insert strings in hash table beyond this. */
+
+ //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
+
+ /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
+ s.prev_length - MIN_MATCH, bflush);***/
+ bflush = trees._tr_tally(s, s.strstart - 1- s.prev_match, s.prev_length - MIN_MATCH);
+ /* Insert in hash table all strings up to the end of the match.
+ * strstart-1 and strstart are already inserted. If there is not
+ * enough lookahead, the last two strings are not inserted in
+ * the hash table.
+ */
+ s.lookahead -= s.prev_length-1;
+ s.prev_length -= 2;
+ do {
+ if (++s.strstart <= max_insert) {
+ /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+ s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+ hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+ s.head[s.ins_h] = s.strstart;
+ /***/
+ }
+ } while (--s.prev_length !== 0);
+ s.match_available = 0;
+ s.match_length = MIN_MATCH-1;
+ s.strstart++;
+
+ if (bflush) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+
+ } else if (s.match_available) {
+ /* If there was no match at the previous position, output a
+ * single literal. If there was a match but the current match
+ * is longer, truncate the previous match to a single literal.
+ */
+ //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+ /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+ if (bflush) {
+ /*** FLUSH_BLOCK_ONLY(s, 0) ***/
+ flush_block_only(s, false);
+ /***/
+ }
+ s.strstart++;
+ s.lookahead--;
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ } else {
+ /* There is no previous match to compare with, wait for
+ * the next step to decide.
+ */
+ s.match_available = 1;
+ s.strstart++;
+ s.lookahead--;
+ }
+ }
+ //Assert (flush != Z_NO_FLUSH, "no flush?");
+ if (s.match_available) {
+ //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+ /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+ s.match_available = 0;
+ }
+ s.insert = s.strstart < MIN_MATCH-1 ? s.strstart : MIN_MATCH-1;
+ if (flush === Z_FINISH) {
+ /*** FLUSH_BLOCK(s, 1); ***/
+ flush_block_only(s, true);
+ if (s.strm.avail_out === 0) {
+ return BS_FINISH_STARTED;
+ }
+ /***/
+ return BS_FINISH_DONE;
+ }
+ if (s.last_lit) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+
+ return BS_BLOCK_DONE;
+}
+
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one. Do not maintain a hash table. (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+function deflate_rle(s, flush) {
+ var bflush; /* set if current block must be flushed */
+ var prev; /* byte at distance one to match */
+ var scan, strend; /* scan goes up to strend for length of run */
+
+ var _win = s.window;
+
+ for (;;) {
+ /* Make sure that we always have enough lookahead, except
+ * at the end of the input file. We need MAX_MATCH bytes
+ * for the longest run, plus one for the unrolled loop.
+ */
+ if (s.lookahead <= MAX_MATCH) {
+ fill_window(s);
+ if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
+ return BS_NEED_MORE;
+ }
+ if (s.lookahead === 0) { break; } /* flush the current block */
+ }
+
+ /* See how many times the previous byte repeats */
+ s.match_length = 0;
+ if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
+ scan = s.strstart - 1;
+ prev = _win[scan];
+ if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
+ strend = s.strstart + MAX_MATCH;
+ do {
+ /*jshint noempty:false*/
+ } while (prev === _win[++scan] && prev === _win[++scan] &&
+ prev === _win[++scan] && prev === _win[++scan] &&
+ prev === _win[++scan] && prev === _win[++scan] &&
+ prev === _win[++scan] && prev === _win[++scan] &&
+ scan < strend);
+ s.match_length = MAX_MATCH - (strend - scan);
+ if (s.match_length > s.lookahead) {
+ s.match_length = s.lookahead;
+ }
+ }
+ //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+ }
+
+ /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+ if (s.match_length >= MIN_MATCH) {
+ //check_match(s, s.strstart, s.strstart - 1, s.match_length);
+
+ /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
+ bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
+
+ s.lookahead -= s.match_length;
+ s.strstart += s.match_length;
+ s.match_length = 0;
+ } else {
+ /* No match, output a literal byte */
+ //Tracevv((stderr,"%c", s->window[s->strstart]));
+ /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+ s.lookahead--;
+ s.strstart++;
+ }
+ if (bflush) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+ }
+ s.insert = 0;
+ if (flush === Z_FINISH) {
+ /*** FLUSH_BLOCK(s, 1); ***/
+ flush_block_only(s, true);
+ if (s.strm.avail_out === 0) {
+ return BS_FINISH_STARTED;
+ }
+ /***/
+ return BS_FINISH_DONE;
+ }
+ if (s.last_lit) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+ return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+function deflate_huff(s, flush) {
+ var bflush; /* set if current block must be flushed */
+
+ for (;;) {
+ /* Make sure that we have a literal to write. */
+ if (s.lookahead === 0) {
+ fill_window(s);
+ if (s.lookahead === 0) {
+ if (flush === Z_NO_FLUSH) {
+ return BS_NEED_MORE;
+ }
+ break; /* flush the current block */
+ }
+ }
+
+ /* Output a literal byte */
+ s.match_length = 0;
+ //Tracevv((stderr,"%c", s->window[s->strstart]));
+ /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+ bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+ s.lookahead--;
+ s.strstart++;
+ if (bflush) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+ }
+ s.insert = 0;
+ if (flush === Z_FINISH) {
+ /*** FLUSH_BLOCK(s, 1); ***/
+ flush_block_only(s, true);
+ if (s.strm.avail_out === 0) {
+ return BS_FINISH_STARTED;
+ }
+ /***/
+ return BS_FINISH_DONE;
+ }
+ if (s.last_lit) {
+ /*** FLUSH_BLOCK(s, 0); ***/
+ flush_block_only(s, false);
+ if (s.strm.avail_out === 0) {
+ return BS_NEED_MORE;
+ }
+ /***/
+ }
+ return BS_BLOCK_DONE;
+}
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+var Config = function (good_length, max_lazy, nice_length, max_chain, func) {
+ this.good_length = good_length;
+ this.max_lazy = max_lazy;
+ this.nice_length = nice_length;
+ this.max_chain = max_chain;
+ this.func = func;
+};
+
+var configuration_table;
+
+configuration_table = [
+ /* good lazy nice chain */
+ new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */
+ new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */
+ new Config(4, 5, 16, 8, deflate_fast), /* 2 */
+ new Config(4, 6, 32, 32, deflate_fast), /* 3 */
+
+ new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */
+ new Config(8, 16, 32, 32, deflate_slow), /* 5 */
+ new Config(8, 16, 128, 128, deflate_slow), /* 6 */
+ new Config(8, 32, 128, 256, deflate_slow), /* 7 */
+ new Config(32, 128, 258, 1024, deflate_slow), /* 8 */
+ new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */
+];
+
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+function lm_init(s) {
+ s.window_size = 2 * s.w_size;
+
+ /*** CLEAR_HASH(s); ***/
+ zero(s.head); // Fill with NIL (= 0);
+
+ /* Set the default configuration parameters:
+ */
+ s.max_lazy_match = configuration_table[s.level].max_lazy;
+ s.good_match = configuration_table[s.level].good_length;
+ s.nice_match = configuration_table[s.level].nice_length;
+ s.max_chain_length = configuration_table[s.level].max_chain;
+
+ s.strstart = 0;
+ s.block_start = 0;
+ s.lookahead = 0;
+ s.insert = 0;
+ s.match_length = s.prev_length = MIN_MATCH - 1;
+ s.match_available = 0;
+ s.ins_h = 0;
+}
+
+
+function DeflateState() {
+ this.strm = null; /* pointer back to this zlib stream */
+ this.status = 0; /* as the name implies */
+ this.pending_buf = null; /* output still pending */
+ this.pending_buf_size = 0; /* size of pending_buf */
+ this.pending_out = 0; /* next pending byte to output to the stream */
+ this.pending = 0; /* nb of bytes in the pending buffer */
+ this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */
+ this.gzhead = null; /* gzip header information to write */
+ this.gzindex = 0; /* where in extra, name, or comment */
+ this.method = Z_DEFLATED; /* can only be DEFLATED */
+ this.last_flush = -1; /* value of flush param for previous deflate call */
+
+ this.w_size = 0; /* LZ77 window size (32K by default) */
+ this.w_bits = 0; /* log2(w_size) (8..16) */
+ this.w_mask = 0; /* w_size - 1 */
+
+ this.window = null;
+ /* Sliding window. Input bytes are read into the second half of the window,
+ * and move to the first half later to keep a dictionary of at least wSize
+ * bytes. With this organization, matches are limited to a distance of
+ * wSize-MAX_MATCH bytes, but this ensures that IO is always
+ * performed with a length multiple of the block size.
+ */
+
+ this.window_size = 0;
+ /* Actual size of window: 2*wSize, except when the user input buffer
+ * is directly used as sliding window.
+ */
+
+ this.prev = null;
+ /* Link to older string with same hash index. To limit the size of this
+ * array to 64K, this link is maintained only for the last 32K strings.
+ * An index in this array is thus a window index modulo 32K.
+ */
+
+ this.head = null; /* Heads of the hash chains or NIL. */
+
+ this.ins_h = 0; /* hash index of string to be inserted */
+ this.hash_size = 0; /* number of elements in hash table */
+ this.hash_bits = 0; /* log2(hash_size) */
+ this.hash_mask = 0; /* hash_size-1 */
+
+ this.hash_shift = 0;
+ /* Number of bits by which ins_h must be shifted at each input
+ * step. It must be such that after MIN_MATCH steps, the oldest
+ * byte no longer takes part in the hash key, that is:
+ * hash_shift * MIN_MATCH >= hash_bits
+ */
+
+ this.block_start = 0;
+ /* Window position at the beginning of the current output block. Gets
+ * negative when the window is moved backwards.
+ */
+
+ this.match_length = 0; /* length of best match */
+ this.prev_match = 0; /* previous match */
+ this.match_available = 0; /* set if previous match exists */
+ this.strstart = 0; /* start of string to insert */
+ this.match_start = 0; /* start of matching string */
+ this.lookahead = 0; /* number of valid bytes ahead in window */
+
+ this.prev_length = 0;
+ /* Length of the best match at previous step. Matches not greater than this
+ * are discarded. This is used in the lazy match evaluation.
+ */
+
+ this.max_chain_length = 0;
+ /* To speed up deflation, hash chains are never searched beyond this
+ * length. A higher limit improves compression ratio but degrades the
+ * speed.
+ */
+
+ this.max_lazy_match = 0;
+ /* Attempt to find a better match only when the current match is strictly
+ * smaller than this value. This mechanism is used only for compression
+ * levels >= 4.
+ */
+ // That's alias to max_lazy_match, don't use directly
+ //this.max_insert_length = 0;
+ /* Insert new strings in the hash table only if the match length is not
+ * greater than this length. This saves time but degrades compression.
+ * max_insert_length is used only for compression levels <= 3.
+ */
+
+ this.level = 0; /* compression level (1..9) */
+ this.strategy = 0; /* favor or force Huffman coding*/
+
+ this.good_match = 0;
+ /* Use a faster search when the previous match is longer than this */
+
+ this.nice_match = 0; /* Stop searching when current match exceeds this */
+
+ /* used by trees.c: */
+
+ /* Didn't use ct_data typedef below to suppress compiler warning */
+
+ // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
+ // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+ // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
+
+ // Use flat array of DOUBLE size, with interleaved fata,
+ // because JS does not support effective
+ this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);
+ this.dyn_dtree = new utils.Buf16((2*D_CODES+1) * 2);
+ this.bl_tree = new utils.Buf16((2*BL_CODES+1) * 2);
+ zero(this.dyn_ltree);
+ zero(this.dyn_dtree);
+ zero(this.bl_tree);
+
+ this.l_desc = null; /* desc. for literal tree */
+ this.d_desc = null; /* desc. for distance tree */
+ this.bl_desc = null; /* desc. for bit length tree */
+
+ //ush bl_count[MAX_BITS+1];
+ this.bl_count = new utils.Buf16(MAX_BITS+1);
+ /* number of codes at each bit length for an optimal tree */
+
+ //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
+ this.heap = new utils.Buf16(2*L_CODES+1); /* heap used to build the Huffman trees */
+ zero(this.heap);
+
+ this.heap_len = 0; /* number of elements in the heap */
+ this.heap_max = 0; /* element of largest frequency */
+ /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+ * The same heap array is used to build all trees.
+ */
+
+ this.depth = new utils.Buf16(2*L_CODES+1); //uch depth[2*L_CODES+1];
+ zero(this.depth);
+ /* Depth of each subtree used as tie breaker for trees of equal frequency
+ */
+
+ this.l_buf = 0; /* buffer index for literals or lengths */
+
+ this.lit_bufsize = 0;
+ /* Size of match buffer for literals/lengths. There are 4 reasons for
+ * limiting lit_bufsize to 64K:
+ * - frequencies can be kept in 16 bit counters
+ * - if compression is not successful for the first block, all input
+ * data is still in the window so we can still emit a stored block even
+ * when input comes from standard input. (This can also be done for
+ * all blocks if lit_bufsize is not greater than 32K.)
+ * - if compression is not successful for a file smaller than 64K, we can
+ * even emit a stored file instead of a stored block (saving 5 bytes).
+ * This is applicable only for zip (not gzip or zlib).
+ * - creating new Huffman trees less frequently may not provide fast
+ * adaptation to changes in the input data statistics. (Take for
+ * example a binary file with poorly compressible code followed by
+ * a highly compressible string table.) Smaller buffer sizes give
+ * fast adaptation but have of course the overhead of transmitting
+ * trees more frequently.
+ * - I can't count above 4
+ */
+
+ this.last_lit = 0; /* running index in l_buf */
+
+ this.d_buf = 0;
+ /* Buffer index for distances. To simplify the code, d_buf and l_buf have
+ * the same number of elements. To use different lengths, an extra flag
+ * array would be necessary.
+ */
+
+ this.opt_len = 0; /* bit length of current block with optimal trees */
+ this.static_len = 0; /* bit length of current block with static trees */
+ this.matches = 0; /* number of string matches in current block */
+ this.insert = 0; /* bytes at end of window left to insert */
+
+
+ this.bi_buf = 0;
+ /* Output buffer. bits are inserted starting at the bottom (least
+ * significant bits).
+ */
+ this.bi_valid = 0;
+ /* Number of valid bits in bi_buf. All bits above the last valid bit
+ * are always zero.
+ */
+
+ // Used for window memory init. We safely ignore it for JS. That makes
+ // sense only for pointers and memory check tools.
+ //this.high_water = 0;
+ /* High water mark offset in window for initialized bytes -- bytes above
+ * this are set to zero in order to avoid memory check warnings when
+ * longest match routines access bytes past the input. This is then
+ * updated to the new high water mark.
+ */
+}
+
+
+function deflateResetKeep(strm) {
+ var s;
+
+ if (!strm || !strm.state) {
+ return err(strm, Z_STREAM_ERROR);
+ }
+
+ strm.total_in = strm.total_out = 0;
+ strm.data_type = Z_UNKNOWN;
+
+ s = strm.state;
+ s.pending = 0;
+ s.pending_out = 0;
+
+ if (s.wrap < 0) {
+ s.wrap = -s.wrap;
+ /* was made negative by deflate(..., Z_FINISH); */
+ }
+ s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
+ strm.adler = (s.wrap === 2) ?
+ 0 // crc32(0, Z_NULL, 0)
+ :
+ 1; // adler32(0, Z_NULL, 0)
+ s.last_flush = Z_NO_FLUSH;
+ trees._tr_init(s);
+ return Z_OK;
+}
+
+
+function deflateReset(strm) {
+ var ret = deflateResetKeep(strm);
+ if (ret === Z_OK) {
+ lm_init(strm.state);
+ }
+ return ret;
+}
+
+
+function deflateSetHeader(strm, head) {
+ if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+ if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
+ strm.state.gzhead = head;
+ return Z_OK;
+}
+
+
+function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
+ if (!strm) { // === Z_NULL
+ return Z_STREAM_ERROR;
+ }
+ var wrap = 1;
+
+ if (level === Z_DEFAULT_COMPRESSION) {
+ level = 6;
+ }
+
+ if (windowBits < 0) { /* suppress zlib wrapper */
+ wrap = 0;
+ windowBits = -windowBits;
+ }
+
+ else if (windowBits > 15) {
+ wrap = 2; /* write gzip wrapper instead */
+ windowBits -= 16;
+ }
+
+
+ if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
+ windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+ strategy < 0 || strategy > Z_FIXED) {
+ return err(strm, Z_STREAM_ERROR);
+ }
+
+
+ if (windowBits === 8) {
+ windowBits = 9;
+ }
+ /* until 256-byte window bug fixed */
+
+ var s = new DeflateState();
+
+ strm.state = s;
+ s.strm = strm;
+
+ s.wrap = wrap;
+ s.gzhead = null;
+ s.w_bits = windowBits;
+ s.w_size = 1 << s.w_bits;
+ s.w_mask = s.w_size - 1;
+
+ s.hash_bits = memLevel + 7;
+ s.hash_size = 1 << s.hash_bits;
+ s.hash_mask = s.hash_size - 1;
+ s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
+
+ s.window = new utils.Buf8(s.w_size * 2);
+ s.head = new utils.Buf16(s.hash_size);
+ s.prev = new utils.Buf16(s.w_size);
+
+ // Don't need mem init magic for JS.
+ //s.high_water = 0; /* nothing written to s->window yet */
+
+ s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+ s.pending_buf_size = s.lit_bufsize * 4;
+ s.pending_buf = new utils.Buf8(s.pending_buf_size);
+
+ s.d_buf = s.lit_bufsize >> 1;
+ s.l_buf = (1 + 2) * s.lit_bufsize;
+
+ s.level = level;
+ s.strategy = strategy;
+ s.method = method;
+
+ return deflateReset(strm);
+}
+
+function deflateInit(strm, level) {
+ return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+}
+
+
+function deflate(strm, flush) {
+ var old_flush, s;
+ var beg, val; // for gzip header write only
+
+ if (!strm || !strm.state ||
+ flush > Z_BLOCK || flush < 0) {
+ return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
+ }
+
+ s = strm.state;
+
+ if (!strm.output ||
+ (!strm.input && strm.avail_in !== 0) ||
+ (s.status === FINISH_STATE && flush !== Z_FINISH)) {
+ return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
+ }
+
+ s.strm = strm; /* just in case */
+ old_flush = s.last_flush;
+ s.last_flush = flush;
+
+ /* Write the header */
+ if (s.status === INIT_STATE) {
+
+ if (s.wrap === 2) { // GZIP header
+ strm.adler = 0; //crc32(0L, Z_NULL, 0);
+ put_byte(s, 31);
+ put_byte(s, 139);
+ put_byte(s, 8);
+ if (!s.gzhead) { // s->gzhead == Z_NULL
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, 0);
+ put_byte(s, s.level === 9 ? 2 :
+ (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+ 4 : 0));
+ put_byte(s, OS_CODE);
+ s.status = BUSY_STATE;
+ }
+ else {
+ put_byte(s, (s.gzhead.text ? 1 : 0) +
+ (s.gzhead.hcrc ? 2 : 0) +
+ (!s.gzhead.extra ? 0 : 4) +
+ (!s.gzhead.name ? 0 : 8) +
+ (!s.gzhead.comment ? 0 : 16)
+ );
+ put_byte(s, s.gzhead.time & 0xff);
+ put_byte(s, (s.gzhead.time >> 8) & 0xff);
+ put_byte(s, (s.gzhead.time >> 16) & 0xff);
+ put_byte(s, (s.gzhead.time >> 24) & 0xff);
+ put_byte(s, s.level === 9 ? 2 :
+ (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+ 4 : 0));
+ put_byte(s, s.gzhead.os & 0xff);
+ if (s.gzhead.extra && s.gzhead.extra.length) {
+ put_byte(s, s.gzhead.extra.length & 0xff);
+ put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
+ }
+ if (s.gzhead.hcrc) {
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
+ }
+ s.gzindex = 0;
+ s.status = EXTRA_STATE;
+ }
+ }
+ else // DEFLATE header
+ {
+ var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
+ var level_flags = -1;
+
+ if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
+ level_flags = 0;
+ } else if (s.level < 6) {
+ level_flags = 1;
+ } else if (s.level === 6) {
+ level_flags = 2;
+ } else {
+ level_flags = 3;
+ }
+ header |= (level_flags << 6);
+ if (s.strstart !== 0) { header |= PRESET_DICT; }
+ header += 31 - (header % 31);
+
+ s.status = BUSY_STATE;
+ putShortMSB(s, header);
+
+ /* Save the adler32 of the preset dictionary: */
+ if (s.strstart !== 0) {
+ putShortMSB(s, strm.adler >>> 16);
+ putShortMSB(s, strm.adler & 0xffff);
+ }
+ strm.adler = 1; // adler32(0L, Z_NULL, 0);
+ }
+ }
+
+//#ifdef GZIP
+ if (s.status === EXTRA_STATE) {
+ if (s.gzhead.extra/* != Z_NULL*/) {
+ beg = s.pending; /* start of bytes to update crc */
+
+ while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
+ if (s.pending === s.pending_buf_size) {
+ if (s.gzhead.hcrc && s.pending > beg) {
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+ }
+ flush_pending(strm);
+ beg = s.pending;
+ if (s.pending === s.pending_buf_size) {
+ break;
+ }
+ }
+ put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
+ s.gzindex++;
+ }
+ if (s.gzhead.hcrc && s.pending > beg) {
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+ }
+ if (s.gzindex === s.gzhead.extra.length) {
+ s.gzindex = 0;
+ s.status = NAME_STATE;
+ }
+ }
+ else {
+ s.status = NAME_STATE;
+ }
+ }
+ if (s.status === NAME_STATE) {
+ if (s.gzhead.name/* != Z_NULL*/) {
+ beg = s.pending; /* start of bytes to update crc */
+ //int val;
+
+ do {
+ if (s.pending === s.pending_buf_size) {
+ if (s.gzhead.hcrc && s.pending > beg) {
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+ }
+ flush_pending(strm);
+ beg = s.pending;
+ if (s.pending === s.pending_buf_size) {
+ val = 1;
+ break;
+ }
+ }
+ // JS specific: little magic to add zero terminator to end of string
+ if (s.gzindex < s.gzhead.name.length) {
+ val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
+ } else {
+ val = 0;
+ }
+ put_byte(s, val);
+ } while (val !== 0);
+
+ if (s.gzhead.hcrc && s.pending > beg){
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+ }
+ if (val === 0) {
+ s.gzindex = 0;
+ s.status = COMMENT_STATE;
+ }
+ }
+ else {
+ s.status = COMMENT_STATE;
+ }
+ }
+ if (s.status === COMMENT_STATE) {
+ if (s.gzhead.comment/* != Z_NULL*/) {
+ beg = s.pending; /* start of bytes to update crc */
+ //int val;
+
+ do {
+ if (s.pending === s.pending_buf_size) {
+ if (s.gzhead.hcrc && s.pending > beg) {
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+ }
+ flush_pending(strm);
+ beg = s.pending;
+ if (s.pending === s.pending_buf_size) {
+ val = 1;
+ break;
+ }
+ }
+ // JS specific: little magic to add zero terminator to end of string
+ if (s.gzindex < s.gzhead.comment.length) {
+ val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
+ } else {
+ val = 0;
+ }
+ put_byte(s, val);
+ } while (val !== 0);
+
+ if (s.gzhead.hcrc && s.pending > beg) {
+ strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+ }
+ if (val === 0) {
+ s.status = HCRC_STATE;
+ }
+ }
+ else {
+ s.status = HCRC_STATE;
+ }
+ }
+ if (s.status === HCRC_STATE) {
+ if (s.gzhead.hcrc) {
+ if (s.pending + 2 > s.pending_buf_size) {
+ flush_pending(strm);
+ }
+ if (s.pending + 2 <= s.pending_buf_size) {
+ put_byte(s, strm.adler & 0xff);
+ put_byte(s, (strm.adler >> 8) & 0xff);
+ strm.adler = 0; //crc32(0L, Z_NULL, 0);
+ s.status = BUSY_STATE;
+ }
+ }
+ else {
+ s.status = BUSY_STATE;
+ }
+ }
+//#endif
+
+ /* Flush as much pending output as possible */
+ if (s.pending !== 0) {
+ flush_pending(strm);
+ if (strm.avail_out === 0) {
+ /* Since avail_out is 0, deflate will be called again with
+ * more output space, but possibly with both pending and
+ * avail_in equal to zero. There won't be anything to do,
+ * but this is not an error situation so make sure we
+ * return OK instead of BUF_ERROR at next call of deflate:
+ */
+ s.last_flush = -1;
+ return Z_OK;
+ }
+
+ /* Make sure there is something to do and avoid duplicate consecutive
+ * flushes. For repeated and useless calls with Z_FINISH, we keep
+ * returning Z_STREAM_END instead of Z_BUF_ERROR.
+ */
+ } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
+ flush !== Z_FINISH) {
+ return err(strm, Z_BUF_ERROR);
+ }
+
+ /* User must not provide more input after the first FINISH: */
+ if (s.status === FINISH_STATE && strm.avail_in !== 0) {
+ return err(strm, Z_BUF_ERROR);
+ }
+
+ /* Start a new block or continue the current one.
+ */
+ if (strm.avail_in !== 0 || s.lookahead !== 0 ||
+ (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
+ var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
+ (s.strategy === Z_RLE ? deflate_rle(s, flush) :
+ configuration_table[s.level].func(s, flush));
+
+ if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
+ s.status = FINISH_STATE;
+ }
+ if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
+ if (strm.avail_out === 0) {
+ s.last_flush = -1;
+ /* avoid BUF_ERROR next call, see above */
+ }
+ return Z_OK;
+ /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+ * of deflate should use the same flush parameter to make sure
+ * that the flush is complete. So we don't have to output an
+ * empty block here, this will be done at next call. This also
+ * ensures that for a very small output buffer, we emit at most
+ * one empty block.
+ */
+ }
+ if (bstate === BS_BLOCK_DONE) {
+ if (flush === Z_PARTIAL_FLUSH) {
+ trees._tr_align(s);
+ }
+ else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+ trees._tr_stored_block(s, 0, 0, false);
+ /* For a full flush, this empty block will be recognized
+ * as a special marker by inflate_sync().
+ */
+ if (flush === Z_FULL_FLUSH) {
+ /*** CLEAR_HASH(s); ***/ /* forget history */
+ zero(s.head); // Fill with NIL (= 0);
+
+ if (s.lookahead === 0) {
+ s.strstart = 0;
+ s.block_start = 0;
+ s.insert = 0;
+ }
+ }
+ }
+ flush_pending(strm);
+ if (strm.avail_out === 0) {
+ s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+ return Z_OK;
+ }
+ }
+ }
+ //Assert(strm->avail_out > 0, "bug2");
+ //if (strm.avail_out <= 0) { throw new Error("bug2");}
+
+ if (flush !== Z_FINISH) { return Z_OK; }
+ if (s.wrap <= 0) { return Z_STREAM_END; }
+
+ /* Write the trailer */
+ if (s.wrap === 2) {
+ put_byte(s, strm.adler & 0xff);
+ put_byte(s, (strm.adler >> 8) & 0xff);
+ put_byte(s, (strm.adler >> 16) & 0xff);
+ put_byte(s, (strm.adler >> 24) & 0xff);
+ put_byte(s, strm.total_in & 0xff);
+ put_byte(s, (strm.total_in >> 8) & 0xff);
+ put_byte(s, (strm.total_in >> 16) & 0xff);
+ put_byte(s, (strm.total_in >> 24) & 0xff);
+ }
+ else
+ {
+ putShortMSB(s, strm.adler >>> 16);
+ putShortMSB(s, strm.adler & 0xffff);
+ }
+
+ flush_pending(strm);
+ /* If avail_out is zero, the application will call deflate again
+ * to flush the rest.
+ */
+ if (s.wrap > 0) { s.wrap = -s.wrap; }
+ /* write the trailer only once! */
+ return s.pending !== 0 ? Z_OK : Z_STREAM_END;
+}
+
+function deflateEnd(strm) {
+ var status;
+
+ if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+ return Z_STREAM_ERROR;
+ }
+
+ status = strm.state.status;
+ if (status !== INIT_STATE &&
+ status !== EXTRA_STATE &&
+ status !== NAME_STATE &&
+ status !== COMMENT_STATE &&
+ status !== HCRC_STATE &&
+ status !== BUSY_STATE &&
+ status !== FINISH_STATE
+ ) {
+ return err(strm, Z_STREAM_ERROR);
+ }
+
+ strm.state = null;
+
+ return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
+}
+
+/* =========================================================================
+ * Copy the source state to the destination state
+ */
+//function deflateCopy(dest, source) {
+//
+//}
+
+exports.deflateInit = deflateInit;
+exports.deflateInit2 = deflateInit2;
+exports.deflateReset = deflateReset;
+exports.deflateResetKeep = deflateResetKeep;
+exports.deflateSetHeader = deflateSetHeader;
+exports.deflate = deflate;
+exports.deflateEnd = deflateEnd;
+exports.deflateInfo = 'pako deflate (from Nodeca project)';
+
+/* Not implemented
+exports.deflateBound = deflateBound;
+exports.deflateCopy = deflateCopy;
+exports.deflateSetDictionary = deflateSetDictionary;
+exports.deflateParams = deflateParams;
+exports.deflatePending = deflatePending;
+exports.deflatePrime = deflatePrime;
+exports.deflateTune = deflateTune;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(_dereq_,module,exports){
+'use strict';
+
+
+function GZheader() {
+ /* true if compressed data believed to be text */
+ this.text = 0;
+ /* modification time */
+ this.time = 0;
+ /* extra flags (not used when writing a gzip file) */
+ this.xflags = 0;
+ /* operating system */
+ this.os = 0;
+ /* pointer to extra field or Z_NULL if none */
+ this.extra = null;
+ /* extra field length (valid if extra != Z_NULL) */
+ this.extra_len = 0; // Actually, we don't need it in JS,
+ // but leave for few code modifications
+
+ //
+ // Setup limits is not necessary because in js we should not preallocate memory
+ // for inflate use constant limit in 65536 bytes
+ //
+
+ /* space at extra (only when reading header) */
+ // this.extra_max = 0;
+ /* pointer to zero-terminated file name or Z_NULL */
+ this.name = '';
+ /* space at name (only when reading header) */
+ // this.name_max = 0;
+ /* pointer to zero-terminated comment or Z_NULL */
+ this.comment = '';
+ /* space at comment (only when reading header) */
+ // this.comm_max = 0;
+ /* true if there was or will be a header crc */
+ this.hcrc = 0;
+ /* true when done reading gzip header (not used when writing a gzip file) */
+ this.done = false;
+}
+
+module.exports = GZheader;
+},{}],34:[function(_dereq_,module,exports){
+'use strict';
+
+// See state defs from inflate.js
+var BAD = 30; /* got a data error -- remain here until reset */
+var TYPE = 12; /* i: waiting for type bits, including last-flag bit */
+
+/*
+ Decode literal, length, and distance codes and write out the resulting
+ literal and match bytes until either not enough input or output is
+ available, an end-of-block is encountered, or a data error is encountered.
+ When large enough input and output buffers are supplied to inflate(), for
+ example, a 16K input buffer and a 64K output buffer, more than 95% of the
+ inflate execution time is spent in this routine.
+
+ Entry assumptions:
+
+ state.mode === LEN
+ strm.avail_in >= 6
+ strm.avail_out >= 258
+ start >= strm.avail_out
+ state.bits < 8
+
+ On return, state.mode is one of:
+
+ LEN -- ran out of enough output space or enough available input
+ TYPE -- reached end of block code, inflate() to interpret next block
+ BAD -- error in block data
+
+ Notes:
+
+ - The maximum input bits used by a length/distance pair is 15 bits for the
+ length code, 5 bits for the length extra, 15 bits for the distance code,
+ and 13 bits for the distance extra. This totals 48 bits, or six bytes.
+ Therefore if strm.avail_in >= 6, then there is enough input to avoid
+ checking for available input while decoding.
+
+ - The maximum bytes that a single length/distance pair can output is 258
+ bytes, which is the maximum length that can be coded. inflate_fast()
+ requires strm.avail_out >= 258 for each loop to avoid checking for
+ output space.
+ */
+module.exports = function inflate_fast(strm, start) {
+ var state;
+ var _in; /* local strm.input */
+ var last; /* have enough input while in < last */
+ var _out; /* local strm.output */
+ var beg; /* inflate()'s initial strm.output */
+ var end; /* while out < end, enough space available */
+//#ifdef INFLATE_STRICT
+ var dmax; /* maximum distance from zlib header */
+//#endif
+ var wsize; /* window size or zero if not using window */
+ var whave; /* valid bytes in the window */
+ var wnext; /* window write index */
+ var window; /* allocated sliding window, if wsize != 0 */
+ var hold; /* local strm.hold */
+ var bits; /* local strm.bits */
+ var lcode; /* local strm.lencode */
+ var dcode; /* local strm.distcode */
+ var lmask; /* mask for first level of length codes */
+ var dmask; /* mask for first level of distance codes */
+ var here; /* retrieved table entry */
+ var op; /* code bits, operation, extra bits, or */
+ /* window position, window bytes to copy */
+ var len; /* match length, unused bytes */
+ var dist; /* match distance */
+ var from; /* where to copy match from */
+ var from_source;
+
+
+ var input, output; // JS specific, because we have no pointers
+
+ /* copy state to local variables */
+ state = strm.state;
+ //here = state.here;
+ _in = strm.next_in;
+ input = strm.input;
+ last = _in + (strm.avail_in - 5);
+ _out = strm.next_out;
+ output = strm.output;
+ beg = _out - (start - strm.avail_out);
+ end = _out + (strm.avail_out - 257);
+//#ifdef INFLATE_STRICT
+ dmax = state.dmax;
+//#endif
+ wsize = state.wsize;
+ whave = state.whave;
+ wnext = state.wnext;
+ window = state.window;
+ hold = state.hold;
+ bits = state.bits;
+ lcode = state.lencode;
+ dcode = state.distcode;
+ lmask = (1 << state.lenbits) - 1;
+ dmask = (1 << state.distbits) - 1;
+
+
+ /* decode literals and length/distances until end-of-block or not enough
+ input data or output space */
+
+ top:
+ do {
+ if (bits < 15) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+
+ here = lcode[hold & lmask];
+
+ dolen:
+ for (;;) { // Goto emulation
+ op = here >>> 24/*here.bits*/;
+ hold >>>= op;
+ bits -= op;
+ op = (here >>> 16) & 0xff/*here.op*/;
+ if (op === 0) { /* literal */
+ //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+ // "inflate: literal '%c'\n" :
+ // "inflate: literal 0x%02x\n", here.val));
+ output[_out++] = here & 0xffff/*here.val*/;
+ }
+ else if (op & 16) { /* length base */
+ len = here & 0xffff/*here.val*/;
+ op &= 15; /* number of extra bits */
+ if (op) {
+ if (bits < op) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+ len += hold & ((1 << op) - 1);
+ hold >>>= op;
+ bits -= op;
+ }
+ //Tracevv((stderr, "inflate: length %u\n", len));
+ if (bits < 15) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+ here = dcode[hold & dmask];
+
+ dodist:
+ for (;;) { // goto emulation
+ op = here >>> 24/*here.bits*/;
+ hold >>>= op;
+ bits -= op;
+ op = (here >>> 16) & 0xff/*here.op*/;
+
+ if (op & 16) { /* distance base */
+ dist = here & 0xffff/*here.val*/;
+ op &= 15; /* number of extra bits */
+ if (bits < op) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ if (bits < op) {
+ hold += input[_in++] << bits;
+ bits += 8;
+ }
+ }
+ dist += hold & ((1 << op) - 1);
+//#ifdef INFLATE_STRICT
+ if (dist > dmax) {
+ strm.msg = 'invalid distance too far back';
+ state.mode = BAD;
+ break top;
+ }
+//#endif
+ hold >>>= op;
+ bits -= op;
+ //Tracevv((stderr, "inflate: distance %u\n", dist));
+ op = _out - beg; /* max distance in output */
+ if (dist > op) { /* see if copy from window */
+ op = dist - op; /* distance back in window */
+ if (op > whave) {
+ if (state.sane) {
+ strm.msg = 'invalid distance too far back';
+ state.mode = BAD;
+ break top;
+ }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+// if (len <= op - whave) {
+// do {
+// output[_out++] = 0;
+// } while (--len);
+// continue top;
+// }
+// len -= op - whave;
+// do {
+// output[_out++] = 0;
+// } while (--op > whave);
+// if (op === 0) {
+// from = _out - dist;
+// do {
+// output[_out++] = output[from++];
+// } while (--len);
+// continue top;
+// }
+//#endif
+ }
+ from = 0; // window index
+ from_source = window;
+ if (wnext === 0) { /* very common case */
+ from += wsize - op;
+ if (op < len) { /* some from window */
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = _out - dist; /* rest from output */
+ from_source = output;
+ }
+ }
+ else if (wnext < op) { /* wrap around window */
+ from += wsize + wnext - op;
+ op -= wnext;
+ if (op < len) { /* some from end of window */
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = 0;
+ if (wnext < len) { /* some from start of window */
+ op = wnext;
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = _out - dist; /* rest from output */
+ from_source = output;
+ }
+ }
+ }
+ else { /* contiguous in window */
+ from += wnext - op;
+ if (op < len) { /* some from window */
+ len -= op;
+ do {
+ output[_out++] = window[from++];
+ } while (--op);
+ from = _out - dist; /* rest from output */
+ from_source = output;
+ }
+ }
+ while (len > 2) {
+ output[_out++] = from_source[from++];
+ output[_out++] = from_source[from++];
+ output[_out++] = from_source[from++];
+ len -= 3;
+ }
+ if (len) {
+ output[_out++] = from_source[from++];
+ if (len > 1) {
+ output[_out++] = from_source[from++];
+ }
+ }
+ }
+ else {
+ from = _out - dist; /* copy direct from output */
+ do { /* minimum length is three */
+ output[_out++] = output[from++];
+ output[_out++] = output[from++];
+ output[_out++] = output[from++];
+ len -= 3;
+ } while (len > 2);
+ if (len) {
+ output[_out++] = output[from++];
+ if (len > 1) {
+ output[_out++] = output[from++];
+ }
+ }
+ }
+ }
+ else if ((op & 64) === 0) { /* 2nd level distance code */
+ here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+ continue dodist;
+ }
+ else {
+ strm.msg = 'invalid distance code';
+ state.mode = BAD;
+ break top;
+ }
+
+ break; // need to emulate goto via "continue"
+ }
+ }
+ else if ((op & 64) === 0) { /* 2nd level length code */
+ here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+ continue dolen;
+ }
+ else if (op & 32) { /* end-of-block */
+ //Tracevv((stderr, "inflate: end of block\n"));
+ state.mode = TYPE;
+ break top;
+ }
+ else {
+ strm.msg = 'invalid literal/length code';
+ state.mode = BAD;
+ break top;
+ }
+
+ break; // need to emulate goto via "continue"
+ }
+ } while (_in < last && _out < end);
+
+ /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+ len = bits >> 3;
+ _in -= len;
+ bits -= len << 3;
+ hold &= (1 << bits) - 1;
+
+ /* update state and return */
+ strm.next_in = _in;
+ strm.next_out = _out;
+ strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
+ strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
+ state.hold = hold;
+ state.bits = bits;
+ return;
+};
+
+},{}],35:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+var adler32 = _dereq_('./adler32');
+var crc32 = _dereq_('./crc32');
+var inflate_fast = _dereq_('./inffast');
+var inflate_table = _dereq_('./inftrees');
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+//var Z_NO_FLUSH = 0;
+//var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH = 2;
+//var Z_FULL_FLUSH = 3;
+var Z_FINISH = 4;
+var Z_BLOCK = 5;
+var Z_TREES = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK = 0;
+var Z_STREAM_END = 1;
+var Z_NEED_DICT = 2;
+//var Z_ERRNO = -1;
+var Z_STREAM_ERROR = -2;
+var Z_DATA_ERROR = -3;
+var Z_MEM_ERROR = -4;
+var Z_BUF_ERROR = -5;
+//var Z_VERSION_ERROR = -6;
+
+/* The deflate compression method */
+var Z_DEFLATED = 8;
+
+
+/* STATES ====================================================================*/
+/* ===========================================================================*/
+
+
+var HEAD = 1; /* i: waiting for magic header */
+var FLAGS = 2; /* i: waiting for method and flags (gzip) */
+var TIME = 3; /* i: waiting for modification time (gzip) */
+var OS = 4; /* i: waiting for extra flags and operating system (gzip) */
+var EXLEN = 5; /* i: waiting for extra length (gzip) */
+var EXTRA = 6; /* i: waiting for extra bytes (gzip) */
+var NAME = 7; /* i: waiting for end of file name (gzip) */
+var COMMENT = 8; /* i: waiting for end of comment (gzip) */
+var HCRC = 9; /* i: waiting for header crc (gzip) */
+var DICTID = 10; /* i: waiting for dictionary check value */
+var DICT = 11; /* waiting for inflateSetDictionary() call */
+var TYPE = 12; /* i: waiting for type bits, including last-flag bit */
+var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */
+var STORED = 14; /* i: waiting for stored size (length and complement) */
+var COPY_ = 15; /* i/o: same as COPY below, but only first time in */
+var COPY = 16; /* i/o: waiting for input or output to copy stored block */
+var TABLE = 17; /* i: waiting for dynamic block table lengths */
+var LENLENS = 18; /* i: waiting for code length code lengths */
+var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */
+var LEN_ = 20; /* i: same as LEN below, but only first time in */
+var LEN = 21; /* i: waiting for length/lit/eob code */
+var LENEXT = 22; /* i: waiting for length extra bits */
+var DIST = 23; /* i: waiting for distance code */
+var DISTEXT = 24; /* i: waiting for distance extra bits */
+var MATCH = 25; /* o: waiting for output space to copy string */
+var LIT = 26; /* o: waiting for output space to write literal */
+var CHECK = 27; /* i: waiting for 32-bit check value */
+var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */
+var DONE = 29; /* finished check, done -- remain here until reset */
+var BAD = 30; /* got a data error -- remain here until reset */
+var MEM = 31; /* got an inflate() memory error -- remain here until reset */
+var SYNC = 32; /* looking for synchronization bytes to restart inflate() */
+
+/* ===========================================================================*/
+
+
+
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_WBITS = MAX_WBITS;
+
+
+function ZSWAP32(q) {
+ return (((q >>> 24) & 0xff) +
+ ((q >>> 8) & 0xff00) +
+ ((q & 0xff00) << 8) +
+ ((q & 0xff) << 24));
+}
+
+
+function InflateState() {
+ this.mode = 0; /* current inflate mode */
+ this.last = false; /* true if processing last block */
+ this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */
+ this.havedict = false; /* true if dictionary provided */
+ this.flags = 0; /* gzip header method and flags (0 if zlib) */
+ this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */
+ this.check = 0; /* protected copy of check value */
+ this.total = 0; /* protected copy of output count */
+ // TODO: may be {}
+ this.head = null; /* where to save gzip header information */
+
+ /* sliding window */
+ this.wbits = 0; /* log base 2 of requested window size */
+ this.wsize = 0; /* window size or zero if not using window */
+ this.whave = 0; /* valid bytes in the window */
+ this.wnext = 0; /* window write index */
+ this.window = null; /* allocated sliding window, if needed */
+
+ /* bit accumulator */
+ this.hold = 0; /* input bit accumulator */
+ this.bits = 0; /* number of bits in "in" */
+
+ /* for string and stored block copying */
+ this.length = 0; /* literal or length of data to copy */
+ this.offset = 0; /* distance back to copy string from */
+
+ /* for table and code decoding */
+ this.extra = 0; /* extra bits needed */
+
+ /* fixed and dynamic code tables */
+ this.lencode = null; /* starting table for length/literal codes */
+ this.distcode = null; /* starting table for distance codes */
+ this.lenbits = 0; /* index bits for lencode */
+ this.distbits = 0; /* index bits for distcode */
+
+ /* dynamic table building */
+ this.ncode = 0; /* number of code length code lengths */
+ this.nlen = 0; /* number of length code lengths */
+ this.ndist = 0; /* number of distance code lengths */
+ this.have = 0; /* number of code lengths in lens[] */
+ this.next = null; /* next available space in codes[] */
+
+ this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
+ this.work = new utils.Buf16(288); /* work area for code table building */
+
+ /*
+ because we don't have pointers in js, we use lencode and distcode directly
+ as buffers so we don't need codes
+ */
+ //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */
+ this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */
+ this.distdyn = null; /* dynamic table for distance codes (JS specific) */
+ this.sane = 0; /* if false, allow invalid distance too far */
+ this.back = 0; /* bits back of last unprocessed length/lit */
+ this.was = 0; /* initial length of match */
+}
+
+function inflateResetKeep(strm) {
+ var state;
+
+ if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+ state = strm.state;
+ strm.total_in = strm.total_out = state.total = 0;
+ strm.msg = ''; /*Z_NULL*/
+ if (state.wrap) { /* to support ill-conceived Java test suite */
+ strm.adler = state.wrap & 1;
+ }
+ state.mode = HEAD;
+ state.last = 0;
+ state.havedict = 0;
+ state.dmax = 32768;
+ state.head = null/*Z_NULL*/;
+ state.hold = 0;
+ state.bits = 0;
+ //state.lencode = state.distcode = state.next = state.codes;
+ state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+ state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+
+ state.sane = 1;
+ state.back = -1;
+ //Tracev((stderr, "inflate: reset\n"));
+ return Z_OK;
+}
+
+function inflateReset(strm) {
+ var state;
+
+ if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+ state = strm.state;
+ state.wsize = 0;
+ state.whave = 0;
+ state.wnext = 0;
+ return inflateResetKeep(strm);
+
+}
+
+function inflateReset2(strm, windowBits) {
+ var wrap;
+ var state;
+
+ /* get the state */
+ if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+ state = strm.state;
+
+ /* extract wrap request from windowBits parameter */
+ if (windowBits < 0) {
+ wrap = 0;
+ windowBits = -windowBits;
+ }
+ else {
+ wrap = (windowBits >> 4) + 1;
+ if (windowBits < 48) {
+ windowBits &= 15;
+ }
+ }
+
+ /* set number of window bits, free window if different */
+ if (windowBits && (windowBits < 8 || windowBits > 15)) {
+ return Z_STREAM_ERROR;
+ }
+ if (state.window !== null && state.wbits !== windowBits) {
+ state.window = null;
+ }
+
+ /* update state and reset the rest of it */
+ state.wrap = wrap;
+ state.wbits = windowBits;
+ return inflateReset(strm);
+}
+
+function inflateInit2(strm, windowBits) {
+ var ret;
+ var state;
+
+ if (!strm) { return Z_STREAM_ERROR; }
+ //strm.msg = Z_NULL; /* in case we return an error */
+
+ state = new InflateState();
+
+ //if (state === Z_NULL) return Z_MEM_ERROR;
+ //Tracev((stderr, "inflate: allocated\n"));
+ strm.state = state;
+ state.window = null/*Z_NULL*/;
+ ret = inflateReset2(strm, windowBits);
+ if (ret !== Z_OK) {
+ strm.state = null/*Z_NULL*/;
+ }
+ return ret;
+}
+
+function inflateInit(strm) {
+ return inflateInit2(strm, DEF_WBITS);
+}
+
+
+/*
+ Return state with length and distance decoding tables and index sizes set to
+ fixed code decoding. Normally this returns fixed tables from inffixed.h.
+ If BUILDFIXED is defined, then instead this routine builds the tables the
+ first time it's called, and returns those tables the first time and
+ thereafter. This reduces the size of the code by about 2K bytes, in
+ exchange for a little execution time. However, BUILDFIXED should not be
+ used for threaded applications, since the rewriting of the tables and virgin
+ may not be thread-safe.
+ */
+var virgin = true;
+
+var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+function fixedtables(state) {
+ /* build fixed huffman tables if first call (may not be thread safe) */
+ if (virgin) {
+ var sym;
+
+ lenfix = new utils.Buf32(512);
+ distfix = new utils.Buf32(32);
+
+ /* literal/length table */
+ sym = 0;
+ while (sym < 144) { state.lens[sym++] = 8; }
+ while (sym < 256) { state.lens[sym++] = 9; }
+ while (sym < 280) { state.lens[sym++] = 7; }
+ while (sym < 288) { state.lens[sym++] = 8; }
+
+ inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, {bits: 9});
+
+ /* distance table */
+ sym = 0;
+ while (sym < 32) { state.lens[sym++] = 5; }
+
+ inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, {bits: 5});
+
+ /* do this just once */
+ virgin = false;
+ }
+
+ state.lencode = lenfix;
+ state.lenbits = 9;
+ state.distcode = distfix;
+ state.distbits = 5;
+}
+
+
+/*
+ Update the window with the last wsize (normally 32K) bytes written before
+ returning. If window does not exist yet, create it. This is only called
+ when a window is already in use, or when output has been written during this
+ inflate call, but the end of the deflate stream has not been reached yet.
+ It is also called to create a window for dictionary data when a dictionary
+ is loaded.
+
+ Providing output buffers larger than 32K to inflate() should provide a speed
+ advantage, since only the last 32K of output is copied to the sliding window
+ upon return from inflate(), and since all distances after the first 32K of
+ output will fall in the output data, making match copies simpler and faster.
+ The advantage may be dependent on the size of the processor's data caches.
+ */
+function updatewindow(strm, src, end, copy) {
+ var dist;
+ var state = strm.state;
+
+ /* if it hasn't been done already, allocate space for the window */
+ if (state.window === null) {
+ state.wsize = 1 << state.wbits;
+ state.wnext = 0;
+ state.whave = 0;
+
+ state.window = new utils.Buf8(state.wsize);
+ }
+
+ /* copy state->wsize or less output bytes into the circular window */
+ if (copy >= state.wsize) {
+ utils.arraySet(state.window,src, end - state.wsize, state.wsize, 0);
+ state.wnext = 0;
+ state.whave = state.wsize;
+ }
+ else {
+ dist = state.wsize - state.wnext;
+ if (dist > copy) {
+ dist = copy;
+ }
+ //zmemcpy(state->window + state->wnext, end - copy, dist);
+ utils.arraySet(state.window,src, end - copy, dist, state.wnext);
+ copy -= dist;
+ if (copy) {
+ //zmemcpy(state->window, end - copy, copy);
+ utils.arraySet(state.window,src, end - copy, copy, 0);
+ state.wnext = copy;
+ state.whave = state.wsize;
+ }
+ else {
+ state.wnext += dist;
+ if (state.wnext === state.wsize) { state.wnext = 0; }
+ if (state.whave < state.wsize) { state.whave += dist; }
+ }
+ }
+ return 0;
+}
+
+function inflate(strm, flush) {
+ var state;
+ var input, output; // input/output buffers
+ var next; /* next input INDEX */
+ var put; /* next output INDEX */
+ var have, left; /* available input and output */
+ var hold; /* bit buffer */
+ var bits; /* bits in bit buffer */
+ var _in, _out; /* save starting available input and output */
+ var copy; /* number of stored or match bytes to copy */
+ var from; /* where to copy match bytes from */
+ var from_source;
+ var here = 0; /* current decoding table entry */
+ var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+ //var last; /* parent table entry */
+ var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+ var len; /* length to copy for repeats, bits to drop */
+ var ret; /* return code */
+ var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */
+ var opts;
+
+ var n; // temporary var for NEED_BITS
+
+ var order = /* permutation of code lengths */
+ [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
+
+
+ if (!strm || !strm.state || !strm.output ||
+ (!strm.input && strm.avail_in !== 0)) {
+ return Z_STREAM_ERROR;
+ }
+
+ state = strm.state;
+ if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */
+
+
+ //--- LOAD() ---
+ put = strm.next_out;
+ output = strm.output;
+ left = strm.avail_out;
+ next = strm.next_in;
+ input = strm.input;
+ have = strm.avail_in;
+ hold = state.hold;
+ bits = state.bits;
+ //---
+
+ _in = have;
+ _out = left;
+ ret = Z_OK;
+
+ inf_leave: // goto emulation
+ for (;;) {
+ switch (state.mode) {
+ case HEAD:
+ if (state.wrap === 0) {
+ state.mode = TYPEDO;
+ break;
+ }
+ //=== NEEDBITS(16);
+ while (bits < 16) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */
+ state.check = 0/*crc32(0L, Z_NULL, 0)*/;
+ //=== CRC2(state.check, hold);
+ hbuf[0] = hold & 0xff;
+ hbuf[1] = (hold >>> 8) & 0xff;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ //===//
+
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ state.mode = FLAGS;
+ break;
+ }
+ state.flags = 0; /* expect zlib header */
+ if (state.head) {
+ state.head.done = false;
+ }
+ if (!(state.wrap & 1) || /* check if zlib header allowed */
+ (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
+ strm.msg = 'incorrect header check';
+ state.mode = BAD;
+ break;
+ }
+ if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
+ strm.msg = 'unknown compression method';
+ state.mode = BAD;
+ break;
+ }
+ //--- DROPBITS(4) ---//
+ hold >>>= 4;
+ bits -= 4;
+ //---//
+ len = (hold & 0x0f)/*BITS(4)*/ + 8;
+ if (state.wbits === 0) {
+ state.wbits = len;
+ }
+ else if (len > state.wbits) {
+ strm.msg = 'invalid window size';
+ state.mode = BAD;
+ break;
+ }
+ state.dmax = 1 << len;
+ //Tracev((stderr, "inflate: zlib header ok\n"));
+ strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+ state.mode = hold & 0x200 ? DICTID : TYPE;
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ break;
+ case FLAGS:
+ //=== NEEDBITS(16); */
+ while (bits < 16) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ state.flags = hold;
+ if ((state.flags & 0xff) !== Z_DEFLATED) {
+ strm.msg = 'unknown compression method';
+ state.mode = BAD;
+ break;
+ }
+ if (state.flags & 0xe000) {
+ strm.msg = 'unknown header flags set';
+ state.mode = BAD;
+ break;
+ }
+ if (state.head) {
+ state.head.text = ((hold >> 8) & 1);
+ }
+ if (state.flags & 0x0200) {
+ //=== CRC2(state.check, hold);
+ hbuf[0] = hold & 0xff;
+ hbuf[1] = (hold >>> 8) & 0xff;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ //===//
+ }
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ state.mode = TIME;
+ /* falls through */
+ case TIME:
+ //=== NEEDBITS(32); */
+ while (bits < 32) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ if (state.head) {
+ state.head.time = hold;
+ }
+ if (state.flags & 0x0200) {
+ //=== CRC4(state.check, hold)
+ hbuf[0] = hold & 0xff;
+ hbuf[1] = (hold >>> 8) & 0xff;
+ hbuf[2] = (hold >>> 16) & 0xff;
+ hbuf[3] = (hold >>> 24) & 0xff;
+ state.check = crc32(state.check, hbuf, 4, 0);
+ //===
+ }
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ state.mode = OS;
+ /* falls through */
+ case OS:
+ //=== NEEDBITS(16); */
+ while (bits < 16) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ if (state.head) {
+ state.head.xflags = (hold & 0xff);
+ state.head.os = (hold >> 8);
+ }
+ if (state.flags & 0x0200) {
+ //=== CRC2(state.check, hold);
+ hbuf[0] = hold & 0xff;
+ hbuf[1] = (hold >>> 8) & 0xff;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ //===//
+ }
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ state.mode = EXLEN;
+ /* falls through */
+ case EXLEN:
+ if (state.flags & 0x0400) {
+ //=== NEEDBITS(16); */
+ while (bits < 16) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ state.length = hold;
+ if (state.head) {
+ state.head.extra_len = hold;
+ }
+ if (state.flags & 0x0200) {
+ //=== CRC2(state.check, hold);
+ hbuf[0] = hold & 0xff;
+ hbuf[1] = (hold >>> 8) & 0xff;
+ state.check = crc32(state.check, hbuf, 2, 0);
+ //===//
+ }
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ }
+ else if (state.head) {
+ state.head.extra = null/*Z_NULL*/;
+ }
+ state.mode = EXTRA;
+ /* falls through */
+ case EXTRA:
+ if (state.flags & 0x0400) {
+ copy = state.length;
+ if (copy > have) { copy = have; }
+ if (copy) {
+ if (state.head) {
+ len = state.head.extra_len - state.length;
+ if (!state.head.extra) {
+ // Use untyped array for more conveniend processing later
+ state.head.extra = new Array(state.head.extra_len);
+ }
+ utils.arraySet(
+ state.head.extra,
+ input,
+ next,
+ // extra field is limited to 65536 bytes
+ // - no need for additional size check
+ copy,
+ /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+ len
+ );
+ //zmemcpy(state.head.extra + len, next,
+ // len + copy > state.head.extra_max ?
+ // state.head.extra_max - len : copy);
+ }
+ if (state.flags & 0x0200) {
+ state.check = crc32(state.check, input, copy, next);
+ }
+ have -= copy;
+ next += copy;
+ state.length -= copy;
+ }
+ if (state.length) { break inf_leave; }
+ }
+ state.length = 0;
+ state.mode = NAME;
+ /* falls through */
+ case NAME:
+ if (state.flags & 0x0800) {
+ if (have === 0) { break inf_leave; }
+ copy = 0;
+ do {
+ // TODO: 2 or 1 bytes?
+ len = input[next + copy++];
+ /* use constant limit because in js we should not preallocate memory */
+ if (state.head && len &&
+ (state.length < 65536 /*state.head.name_max*/)) {
+ state.head.name += String.fromCharCode(len);
+ }
+ } while (len && copy < have);
+
+ if (state.flags & 0x0200) {
+ state.check = crc32(state.check, input, copy, next);
+ }
+ have -= copy;
+ next += copy;
+ if (len) { break inf_leave; }
+ }
+ else if (state.head) {
+ state.head.name = null;
+ }
+ state.length = 0;
+ state.mode = COMMENT;
+ /* falls through */
+ case COMMENT:
+ if (state.flags & 0x1000) {
+ if (have === 0) { break inf_leave; }
+ copy = 0;
+ do {
+ len = input[next + copy++];
+ /* use constant limit because in js we should not preallocate memory */
+ if (state.head && len &&
+ (state.length < 65536 /*state.head.comm_max*/)) {
+ state.head.comment += String.fromCharCode(len);
+ }
+ } while (len && copy < have);
+ if (state.flags & 0x0200) {
+ state.check = crc32(state.check, input, copy, next);
+ }
+ have -= copy;
+ next += copy;
+ if (len) { break inf_leave; }
+ }
+ else if (state.head) {
+ state.head.comment = null;
+ }
+ state.mode = HCRC;
+ /* falls through */
+ case HCRC:
+ if (state.flags & 0x0200) {
+ //=== NEEDBITS(16); */
+ while (bits < 16) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ if (hold !== (state.check & 0xffff)) {
+ strm.msg = 'header crc mismatch';
+ state.mode = BAD;
+ break;
+ }
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ }
+ if (state.head) {
+ state.head.hcrc = ((state.flags >> 9) & 1);
+ state.head.done = true;
+ }
+ strm.adler = state.check = 0 /*crc32(0L, Z_NULL, 0)*/;
+ state.mode = TYPE;
+ break;
+ case DICTID:
+ //=== NEEDBITS(32); */
+ while (bits < 32) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ strm.adler = state.check = ZSWAP32(hold);
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ state.mode = DICT;
+ /* falls through */
+ case DICT:
+ if (state.havedict === 0) {
+ //--- RESTORE() ---
+ strm.next_out = put;
+ strm.avail_out = left;
+ strm.next_in = next;
+ strm.avail_in = have;
+ state.hold = hold;
+ state.bits = bits;
+ //---
+ return Z_NEED_DICT;
+ }
+ strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+ state.mode = TYPE;
+ /* falls through */
+ case TYPE:
+ if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
+ /* falls through */
+ case TYPEDO:
+ if (state.last) {
+ //--- BYTEBITS() ---//
+ hold >>>= bits & 7;
+ bits -= bits & 7;
+ //---//
+ state.mode = CHECK;
+ break;
+ }
+ //=== NEEDBITS(3); */
+ while (bits < 3) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ state.last = (hold & 0x01)/*BITS(1)*/;
+ //--- DROPBITS(1) ---//
+ hold >>>= 1;
+ bits -= 1;
+ //---//
+
+ switch ((hold & 0x03)/*BITS(2)*/) {
+ case 0: /* stored block */
+ //Tracev((stderr, "inflate: stored block%s\n",
+ // state.last ? " (last)" : ""));
+ state.mode = STORED;
+ break;
+ case 1: /* fixed block */
+ fixedtables(state);
+ //Tracev((stderr, "inflate: fixed codes block%s\n",
+ // state.last ? " (last)" : ""));
+ state.mode = LEN_; /* decode codes */
+ if (flush === Z_TREES) {
+ //--- DROPBITS(2) ---//
+ hold >>>= 2;
+ bits -= 2;
+ //---//
+ break inf_leave;
+ }
+ break;
+ case 2: /* dynamic block */
+ //Tracev((stderr, "inflate: dynamic codes block%s\n",
+ // state.last ? " (last)" : ""));
+ state.mode = TABLE;
+ break;
+ case 3:
+ strm.msg = 'invalid block type';
+ state.mode = BAD;
+ }
+ //--- DROPBITS(2) ---//
+ hold >>>= 2;
+ bits -= 2;
+ //---//
+ break;
+ case STORED:
+ //--- BYTEBITS() ---// /* go to byte boundary */
+ hold >>>= bits & 7;
+ bits -= bits & 7;
+ //---//
+ //=== NEEDBITS(32); */
+ while (bits < 32) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
+ strm.msg = 'invalid stored block lengths';
+ state.mode = BAD;
+ break;
+ }
+ state.length = hold & 0xffff;
+ //Tracev((stderr, "inflate: stored length %u\n",
+ // state.length));
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ state.mode = COPY_;
+ if (flush === Z_TREES) { break inf_leave; }
+ /* falls through */
+ case COPY_:
+ state.mode = COPY;
+ /* falls through */
+ case COPY:
+ copy = state.length;
+ if (copy) {
+ if (copy > have) { copy = have; }
+ if (copy > left) { copy = left; }
+ if (copy === 0) { break inf_leave; }
+ //--- zmemcpy(put, next, copy); ---
+ utils.arraySet(output, input, next, copy, put);
+ //---//
+ have -= copy;
+ next += copy;
+ left -= copy;
+ put += copy;
+ state.length -= copy;
+ break;
+ }
+ //Tracev((stderr, "inflate: stored end\n"));
+ state.mode = TYPE;
+ break;
+ case TABLE:
+ //=== NEEDBITS(14); */
+ while (bits < 14) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
+ //--- DROPBITS(5) ---//
+ hold >>>= 5;
+ bits -= 5;
+ //---//
+ state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
+ //--- DROPBITS(5) ---//
+ hold >>>= 5;
+ bits -= 5;
+ //---//
+ state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
+ //--- DROPBITS(4) ---//
+ hold >>>= 4;
+ bits -= 4;
+ //---//
+//#ifndef PKZIP_BUG_WORKAROUND
+ if (state.nlen > 286 || state.ndist > 30) {
+ strm.msg = 'too many length or distance symbols';
+ state.mode = BAD;
+ break;
+ }
+//#endif
+ //Tracev((stderr, "inflate: table sizes ok\n"));
+ state.have = 0;
+ state.mode = LENLENS;
+ /* falls through */
+ case LENLENS:
+ while (state.have < state.ncode) {
+ //=== NEEDBITS(3);
+ while (bits < 3) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
+ //--- DROPBITS(3) ---//
+ hold >>>= 3;
+ bits -= 3;
+ //---//
+ }
+ while (state.have < 19) {
+ state.lens[order[state.have++]] = 0;
+ }
+ // We have separate tables & no pointers. 2 commented lines below not needed.
+ //state.next = state.codes;
+ //state.lencode = state.next;
+ // Switch to use dynamic table
+ state.lencode = state.lendyn;
+ state.lenbits = 7;
+
+ opts = {bits: state.lenbits};
+ ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+ state.lenbits = opts.bits;
+
+ if (ret) {
+ strm.msg = 'invalid code lengths set';
+ state.mode = BAD;
+ break;
+ }
+ //Tracev((stderr, "inflate: code lengths ok\n"));
+ state.have = 0;
+ state.mode = CODELENS;
+ /* falls through */
+ case CODELENS:
+ while (state.have < state.nlen + state.ndist) {
+ for (;;) {
+ here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
+ here_bits = here >>> 24;
+ here_op = (here >>> 16) & 0xff;
+ here_val = here & 0xffff;
+
+ if ((here_bits) <= bits) { break; }
+ //--- PULLBYTE() ---//
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ //---//
+ }
+ if (here_val < 16) {
+ //--- DROPBITS(here.bits) ---//
+ hold >>>= here_bits;
+ bits -= here_bits;
+ //---//
+ state.lens[state.have++] = here_val;
+ }
+ else {
+ if (here_val === 16) {
+ //=== NEEDBITS(here.bits + 2);
+ n = here_bits + 2;
+ while (bits < n) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ //--- DROPBITS(here.bits) ---//
+ hold >>>= here_bits;
+ bits -= here_bits;
+ //---//
+ if (state.have === 0) {
+ strm.msg = 'invalid bit length repeat';
+ state.mode = BAD;
+ break;
+ }
+ len = state.lens[state.have - 1];
+ copy = 3 + (hold & 0x03);//BITS(2);
+ //--- DROPBITS(2) ---//
+ hold >>>= 2;
+ bits -= 2;
+ //---//
+ }
+ else if (here_val === 17) {
+ //=== NEEDBITS(here.bits + 3);
+ n = here_bits + 3;
+ while (bits < n) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ //--- DROPBITS(here.bits) ---//
+ hold >>>= here_bits;
+ bits -= here_bits;
+ //---//
+ len = 0;
+ copy = 3 + (hold & 0x07);//BITS(3);
+ //--- DROPBITS(3) ---//
+ hold >>>= 3;
+ bits -= 3;
+ //---//
+ }
+ else {
+ //=== NEEDBITS(here.bits + 7);
+ n = here_bits + 7;
+ while (bits < n) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ //--- DROPBITS(here.bits) ---//
+ hold >>>= here_bits;
+ bits -= here_bits;
+ //---//
+ len = 0;
+ copy = 11 + (hold & 0x7f);//BITS(7);
+ //--- DROPBITS(7) ---//
+ hold >>>= 7;
+ bits -= 7;
+ //---//
+ }
+ if (state.have + copy > state.nlen + state.ndist) {
+ strm.msg = 'invalid bit length repeat';
+ state.mode = BAD;
+ break;
+ }
+ while (copy--) {
+ state.lens[state.have++] = len;
+ }
+ }
+ }
+
+ /* handle error breaks in while */
+ if (state.mode === BAD) { break; }
+
+ /* check for end-of-block code (better have one) */
+ if (state.lens[256] === 0) {
+ strm.msg = 'invalid code -- missing end-of-block';
+ state.mode = BAD;
+ break;
+ }
+
+ /* build code tables -- note: do not change the lenbits or distbits
+ values here (9 and 6) without reading the comments in inftrees.h
+ concerning the ENOUGH constants, which depend on those values */
+ state.lenbits = 9;
+
+ opts = {bits: state.lenbits};
+ ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+ // We have separate tables & no pointers. 2 commented lines below not needed.
+ // state.next_index = opts.table_index;
+ state.lenbits = opts.bits;
+ // state.lencode = state.next;
+
+ if (ret) {
+ strm.msg = 'invalid literal/lengths set';
+ state.mode = BAD;
+ break;
+ }
+
+ state.distbits = 6;
+ //state.distcode.copy(state.codes);
+ // Switch to use dynamic table
+ state.distcode = state.distdyn;
+ opts = {bits: state.distbits};
+ ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+ // We have separate tables & no pointers. 2 commented lines below not needed.
+ // state.next_index = opts.table_index;
+ state.distbits = opts.bits;
+ // state.distcode = state.next;
+
+ if (ret) {
+ strm.msg = 'invalid distances set';
+ state.mode = BAD;
+ break;
+ }
+ //Tracev((stderr, 'inflate: codes ok\n'));
+ state.mode = LEN_;
+ if (flush === Z_TREES) { break inf_leave; }
+ /* falls through */
+ case LEN_:
+ state.mode = LEN;
+ /* falls through */
+ case LEN:
+ if (have >= 6 && left >= 258) {
+ //--- RESTORE() ---
+ strm.next_out = put;
+ strm.avail_out = left;
+ strm.next_in = next;
+ strm.avail_in = have;
+ state.hold = hold;
+ state.bits = bits;
+ //---
+ inflate_fast(strm, _out);
+ //--- LOAD() ---
+ put = strm.next_out;
+ output = strm.output;
+ left = strm.avail_out;
+ next = strm.next_in;
+ input = strm.input;
+ have = strm.avail_in;
+ hold = state.hold;
+ bits = state.bits;
+ //---
+
+ if (state.mode === TYPE) {
+ state.back = -1;
+ }
+ break;
+ }
+ state.back = 0;
+ for (;;) {
+ here = state.lencode[hold & ((1 << state.lenbits) -1)]; /*BITS(state.lenbits)*/
+ here_bits = here >>> 24;
+ here_op = (here >>> 16) & 0xff;
+ here_val = here & 0xffff;
+
+ if (here_bits <= bits) { break; }
+ //--- PULLBYTE() ---//
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ //---//
+ }
+ if (here_op && (here_op & 0xf0) === 0) {
+ last_bits = here_bits;
+ last_op = here_op;
+ last_val = here_val;
+ for (;;) {
+ here = state.lencode[last_val +
+ ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+ here_bits = here >>> 24;
+ here_op = (here >>> 16) & 0xff;
+ here_val = here & 0xffff;
+
+ if ((last_bits + here_bits) <= bits) { break; }
+ //--- PULLBYTE() ---//
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ //---//
+ }
+ //--- DROPBITS(last.bits) ---//
+ hold >>>= last_bits;
+ bits -= last_bits;
+ //---//
+ state.back += last_bits;
+ }
+ //--- DROPBITS(here.bits) ---//
+ hold >>>= here_bits;
+ bits -= here_bits;
+ //---//
+ state.back += here_bits;
+ state.length = here_val;
+ if (here_op === 0) {
+ //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+ // "inflate: literal '%c'\n" :
+ // "inflate: literal 0x%02x\n", here.val));
+ state.mode = LIT;
+ break;
+ }
+ if (here_op & 32) {
+ //Tracevv((stderr, "inflate: end of block\n"));
+ state.back = -1;
+ state.mode = TYPE;
+ break;
+ }
+ if (here_op & 64) {
+ strm.msg = 'invalid literal/length code';
+ state.mode = BAD;
+ break;
+ }
+ state.extra = here_op & 15;
+ state.mode = LENEXT;
+ /* falls through */
+ case LENEXT:
+ if (state.extra) {
+ //=== NEEDBITS(state.extra);
+ n = state.extra;
+ while (bits < n) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ state.length += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+ //--- DROPBITS(state.extra) ---//
+ hold >>>= state.extra;
+ bits -= state.extra;
+ //---//
+ state.back += state.extra;
+ }
+ //Tracevv((stderr, "inflate: length %u\n", state.length));
+ state.was = state.length;
+ state.mode = DIST;
+ /* falls through */
+ case DIST:
+ for (;;) {
+ here = state.distcode[hold & ((1 << state.distbits) -1)];/*BITS(state.distbits)*/
+ here_bits = here >>> 24;
+ here_op = (here >>> 16) & 0xff;
+ here_val = here & 0xffff;
+
+ if ((here_bits) <= bits) { break; }
+ //--- PULLBYTE() ---//
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ //---//
+ }
+ if ((here_op & 0xf0) === 0) {
+ last_bits = here_bits;
+ last_op = here_op;
+ last_val = here_val;
+ for (;;) {
+ here = state.distcode[last_val +
+ ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+ here_bits = here >>> 24;
+ here_op = (here >>> 16) & 0xff;
+ here_val = here & 0xffff;
+
+ if ((last_bits + here_bits) <= bits) { break; }
+ //--- PULLBYTE() ---//
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ //---//
+ }
+ //--- DROPBITS(last.bits) ---//
+ hold >>>= last_bits;
+ bits -= last_bits;
+ //---//
+ state.back += last_bits;
+ }
+ //--- DROPBITS(here.bits) ---//
+ hold >>>= here_bits;
+ bits -= here_bits;
+ //---//
+ state.back += here_bits;
+ if (here_op & 64) {
+ strm.msg = 'invalid distance code';
+ state.mode = BAD;
+ break;
+ }
+ state.offset = here_val;
+ state.extra = (here_op) & 15;
+ state.mode = DISTEXT;
+ /* falls through */
+ case DISTEXT:
+ if (state.extra) {
+ //=== NEEDBITS(state.extra);
+ n = state.extra;
+ while (bits < n) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ state.offset += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+ //--- DROPBITS(state.extra) ---//
+ hold >>>= state.extra;
+ bits -= state.extra;
+ //---//
+ state.back += state.extra;
+ }
+//#ifdef INFLATE_STRICT
+ if (state.offset > state.dmax) {
+ strm.msg = 'invalid distance too far back';
+ state.mode = BAD;
+ break;
+ }
+//#endif
+ //Tracevv((stderr, "inflate: distance %u\n", state.offset));
+ state.mode = MATCH;
+ /* falls through */
+ case MATCH:
+ if (left === 0) { break inf_leave; }
+ copy = _out - left;
+ if (state.offset > copy) { /* copy from window */
+ copy = state.offset - copy;
+ if (copy > state.whave) {
+ if (state.sane) {
+ strm.msg = 'invalid distance too far back';
+ state.mode = BAD;
+ break;
+ }
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+// Trace((stderr, "inflate.c too far\n"));
+// copy -= state.whave;
+// if (copy > state.length) { copy = state.length; }
+// if (copy > left) { copy = left; }
+// left -= copy;
+// state.length -= copy;
+// do {
+// output[put++] = 0;
+// } while (--copy);
+// if (state.length === 0) { state.mode = LEN; }
+// break;
+//#endif
+ }
+ if (copy > state.wnext) {
+ copy -= state.wnext;
+ from = state.wsize - copy;
+ }
+ else {
+ from = state.wnext - copy;
+ }
+ if (copy > state.length) { copy = state.length; }
+ from_source = state.window;
+ }
+ else { /* copy from output */
+ from_source = output;
+ from = put - state.offset;
+ copy = state.length;
+ }
+ if (copy > left) { copy = left; }
+ left -= copy;
+ state.length -= copy;
+ do {
+ output[put++] = from_source[from++];
+ } while (--copy);
+ if (state.length === 0) { state.mode = LEN; }
+ break;
+ case LIT:
+ if (left === 0) { break inf_leave; }
+ output[put++] = state.length;
+ left--;
+ state.mode = LEN;
+ break;
+ case CHECK:
+ if (state.wrap) {
+ //=== NEEDBITS(32);
+ while (bits < 32) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ // Use '|' insdead of '+' to make sure that result is signed
+ hold |= input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ _out -= left;
+ strm.total_out += _out;
+ state.total += _out;
+ if (_out) {
+ strm.adler = state.check =
+ /*UPDATE(state.check, put - _out, _out);*/
+ (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
+
+ }
+ _out = left;
+ // NB: crc32 stored as signed 32-bit int, ZSWAP32 returns signed too
+ if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) {
+ strm.msg = 'incorrect data check';
+ state.mode = BAD;
+ break;
+ }
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ //Tracev((stderr, "inflate: check matches trailer\n"));
+ }
+ state.mode = LENGTH;
+ /* falls through */
+ case LENGTH:
+ if (state.wrap && state.flags) {
+ //=== NEEDBITS(32);
+ while (bits < 32) {
+ if (have === 0) { break inf_leave; }
+ have--;
+ hold += input[next++] << bits;
+ bits += 8;
+ }
+ //===//
+ if (hold !== (state.total & 0xffffffff)) {
+ strm.msg = 'incorrect length check';
+ state.mode = BAD;
+ break;
+ }
+ //=== INITBITS();
+ hold = 0;
+ bits = 0;
+ //===//
+ //Tracev((stderr, "inflate: length matches trailer\n"));
+ }
+ state.mode = DONE;
+ /* falls through */
+ case DONE:
+ ret = Z_STREAM_END;
+ break inf_leave;
+ case BAD:
+ ret = Z_DATA_ERROR;
+ break inf_leave;
+ case MEM:
+ return Z_MEM_ERROR;
+ case SYNC:
+ /* falls through */
+ default:
+ return Z_STREAM_ERROR;
+ }
+ }
+
+ // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+ /*
+ Return from inflate(), updating the total counts and the check value.
+ If there was no progress during the inflate() call, return a buffer
+ error. Call updatewindow() to create and/or update the window state.
+ Note: a memory error from inflate() is non-recoverable.
+ */
+
+ //--- RESTORE() ---
+ strm.next_out = put;
+ strm.avail_out = left;
+ strm.next_in = next;
+ strm.avail_in = have;
+ state.hold = hold;
+ state.bits = bits;
+ //---
+
+ if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
+ (state.mode < CHECK || flush !== Z_FINISH))) {
+ if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+ state.mode = MEM;
+ return Z_MEM_ERROR;
+ }
+ }
+ _in -= strm.avail_in;
+ _out -= strm.avail_out;
+ strm.total_in += _in;
+ strm.total_out += _out;
+ state.total += _out;
+ if (state.wrap && _out) {
+ strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
+ (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
+ }
+ strm.data_type = state.bits + (state.last ? 64 : 0) +
+ (state.mode === TYPE ? 128 : 0) +
+ (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+ if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
+ ret = Z_BUF_ERROR;
+ }
+ return ret;
+}
+
+function inflateEnd(strm) {
+
+ if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
+ return Z_STREAM_ERROR;
+ }
+
+ var state = strm.state;
+ if (state.window) {
+ state.window = null;
+ }
+ strm.state = null;
+ return Z_OK;
+}
+
+function inflateGetHeader(strm, head) {
+ var state;
+
+ /* check state */
+ if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+ state = strm.state;
+ if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
+
+ /* save header structure */
+ state.head = head;
+ head.done = false;
+ return Z_OK;
+}
+
+
+exports.inflateReset = inflateReset;
+exports.inflateReset2 = inflateReset2;
+exports.inflateResetKeep = inflateResetKeep;
+exports.inflateInit = inflateInit;
+exports.inflateInit2 = inflateInit2;
+exports.inflate = inflate;
+exports.inflateEnd = inflateEnd;
+exports.inflateGetHeader = inflateGetHeader;
+exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+/* Not implemented
+exports.inflateCopy = inflateCopy;
+exports.inflateGetDictionary = inflateGetDictionary;
+exports.inflateMark = inflateMark;
+exports.inflatePrime = inflatePrime;
+exports.inflateSetDictionary = inflateSetDictionary;
+exports.inflateSync = inflateSync;
+exports.inflateSyncPoint = inflateSyncPoint;
+exports.inflateUndermine = inflateUndermine;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+var MAXBITS = 15;
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+var lbase = [ /* Length codes 257..285 base */
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+ 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
+];
+
+var lext = [ /* Length codes 257..285 extra */
+ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
+];
+
+var dbase = [ /* Distance codes 0..29 base */
+ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+ 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+ 8193, 12289, 16385, 24577, 0, 0
+];
+
+var dext = [ /* Distance codes 0..29 extra */
+ 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+ 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+ 28, 28, 29, 29, 64, 64
+];
+
+module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
+{
+ var bits = opts.bits;
+ //here = opts.here; /* table entry for duplication */
+
+ var len = 0; /* a code's length in bits */
+ var sym = 0; /* index of code symbols */
+ var min = 0, max = 0; /* minimum and maximum code lengths */
+ var root = 0; /* number of index bits for root table */
+ var curr = 0; /* number of index bits for current table */
+ var drop = 0; /* code bits to drop for sub-table */
+ var left = 0; /* number of prefix codes available */
+ var used = 0; /* code entries in table used */
+ var huff = 0; /* Huffman code */
+ var incr; /* for incrementing code, index */
+ var fill; /* index for replicating entries */
+ var low; /* low bits for current root entry */
+ var mask; /* mask for low root bits */
+ var next; /* next available space in table */
+ var base = null; /* base value table to use */
+ var base_index = 0;
+// var shoextra; /* extra bits table to use */
+ var end; /* use base and extra for symbol > end */
+ var count = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* number of codes of each length */
+ var offs = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* offsets in table for each length */
+ var extra = null;
+ var extra_index = 0;
+
+ var here_bits, here_op, here_val;
+
+ /*
+ Process a set of code lengths to create a canonical Huffman code. The
+ code lengths are lens[0..codes-1]. Each length corresponds to the
+ symbols 0..codes-1. The Huffman code is generated by first sorting the
+ symbols by length from short to long, and retaining the symbol order
+ for codes with equal lengths. Then the code starts with all zero bits
+ for the first code of the shortest length, and the codes are integer
+ increments for the same length, and zeros are appended as the length
+ increases. For the deflate format, these bits are stored backwards
+ from their more natural integer increment ordering, and so when the
+ decoding tables are built in the large loop below, the integer codes
+ are incremented backwards.
+
+ This routine assumes, but does not check, that all of the entries in
+ lens[] are in the range 0..MAXBITS. The caller must assure this.
+ 1..MAXBITS is interpreted as that code length. zero means that that
+ symbol does not occur in this code.
+
+ The codes are sorted by computing a count of codes for each length,
+ creating from that a table of starting indices for each length in the
+ sorted table, and then entering the symbols in order in the sorted
+ table. The sorted table is work[], with that space being provided by
+ the caller.
+
+ The length counts are used for other purposes as well, i.e. finding
+ the minimum and maximum length codes, determining if there are any
+ codes at all, checking for a valid set of lengths, and looking ahead
+ at length counts to determine sub-table sizes when building the
+ decoding tables.
+ */
+
+ /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+ for (len = 0; len <= MAXBITS; len++) {
+ count[len] = 0;
+ }
+ for (sym = 0; sym < codes; sym++) {
+ count[lens[lens_index + sym]]++;
+ }
+
+ /* bound code lengths, force root to be within code lengths */
+ root = bits;
+ for (max = MAXBITS; max >= 1; max--) {
+ if (count[max] !== 0) { break; }
+ }
+ if (root > max) {
+ root = max;
+ }
+ if (max === 0) { /* no symbols to code at all */
+ //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */
+ //table.bits[opts.table_index] = 1; //here.bits = (var char)1;
+ //table.val[opts.table_index++] = 0; //here.val = (var short)0;
+ table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+
+ //table.op[opts.table_index] = 64;
+ //table.bits[opts.table_index] = 1;
+ //table.val[opts.table_index++] = 0;
+ table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+ opts.bits = 1;
+ return 0; /* no symbols, but wait for decoding to report error */
+ }
+ for (min = 1; min < max; min++) {
+ if (count[min] !== 0) { break; }
+ }
+ if (root < min) {
+ root = min;
+ }
+
+ /* check for an over-subscribed or incomplete set of lengths */
+ left = 1;
+ for (len = 1; len <= MAXBITS; len++) {
+ left <<= 1;
+ left -= count[len];
+ if (left < 0) {
+ return -1;
+ } /* over-subscribed */
+ }
+ if (left > 0 && (type === CODES || max !== 1)) {
+ return -1; /* incomplete set */
+ }
+
+ /* generate offsets into symbol table for each length for sorting */
+ offs[1] = 0;
+ for (len = 1; len < MAXBITS; len++) {
+ offs[len + 1] = offs[len] + count[len];
+ }
+
+ /* sort symbols by length, by symbol order within each length */
+ for (sym = 0; sym < codes; sym++) {
+ if (lens[lens_index + sym] !== 0) {
+ work[offs[lens[lens_index + sym]]++] = sym;
+ }
+ }
+
+ /*
+ Create and fill in decoding tables. In this loop, the table being
+ filled is at next and has curr index bits. The code being used is huff
+ with length len. That code is converted to an index by dropping drop
+ bits off of the bottom. For codes where len is less than drop + curr,
+ those top drop + curr - len bits are incremented through all values to
+ fill the table with replicated entries.
+
+ root is the number of index bits for the root table. When len exceeds
+ root, sub-tables are created pointed to by the root entry with an index
+ of the low root bits of huff. This is saved in low to check for when a
+ new sub-table should be started. drop is zero when the root table is
+ being filled, and drop is root when sub-tables are being filled.
+
+ When a new sub-table is needed, it is necessary to look ahead in the
+ code lengths to determine what size sub-table is needed. The length
+ counts are used for this, and so count[] is decremented as codes are
+ entered in the tables.
+
+ used keeps track of how many table entries have been allocated from the
+ provided *table space. It is checked for LENS and DIST tables against
+ the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+ the initial root table size constants. See the comments in inftrees.h
+ for more information.
+
+ sym increments through all symbols, and the loop terminates when
+ all codes of length max, i.e. all codes, have been processed. This
+ routine permits incomplete codes, so another loop after this one fills
+ in the rest of the decoding tables with invalid code markers.
+ */
+
+ /* set up for code type */
+ // poor man optimization - use if-else instead of switch,
+ // to avoid deopts in old v8
+ if (type === CODES) {
+ base = extra = work; /* dummy value--not used */
+ end = 19;
+ } else if (type === LENS) {
+ base = lbase;
+ base_index -= 257;
+ extra = lext;
+ extra_index -= 257;
+ end = 256;
+ } else { /* DISTS */
+ base = dbase;
+ extra = dext;
+ end = -1;
+ }
+
+ /* initialize opts for loop */
+ huff = 0; /* starting code */
+ sym = 0; /* starting code symbol */
+ len = min; /* starting code length */
+ next = table_index; /* current table to fill in */
+ curr = root; /* current table index bits */
+ drop = 0; /* current bits to drop from code for index */
+ low = -1; /* trigger new sub-table when len > root */
+ used = 1 << root; /* use root table entries */
+ mask = used - 1; /* mask for comparing low */
+
+ /* check available table space */
+ if ((type === LENS && used > ENOUGH_LENS) ||
+ (type === DISTS && used > ENOUGH_DISTS)) {
+ return 1;
+ }
+
+ var i=0;
+ /* process all codes and make table entries */
+ for (;;) {
+ i++;
+ /* create table entry */
+ here_bits = len - drop;
+ if (work[sym] < end) {
+ here_op = 0;
+ here_val = work[sym];
+ }
+ else if (work[sym] > end) {
+ here_op = extra[extra_index + work[sym]];
+ here_val = base[base_index + work[sym]];
+ }
+ else {
+ here_op = 32 + 64; /* end of block */
+ here_val = 0;
+ }
+
+ /* replicate for those indices with low len bits equal to huff */
+ incr = 1 << (len - drop);
+ fill = 1 << curr;
+ min = fill; /* save offset to next table */
+ do {
+ fill -= incr;
+ table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
+ } while (fill !== 0);
+
+ /* backwards increment the len-bit code huff */
+ incr = 1 << (len - 1);
+ while (huff & incr) {
+ incr >>= 1;
+ }
+ if (incr !== 0) {
+ huff &= incr - 1;
+ huff += incr;
+ } else {
+ huff = 0;
+ }
+
+ /* go to next symbol, update count, len */
+ sym++;
+ if (--count[len] === 0) {
+ if (len === max) { break; }
+ len = lens[lens_index + work[sym]];
+ }
+
+ /* create new sub-table if needed */
+ if (len > root && (huff & mask) !== low) {
+ /* if first time, transition to sub-tables */
+ if (drop === 0) {
+ drop = root;
+ }
+
+ /* increment past last table */
+ next += min; /* here min is 1 << curr */
+
+ /* determine length of next table */
+ curr = len - drop;
+ left = 1 << curr;
+ while (curr + drop < max) {
+ left -= count[curr + drop];
+ if (left <= 0) { break; }
+ curr++;
+ left <<= 1;
+ }
+
+ /* check for enough space */
+ used += 1 << curr;
+ if ((type === LENS && used > ENOUGH_LENS) ||
+ (type === DISTS && used > ENOUGH_DISTS)) {
+ return 1;
+ }
+
+ /* point entry in root table to sub-table */
+ low = huff & mask;
+ /*table.op[low] = curr;
+ table.bits[low] = root;
+ table.val[low] = next - opts.table_index;*/
+ table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
+ }
+ }
+
+ /* fill in remaining table entry if code is incomplete (guaranteed to have
+ at most one remaining entry, since if the code is incomplete, the
+ maximum code length that was allowed to get this far is one bit) */
+ if (huff !== 0) {
+ //table.op[next + huff] = 64; /* invalid code marker */
+ //table.bits[next + huff] = len - drop;
+ //table.val[next + huff] = 0;
+ table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
+ }
+
+ /* set return parameters */
+ //opts.table_index += used;
+ opts.bits = root;
+ return 0;
+};
+
+},{"../utils/common":27}],37:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = {
+ '2': 'need dictionary', /* Z_NEED_DICT 2 */
+ '1': 'stream end', /* Z_STREAM_END 1 */
+ '0': '', /* Z_OK 0 */
+ '-1': 'file error', /* Z_ERRNO (-1) */
+ '-2': 'stream error', /* Z_STREAM_ERROR (-2) */
+ '-3': 'data error', /* Z_DATA_ERROR (-3) */
+ '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */
+ '-5': 'buffer error', /* Z_BUF_ERROR (-5) */
+ '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */
+};
+},{}],38:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+//var Z_FILTERED = 1;
+//var Z_HUFFMAN_ONLY = 2;
+//var Z_RLE = 3;
+var Z_FIXED = 4;
+//var Z_DEFAULT_STRATEGY = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+var Z_BINARY = 0;
+var Z_TEXT = 1;
+//var Z_ASCII = 1; // = Z_TEXT
+var Z_UNKNOWN = 2;
+
+/*============================================================================*/
+
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+// From zutil.h
+
+var STORED_BLOCK = 0;
+var STATIC_TREES = 1;
+var DYN_TREES = 2;
+/* The three kinds of block type */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+/* The minimum and maximum match lengths */
+
+// From deflate.h
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+var LENGTH_CODES = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+
+var LITERALS = 256;
+/* number of literal bytes 0..255 */
+
+var L_CODES = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+var D_CODES = 30;
+/* number of distance codes */
+
+var BL_CODES = 19;
+/* number of codes used to transfer the bit lengths */
+
+var HEAP_SIZE = 2*L_CODES + 1;
+/* maximum heap size */
+
+var MAX_BITS = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var Buf_size = 16;
+/* size of bit buffer in bi_buf */
+
+
+/* ===========================================================================
+ * Constants
+ */
+
+var MAX_BL_BITS = 7;
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+var END_BLOCK = 256;
+/* end of block literal code */
+
+var REP_3_6 = 16;
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+var REPZ_3_10 = 17;
+/* repeat a zero length 3-10 times (3 bits of repeat count) */
+
+var REPZ_11_138 = 18;
+/* repeat a zero length 11-138 times (7 bits of repeat count) */
+
+var extra_lbits = /* extra bits for each length code */
+ [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
+
+var extra_dbits = /* extra bits for each distance code */
+ [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
+
+var extra_blbits = /* extra bits for each bit length code */
+ [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
+
+var bl_order =
+ [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+// We pre-fill arrays with 0 to avoid uninitialized gaps
+
+var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
+
+// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
+var static_ltree = new Array((L_CODES+2) * 2);
+zero(static_ltree);
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+var static_dtree = new Array(D_CODES * 2);
+zero(static_dtree);
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+var _dist_code = new Array(DIST_CODE_LEN);
+zero(_dist_code);
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+var _length_code = new Array(MAX_MATCH-MIN_MATCH+1);
+zero(_length_code);
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+var base_length = new Array(LENGTH_CODES);
+zero(base_length);
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+var base_dist = new Array(D_CODES);
+zero(base_dist);
+/* First normalized distance for each code (0 = distance of 1) */
+
+
+var StaticTreeDesc = function (static_tree, extra_bits, extra_base, elems, max_length) {
+
+ this.static_tree = static_tree; /* static tree or NULL */
+ this.extra_bits = extra_bits; /* extra bits for each code or NULL */
+ this.extra_base = extra_base; /* base index for extra_bits */
+ this.elems = elems; /* max number of elements in the tree */
+ this.max_length = max_length; /* max bit length for the codes */
+
+ // show if `static_tree` has data or dummy - needed for monomorphic objects
+ this.has_stree = static_tree && static_tree.length;
+};
+
+
+var static_l_desc;
+var static_d_desc;
+var static_bl_desc;
+
+
+var TreeDesc = function(dyn_tree, stat_desc) {
+ this.dyn_tree = dyn_tree; /* the dynamic tree */
+ this.max_code = 0; /* largest code with non zero frequency */
+ this.stat_desc = stat_desc; /* the corresponding static tree */
+};
+
+
+
+function d_code(dist) {
+ return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
+}
+
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+function put_short (s, w) {
+// put_byte(s, (uch)((w) & 0xff));
+// put_byte(s, (uch)((ush)(w) >> 8));
+ s.pending_buf[s.pending++] = (w) & 0xff;
+ s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
+}
+
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+function send_bits(s, value, length) {
+ if (s.bi_valid > (Buf_size - length)) {
+ s.bi_buf |= (value << s.bi_valid) & 0xffff;
+ put_short(s, s.bi_buf);
+ s.bi_buf = value >> (Buf_size - s.bi_valid);
+ s.bi_valid += length - Buf_size;
+ } else {
+ s.bi_buf |= (value << s.bi_valid) & 0xffff;
+ s.bi_valid += length;
+ }
+}
+
+
+function send_code(s, c, tree) {
+ send_bits(s, tree[c*2]/*.Code*/, tree[c*2 + 1]/*.Len*/);
+}
+
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+function bi_reverse(code, len) {
+ var res = 0;
+ do {
+ res |= code & 1;
+ code >>>= 1;
+ res <<= 1;
+ } while (--len > 0);
+ return res >>> 1;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+function bi_flush(s) {
+ if (s.bi_valid === 16) {
+ put_short(s, s.bi_buf);
+ s.bi_buf = 0;
+ s.bi_valid = 0;
+
+ } else if (s.bi_valid >= 8) {
+ s.pending_buf[s.pending++] = s.bi_buf & 0xff;
+ s.bi_buf >>= 8;
+ s.bi_valid -= 8;
+ }
+}
+
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ * above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ * array bl_count contains the frequencies for each bit length.
+ * The length opt_len is updated; static_len is also updated if stree is
+ * not null.
+ */
+function gen_bitlen(s, desc)
+// deflate_state *s;
+// tree_desc *desc; /* the tree descriptor */
+{
+ var tree = desc.dyn_tree;
+ var max_code = desc.max_code;
+ var stree = desc.stat_desc.static_tree;
+ var has_stree = desc.stat_desc.has_stree;
+ var extra = desc.stat_desc.extra_bits;
+ var base = desc.stat_desc.extra_base;
+ var max_length = desc.stat_desc.max_length;
+ var h; /* heap index */
+ var n, m; /* iterate over the tree elements */
+ var bits; /* bit length */
+ var xbits; /* extra bits */
+ var f; /* frequency */
+ var overflow = 0; /* number of elements with bit length too large */
+
+ for (bits = 0; bits <= MAX_BITS; bits++) {
+ s.bl_count[bits] = 0;
+ }
+
+ /* In a first pass, compute the optimal bit lengths (which may
+ * overflow in the case of the bit length tree).
+ */
+ tree[s.heap[s.heap_max]*2 + 1]/*.Len*/ = 0; /* root of the heap */
+
+ for (h = s.heap_max+1; h < HEAP_SIZE; h++) {
+ n = s.heap[h];
+ bits = tree[tree[n*2 +1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
+ if (bits > max_length) {
+ bits = max_length;
+ overflow++;
+ }
+ tree[n*2 + 1]/*.Len*/ = bits;
+ /* We overwrite tree[n].Dad which is no longer needed */
+
+ if (n > max_code) { continue; } /* not a leaf node */
+
+ s.bl_count[bits]++;
+ xbits = 0;
+ if (n >= base) {
+ xbits = extra[n-base];
+ }
+ f = tree[n * 2]/*.Freq*/;
+ s.opt_len += f * (bits + xbits);
+ if (has_stree) {
+ s.static_len += f * (stree[n*2 + 1]/*.Len*/ + xbits);
+ }
+ }
+ if (overflow === 0) { return; }
+
+ // Trace((stderr,"\nbit length overflow\n"));
+ /* This happens for example on obj2 and pic of the Calgary corpus */
+
+ /* Find the first bit length which could increase: */
+ do {
+ bits = max_length-1;
+ while (s.bl_count[bits] === 0) { bits--; }
+ s.bl_count[bits]--; /* move one leaf down the tree */
+ s.bl_count[bits+1] += 2; /* move one overflow item as its brother */
+ s.bl_count[max_length]--;
+ /* The brother of the overflow item also moves one step up,
+ * but this does not affect bl_count[max_length]
+ */
+ overflow -= 2;
+ } while (overflow > 0);
+
+ /* Now recompute all bit lengths, scanning in increasing frequency.
+ * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+ * lengths instead of fixing only the wrong ones. This idea is taken
+ * from 'ar' written by Haruhiko Okumura.)
+ */
+ for (bits = max_length; bits !== 0; bits--) {
+ n = s.bl_count[bits];
+ while (n !== 0) {
+ m = s.heap[--h];
+ if (m > max_code) { continue; }
+ if (tree[m*2 + 1]/*.Len*/ !== bits) {
+ // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+ s.opt_len += (bits - tree[m*2 + 1]/*.Len*/)*tree[m*2]/*.Freq*/;
+ tree[m*2 + 1]/*.Len*/ = bits;
+ }
+ n--;
+ }
+ }
+}
+
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ * zero code length.
+ */
+function gen_codes(tree, max_code, bl_count)
+// ct_data *tree; /* the tree to decorate */
+// int max_code; /* largest code with non zero frequency */
+// ushf *bl_count; /* number of codes at each bit length */
+{
+ var next_code = new Array(MAX_BITS+1); /* next code value for each bit length */
+ var code = 0; /* running code value */
+ var bits; /* bit index */
+ var n; /* code index */
+
+ /* The distribution counts are first used to generate the code values
+ * without bit reversal.
+ */
+ for (bits = 1; bits <= MAX_BITS; bits++) {
+ next_code[bits] = code = (code + bl_count[bits-1]) << 1;
+ }
+ /* Check that the bit counts in bl_count are consistent. The last code
+ * must be all ones.
+ */
+ //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */
+ length = 0;
+ for (code = 0; code < LENGTH_CODES-1; code++) {
+ base_length[code] = length;
+ for (n = 0; n < (1< dist code (0..29) */
+ dist = 0;
+ for (code = 0 ; code < 16; code++) {
+ base_dist[code] = dist;
+ for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */
+ for ( ; code < D_CODES; code++) {
+ base_dist[code] = dist << 7;
+ for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
+ _dist_code[256 + dist++] = code;
+ }
+ }
+ //Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+ /* Construct the codes of the static literal tree */
+ for (bits = 0; bits <= MAX_BITS; bits++) {
+ bl_count[bits] = 0;
+ }
+
+ n = 0;
+ while (n <= 143) {
+ static_ltree[n*2 + 1]/*.Len*/ = 8;
+ n++;
+ bl_count[8]++;
+ }
+ while (n <= 255) {
+ static_ltree[n*2 + 1]/*.Len*/ = 9;
+ n++;
+ bl_count[9]++;
+ }
+ while (n <= 279) {
+ static_ltree[n*2 + 1]/*.Len*/ = 7;
+ n++;
+ bl_count[7]++;
+ }
+ while (n <= 287) {
+ static_ltree[n*2 + 1]/*.Len*/ = 8;
+ n++;
+ bl_count[8]++;
+ }
+ /* Codes 286 and 287 do not exist, but we must include them in the
+ * tree construction to get a canonical Huffman tree (longest code
+ * all ones)
+ */
+ gen_codes(static_ltree, L_CODES+1, bl_count);
+
+ /* The static distance tree is trivial: */
+ for (n = 0; n < D_CODES; n++) {
+ static_dtree[n*2 + 1]/*.Len*/ = 5;
+ static_dtree[n*2]/*.Code*/ = bi_reverse(n, 5);
+ }
+
+ // Now data ready and we can init static trees
+ static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS);
+ static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);
+ static_bl_desc =new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);
+
+ //static_init_done = true;
+}
+
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+function init_block(s) {
+ var n; /* iterates over tree elements */
+
+ /* Initialize the trees. */
+ for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n*2]/*.Freq*/ = 0; }
+ for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n*2]/*.Freq*/ = 0; }
+ for (n = 0; n < BL_CODES; n++) { s.bl_tree[n*2]/*.Freq*/ = 0; }
+
+ s.dyn_ltree[END_BLOCK*2]/*.Freq*/ = 1;
+ s.opt_len = s.static_len = 0;
+ s.last_lit = s.matches = 0;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+function bi_windup(s)
+{
+ if (s.bi_valid > 8) {
+ put_short(s, s.bi_buf);
+ } else if (s.bi_valid > 0) {
+ //put_byte(s, (Byte)s->bi_buf);
+ s.pending_buf[s.pending++] = s.bi_buf;
+ }
+ s.bi_buf = 0;
+ s.bi_valid = 0;
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+function copy_block(s, buf, len, header)
+//DeflateState *s;
+//charf *buf; /* the input data */
+//unsigned len; /* its length */
+//int header; /* true if block header must be written */
+{
+ bi_windup(s); /* align on byte boundary */
+
+ if (header) {
+ put_short(s, len);
+ put_short(s, ~len);
+ }
+// while (len--) {
+// put_byte(s, *buf++);
+// }
+ utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
+ s.pending += len;
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+function smaller(tree, n, m, depth) {
+ var _n2 = n*2;
+ var _m2 = m*2;
+ return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
+ (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
+}
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+function pqdownheap(s, tree, k)
+// deflate_state *s;
+// ct_data *tree; /* the tree to restore */
+// int k; /* node to move down */
+{
+ var v = s.heap[k];
+ var j = k << 1; /* left son of k */
+ while (j <= s.heap_len) {
+ /* Set j to the smallest of the two sons: */
+ if (j < s.heap_len &&
+ smaller(tree, s.heap[j+1], s.heap[j], s.depth)) {
+ j++;
+ }
+ /* Exit if v is smaller than both sons */
+ if (smaller(tree, v, s.heap[j], s.depth)) { break; }
+
+ /* Exchange v with the smallest son */
+ s.heap[k] = s.heap[j];
+ k = j;
+
+ /* And continue down the tree, setting j to the left son of k */
+ j <<= 1;
+ }
+ s.heap[k] = v;
+}
+
+
+// inlined manually
+// var SMALLEST = 1;
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+function compress_block(s, ltree, dtree)
+// deflate_state *s;
+// const ct_data *ltree; /* literal tree */
+// const ct_data *dtree; /* distance tree */
+{
+ var dist; /* distance of matched string */
+ var lc; /* match length or unmatched char (if dist == 0) */
+ var lx = 0; /* running index in l_buf */
+ var code; /* the code to send */
+ var extra; /* number of extra bits to send */
+
+ if (s.last_lit !== 0) {
+ do {
+ dist = (s.pending_buf[s.d_buf + lx*2] << 8) | (s.pending_buf[s.d_buf + lx*2 + 1]);
+ lc = s.pending_buf[s.l_buf + lx];
+ lx++;
+
+ if (dist === 0) {
+ send_code(s, lc, ltree); /* send a literal byte */
+ //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+ } else {
+ /* Here, lc is the match length - MIN_MATCH */
+ code = _length_code[lc];
+ send_code(s, code+LITERALS+1, ltree); /* send the length code */
+ extra = extra_lbits[code];
+ if (extra !== 0) {
+ lc -= base_length[code];
+ send_bits(s, lc, extra); /* send the extra length bits */
+ }
+ dist--; /* dist is now the match distance - 1 */
+ code = d_code(dist);
+ //Assert (code < D_CODES, "bad d_code");
+
+ send_code(s, code, dtree); /* send the distance code */
+ extra = extra_dbits[code];
+ if (extra !== 0) {
+ dist -= base_dist[code];
+ send_bits(s, dist, extra); /* send the extra distance bits */
+ }
+ } /* literal or match pair ? */
+
+ /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+ //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+ // "pendingBuf overflow");
+
+ } while (lx < s.last_lit);
+ }
+
+ send_code(s, END_BLOCK, ltree);
+}
+
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ * and corresponding code. The length opt_len is updated; static_len is
+ * also updated if stree is not null. The field max_code is set.
+ */
+function build_tree(s, desc)
+// deflate_state *s;
+// tree_desc *desc; /* the tree descriptor */
+{
+ var tree = desc.dyn_tree;
+ var stree = desc.stat_desc.static_tree;
+ var has_stree = desc.stat_desc.has_stree;
+ var elems = desc.stat_desc.elems;
+ var n, m; /* iterate over heap elements */
+ var max_code = -1; /* largest code with non zero frequency */
+ var node; /* new node being created */
+
+ /* Construct the initial heap, with least frequent element in
+ * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+ * heap[0] is not used.
+ */
+ s.heap_len = 0;
+ s.heap_max = HEAP_SIZE;
+
+ for (n = 0; n < elems; n++) {
+ if (tree[n * 2]/*.Freq*/ !== 0) {
+ s.heap[++s.heap_len] = max_code = n;
+ s.depth[n] = 0;
+
+ } else {
+ tree[n*2 + 1]/*.Len*/ = 0;
+ }
+ }
+
+ /* The pkzip format requires that at least one distance code exists,
+ * and that at least one bit should be sent even if there is only one
+ * possible code. So to avoid special checks later on we force at least
+ * two codes of non zero frequency.
+ */
+ while (s.heap_len < 2) {
+ node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
+ tree[node * 2]/*.Freq*/ = 1;
+ s.depth[node] = 0;
+ s.opt_len--;
+
+ if (has_stree) {
+ s.static_len -= stree[node*2 + 1]/*.Len*/;
+ }
+ /* node is 0 or 1 so it does not have extra bits */
+ }
+ desc.max_code = max_code;
+
+ /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+ * establish sub-heaps of increasing lengths:
+ */
+ for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
+
+ /* Construct the Huffman tree by repeatedly combining the least two
+ * frequent nodes.
+ */
+ node = elems; /* next internal node of the tree */
+ do {
+ //pqremove(s, tree, n); /* n = node of least frequency */
+ /*** pqremove ***/
+ n = s.heap[1/*SMALLEST*/];
+ s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
+ pqdownheap(s, tree, 1/*SMALLEST*/);
+ /***/
+
+ m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
+
+ s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
+ s.heap[--s.heap_max] = m;
+
+ /* Create a new node father of n and m */
+ tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
+ s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
+ tree[n*2 + 1]/*.Dad*/ = tree[m*2 + 1]/*.Dad*/ = node;
+
+ /* and insert the new node in the heap */
+ s.heap[1/*SMALLEST*/] = node++;
+ pqdownheap(s, tree, 1/*SMALLEST*/);
+
+ } while (s.heap_len >= 2);
+
+ s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
+
+ /* At this point, the fields freq and dad are set. We can now
+ * generate the bit lengths.
+ */
+ gen_bitlen(s, desc);
+
+ /* The field len is now set, we can generate the bit codes */
+ gen_codes(tree, max_code, s.bl_count);
+}
+
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+function scan_tree(s, tree, max_code)
+// deflate_state *s;
+// ct_data *tree; /* the tree to be scanned */
+// int max_code; /* and its largest code of non zero frequency */
+{
+ var n; /* iterates over all tree elements */
+ var prevlen = -1; /* last emitted length */
+ var curlen; /* length of current code */
+
+ var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+ var count = 0; /* repeat count of the current code */
+ var max_count = 7; /* max repeat count */
+ var min_count = 4; /* min repeat count */
+
+ if (nextlen === 0) {
+ max_count = 138;
+ min_count = 3;
+ }
+ tree[(max_code+1)*2 + 1]/*.Len*/ = 0xffff; /* guard */
+
+ for (n = 0; n <= max_code; n++) {
+ curlen = nextlen;
+ nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+ if (++count < max_count && curlen === nextlen) {
+ continue;
+
+ } else if (count < min_count) {
+ s.bl_tree[curlen * 2]/*.Freq*/ += count;
+
+ } else if (curlen !== 0) {
+
+ if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
+ s.bl_tree[REP_3_6*2]/*.Freq*/++;
+
+ } else if (count <= 10) {
+ s.bl_tree[REPZ_3_10*2]/*.Freq*/++;
+
+ } else {
+ s.bl_tree[REPZ_11_138*2]/*.Freq*/++;
+ }
+
+ count = 0;
+ prevlen = curlen;
+
+ if (nextlen === 0) {
+ max_count = 138;
+ min_count = 3;
+
+ } else if (curlen === nextlen) {
+ max_count = 6;
+ min_count = 3;
+
+ } else {
+ max_count = 7;
+ min_count = 4;
+ }
+ }
+}
+
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+function send_tree(s, tree, max_code)
+// deflate_state *s;
+// ct_data *tree; /* the tree to be scanned */
+// int max_code; /* and its largest code of non zero frequency */
+{
+ var n; /* iterates over all tree elements */
+ var prevlen = -1; /* last emitted length */
+ var curlen; /* length of current code */
+
+ var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+ var count = 0; /* repeat count of the current code */
+ var max_count = 7; /* max repeat count */
+ var min_count = 4; /* min repeat count */
+
+ /* tree[max_code+1].Len = -1; */ /* guard already set */
+ if (nextlen === 0) {
+ max_count = 138;
+ min_count = 3;
+ }
+
+ for (n = 0; n <= max_code; n++) {
+ curlen = nextlen;
+ nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+ if (++count < max_count && curlen === nextlen) {
+ continue;
+
+ } else if (count < min_count) {
+ do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
+
+ } else if (curlen !== 0) {
+ if (curlen !== prevlen) {
+ send_code(s, curlen, s.bl_tree);
+ count--;
+ }
+ //Assert(count >= 3 && count <= 6, " 3_6?");
+ send_code(s, REP_3_6, s.bl_tree);
+ send_bits(s, count-3, 2);
+
+ } else if (count <= 10) {
+ send_code(s, REPZ_3_10, s.bl_tree);
+ send_bits(s, count-3, 3);
+
+ } else {
+ send_code(s, REPZ_11_138, s.bl_tree);
+ send_bits(s, count-11, 7);
+ }
+
+ count = 0;
+ prevlen = curlen;
+ if (nextlen === 0) {
+ max_count = 138;
+ min_count = 3;
+
+ } else if (curlen === nextlen) {
+ max_count = 6;
+ min_count = 3;
+
+ } else {
+ max_count = 7;
+ min_count = 4;
+ }
+ }
+}
+
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+function build_bl_tree(s) {
+ var max_blindex; /* index of last bit length code of non zero freq */
+
+ /* Determine the bit length frequencies for literal and distance trees */
+ scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
+ scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
+
+ /* Build the bit length tree: */
+ build_tree(s, s.bl_desc);
+ /* opt_len now includes the length of the tree representations, except
+ * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+ */
+
+ /* Determine the number of bit length codes to send. The pkzip format
+ * requires that at least 4 bit length codes be sent. (appnote.txt says
+ * 3 but the actual value used is 4.)
+ */
+ for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
+ if (s.bl_tree[bl_order[max_blindex]*2 + 1]/*.Len*/ !== 0) {
+ break;
+ }
+ }
+ /* Update opt_len to include the bit length tree and counts */
+ s.opt_len += 3*(max_blindex+1) + 5+5+4;
+ //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+ // s->opt_len, s->static_len));
+
+ return max_blindex;
+}
+
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+function send_all_trees(s, lcodes, dcodes, blcodes)
+// deflate_state *s;
+// int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+ var rank; /* index in bl_order */
+
+ //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+ //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+ // "too many codes");
+ //Tracev((stderr, "\nbl counts: "));
+ send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
+ send_bits(s, dcodes-1, 5);
+ send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */
+ for (rank = 0; rank < blcodes; rank++) {
+ //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+ send_bits(s, s.bl_tree[bl_order[rank]*2 + 1]/*.Len*/, 3);
+ }
+ //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+ send_tree(s, s.dyn_ltree, lcodes-1); /* literal tree */
+ //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+ send_tree(s, s.dyn_dtree, dcodes-1); /* distance tree */
+ //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ * a) There are no non-portable control characters belonging to the
+ * "black list" (0..6, 14..25, 28..31).
+ * b) There is at least one printable character belonging to the
+ * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ * "gray list" that is ignored in this detection algorithm:
+ * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+function detect_data_type(s) {
+ /* black_mask is the bit mask of black-listed bytes
+ * set bits 0..6, 14..25, and 28..31
+ * 0xf3ffc07f = binary 11110011111111111100000001111111
+ */
+ var black_mask = 0xf3ffc07f;
+ var n;
+
+ /* Check for non-textual ("black-listed") bytes. */
+ for (n = 0; n <= 31; n++, black_mask >>>= 1) {
+ if ((black_mask & 1) && (s.dyn_ltree[n*2]/*.Freq*/ !== 0)) {
+ return Z_BINARY;
+ }
+ }
+
+ /* Check for textual ("white-listed") bytes. */
+ if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
+ s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
+ return Z_TEXT;
+ }
+ for (n = 32; n < LITERALS; n++) {
+ if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
+ return Z_TEXT;
+ }
+ }
+
+ /* There are no "black-listed" or "white-listed" bytes:
+ * this stream either is empty or has tolerated ("gray-listed") bytes only.
+ */
+ return Z_BINARY;
+}
+
+
+var static_init_done = false;
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+function _tr_init(s)
+{
+
+ if (!static_init_done) {
+ tr_static_init();
+ static_init_done = true;
+ }
+
+ s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);
+ s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);
+ s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
+
+ s.bi_buf = 0;
+ s.bi_valid = 0;
+
+ /* Initialize the first block of the first file: */
+ init_block(s);
+}
+
+
+/* ===========================================================================
+ * Send a stored block
+ */
+function _tr_stored_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf; /* input block */
+//ulg stored_len; /* length of input block */
+//int last; /* one if this is the last block for a file */
+{
+ send_bits(s, (STORED_BLOCK<<1)+(last ? 1 : 0), 3); /* send block type */
+ copy_block(s, buf, stored_len, true); /* with header */
+}
+
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+function _tr_align(s) {
+ send_bits(s, STATIC_TREES<<1, 3);
+ send_code(s, END_BLOCK, static_ltree);
+ bi_flush(s);
+}
+
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+function _tr_flush_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf; /* input block, or NULL if too old */
+//ulg stored_len; /* length of input block */
+//int last; /* one if this is the last block for a file */
+{
+ var opt_lenb, static_lenb; /* opt_len and static_len in bytes */
+ var max_blindex = 0; /* index of last bit length code of non zero freq */
+
+ /* Build the Huffman trees unless a stored block is forced */
+ if (s.level > 0) {
+
+ /* Check if the file is binary or text */
+ if (s.strm.data_type === Z_UNKNOWN) {
+ s.strm.data_type = detect_data_type(s);
+ }
+
+ /* Construct the literal and distance trees */
+ build_tree(s, s.l_desc);
+ // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+ // s->static_len));
+
+ build_tree(s, s.d_desc);
+ // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+ // s->static_len));
+ /* At this point, opt_len and static_len are the total bit lengths of
+ * the compressed block data, excluding the tree representations.
+ */
+
+ /* Build the bit length tree for the above two trees, and get the index
+ * in bl_order of the last bit length code to send.
+ */
+ max_blindex = build_bl_tree(s);
+
+ /* Determine the best encoding. Compute the block lengths in bytes. */
+ opt_lenb = (s.opt_len+3+7) >>> 3;
+ static_lenb = (s.static_len+3+7) >>> 3;
+
+ // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+ // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+ // s->last_lit));
+
+ if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
+
+ } else {
+ // Assert(buf != (char*)0, "lost buf");
+ opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+ }
+
+ if ((stored_len+4 <= opt_lenb) && (buf !== -1)) {
+ /* 4: two words for the lengths */
+
+ /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+ * Otherwise we can't have processed more than WSIZE input bytes since
+ * the last block flush, because compression would have been
+ * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+ * transform a block into a stored block.
+ */
+ _tr_stored_block(s, buf, stored_len, last);
+
+ } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
+
+ send_bits(s, (STATIC_TREES<<1) + (last ? 1 : 0), 3);
+ compress_block(s, static_ltree, static_dtree);
+
+ } else {
+ send_bits(s, (DYN_TREES<<1) + (last ? 1 : 0), 3);
+ send_all_trees(s, s.l_desc.max_code+1, s.d_desc.max_code+1, max_blindex+1);
+ compress_block(s, s.dyn_ltree, s.dyn_dtree);
+ }
+ // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+ /* The above check is made mod 2^32, for files larger than 512 MB
+ * and uLong implemented on 32 bits.
+ */
+ init_block(s);
+
+ if (last) {
+ bi_windup(s);
+ }
+ // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+ // s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+function _tr_tally(s, dist, lc)
+// deflate_state *s;
+// unsigned dist; /* distance of matched string */
+// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+ //var out_length, in_length, dcode;
+
+ s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;
+ s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
+
+ s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
+ s.last_lit++;
+
+ if (dist === 0) {
+ /* lc is the unmatched char */
+ s.dyn_ltree[lc*2]/*.Freq*/++;
+ } else {
+ s.matches++;
+ /* Here, lc is the match length - MIN_MATCH */
+ dist--; /* dist = match distance - 1 */
+ //Assert((ush)dist < (ush)MAX_DIST(s) &&
+ // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+ // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match");
+
+ s.dyn_ltree[(_length_code[lc]+LITERALS+1) * 2]/*.Freq*/++;
+ s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
+ }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+
+//#ifdef TRUNCATE_BLOCK
+// /* Try to guess if it is profitable to stop the current block here */
+// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
+// /* Compute an upper bound for the compressed length */
+// out_length = s.last_lit*8;
+// in_length = s.strstart - s.block_start;
+//
+// for (dcode = 0; dcode < D_CODES; dcode++) {
+// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
+// }
+// out_length >>>= 3;
+// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+// // s->last_lit, in_length, out_length,
+// // 100L - out_length*100L/in_length));
+// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
+// return true;
+// }
+// }
+//#endif
+
+ return (s.last_lit === s.lit_bufsize-1);
+ /* We avoid equality with lit_bufsize because of wraparound at 64K
+ * on 16 bit machines and because stored blocks are restricted to
+ * 64K-1 bytes.
+ */
+}
+
+exports._tr_init = _tr_init;
+exports._tr_stored_block = _tr_stored_block;
+exports._tr_flush_block = _tr_flush_block;
+exports._tr_tally = _tr_tally;
+exports._tr_align = _tr_align;
+},{"../utils/common":27}],39:[function(_dereq_,module,exports){
+'use strict';
+
+
+function ZStream() {
+ /* next input byte */
+ this.input = null; // JS specific, because we have no pointers
+ this.next_in = 0;
+ /* number of bytes available at input */
+ this.avail_in = 0;
+ /* total number of input bytes read so far */
+ this.total_in = 0;
+ /* next output byte should be put there */
+ this.output = null; // JS specific, because we have no pointers
+ this.next_out = 0;
+ /* remaining free space at output */
+ this.avail_out = 0;
+ /* total number of bytes output so far */
+ this.total_out = 0;
+ /* last error message, NULL if no error */
+ this.msg = ''/*Z_NULL*/;
+ /* not visible by applications */
+ this.state = null;
+ /* best guess about the data type: binary or text */
+ this.data_type = 2/*Z_UNKNOWN*/;
+ /* adler32 value of the uncompressed data */
+ this.adler = 0;
+}
+
+module.exports = ZStream;
+},{}]},{},[9])
+(9)
+});
diff --git a/restful-web-services/2.1/apidocs/jquery/jszip/dist/jszip.min.js b/restful-web-services/2.1/apidocs/jquery/jszip/dist/jszip.min.js
new file mode 100644
index 0000000000..8b8c550763
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/jquery/jszip/dist/jszip.min.js
@@ -0,0 +1,14 @@
+/*!
+
+JSZip - A Javascript class for generating and reading zip files
+
+
+(c) 2009-2014 Stuart Knightley
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.lengtha)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;gc;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b?b:!1,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var f,g=new j;return a._data instanceof j?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=i.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(f=a._data.getContent(),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c))):(f=p(a),(!f||0===f.length||a.dir)&&(b=i.STORE,f=""),g.uncompressedSize=f.length,g.crc32=e(f),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a){return 63&(a||0)},C=function(a,b,c,g,h){var i,j,k,m,n=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),o=b.comment||"",p=d.transformTo("string",l.utf8encode(o)),q=n.length!==b.name.length,r=p.length!==o.length,t=b.options,u="",v="",w="";k=b._initialMetadata.dir!==b.dir?b.dir:t.dir,m=b._initialMetadata.date!==b.date?b.date:t.date;var x=0,y=0;k&&(x|=16),"UNIX"===h?(y=798,x|=A(b.unixPermissions,k)):(y=20,x|=B(b.dosPermissions,k)),i=m.getHours(),i<<=6,i|=m.getMinutes(),i<<=5,i|=m.getSeconds()/2,j=m.getFullYear()-1980,j<<=4,j|=m.getMonth()+1,j<<=5,j|=m.getDate(),q&&(v=s(1,1)+s(e(n),4)+n,u+="up"+s(v.length,2)+v),r&&(w=s(1,1)+s(this.crc32(p),4)+p,u+="uc"+s(w.length,2)+w);var z="";z+="\n\x00",z+=q||r?"\x00\b":"\x00\x00",z+=c.compressionMethod,z+=s(i,2),z+=s(j,2),z+=s(c.crc32,4),z+=s(c.compressedSize,4),z+=s(c.uncompressedSize,4),z+=s(n.length,2),z+=s(u.length,2);var C=f.LOCAL_FILE_HEADER+z+n+u,D=f.CENTRAL_FILE_HEADER+s(y,2)+z+s(p.length,2)+"\x00\x00\x00\x00"+s(x,4)+s(g,4)+n+u+p;return{fileRecord:C,dirRecord:D,compressedObject:c}},D={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;cg&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;cb?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a>8;this.dir=16&this.externalFileAttributes?!0:!1,a===h&&(this.dosPermissions=63&this.externalFileAttributes),a===i&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileName.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead=hb&&(a.ins_h=(a.ins_h<=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=hb&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);
+break}for(c.back=0;Ab=c.lencode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++jj){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});
diff --git a/restful-web-services/2.1/apidocs/member-search-index.js b/restful-web-services/2.1/apidocs/member-search-index.js
new file mode 100644
index 0000000000..9274b53353
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/member-search-index.js
@@ -0,0 +1 @@
+memberSearchIndex = [{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"abortWith(Response)","url":"abortWith-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"abortWith(Response)","url":"abortWith-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"AbstractMultivaluedMap(Map>)","url":"AbstractMultivaluedMap-java.util.Map-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"accept(String...)","url":"accept-java.lang.String...-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"accept(MediaType...)","url":"accept-javax.ws.rs.core.MediaType...-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"ACCEPT"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"ACCEPT_CHARSET"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"ACCEPT_ENCODING"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"ACCEPT_LANGUAGE"},{"p":"javax.ws.rs.core","c":"Response","l":"accepted()"},{"p":"javax.ws.rs.core","c":"Response","l":"accepted(Object)","url":"accepted-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"ACCEPTED"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"acceptEncoding(String...)","url":"acceptEncoding-java.lang.String...-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"acceptLanguage(String...)","url":"acceptLanguage-java.lang.String...-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"acceptLanguage(Locale...)","url":"acceptLanguage-java.util.Locale...-"},{"p":"javax.ws.rs.core","c":"Variant.VariantListBuilder","l":"add()"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"add(K, V)"},{"p":"javax.ws.rs.core","c":"MultivaluedMap","l":"add(K, V)"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"addAll(K, List)","url":"addAll-K-java.util.List-"},{"p":"javax.ws.rs.core","c":"MultivaluedMap","l":"addAll(K, List)","url":"addAll-K-java.util.List-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"addAll(K, V...)"},{"p":"javax.ws.rs.core","c":"MultivaluedMap","l":"addAll(K, V...)"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"addFirst(K, V)"},{"p":"javax.ws.rs.core","c":"MultivaluedMap","l":"addFirst(K, V)"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"addFirstNull(List)","url":"addFirstNull-java.util.List-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"addNull(List)","url":"addNull-java.util.List-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"allow(String...)","url":"allow-java.lang.String...-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"allow(Set)","url":"allow-java.util.Set-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"ALLOW"},{"p":"javax.ws.rs.core","c":"Application","l":"Application()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_ATOM_XML"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_ATOM_XML_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_FORM_URLENCODED"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_FORM_URLENCODED_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_JSON"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_JSON_PATCH_JSON"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_JSON_PATCH_JSON_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_JSON_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_OCTET_STREAM"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_OCTET_STREAM_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_SVG_XML"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_SVG_XML_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_XHTML_XML"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_XHTML_XML_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_XML"},{"p":"javax.ws.rs.core","c":"MediaType","l":"APPLICATION_XML_TYPE"},{"p":"javax.ws.rs.ext","c":"ReaderInterceptor","l":"aroundReadFrom(ReaderInterceptorContext)","url":"aroundReadFrom-javax.ws.rs.ext.ReaderInterceptorContext-"},{"p":"javax.ws.rs.ext","c":"WriterInterceptor","l":"aroundWriteTo(WriterInterceptorContext)","url":"aroundWriteTo-javax.ws.rs.ext.WriterInterceptorContext-"},{"p":"javax.ws.rs.core","c":"Form","l":"asMap()"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"async()"},{"p":"javax.ws.rs","c":"Priorities","l":"AUTHENTICATION"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"AUTHORIZATION"},{"p":"javax.ws.rs","c":"Priorities","l":"AUTHORIZATION"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"BAD_GATEWAY"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"BAD_REQUEST"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException()"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException(String)","url":"BadRequestException-java.lang.String-"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException(String, Throwable)","url":"BadRequestException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException(String, Response)","url":"BadRequestException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException(String, Response, Throwable)","url":"BadRequestException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException(Throwable)","url":"BadRequestException-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException(Response)","url":"BadRequestException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"BadRequestException","l":"BadRequestException(Response, Throwable)","url":"BadRequestException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"baseUri(String)","url":"baseUri-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"baseUri(URI)","url":"baseUri-java.net.URI-"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"BASIC_AUTH"},{"p":"javax.ws.rs.sse","c":"SseBroadcaster","l":"broadcast(OutboundSseEvent)","url":"broadcast-javax.ws.rs.sse.OutboundSseEvent-"},{"p":"javax.ws.rs.core","c":"Response","l":"bufferEntity()"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"build()"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"build()"},{"p":"javax.ws.rs.core","c":"Variant.VariantListBuilder","l":"build()"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"build()"},{"p":"javax.ws.rs.sse","c":"SseEventSource.Builder","l":"build()"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"build(Object...)","url":"build-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"build(Object...)","url":"build-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"build(Object[], boolean)","url":"build-java.lang.Object:A-boolean-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"build(String)","url":"build-java.lang.String-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"build(String, Entity>)","url":"build-java.lang.String-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"buildDelete()"},{"p":"javax.ws.rs.sse","c":"SseEventSource.Builder","l":"Builder()"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"buildFromEncoded(Object...)","url":"buildFromEncoded-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"buildFromEncodedMap(Map)","url":"buildFromEncodedMap-java.util.Map-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"buildFromMap(Map)","url":"buildFromMap-java.util.Map-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"buildFromMap(Map, boolean)","url":"buildFromMap-java.util.Map-boolean-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"buildGet()"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"buildPost(Entity>)","url":"buildPost-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"buildPut(Entity>)","url":"buildPut-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"buildRelativized(URI, Object...)","url":"buildRelativized-java.net.URI-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CACHE_CONTROL"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"cacheControl(CacheControl)","url":"cacheControl-javax.ws.rs.core.CacheControl-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"cacheControl(CacheControl)","url":"cacheControl-javax.ws.rs.core.CacheControl-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"CacheControl()"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"cancel()"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"cancel(int)"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"cancel(Date)","url":"cancel-java.util.Date-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"CHARSET_PARAMETER"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"clear()"},{"p":"javax.ws.rs","c":"RuntimeType","l":"CLIENT"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"CLIENT_CERT_AUTH"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"CLIENT_ERROR"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"ClientBuilder()"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(int)"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(int, Throwable)","url":"ClientErrorException-int-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(String, int)","url":"ClientErrorException-java.lang.String-int-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(String, int, Throwable)","url":"ClientErrorException-java.lang.String-int-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(String, Response)","url":"ClientErrorException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(String, Response.Status)","url":"ClientErrorException-java.lang.String-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(String, Response.Status, Throwable)","url":"ClientErrorException-java.lang.String-javax.ws.rs.core.Response.Status-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(String, Response, Throwable)","url":"ClientErrorException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(Response)","url":"ClientErrorException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(Response.Status)","url":"ClientErrorException-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(Response.Status, Throwable)","url":"ClientErrorException-javax.ws.rs.core.Response.Status-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ClientErrorException","l":"ClientErrorException(Response, Throwable)","url":"ClientErrorException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"clone()"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"clone()"},{"p":"javax.ws.rs.client","c":"Client","l":"close()"},{"p":"javax.ws.rs.core","c":"Response","l":"close()"},{"p":"javax.ws.rs.sse","c":"SseBroadcaster","l":"close()"},{"p":"javax.ws.rs.sse","c":"SseEventSink","l":"close()"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"close()"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"close(long, TimeUnit)","url":"close-long-java.util.concurrent.TimeUnit-"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"comment(String)","url":"comment-java.lang.String-"},{"p":"javax.ws.rs.client","c":"InvocationCallback","l":"completed(RESPONSE)"},{"p":"javax.ws.rs.container","c":"DynamicFeature","l":"configure(ResourceInfo, FeatureContext)","url":"configure-javax.ws.rs.container.ResourceInfo-javax.ws.rs.core.FeatureContext-"},{"p":"javax.ws.rs.core","c":"Feature","l":"configure(FeatureContext)","url":"configure-javax.ws.rs.core.FeatureContext-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"CONFLICT"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"connectTimeout(long, TimeUnit)","url":"connectTimeout-long-java.util.concurrent.TimeUnit-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"containsKey(Object)","url":"containsKey-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"containsValue(Object)","url":"containsValue-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CONTENT_DISPOSITION"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CONTENT_ENCODING"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CONTENT_ID"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CONTENT_LANGUAGE"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CONTENT_LENGTH"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CONTENT_LOCATION"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"CONTENT_TYPE"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"contentLocation(URI)","url":"contentLocation-java.net.URI-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"cookie(String, String)","url":"cookie-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"cookie(Cookie)","url":"cookie-javax.ws.rs.core.Cookie-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"cookie(NewCookie...)","url":"cookie-javax.ws.rs.core.NewCookie...-"},{"p":"javax.ws.rs.core","c":"Cookie","l":"Cookie(String, String)","url":"Cookie-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Cookie","l":"Cookie(String, String, String, String)","url":"Cookie-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Cookie","l":"Cookie(String, String, String, String, int)","url":"Cookie-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"COOKIE"},{"p":"javax.ws.rs.core","c":"Response","l":"created(URI)","url":"created-java.net.URI-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"CREATED"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"createEndpoint(Application, Class)","url":"createEndpoint-javax.ws.rs.core.Application-java.lang.Class-"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"createHeaderDelegate(Class)","url":"createHeaderDelegate-java.lang.Class-"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"createLinkBuilder()"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"createResponseBuilder()"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"createUriBuilder()"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"createVariantListBuilder()"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"data(Class, Object)","url":"data-java.lang.Class-java.lang.Object-"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"data(Object)","url":"data-java.lang.Object-"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"data(GenericType, Object)","url":"data-javax.ws.rs.core.GenericType-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"DATE"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"DEFAULT_MAX_AGE"},{"p":"javax.ws.rs.core","c":"Cookie","l":"DEFAULT_VERSION"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"delete()"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"delete()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"delete()"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"delete()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"delete(Class)","url":"delete-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"delete(Class)","url":"delete-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"delete(Class)","url":"delete-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"delete(Class)","url":"delete-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"delete(InvocationCallback)","url":"delete-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"delete(GenericType)","url":"delete-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"delete(GenericType)","url":"delete-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"delete(GenericType)","url":"delete-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"delete(GenericType)","url":"delete-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs","c":"HttpMethod","l":"DELETE"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"DIGEST_AUTH"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"encoding(String)","url":"encoding-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Variant","l":"encodings(String...)","url":"encodings-java.lang.String...-"},{"p":"javax.ws.rs.core","c":"Variant.VariantListBuilder","l":"encodings(String...)","url":"encodings-java.lang.String...-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"entity(Object)","url":"entity-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"entity(Object, Annotation[])","url":"entity-java.lang.Object-java.lang.annotation.Annotation:A-"},{"p":"javax.ws.rs.client","c":"Entity","l":"entity(T, String)","url":"entity-T-java.lang.String-"},{"p":"javax.ws.rs.client","c":"Entity","l":"entity(T, MediaType)","url":"entity-T-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.client","c":"Entity","l":"entity(T, MediaType, Annotation[])","url":"entity-T-javax.ws.rs.core.MediaType-java.lang.annotation.Annotation:A-"},{"p":"javax.ws.rs.client","c":"Entity","l":"entity(T, Variant)","url":"entity-T-javax.ws.rs.core.Variant-"},{"p":"javax.ws.rs.client","c":"Entity","l":"entity(T, Variant, Annotation[])","url":"entity-T-javax.ws.rs.core.Variant-java.lang.annotation.Annotation:A-"},{"p":"javax.ws.rs","c":"Priorities","l":"ENTITY_CODER"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"EntityTag(String)","url":"EntityTag-java.lang.String-"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"EntityTag(String, boolean)","url":"EntityTag-java.lang.String-boolean-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"entrySet()"},{"p":"javax.ws.rs.client","c":"Entity","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Cookie","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"GenericType","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Link.JaxbLink","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Variant","l":"equals(Object)","url":"equals-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"equalsIgnoreValueOrder(MultivaluedMap)","url":"equalsIgnoreValueOrder-javax.ws.rs.core.MultivaluedMap-"},{"p":"javax.ws.rs.core","c":"MultivaluedMap","l":"equalsIgnoreValueOrder(MultivaluedMap)","url":"equalsIgnoreValueOrder-javax.ws.rs.core.MultivaluedMap-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"ETAG"},{"p":"javax.ws.rs.core","c":"Request","l":"evaluatePreconditions()"},{"p":"javax.ws.rs.core","c":"Request","l":"evaluatePreconditions(Date)","url":"evaluatePreconditions-java.util.Date-"},{"p":"javax.ws.rs.core","c":"Request","l":"evaluatePreconditions(Date, EntityTag)","url":"evaluatePreconditions-java.util.Date-javax.ws.rs.core.EntityTag-"},{"p":"javax.ws.rs.core","c":"Request","l":"evaluatePreconditions(EntityTag)","url":"evaluatePreconditions-javax.ws.rs.core.EntityTag-"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"executorService(ExecutorService)","url":"executorService-java.util.concurrent.ExecutorService-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"EXPECTATION_FAILED"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"expires(Date)","url":"expires-java.util.Date-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"EXPIRES"},{"p":"javax.ws.rs.client","c":"InvocationCallback","l":"failed(Throwable)","url":"failed-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"familyOf(int)"},{"p":"javax.ws.rs.client","c":"ClientRequestFilter","l":"filter(ClientRequestContext)","url":"filter-javax.ws.rs.client.ClientRequestContext-"},{"p":"javax.ws.rs.client","c":"ClientResponseFilter","l":"filter(ClientRequestContext, ClientResponseContext)","url":"filter-javax.ws.rs.client.ClientRequestContext-javax.ws.rs.client.ClientResponseContext-"},{"p":"javax.ws.rs.container","c":"ContainerRequestFilter","l":"filter(ContainerRequestContext)","url":"filter-javax.ws.rs.container.ContainerRequestContext-"},{"p":"javax.ws.rs.container","c":"ContainerResponseFilter","l":"filter(ContainerRequestContext, ContainerResponseContext)","url":"filter-javax.ws.rs.container.ContainerRequestContext-javax.ws.rs.container.ContainerResponseContext-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"FORBIDDEN"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException()"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException(String)","url":"ForbiddenException-java.lang.String-"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException(String, Throwable)","url":"ForbiddenException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException(String, Response)","url":"ForbiddenException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException(String, Response, Throwable)","url":"ForbiddenException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException(Throwable)","url":"ForbiddenException-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException(Response)","url":"ForbiddenException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ForbiddenException","l":"ForbiddenException(Response, Throwable)","url":"ForbiddenException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"GenericType","l":"forInstance(Object)","url":"forInstance-java.lang.Object-"},{"p":"javax.ws.rs.client","c":"Entity","l":"form(Form)","url":"form-javax.ws.rs.core.Form-"},{"p":"javax.ws.rs.client","c":"Entity","l":"form(MultivaluedMap)","url":"form-javax.ws.rs.core.MultivaluedMap-"},{"p":"javax.ws.rs.core","c":"Form","l":"Form()"},{"p":"javax.ws.rs.core","c":"Form","l":"Form(String, String)","url":"Form-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Form","l":"Form(MultivaluedMap)","url":"Form-javax.ws.rs.core.MultivaluedMap-"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"FORM_AUTH"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"FOUND"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"fragment(String)","url":"fragment-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"fromLink(Link)","url":"fromLink-javax.ws.rs.core.Link-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"fromLink(Link)","url":"fromLink-javax.ws.rs.core.Link-"},{"p":"javax.ws.rs.core","c":"Link","l":"fromMethod(Class>, String)","url":"fromMethod-java.lang.Class-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"fromMethod(Class>, String)","url":"fromMethod-java.lang.Class-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"fromPath(String)","url":"fromPath-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"fromPath(String)","url":"fromPath-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"fromResource(Class>)","url":"fromResource-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"fromResource(Class>)","url":"fromResource-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"Response","l":"fromResponse(Response)","url":"fromResponse-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"fromStatusCode(int)"},{"p":"javax.ws.rs.ext","c":"ParamConverter","l":"fromString(String)","url":"fromString-java.lang.String-"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate.HeaderDelegate","l":"fromString(String)","url":"fromString-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"fromUri(String)","url":"fromUri-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"fromUri(String)","url":"fromUri-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"fromUri(URI)","url":"fromUri-java.net.URI-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"fromUri(URI)","url":"fromUri-java.net.URI-"},{"p":"javax.ws.rs.core","c":"Link","l":"fromUriBuilder(UriBuilder)","url":"fromUriBuilder-javax.ws.rs.core.UriBuilder-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"GATEWAY_TIMEOUT"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"GenericEntity(T)"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"GenericEntity(T, Type)","url":"GenericEntity-T-java.lang.reflect.Type-"},{"p":"javax.ws.rs.core","c":"GenericType","l":"GenericType()"},{"p":"javax.ws.rs.core","c":"GenericType","l":"GenericType(Type)","url":"GenericType-java.lang.reflect.Type-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"get()"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"get()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"get()"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"get()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"get(Class)","url":"get-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"get(Class)","url":"get-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"get(Class)","url":"get-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"get(Class)","url":"get-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"get(Object)","url":"get-java.lang.Object-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"get(InvocationCallback)","url":"get-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"get(GenericType)","url":"get-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"get(GenericType)","url":"get-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"get(GenericType)","url":"get-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"get(GenericType)","url":"get-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs","c":"HttpMethod","l":"GET"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getAbsolutePath()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getAbsolutePathBuilder()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getAcceptableLanguages()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getAcceptableLanguages()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getAcceptableLanguages()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getAcceptableMediaTypes()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getAcceptableMediaTypes()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getAcceptableMediaTypes()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getAllowedMethods()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getAllowedMethods()"},{"p":"javax.ws.rs.core","c":"Response","l":"getAllowedMethods()"},{"p":"javax.ws.rs.client","c":"Entity","l":"getAnnotations()"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"getAnnotations()"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"getAuthenticationScheme()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getBaseUri()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getBaseUriBuilder()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"getCacheExtension()"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"getChallenges()"},{"p":"javax.ws.rs.core","c":"Application","l":"getClasses()"},{"p":"javax.ws.rs.core","c":"Configuration","l":"getClasses()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getClient()"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"getComment()"},{"p":"javax.ws.rs.sse","c":"SseEvent","l":"getComment()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getConfiguration()"},{"p":"javax.ws.rs.core","c":"Configurable","l":"getConfiguration()"},{"p":"javax.ws.rs.ext","c":"ContextResolver","l":"getContext(Class>)","url":"getContext-java.lang.Class-"},{"p":"javax.ws.rs.ext","c":"Providers","l":"getContextResolver(Class, MediaType)","url":"getContextResolver-java.lang.Class-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"Configuration","l":"getContracts(Class>)","url":"getContracts-java.lang.Class-"},{"p":"javax.ws.rs.ext","c":"ParamConverterProvider","l":"getConverter(Class, Type, Annotation[])","url":"getConverter-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getCookies()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getCookies()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getCookies()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getCookies()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getCookies()"},{"p":"javax.ws.rs.core","c":"Response","l":"getCookies()"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent","l":"getData()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getDate()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getDate()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getDate()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getDate()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getDate()"},{"p":"javax.ws.rs.core","c":"Response","l":"getDate()"},{"p":"javax.ws.rs.core","c":"Cookie","l":"getDomain()"},{"p":"javax.ws.rs.client","c":"Entity","l":"getEncoding()"},{"p":"javax.ws.rs.core","c":"Variant","l":"getEncoding()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getEntity()"},{"p":"javax.ws.rs.client","c":"Entity","l":"getEntity()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getEntity()"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"getEntity()"},{"p":"javax.ws.rs.core","c":"Response","l":"getEntity()"},{"p":"javax.ws.rs.ext","c":"WriterInterceptorContext","l":"getEntity()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getEntityAnnotations()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getEntityAnnotations()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getEntityClass()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getEntityClass()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getEntityStream()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getEntityStream()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getEntityStream()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getEntityStream()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getEntityTag()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getEntityTag()"},{"p":"javax.ws.rs.core","c":"Response","l":"getEntityTag()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getEntityType()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getEntityType()"},{"p":"javax.ws.rs.ext","c":"Providers","l":"getExceptionMapper(Class)","url":"getExceptionMapper-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"getExpiry()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"getFamily()"},{"p":"javax.ws.rs.core","c":"Response.StatusType","l":"getFamily()"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"getFirst(K)"},{"p":"javax.ws.rs.core","c":"MultivaluedMap","l":"getFirst(K)"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"getGenericType()"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent","l":"getGenericType()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getHeaders()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getHeaders()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getHeaders()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getHeaders()"},{"p":"javax.ws.rs.core","c":"Response","l":"getHeaders()"},{"p":"javax.ws.rs.ext","c":"ReaderInterceptorContext","l":"getHeaders()"},{"p":"javax.ws.rs.ext","c":"WriterInterceptorContext","l":"getHeaders()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getHeaderString(String)","url":"getHeaderString-java.lang.String-"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getHeaderString(String)","url":"getHeaderString-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getHeaderString(String)","url":"getHeaderString-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getHeaderString(String)","url":"getHeaderString-java.lang.String-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getHeaderString(String)","url":"getHeaderString-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response","l":"getHeaderString(String)","url":"getHeaderString-java.lang.String-"},{"p":"javax.ws.rs.client","c":"Client","l":"getHostnameVerifier()"},{"p":"javax.ws.rs.sse","c":"SseEvent","l":"getId()"},{"p":"javax.ws.rs.ext","c":"ReaderInterceptorContext","l":"getInputStream()"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"getInstance()"},{"p":"javax.ws.rs.core","c":"Configuration","l":"getInstances()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getLanguage()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getLanguage()"},{"p":"javax.ws.rs.client","c":"Entity","l":"getLanguage()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getLanguage()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getLanguage()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getLanguage()"},{"p":"javax.ws.rs.core","c":"Response","l":"getLanguage()"},{"p":"javax.ws.rs.core","c":"Variant","l":"getLanguage()"},{"p":"javax.ws.rs.core","c":"Variant","l":"getLanguageString()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getLastModified()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getLastModified()"},{"p":"javax.ws.rs.core","c":"Response","l":"getLastModified()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getLength()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getLength()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getLength()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getLength()"},{"p":"javax.ws.rs.core","c":"Response","l":"getLength()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getLink(String)","url":"getLink-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getLink(String)","url":"getLink-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response","l":"getLink(String)","url":"getLink-java.lang.String-"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getLinkBuilder(String)","url":"getLinkBuilder-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getLinkBuilder(String)","url":"getLinkBuilder-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response","l":"getLinkBuilder(String)","url":"getLinkBuilder-java.lang.String-"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getLinks()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getLinks()"},{"p":"javax.ws.rs.core","c":"Response","l":"getLinks()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getLocation()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getLocation()"},{"p":"javax.ws.rs.core","c":"Response","l":"getLocation()"},{"p":"javax.ws.rs","c":"RedirectionException","l":"getLocation()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getMatchedResources()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getMatchedURIs()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getMatchedURIs(boolean)"},{"p":"javax.ws.rs.core","c":"PathSegment","l":"getMatrixParameters()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"getMaxAge()"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"getMaxAge()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getMediaType()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getMediaType()"},{"p":"javax.ws.rs.client","c":"Entity","l":"getMediaType()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getMediaType()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getMediaType()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getMediaType()"},{"p":"javax.ws.rs.core","c":"Response","l":"getMediaType()"},{"p":"javax.ws.rs.core","c":"Variant","l":"getMediaType()"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"getMediaType()"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent","l":"getMediaType()"},{"p":"javax.ws.rs.ext","c":"Providers","l":"getMessageBodyReader(Class, Type, Annotation[], MediaType)","url":"getMessageBodyReader-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.ext","c":"Providers","l":"getMessageBodyWriter(Class, Type, Annotation[], MediaType)","url":"getMessageBodyWriter-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"Response","l":"getMetadata()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getMethod()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getMethod()"},{"p":"javax.ws.rs.core","c":"Request","l":"getMethod()"},{"p":"javax.ws.rs.core","c":"Cookie","l":"getName()"},{"p":"javax.ws.rs.sse","c":"SseEvent","l":"getName()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"getNoCacheFields()"},{"p":"javax.ws.rs.ext","c":"WriterInterceptorContext","l":"getOutputStream()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"getParameters()"},{"p":"javax.ws.rs.core","c":"Link","l":"getParams()"},{"p":"javax.ws.rs.core","c":"Link.JaxbLink","l":"getParams()"},{"p":"javax.ws.rs.core","c":"Cookie","l":"getPath()"},{"p":"javax.ws.rs.core","c":"PathSegment","l":"getPath()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getPath()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getPath(boolean)"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getPathParameters()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getPathParameters(boolean)"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getPathSegments()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getPathSegments(boolean)"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"getPrivateFields()"},{"p":"javax.ws.rs.core","c":"Application","l":"getProperties()"},{"p":"javax.ws.rs.core","c":"Configuration","l":"getProperties()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getProperty(String)","url":"getProperty-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getProperty(String)","url":"getProperty-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Configuration","l":"getProperty(String)","url":"getProperty-java.lang.String-"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"getProperty(String)","url":"getProperty-java.lang.String-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getPropertyNames()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getPropertyNames()"},{"p":"javax.ws.rs.core","c":"Configuration","l":"getPropertyNames()"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"getPropertyNames()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getQueryParameters()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getQueryParameters(boolean)"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"getRawType()"},{"p":"javax.ws.rs.core","c":"GenericType","l":"getRawType()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"getReasonPhrase()"},{"p":"javax.ws.rs.core","c":"Response.StatusType","l":"getReasonPhrase()"},{"p":"javax.ws.rs.sse","c":"SseEvent","l":"getReconnectDelay()"},{"p":"javax.ws.rs.core","c":"Link","l":"getRel()"},{"p":"javax.ws.rs.core","c":"Link","l":"getRels()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getRequest()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getRequestHeader(String)","url":"getRequestHeader-java.lang.String-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"getRequestHeaders()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getRequestUri()"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"getRequestUriBuilder()"},{"p":"javax.ws.rs.container","c":"ResourceContext","l":"getResource(Class)","url":"getResource-java.lang.Class-"},{"p":"javax.ws.rs.container","c":"ResourceInfo","l":"getResourceClass()"},{"p":"javax.ws.rs.container","c":"ResourceInfo","l":"getResourceMethod()"},{"p":"javax.ws.rs.client","c":"ResponseProcessingException","l":"getResponse()"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"getResponse()"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"getRetryTime(Date)","url":"getRetryTime-java.util.Date-"},{"p":"javax.ws.rs.core","c":"Configuration","l":"getRuntimeType()"},{"p":"javax.ws.rs.client","c":"RxInvokerProvider","l":"getRxInvoker(SyncInvoker, ExecutorService)","url":"getRxInvoker-javax.ws.rs.client.SyncInvoker-java.util.concurrent.ExecutorService-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getSecurityContext()"},{"p":"javax.ws.rs.core","c":"Application","l":"getSingletons()"},{"p":"javax.ws.rs.ext","c":"MessageBodyWriter","l":"getSize(T, Class>, Type, Annotation[], MediaType)","url":"getSize-T-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"getSMaxAge()"},{"p":"javax.ws.rs.client","c":"Client","l":"getSslContext()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getStatus()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getStatus()"},{"p":"javax.ws.rs.core","c":"Response","l":"getStatus()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"getStatusCode()"},{"p":"javax.ws.rs.core","c":"Response.StatusType","l":"getStatusCode()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"getStatusInfo()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getStatusInfo()"},{"p":"javax.ws.rs.core","c":"Response","l":"getStatusInfo()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getStringHeaders()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"getStringHeaders()"},{"p":"javax.ws.rs.core","c":"Response","l":"getStringHeaders()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"getSubtype()"},{"p":"javax.ws.rs.core","c":"Link","l":"getTitle()"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"getType()"},{"p":"javax.ws.rs.core","c":"GenericType","l":"getType()"},{"p":"javax.ws.rs.core","c":"Link","l":"getType()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"getType()"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"getType()"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent","l":"getType()"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"getUri()"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"getUri()"},{"p":"javax.ws.rs.core","c":"Link","l":"getUri()"},{"p":"javax.ws.rs.core","c":"Link.JaxbLink","l":"getUri()"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"getUriBuilder()"},{"p":"javax.ws.rs.core","c":"Link","l":"getUriBuilder()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"getUriInfo()"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"getUserPrincipal()"},{"p":"javax.ws.rs.core","c":"Cookie","l":"getValue()"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"getValue()"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"getValues(K)"},{"p":"javax.ws.rs.client","c":"Entity","l":"getVariant()"},{"p":"javax.ws.rs.core","c":"Cookie","l":"getVersion()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"GONE"},{"p":"javax.ws.rs.container","c":"TimeoutHandler","l":"handleTimeout(AsyncResponse)","url":"handleTimeout-javax.ws.rs.container.AsyncResponse-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"hasEntity()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"hasEntity()"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"hasEntity()"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"hasEntity()"},{"p":"javax.ws.rs.core","c":"Response","l":"hasEntity()"},{"p":"javax.ws.rs.client","c":"Entity","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"Cookie","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"GenericType","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"Link.JaxbLink","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"hashCode()"},{"p":"javax.ws.rs.core","c":"Variant","l":"hashCode()"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"hasLink(String)","url":"hasLink-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"hasLink(String)","url":"hasLink-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response","l":"hasLink(String)","url":"hasLink-java.lang.String-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"hasRetryAfter()"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"head()"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"head()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"head()"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"head()"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"head(InvocationCallback)","url":"head-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs","c":"HttpMethod","l":"HEAD"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"header(String, Object)","url":"header-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"header(String, Object)","url":"header-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs","c":"Priorities","l":"HEADER_DECORATOR"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"headers(MultivaluedMap)","url":"headers-javax.ws.rs.core.MultivaluedMap-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"host(String)","url":"host-java.lang.String-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"HOST"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"hostnameVerifier(HostnameVerifier)","url":"hostnameVerifier-javax.net.ssl.HostnameVerifier-"},{"p":"javax.ws.rs.client","c":"Entity","l":"html(T)"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"HTTP_VERSION_NOT_SUPPORTED"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"id(String)","url":"id-java.lang.String-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"IF_MATCH"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"IF_MODIFIED_SINCE"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"IF_NONE_MATCH"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"IF_UNMODIFIED_SINCE"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"INFORMATIONAL"},{"p":"javax.ws.rs.container","c":"ResourceContext","l":"initResource(T)"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"INTERNAL_SERVER_ERROR"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException()"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException(String)","url":"InternalServerErrorException-java.lang.String-"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException(String, Throwable)","url":"InternalServerErrorException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException(String, Response)","url":"InternalServerErrorException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException(String, Response, Throwable)","url":"InternalServerErrorException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException(Throwable)","url":"InternalServerErrorException-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException(Response)","url":"InternalServerErrorException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"InternalServerErrorException","l":"InternalServerErrorException(Response, Throwable)","url":"InternalServerErrorException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.client","c":"Client","l":"invocation(Link)","url":"invocation-javax.ws.rs.core.Link-"},{"p":"javax.ws.rs.client","c":"Invocation","l":"invoke()"},{"p":"javax.ws.rs.client","c":"Invocation","l":"invoke(Class)","url":"invoke-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"Invocation","l":"invoke(GenericType)","url":"invoke-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"isCancelled()"},{"p":"javax.ws.rs.sse","c":"SseEventSink","l":"isClosed()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"isCompatible(MediaType)","url":"isCompatible-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"isDone()"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"isEmpty()"},{"p":"javax.ws.rs.sse","c":"InboundSseEvent","l":"isEmpty()"},{"p":"javax.ws.rs.core","c":"Configuration","l":"isEnabled(Class extends Feature>)","url":"isEnabled-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"Configuration","l":"isEnabled(Feature)","url":"isEnabled-javax.ws.rs.core.Feature-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"isHttpOnly()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"isMustRevalidate()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"isNoCache()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"isNoStore()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"isNoTransform()"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"isOpen()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"isPrivate()"},{"p":"javax.ws.rs.client","c":"RxInvokerProvider","l":"isProviderFor(Class>)","url":"isProviderFor-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"isProxyRevalidate()"},{"p":"javax.ws.rs.ext","c":"MessageBodyReader","l":"isReadable(Class>, Type, Annotation[], MediaType)","url":"isReadable-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.sse","c":"SseEvent","l":"isReconnectDelaySet()"},{"p":"javax.ws.rs.core","c":"Configuration","l":"isRegistered(Class>)","url":"isRegistered-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"Configuration","l":"isRegistered(Object)","url":"isRegistered-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"isSecure()"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"isSecure()"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"isSuspended()"},{"p":"javax.ws.rs.core","c":"SecurityContext","l":"isUserInRole(String)","url":"isUserInRole-java.lang.String-"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"isWeak()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"isWildcardSubtype()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"isWildcardType()"},{"p":"javax.ws.rs.ext","c":"MessageBodyWriter","l":"isWriteable(Class>, Type, Annotation[], MediaType)","url":"isWriteable-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"Link.JaxbAdapter","l":"JaxbAdapter()"},{"p":"javax.ws.rs.core","c":"Link.JaxbLink","l":"JaxbLink()"},{"p":"javax.ws.rs.core","c":"Link.JaxbLink","l":"JaxbLink(URI)","url":"JaxbLink-java.net.URI-"},{"p":"javax.ws.rs.core","c":"Link.JaxbLink","l":"JaxbLink(URI, Map)","url":"JaxbLink-java.net.URI-java.util.Map-"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY"},{"p":"javax.ws.rs.sse","c":"SseEventSource.Builder","l":"JAXRS_DEFAULT_SSE_BUILDER_PROPERTY"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"JAXRS_RUNTIME_DELEGATE_PROPERTY"},{"p":"javax.ws.rs.client","c":"Entity","l":"json(T)"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"keySet()"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"keyStore(KeyStore, char[])","url":"keyStore-java.security.KeyStore-char:A-"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"keyStore(KeyStore, String)","url":"keyStore-java.security.KeyStore-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"language(String)","url":"language-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"language(Locale)","url":"language-java.util.Locale-"},{"p":"javax.ws.rs.core","c":"Variant","l":"languages(Locale...)","url":"languages-java.util.Locale...-"},{"p":"javax.ws.rs.core","c":"Variant.VariantListBuilder","l":"languages(Locale...)","url":"languages-java.util.Locale...-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"LAST_EVENT_ID_HEADER"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"LAST_MODIFIED"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"lastModified(Date)","url":"lastModified-java.util.Date-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"LENGTH_REQUIRED"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"link(String)","url":"link-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"link(String, String)","url":"link-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"link(URI, String)","url":"link-java.net.URI-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"link(Link)","url":"link-javax.ws.rs.core.Link-"},{"p":"javax.ws.rs.core","c":"Link","l":"Link()"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"LINK"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"links(Link...)","url":"links-javax.ws.rs.core.Link...-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"location(URI)","url":"location-java.net.URI-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"LOCATION"},{"p":"javax.ws.rs.core","c":"Link.JaxbAdapter","l":"marshal(Link)","url":"marshal-javax.ws.rs.core.Link-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"matrixParam(String, Object...)","url":"matrixParam-java.lang.String-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"matrixParam(String, Object...)","url":"matrixParam-java.lang.String-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"MEDIA_TYPE_WILDCARD"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"mediaType(MediaType)","url":"mediaType-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"MediaType()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"MediaType(String, String)","url":"MediaType-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"MediaType(String, String, String)","url":"MediaType-java.lang.String-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"MediaType(String, String, Map)","url":"MediaType-java.lang.String-java.lang.String-java.util.Map-"},{"p":"javax.ws.rs.core","c":"Variant","l":"mediaTypes(MediaType...)","url":"mediaTypes-javax.ws.rs.core.MediaType...-"},{"p":"javax.ws.rs.core","c":"Variant.VariantListBuilder","l":"mediaTypes(MediaType...)","url":"mediaTypes-javax.ws.rs.core.MediaType...-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String)","url":"method-java.lang.String-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"method(String)","url":"method-java.lang.String-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"method(String)","url":"method-java.lang.String-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"method(String)","url":"method-java.lang.String-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"method(String, Class)","url":"method-java.lang.String-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String, Class)","url":"method-java.lang.String-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"method(String, Class)","url":"method-java.lang.String-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"method(String, Class)","url":"method-java.lang.String-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String, Entity>)","url":"method-java.lang.String-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"method(String, Entity>)","url":"method-java.lang.String-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"method(String, Entity>)","url":"method-java.lang.String-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"method(String, Entity>)","url":"method-java.lang.String-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"method(String, Entity>, Class)","url":"method-java.lang.String-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String, Entity>, Class)","url":"method-java.lang.String-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"method(String, Entity>, Class)","url":"method-java.lang.String-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"method(String, Entity>, Class)","url":"method-java.lang.String-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String, Entity>, InvocationCallback)","url":"method-java.lang.String-javax.ws.rs.client.Entity-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"method(String, Entity>, GenericType)","url":"method-java.lang.String-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String, Entity>, GenericType)","url":"method-java.lang.String-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"method(String, Entity>, GenericType)","url":"method-java.lang.String-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"method(String, Entity>, GenericType)","url":"method-java.lang.String-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String, InvocationCallback)","url":"method-java.lang.String-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"method(String, GenericType)","url":"method-java.lang.String-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"method(String, GenericType)","url":"method-java.lang.String-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"method(String, GenericType)","url":"method-java.lang.String-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"method(String, GenericType)","url":"method-java.lang.String-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"METHOD_NOT_ALLOWED"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"MOVED_PERMANENTLY"},{"p":"javax.ws.rs.core","c":"MediaType","l":"MULTIPART_FORM_DATA"},{"p":"javax.ws.rs.core","c":"MediaType","l":"MULTIPART_FORM_DATA_TYPE"},{"p":"javax.ws.rs.core","c":"MultivaluedHashMap","l":"MultivaluedHashMap()"},{"p":"javax.ws.rs.core","c":"MultivaluedHashMap","l":"MultivaluedHashMap(int)"},{"p":"javax.ws.rs.core","c":"MultivaluedHashMap","l":"MultivaluedHashMap(int, float)"},{"p":"javax.ws.rs.core","c":"MultivaluedHashMap","l":"MultivaluedHashMap(Map extends K, ? extends V>)","url":"MultivaluedHashMap-java.util.Map-"},{"p":"javax.ws.rs.core","c":"MultivaluedHashMap","l":"MultivaluedHashMap(MultivaluedMap extends K, ? extends V>)","url":"MultivaluedHashMap-javax.ws.rs.core.MultivaluedMap-"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"name(String)","url":"name-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"NETWORK_AUTHENTICATION_REQUIRED"},{"p":"javax.ws.rs.sse","c":"Sse","l":"newBroadcaster()"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"newBuilder()"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"newClient()"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"newClient(Configuration)","url":"newClient-javax.ws.rs.core.Configuration-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(String, String)","url":"NewCookie-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(String, String, String, String, int, String, int, boolean)","url":"NewCookie-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-java.lang.String-int-boolean-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(String, String, String, String, int, String, int, Date, boolean, boolean)","url":"NewCookie-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-java.lang.String-int-java.util.Date-boolean-boolean-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(String, String, String, String, String, int, boolean)","url":"NewCookie-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-boolean-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(String, String, String, String, String, int, boolean, boolean)","url":"NewCookie-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-int-boolean-boolean-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(Cookie)","url":"NewCookie-javax.ws.rs.core.Cookie-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(Cookie, String, int, boolean)","url":"NewCookie-javax.ws.rs.core.Cookie-java.lang.String-int-boolean-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"NewCookie(Cookie, String, int, Date, boolean, boolean)","url":"NewCookie-javax.ws.rs.core.Cookie-java.lang.String-int-java.util.Date-boolean-boolean-"},{"p":"javax.ws.rs.sse","c":"Sse","l":"newEvent(String)","url":"newEvent-java.lang.String-"},{"p":"javax.ws.rs.sse","c":"Sse","l":"newEvent(String, String)","url":"newEvent-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.sse","c":"Sse","l":"newEventBuilder()"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"newInstance()"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"newInstance()"},{"p":"javax.ws.rs.core","c":"Variant.VariantListBuilder","l":"newInstance()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"NO_CONTENT"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"NO_TIMEOUT"},{"p":"javax.ws.rs.core","c":"Response","l":"noContent()"},{"p":"javax.ws.rs.core","c":"NoContentException","l":"NoContentException(String)","url":"NoContentException-java.lang.String-"},{"p":"javax.ws.rs.core","c":"NoContentException","l":"NoContentException(String, Throwable)","url":"NoContentException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"NoContentException","l":"NoContentException(Throwable)","url":"NoContentException-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"NOT_ACCEPTABLE"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"NOT_FOUND"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"NOT_IMPLEMENTED"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"NOT_MODIFIED"},{"p":"javax.ws.rs.core","c":"Response","l":"notAcceptable(List)","url":"notAcceptable-java.util.List-"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException()"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException(String)","url":"NotAcceptableException-java.lang.String-"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException(String, Throwable)","url":"NotAcceptableException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException(String, Response)","url":"NotAcceptableException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException(String, Response, Throwable)","url":"NotAcceptableException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException(Throwable)","url":"NotAcceptableException-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException(Response)","url":"NotAcceptableException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotAcceptableException","l":"NotAcceptableException(Response, Throwable)","url":"NotAcceptableException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(String, String...)","url":"NotAllowedException-java.lang.String-java.lang.String...-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(String, String, String...)","url":"NotAllowedException-java.lang.String-java.lang.String-java.lang.String...-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(String, Throwable, String...)","url":"NotAllowedException-java.lang.String-java.lang.Throwable-java.lang.String...-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(String, Response)","url":"NotAllowedException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(String, Response, Throwable)","url":"NotAllowedException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(Throwable, String...)","url":"NotAllowedException-java.lang.Throwable-java.lang.String...-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(Response)","url":"NotAllowedException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotAllowedException","l":"NotAllowedException(Response, Throwable)","url":"NotAllowedException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(Object, Object...)","url":"NotAuthorizedException-java.lang.Object-java.lang.Object...-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(String, Object, Object...)","url":"NotAuthorizedException-java.lang.String-java.lang.Object-java.lang.Object...-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(String, Throwable, Object, Object...)","url":"NotAuthorizedException-java.lang.String-java.lang.Throwable-java.lang.Object-java.lang.Object...-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(String, Response)","url":"NotAuthorizedException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(String, Response, Throwable)","url":"NotAuthorizedException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(Throwable, Object, Object...)","url":"NotAuthorizedException-java.lang.Throwable-java.lang.Object-java.lang.Object...-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(Response)","url":"NotAuthorizedException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotAuthorizedException","l":"NotAuthorizedException(Response, Throwable)","url":"NotAuthorizedException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException()"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException(String)","url":"NotFoundException-java.lang.String-"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException(String, Throwable)","url":"NotFoundException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException(String, Response)","url":"NotFoundException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException(String, Response, Throwable)","url":"NotFoundException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException(Throwable)","url":"NotFoundException-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException(Response)","url":"NotFoundException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotFoundException","l":"NotFoundException(Response, Throwable)","url":"NotFoundException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Response","l":"notModified()"},{"p":"javax.ws.rs.core","c":"Response","l":"notModified(String)","url":"notModified-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response","l":"notModified(EntityTag)","url":"notModified-javax.ws.rs.core.EntityTag-"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException()"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException(String)","url":"NotSupportedException-java.lang.String-"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException(String, Throwable)","url":"NotSupportedException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException(String, Response)","url":"NotSupportedException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException(String, Response, Throwable)","url":"NotSupportedException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException(Throwable)","url":"NotSupportedException-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException(Response)","url":"NotSupportedException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"NotSupportedException","l":"NotSupportedException(Response, Throwable)","url":"NotSupportedException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Response","l":"ok()"},{"p":"javax.ws.rs.core","c":"Response","l":"ok(Object)","url":"ok-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Response","l":"ok(Object, String)","url":"ok-java.lang.Object-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response","l":"ok(Object, MediaType)","url":"ok-java.lang.Object-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"Response","l":"ok(Object, Variant)","url":"ok-java.lang.Object-javax.ws.rs.core.Variant-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"OK"},{"p":"javax.ws.rs.sse","c":"SseBroadcaster","l":"onClose(Consumer)","url":"onClose-java.util.function.Consumer-"},{"p":"javax.ws.rs.container","c":"CompletionCallback","l":"onComplete(Throwable)","url":"onComplete-java.lang.Throwable-"},{"p":"javax.ws.rs.container","c":"ConnectionCallback","l":"onDisconnect(AsyncResponse)","url":"onDisconnect-javax.ws.rs.container.AsyncResponse-"},{"p":"javax.ws.rs.sse","c":"SseBroadcaster","l":"onError(BiConsumer)","url":"onError-java.util.function.BiConsumer-"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"open()"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"options()"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"options()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"options()"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"options()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"options(Class)","url":"options-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"options(Class)","url":"options-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"options(Class)","url":"options-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"options(Class)","url":"options-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"options(InvocationCallback)","url":"options-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"options(GenericType)","url":"options-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"options(GenericType)","url":"options-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"options(GenericType)","url":"options-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"options(GenericType)","url":"options-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs","c":"HttpMethod","l":"OPTIONS"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"OTHER"},{"p":"javax.ws.rs.core","c":"Form","l":"param(String, String)","url":"param-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"param(String, String)","url":"param-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"PARTIAL_CONTENT"},{"p":"javax.ws.rs","c":"HttpMethod","l":"PATCH"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"path(Class)","url":"path-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"path(Class, String)","url":"path-java.lang.Class-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"path(Method)","url":"path-java.lang.reflect.Method-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"path(String)","url":"path-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"path(String)","url":"path-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"PAYMENT_REQUIRED"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"port(int)"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"post(Entity>)","url":"post-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"post(Entity>)","url":"post-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"post(Entity>)","url":"post-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"post(Entity>)","url":"post-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"post(Entity>, Class)","url":"post-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"post(Entity>, Class)","url":"post-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"post(Entity>, Class)","url":"post-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"post(Entity>, Class)","url":"post-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"post(Entity>, InvocationCallback)","url":"post-javax.ws.rs.client.Entity-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"post(Entity>, GenericType)","url":"post-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"post(Entity>, GenericType)","url":"post-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"post(Entity>, GenericType)","url":"post-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"post(Entity>, GenericType)","url":"post-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs","c":"HttpMethod","l":"POST"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"PRECONDITION_FAILED"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"PRECONDITION_REQUIRED"},{"p":"javax.ws.rs.ext","c":"ReaderInterceptorContext","l":"proceed()"},{"p":"javax.ws.rs.ext","c":"WriterInterceptorContext","l":"proceed()"},{"p":"javax.ws.rs","c":"ProcessingException","l":"ProcessingException(String)","url":"ProcessingException-java.lang.String-"},{"p":"javax.ws.rs","c":"ProcessingException","l":"ProcessingException(String, Throwable)","url":"ProcessingException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ProcessingException","l":"ProcessingException(Throwable)","url":"ProcessingException-java.lang.Throwable-"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"property(String, Object)","url":"property-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.client","c":"Invocation","l":"property(String, Object)","url":"property-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"property(String, Object)","url":"property-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"PROXY_AUTHENTICATION_REQUIRED"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"put(Entity>)","url":"put-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"put(Entity>)","url":"put-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"put(Entity>)","url":"put-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"put(Entity>)","url":"put-javax.ws.rs.client.Entity-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"put(Entity>, Class)","url":"put-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"put(Entity>, Class)","url":"put-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"put(Entity>, Class)","url":"put-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"put(Entity>, Class)","url":"put-javax.ws.rs.client.Entity-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"put(Entity>, InvocationCallback)","url":"put-javax.ws.rs.client.Entity-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"put(Entity>, GenericType)","url":"put-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"put(Entity>, GenericType)","url":"put-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"put(Entity>, GenericType)","url":"put-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"put(Entity>, GenericType)","url":"put-javax.ws.rs.client.Entity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"put(K, List)","url":"put-K-java.util.List-"},{"p":"javax.ws.rs","c":"HttpMethod","l":"PUT"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"putAll(Map extends K, ? extends List>)","url":"putAll-java.util.Map-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"putSingle(K, V)"},{"p":"javax.ws.rs.core","c":"MultivaluedMap","l":"putSingle(K, V)"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"queryParam(String, Object...)","url":"queryParam-java.lang.String-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"queryParam(String, Object...)","url":"queryParam-java.lang.String-java.lang.Object...-"},{"p":"javax.ws.rs.sse","c":"InboundSseEvent","l":"readData()"},{"p":"javax.ws.rs.sse","c":"InboundSseEvent","l":"readData(Class)","url":"readData-java.lang.Class-"},{"p":"javax.ws.rs.sse","c":"InboundSseEvent","l":"readData(Class, MediaType)","url":"readData-java.lang.Class-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.sse","c":"InboundSseEvent","l":"readData(GenericType)","url":"readData-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.sse","c":"InboundSseEvent","l":"readData(GenericType, MediaType)","url":"readData-javax.ws.rs.core.GenericType-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"Response","l":"readEntity(Class)","url":"readEntity-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"Response","l":"readEntity(Class, Annotation[])","url":"readEntity-java.lang.Class-java.lang.annotation.Annotation:A-"},{"p":"javax.ws.rs.core","c":"Response","l":"readEntity(GenericType)","url":"readEntity-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.core","c":"Response","l":"readEntity(GenericType, Annotation[])","url":"readEntity-javax.ws.rs.core.GenericType-java.lang.annotation.Annotation:A-"},{"p":"javax.ws.rs.ext","c":"MessageBodyReader","l":"readFrom(Class, Type, Annotation[], MediaType, MultivaluedMap, InputStream)","url":"readFrom-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-javax.ws.rs.core.MultivaluedMap-java.io.InputStream-"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"readTimeout(long, TimeUnit)","url":"readTimeout-long-java.util.concurrent.TimeUnit-"},{"p":"javax.ws.rs.sse","c":"SseEvent","l":"RECONNECT_NOT_SET"},{"p":"javax.ws.rs.sse","c":"OutboundSseEvent.Builder","l":"reconnectDelay(long)"},{"p":"javax.ws.rs.sse","c":"SseEventSource.Builder","l":"reconnectingEvery(long, TimeUnit)","url":"reconnectingEvery-long-java.util.concurrent.TimeUnit-"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"REDIRECTION"},{"p":"javax.ws.rs","c":"RedirectionException","l":"RedirectionException(int, URI)","url":"RedirectionException-int-java.net.URI-"},{"p":"javax.ws.rs","c":"RedirectionException","l":"RedirectionException(String, int, URI)","url":"RedirectionException-java.lang.String-int-java.net.URI-"},{"p":"javax.ws.rs","c":"RedirectionException","l":"RedirectionException(String, Response)","url":"RedirectionException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"RedirectionException","l":"RedirectionException(String, Response.Status, URI)","url":"RedirectionException-java.lang.String-javax.ws.rs.core.Response.Status-java.net.URI-"},{"p":"javax.ws.rs","c":"RedirectionException","l":"RedirectionException(Response)","url":"RedirectionException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"RedirectionException","l":"RedirectionException(Response.Status, URI)","url":"RedirectionException-javax.ws.rs.core.Response.Status-java.net.URI-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"register(Class>)","url":"register-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Class>)","url":"register-java.lang.Class-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Class>, int)","url":"register-java.lang.Class-int-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"register(Class>, Class>...)","url":"register-java.lang.Class-java.lang.Class...-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Class>, Class>...)","url":"register-java.lang.Class-java.lang.Class...-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Class>, Map, Integer>)","url":"register-java.lang.Class-java.util.Map-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"register(Object)","url":"register-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Object)","url":"register-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Object, int)","url":"register-java.lang.Object-int-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Object, Class>...)","url":"register-java.lang.Object-java.lang.Class...-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"register(Object, Object...)","url":"register-java.lang.Object-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"Configurable","l":"register(Object, Map, Integer>)","url":"register-java.lang.Object-java.util.Map-"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"register(Consumer)","url":"register-java.util.function.Consumer-"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"register(Consumer, Consumer)","url":"register-java.util.function.Consumer-java.util.function.Consumer-"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"register(Consumer, Consumer, Runnable)","url":"register-java.util.function.Consumer-java.util.function.Consumer-java.lang.Runnable-"},{"p":"javax.ws.rs.sse","c":"SseBroadcaster","l":"register(SseEventSink)","url":"register-javax.ws.rs.sse.SseEventSink-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"rel(String)","url":"rel-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"REL"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"relativize(URI)","url":"relativize-java.net.URI-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"remove(Object)","url":"remove-java.lang.Object-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"removeProperty(String)","url":"removeProperty-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"removeProperty(String)","url":"removeProperty-java.lang.String-"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"removeProperty(String)","url":"removeProperty-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"replaceAll(MultivaluedMap)","url":"replaceAll-javax.ws.rs.core.MultivaluedMap-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"replaceMatrix(String)","url":"replaceMatrix-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"replaceMatrixParam(String, Object...)","url":"replaceMatrixParam-java.lang.String-java.lang.Object...-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"replacePath(String)","url":"replacePath-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"replaceQuery(String)","url":"replaceQuery-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"replaceQueryParam(String, Object...)","url":"replaceQueryParam-java.lang.String-java.lang.Object...-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"request()"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"request(String...)","url":"request-java.lang.String...-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"request(MediaType...)","url":"request-javax.ws.rs.core.MediaType...-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"REQUEST_ENTITY_TOO_LARGE"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"REQUEST_HEADER_FIELDS_TOO_LARGE"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"REQUEST_TIMEOUT"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"REQUEST_URI_TOO_LONG"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"REQUESTED_RANGE_NOT_SATISFIABLE"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"RESET_CONTENT"},{"p":"javax.ws.rs.core","c":"UriInfo","l":"resolve(URI)","url":"resolve-java.net.URI-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"resolveTemplate(String, Object)","url":"resolveTemplate-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"resolveTemplate(String, Object)","url":"resolveTemplate-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"resolveTemplate(String, Object, boolean)","url":"resolveTemplate-java.lang.String-java.lang.Object-boolean-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"resolveTemplate(String, Object, boolean)","url":"resolveTemplate-java.lang.String-java.lang.Object-boolean-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"resolveTemplateFromEncoded(String, Object)","url":"resolveTemplateFromEncoded-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"resolveTemplateFromEncoded(String, Object)","url":"resolveTemplateFromEncoded-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"resolveTemplates(Map)","url":"resolveTemplates-java.util.Map-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"resolveTemplates(Map)","url":"resolveTemplates-java.util.Map-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"resolveTemplates(Map, boolean)","url":"resolveTemplates-java.util.Map-boolean-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"resolveTemplates(Map, boolean)","url":"resolveTemplates-java.util.Map-boolean-"},{"p":"javax.ws.rs.client","c":"WebTarget","l":"resolveTemplatesFromEncoded(Map)","url":"resolveTemplatesFromEncoded-java.util.Map-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"resolveTemplatesFromEncoded(Map)","url":"resolveTemplatesFromEncoded-java.util.Map-"},{"p":"javax.ws.rs.core","c":"Response","l":"Response()"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"ResponseBuilder()"},{"p":"javax.ws.rs.client","c":"ResponseProcessingException","l":"ResponseProcessingException(Response, String)","url":"ResponseProcessingException-javax.ws.rs.core.Response-java.lang.String-"},{"p":"javax.ws.rs.client","c":"ResponseProcessingException","l":"ResponseProcessingException(Response, String, Throwable)","url":"ResponseProcessingException-javax.ws.rs.core.Response-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs.client","c":"ResponseProcessingException","l":"ResponseProcessingException(Response, Throwable)","url":"ResponseProcessingException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"resume(Object)","url":"resume-java.lang.Object-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"resume(Throwable)","url":"resume-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"RETRY_AFTER"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"RuntimeDelegate()"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"rx()"},{"p":"javax.ws.rs.client","c":"Invocation.Builder","l":"rx(Class)","url":"rx-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"scheduledExecutorService(ScheduledExecutorService)","url":"scheduledExecutorService-java.util.concurrent.ScheduledExecutorService-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"scheme(String)","url":"scheme-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"schemeSpecificPart(String)","url":"schemeSpecificPart-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"SEE_OTHER"},{"p":"javax.ws.rs.core","c":"Response","l":"seeOther(URI)","url":"seeOther-java.net.URI-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"segment(String...)","url":"segment-java.lang.String...-"},{"p":"javax.ws.rs.core","c":"Request","l":"selectVariant(List)","url":"selectVariant-java.util.List-"},{"p":"javax.ws.rs.sse","c":"SseEventSink","l":"send(OutboundSseEvent)","url":"send-javax.ws.rs.sse.OutboundSseEvent-"},{"p":"javax.ws.rs","c":"RuntimeType","l":"SERVER"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"SERVER_ERROR"},{"p":"javax.ws.rs.core","c":"MediaType","l":"SERVER_SENT_EVENTS"},{"p":"javax.ws.rs.core","c":"MediaType","l":"SERVER_SENT_EVENTS_TYPE"},{"p":"javax.ws.rs.core","c":"Response","l":"serverError()"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(int)"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(int, Throwable)","url":"ServerErrorException-int-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(String, int)","url":"ServerErrorException-java.lang.String-int-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(String, int, Throwable)","url":"ServerErrorException-java.lang.String-int-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(String, Response)","url":"ServerErrorException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(String, Response.Status)","url":"ServerErrorException-java.lang.String-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(String, Response.Status, Throwable)","url":"ServerErrorException-java.lang.String-javax.ws.rs.core.Response.Status-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(String, Response, Throwable)","url":"ServerErrorException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(Response)","url":"ServerErrorException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(Response.Status)","url":"ServerErrorException-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(Response.Status, Throwable)","url":"ServerErrorException-javax.ws.rs.core.Response.Status-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServerErrorException","l":"ServerErrorException(Response, Throwable)","url":"ServerErrorException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"SERVICE_UNAVAILABLE"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException()"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(Long)","url":"ServiceUnavailableException-java.lang.Long-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(Long, Throwable)","url":"ServiceUnavailableException-java.lang.Long-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(String)","url":"ServiceUnavailableException-java.lang.String-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(String, Long)","url":"ServiceUnavailableException-java.lang.String-java.lang.Long-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(String, Long, Throwable)","url":"ServiceUnavailableException-java.lang.String-java.lang.Long-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(String, Date)","url":"ServiceUnavailableException-java.lang.String-java.util.Date-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(String, Date, Throwable)","url":"ServiceUnavailableException-java.lang.String-java.util.Date-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(String, Response)","url":"ServiceUnavailableException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(String, Response, Throwable)","url":"ServiceUnavailableException-java.lang.String-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(Date)","url":"ServiceUnavailableException-java.util.Date-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(Date, Throwable)","url":"ServiceUnavailableException-java.util.Date-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(Response)","url":"ServiceUnavailableException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"ServiceUnavailableException","l":"ServiceUnavailableException(Response, Throwable)","url":"ServiceUnavailableException-javax.ws.rs.core.Response-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"SET_COOKIE"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"setAnnotations(Annotation[])","url":"setAnnotations-java.lang.annotation.Annotation:A-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"setEntity(Object)","url":"setEntity-java.lang.Object-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"setEntity(Object)","url":"setEntity-java.lang.Object-"},{"p":"javax.ws.rs.ext","c":"WriterInterceptorContext","l":"setEntity(Object)","url":"setEntity-java.lang.Object-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"setEntity(Object, Annotation[], MediaType)","url":"setEntity-java.lang.Object-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"setEntity(Object, Annotation[], MediaType)","url":"setEntity-java.lang.Object-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"setEntityStream(InputStream)","url":"setEntityStream-java.io.InputStream-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"setEntityStream(InputStream)","url":"setEntityStream-java.io.InputStream-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"setEntityStream(OutputStream)","url":"setEntityStream-java.io.OutputStream-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"setEntityStream(OutputStream)","url":"setEntityStream-java.io.OutputStream-"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"setGenericType(Type)","url":"setGenericType-java.lang.reflect.Type-"},{"p":"javax.ws.rs.ext","c":"ReaderInterceptorContext","l":"setInputStream(InputStream)","url":"setInputStream-java.io.InputStream-"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate","l":"setInstance(RuntimeDelegate)","url":"setInstance-javax.ws.rs.ext.RuntimeDelegate-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setMaxAge(int)"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"setMediaType(MediaType)","url":"setMediaType-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"setMethod(String)","url":"setMethod-java.lang.String-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"setMethod(String)","url":"setMethod-java.lang.String-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setMustRevalidate(boolean)"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setNoCache(boolean)"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setNoStore(boolean)"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setNoTransform(boolean)"},{"p":"javax.ws.rs.ext","c":"WriterInterceptorContext","l":"setOutputStream(OutputStream)","url":"setOutputStream-java.io.OutputStream-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setPrivate(boolean)"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"setProperty(String, Object)","url":"setProperty-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"setProperty(String, Object)","url":"setProperty-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"setProperty(String, Object)","url":"setProperty-java.lang.String-java.lang.Object-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setProxyRevalidate(boolean)"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"setRequestUri(URI)","url":"setRequestUri-java.net.URI-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"setRequestUri(URI, URI)","url":"setRequestUri-java.net.URI-java.net.URI-"},{"p":"javax.ws.rs.container","c":"ContainerRequestContext","l":"setSecurityContext(SecurityContext)","url":"setSecurityContext-javax.ws.rs.core.SecurityContext-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"setSMaxAge(int)"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"setStatus(int)"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"setStatus(int)"},{"p":"javax.ws.rs.client","c":"ClientResponseContext","l":"setStatusInfo(Response.StatusType)","url":"setStatusInfo-javax.ws.rs.core.Response.StatusType-"},{"p":"javax.ws.rs.container","c":"ContainerResponseContext","l":"setStatusInfo(Response.StatusType)","url":"setStatusInfo-javax.ws.rs.core.Response.StatusType-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"setTimeout(long, TimeUnit)","url":"setTimeout-long-java.util.concurrent.TimeUnit-"},{"p":"javax.ws.rs.container","c":"AsyncResponse","l":"setTimeoutHandler(TimeoutHandler)","url":"setTimeoutHandler-javax.ws.rs.container.TimeoutHandler-"},{"p":"javax.ws.rs.ext","c":"InterceptorContext","l":"setType(Class>)","url":"setType-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"ClientRequestContext","l":"setUri(URI)","url":"setUri-java.net.URI-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"size()"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"sslContext(SSLContext)","url":"sslContext-javax.net.ssl.SSLContext-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"status(int)"},{"p":"javax.ws.rs.core","c":"Response","l":"status(int)"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"status(int, String)","url":"status-int-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response","l":"status(int, String)","url":"status-int-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"status(Response.Status)","url":"status-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs.core","c":"Response","l":"status(Response.Status)","url":"status-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"status(Response.StatusType)","url":"status-javax.ws.rs.core.Response.StatusType-"},{"p":"javax.ws.rs.core","c":"Response","l":"status(Response.StatusType)","url":"status-javax.ws.rs.core.Response.StatusType-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"store"},{"p":"javax.ws.rs.client","c":"Invocation","l":"submit()"},{"p":"javax.ws.rs.client","c":"Invocation","l":"submit(Class)","url":"submit-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"Invocation","l":"submit(InvocationCallback)","url":"submit-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"Invocation","l":"submit(GenericType)","url":"submit-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"SUCCESSFUL"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"tag(String)","url":"tag-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"tag(EntityTag)","url":"tag-javax.ws.rs.core.EntityTag-"},{"p":"javax.ws.rs.client","c":"Client","l":"target(String)","url":"target-java.lang.String-"},{"p":"javax.ws.rs.client","c":"Client","l":"target(URI)","url":"target-java.net.URI-"},{"p":"javax.ws.rs.sse","c":"SseEventSource.Builder","l":"target(WebTarget)","url":"target-javax.ws.rs.client.WebTarget-"},{"p":"javax.ws.rs.sse","c":"SseEventSource","l":"target(WebTarget)","url":"target-javax.ws.rs.client.WebTarget-"},{"p":"javax.ws.rs.client","c":"Client","l":"target(Link)","url":"target-javax.ws.rs.core.Link-"},{"p":"javax.ws.rs.client","c":"Client","l":"target(UriBuilder)","url":"target-javax.ws.rs.core.UriBuilder-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"TEMPORARY_REDIRECT"},{"p":"javax.ws.rs.core","c":"Response","l":"temporaryRedirect(URI)","url":"temporaryRedirect-java.net.URI-"},{"p":"javax.ws.rs.client","c":"Entity","l":"text(T)"},{"p":"javax.ws.rs.core","c":"MediaType","l":"TEXT_HTML"},{"p":"javax.ws.rs.core","c":"MediaType","l":"TEXT_HTML_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"TEXT_PLAIN"},{"p":"javax.ws.rs.core","c":"MediaType","l":"TEXT_PLAIN_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"TEXT_XML"},{"p":"javax.ws.rs.core","c":"MediaType","l":"TEXT_XML_TYPE"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"title(String)","url":"title-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"TITLE"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"toCookie()"},{"p":"javax.ws.rs.core","c":"Response.StatusType","l":"toEnum()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"TOO_MANY_REQUESTS"},{"p":"javax.ws.rs.ext","c":"ExceptionMapper","l":"toResponse(E)"},{"p":"javax.ws.rs.client","c":"Entity","l":"toString()"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"toString()"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"toString()"},{"p":"javax.ws.rs.core","c":"Cookie","l":"toString()"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"toString()"},{"p":"javax.ws.rs.core","c":"GenericEntity","l":"toString()"},{"p":"javax.ws.rs.core","c":"GenericType","l":"toString()"},{"p":"javax.ws.rs.core","c":"Link","l":"toString()"},{"p":"javax.ws.rs.core","c":"MediaType","l":"toString()"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"toString()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"toString()"},{"p":"javax.ws.rs.core","c":"Variant","l":"toString()"},{"p":"javax.ws.rs.ext","c":"ParamConverter","l":"toString(T)"},{"p":"javax.ws.rs.ext","c":"RuntimeDelegate.HeaderDelegate","l":"toString(T)"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"toTemplate()"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"trace()"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"trace()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"trace()"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"trace()"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"trace(Class)","url":"trace-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"trace(Class)","url":"trace-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"trace(Class)","url":"trace-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"trace(Class)","url":"trace-java.lang.Class-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"trace(InvocationCallback)","url":"trace-javax.ws.rs.client.InvocationCallback-"},{"p":"javax.ws.rs.client","c":"RxInvoker","l":"trace(GenericType)","url":"trace-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"AsyncInvoker","l":"trace(GenericType)","url":"trace-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"CompletionStageRxInvoker","l":"trace(GenericType)","url":"trace-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"SyncInvoker","l":"trace(GenericType)","url":"trace-javax.ws.rs.core.GenericType-"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"trustStore(KeyStore)","url":"trustStore-java.security.KeyStore-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"type(String)","url":"type-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"type(String)","url":"type-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"type(MediaType)","url":"type-javax.ws.rs.core.MediaType-"},{"p":"javax.ws.rs.core","c":"Link","l":"TYPE"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"UNAUTHORIZED"},{"p":"javax.ws.rs.core","c":"Link.JaxbAdapter","l":"unmarshal(Link.JaxbLink)","url":"unmarshal-javax.ws.rs.core.Link.JaxbLink-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"UNSUPPORTED_MEDIA_TYPE"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"uri(String)","url":"uri-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"uri(String)","url":"uri-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"uri(URI)","url":"uri-java.net.URI-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"uri(URI)","url":"uri-java.net.URI-"},{"p":"javax.ws.rs.core","c":"Link.Builder","l":"uriBuilder(UriBuilder)","url":"uriBuilder-javax.ws.rs.core.UriBuilder-"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"UriBuilder()"},{"p":"javax.ws.rs.core","c":"UriBuilderException","l":"UriBuilderException()"},{"p":"javax.ws.rs.core","c":"UriBuilderException","l":"UriBuilderException(String)","url":"UriBuilderException-java.lang.String-"},{"p":"javax.ws.rs.core","c":"UriBuilderException","l":"UriBuilderException(String, Throwable)","url":"UriBuilderException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"UriBuilderException","l":"UriBuilderException(Throwable)","url":"UriBuilderException-java.lang.Throwable-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"USE_PROXY"},{"p":"javax.ws.rs","c":"Priorities","l":"USER"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"USER_AGENT"},{"p":"javax.ws.rs.core","c":"UriBuilder","l":"userInfo(String)","url":"userInfo-java.lang.String-"},{"p":"javax.ws.rs.core","c":"CacheControl","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Cookie","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"EntityTag","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Link","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"NewCookie","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs","c":"RuntimeType","l":"valueOf(String)","url":"valueOf-java.lang.String-"},{"p":"javax.ws.rs.core","c":"AbstractMultivaluedMap","l":"values()"},{"p":"javax.ws.rs.core","c":"Response.Status.Family","l":"values()"},{"p":"javax.ws.rs.core","c":"Response.Status","l":"values()"},{"p":"javax.ws.rs","c":"RuntimeType","l":"values()"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"variant(Variant)","url":"variant-javax.ws.rs.core.Variant-"},{"p":"javax.ws.rs.core","c":"Variant","l":"Variant(MediaType, String, String)","url":"Variant-javax.ws.rs.core.MediaType-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Variant","l":"Variant(MediaType, String, String, String)","url":"Variant-javax.ws.rs.core.MediaType-java.lang.String-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Variant","l":"Variant(MediaType, String, String, String, String)","url":"Variant-javax.ws.rs.core.MediaType-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Variant","l":"Variant(MediaType, Locale, String)","url":"Variant-javax.ws.rs.core.MediaType-java.util.Locale-java.lang.String-"},{"p":"javax.ws.rs.core","c":"Variant.VariantListBuilder","l":"VariantListBuilder()"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"variants(List)","url":"variants-java.util.List-"},{"p":"javax.ws.rs.core","c":"Response.ResponseBuilder","l":"variants(Variant...)","url":"variants-javax.ws.rs.core.Variant...-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"VARY"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException()"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(int)"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String)","url":"WebApplicationException-java.lang.String-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String, int)","url":"WebApplicationException-java.lang.String-int-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String, Throwable)","url":"WebApplicationException-java.lang.String-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String, Throwable, int)","url":"WebApplicationException-java.lang.String-java.lang.Throwable-int-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String, Throwable, Response)","url":"WebApplicationException-java.lang.String-java.lang.Throwable-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String, Throwable, Response.Status)","url":"WebApplicationException-java.lang.String-java.lang.Throwable-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String, Response)","url":"WebApplicationException-java.lang.String-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(String, Response.Status)","url":"WebApplicationException-java.lang.String-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(Throwable)","url":"WebApplicationException-java.lang.Throwable-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(Throwable, int)","url":"WebApplicationException-java.lang.Throwable-int-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(Throwable, Response)","url":"WebApplicationException-java.lang.Throwable-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(Throwable, Response.Status)","url":"WebApplicationException-java.lang.Throwable-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(Response)","url":"WebApplicationException-javax.ws.rs.core.Response-"},{"p":"javax.ws.rs","c":"WebApplicationException","l":"WebApplicationException(Response.Status)","url":"WebApplicationException-javax.ws.rs.core.Response.Status-"},{"p":"javax.ws.rs.core","c":"MediaType","l":"WILDCARD"},{"p":"javax.ws.rs.core","c":"MediaType","l":"WILDCARD_TYPE"},{"p":"javax.ws.rs.core","c":"MediaType","l":"withCharset(String)","url":"withCharset-java.lang.String-"},{"p":"javax.ws.rs.client","c":"ClientBuilder","l":"withConfig(Configuration)","url":"withConfig-javax.ws.rs.core.Configuration-"},{"p":"javax.ws.rs.core","c":"StreamingOutput","l":"write(OutputStream)","url":"write-java.io.OutputStream-"},{"p":"javax.ws.rs.ext","c":"MessageBodyWriter","l":"writeTo(T, Class>, Type, Annotation[], MediaType, MultivaluedMap, OutputStream)","url":"writeTo-T-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-javax.ws.rs.core.MultivaluedMap-java.io.OutputStream-"},{"p":"javax.ws.rs.core","c":"HttpHeaders","l":"WWW_AUTHENTICATE"},{"p":"javax.ws.rs.client","c":"Entity","l":"xhtml(T)"},{"p":"javax.ws.rs.client","c":"Entity","l":"xml(T)"}]
\ No newline at end of file
diff --git a/restful-web-services/2.1/apidocs/member-search-index.zip b/restful-web-services/2.1/apidocs/member-search-index.zip
new file mode 100644
index 0000000000..c6224f4c88
Binary files /dev/null and b/restful-web-services/2.1/apidocs/member-search-index.zip differ
diff --git a/restful-web-services/2.1/apidocs/overview-frame.html b/restful-web-services/2.1/apidocs/overview-frame.html
new file mode 100644
index 0000000000..d20ae3f791
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/overview-frame.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+Overview List (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/restful-web-services/2.1/apidocs/overview-summary.html b/restful-web-services/2.1/apidocs/overview-summary.html
new file mode 100644
index 0000000000..09e3164bd7
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/overview-summary.html
@@ -0,0 +1,280 @@
+
+
+
+
+
+Overview (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
Jakarta RESTful Web Services provides a foundational API to develop web services
+ following the Representational State Transfer (REST) architectural pattern.
+ This API is distributed under the Eclipse Foundation Specification License .
+
+
Web resources
+
+
The core APIs enable developers to rapidly build Web applications in Java that are characteristic
+ of the best designed parts of the Web. The API brings in support for designing and implementing
+ Web resources and application that follow principles of
+ REST (Representational
+ State Transfer) architectural style to the Java Platform.
+
+
With this API, Java POJOs can be exposed as RESTful Web resources independent of the underlying technology
+ using a high level easy-to-use declarative annotation-based API. E.g.:
+
+
+@Path("widgets/{widgetid}")
+@Consumes("application/widgets+xml")
+@Produces("application/widgets+xml")
+public class WidgetResource {
+
+ @GET
+ public String getWidget(@PathParam("widgetid") String id) {
+ return getWidgetAsXml(id);
+ }
+
+ @PUT
+ public void updateWidget(@PathParam("widgetid") String id,
+ Source update) {
+ updateWidgetFromXml(id, update);
+ }
+
+ ...
+}
+
+
+
Web resource clients
+
+
The Client API is a Java based API used to access resources on the Web. It is not restricted
+ to resources implemented using the Server API. It provides a higher-level abstraction compared to a
+ plain HTTP communication API
as well as integration with the
+ API extension providers, in order to enable concise and efficient implementation of
+ reusable client-side solutions that leverage existing and well
+ established client-side implementations of HTTP-based communication.
+
+
The Client API also encapsulates the Uniform Interface Constraint –
+ a key constraint of the REST architectural style – and associated data
+ elements as client-side Java artifacts and supports a pluggable architecture
+ by defining multiple extension points.
+
+
Following example demonstrates a simple Client API usage scenario:
+
+
+ Client client = ClientBuilder.newClient();
+
+ client.property("MyProperty", "MyValue")
+ .register(MyProvider.class)
+ .enable(MyFeature.class);
+
+ Response res = client.target("http://example.org/hello").request("text/plain").get();
+ String message = res.readEntity(String.class);
+
+
+
Provider extensions
+
+
Applications may provide custom extensions to the client and server runtime using the
+ common extension APIs defined in javax.ws.rs.ext
+ package, namely entity providers and entity provider interceptors. Additionally, request and
+ response processing chains on client as well as server side can be further customized by
+ implemening custom request and response filters - see the
+ ClientRequestFilter ,
+ ClientResponseFilter ,
+ ContainerRequestFilter ,
+ ContainerResponseFilter
+ APIs.
+
+
+
+
+
+Packages
+
+Package
+Description
+
+
+
+javax.ws.rs
+
+High-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.client
+
+The Client API
+
+
+
+javax.ws.rs.container
+
+Container-specific API.
+
+
+
+javax.ws.rs.core
+
+Low-level interfaces and annotations used to create RESTful service
+ resources.
+
+
+
+javax.ws.rs.ext
+
+APIs that provide extensions to the types supported by the API.
+
+
+
+javax.ws.rs.sse
+
+Server-Sent Events related API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Copyright (c) 2019 Eclipse Foundation. Licensed under Eclipse Foundation Specification License .
+
+
diff --git a/restful-web-services/2.1/apidocs/overview-tree.html b/restful-web-services/2.1/apidocs/overview-tree.html
new file mode 100644
index 0000000000..c337823b63
--- /dev/null
+++ b/restful-web-services/2.1/apidocs/overview-tree.html
@@ -0,0 +1,379 @@
+
+
+
+
+
+Class Hierarchy (jakarta.ws.rs-api 2.1.6 API)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+