ts-essentials

  • Version 10.2.1
  • Published
  • 263 kB
  • No dependencies
  • MIT license

Install

npm i ts-essentials
yarn add ts-essentials
pnpm add ts-essentials

Overview

All essential TypeScript types in one place

Index

Functions

function assert

assert: (condition: any, message?: string) => asserts condition;

    function createFactoryWithConstraint

    createFactoryWithConstraint: <Constraint>() => <Value extends Constraint>(
    value: Value
    ) => Value;

      function isExact

      isExact: <ExpectedShape>() => <ActualShape>(
      x: IsExact<ActualShape, ExpectedShape>
      ) => ExpectedShape;

        function noop

        noop: (..._args: unknown[]) => void;

          Classes

          class UnreachableCaseError

          class UnreachableCaseError extends Error {}

            constructor

            constructor(value: never);

              Interfaces

              interface Newable

              interface Newable<ReturnType> {}

                construct signature

                new (...args: any[]): ReturnType;

                  Type Aliases

                  type AnyArray

                  type AnyArray<Type = any> = Array<Type> | ReadonlyArray<Type>;

                    type AnyFunction

                    type AnyFunction<Args extends any[] = any[], ReturnType = any> = (
                    ...args: Args
                    ) => ReturnType;

                      type AnyNonEmptyArray

                      type AnyNonEmptyArray<Type> = [Type, ...Type[]];

                        type ArrayOrSingle

                        type ArrayOrSingle<Type> = Type | Type[];

                          type AsyncOrSync

                          type AsyncOrSync<Type> = PromiseLike<Type> | Type;

                            type AsyncOrSyncType

                            type AsyncOrSyncType<AsyncOrSyncType> = AsyncOrSyncType extends AsyncOrSync<
                            infer Type
                            >
                            ? Type
                            : never;

                              type Awaited

                              type Awaited<Type> = Type extends PromiseLike<infer Value> ? Value : never;
                              • Deprecated

                                please use builtin Awaited

                              type Buildable

                              type Buildable<Type> = DeepPartial<DeepWritable<Type>>;

                                type Builtin

                                type Builtin = Primitive | Function | Date | Error | RegExp;

                                  type CamelCase

                                  type CamelCase<Type> = IsStringLiteral<Type> extends true
                                  ? Join<CamelCapitalizer<SplitAnyCase<Type>>>
                                  : Type;

                                    type DeepCamelCaseProperties

                                    type DeepCamelCaseProperties<Type> = Type extends Record<string, unknown>
                                    ? {
                                    [Key in keyof Type as CamelCase<Key>]: DeepCamelCaseProperties<Type[Key]>;
                                    }
                                    : Type;

                                      type DeepMarkOptional

                                      type DeepMarkOptional<
                                      Type,
                                      KeyPathUnion extends Paths<Type>
                                      > = HasParsablePath<Type> extends false
                                      ? Type
                                      : RecursiveDeepMarkOptional<Type, UnionToTuple<KeyPathUnion>>;

                                        type DeepMarkRequired

                                        type DeepMarkRequired<
                                        Type,
                                        KeyPathUnion extends Paths<Type>
                                        > = HasParsablePath<Type> extends false
                                        ? Type
                                        : RecursiveDeepMarkRequired<Type, UnionToTuple<KeyPathUnion>>;

                                          type DeepNonNullable

                                          type DeepNonNullable<Type> = Type extends Builtin
                                          ? NonNullable<Type>
                                          : Type extends Map<infer Keys, infer Values>
                                          ? Map<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                          : Type extends ReadonlyMap<infer Keys, infer Values>
                                          ? ReadonlyMap<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                          : Type extends WeakMap<infer Keys, infer Values>
                                          ? WeakMap<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                          : Type extends Set<infer Values>
                                          ? Set<DeepNonNullable<Values>>
                                          : Type extends ReadonlySet<infer Values>
                                          ? ReadonlySet<DeepNonNullable<Values>>
                                          : Type extends WeakSet<infer Values>
                                          ? WeakSet<DeepNonNullable<Values>>
                                          : Type extends Promise<infer Values>
                                          ? Promise<DeepNonNullable<Values>>
                                          : Type extends {}
                                          ? {
                                          [Key in keyof Type]: DeepNonNullable<Type[Key]>;
                                          }
                                          : NonNullable<Type>;

                                            type DeepNullable

                                            type DeepNullable<Type> = IsNever<Type> extends true
                                            ? null
                                            : Type extends Builtin
                                            ? Type | null
                                            : Type extends Map<infer Keys, infer Values>
                                            ? Map<DeepNullable<Keys>, DeepNullable<Values>>
                                            : Type extends ReadonlyMap<infer Keys, infer Values>
                                            ? ReadonlyMap<DeepNullable<Keys>, DeepNullable<Values>>
                                            : Type extends WeakMap<infer Keys, infer Values>
                                            ? DeepNullable<Keys> extends object
                                            ? WeakMap<DeepNullable<Keys>, DeepNullable<Values>>
                                            : never
                                            : Type extends Set<infer Values>
                                            ? Set<DeepNullable<Values>>
                                            : Type extends ReadonlySet<infer Values>
                                            ? ReadonlySet<DeepNullable<Values>>
                                            : Type extends WeakSet<infer Values>
                                            ? DeepNullable<Values> extends object
                                            ? WeakSet<DeepNullable<Values>>
                                            : never
                                            : Type extends ReadonlyArray<infer Values>
                                            ? Type extends IsTuple<Type>
                                            ? {
                                            [Key in keyof Type]: DeepNullable<Type[Key]> | null;
                                            }
                                            : Type extends Array<Values>
                                            ? Array<DeepNullable<Values>>
                                            : ReadonlyArray<DeepNullable<Values>>
                                            : Type extends Promise<infer Value>
                                            ? Promise<DeepNullable<Value>>
                                            : Type extends {}
                                            ? {
                                            [Key in keyof Type]: DeepNullable<Type[Key]>;
                                            }
                                            : Type | null;

                                              type DeepOmit

                                              type DeepOmit<Type, Filter> = Type extends Builtin
                                              ? Type
                                              : Type extends Map<infer Keys, infer Values>
                                              ? Filter extends Map<Keys, infer FilterValues>
                                              ? Map<Keys, DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends ReadonlyMap<infer Keys, infer Values>
                                              ? Filter extends ReadonlyMap<Keys, infer FilterValues>
                                              ? ReadonlyMap<Keys, DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends WeakMap<infer Keys, infer Values>
                                              ? Filter extends WeakMap<Keys, infer FilterValues>
                                              ? WeakMap<Keys, DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends Set<infer Values>
                                              ? Filter extends Set<infer FilterValues>
                                              ? Set<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends ReadonlySet<infer Values>
                                              ? Filter extends ReadonlySet<infer FilterValues>
                                              ? ReadonlySet<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends WeakSet<infer Values>
                                              ? Filter extends WeakSet<infer FilterValues>
                                              ? WeakSet<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends Array<infer Values>
                                              ? Filter extends Array<infer FilterValues>
                                              ? Array<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends Promise<infer Value>
                                              ? Filter extends Promise<infer FilterValue>
                                              ? Promise<DeepOmit<Value, FilterValue>>
                                              : Type
                                              : Filter extends AnyRecord
                                              ? {
                                              [Key in keyof Type as Key extends keyof Filter
                                              ? Filter[Key] extends true
                                              ? never
                                              : Key
                                              : Key]: Key extends keyof Filter
                                              ? DeepOmit<Type[Key], Filter[Key]>
                                              : Type[Key];
                                              }
                                              : never;

                                                type DeepPartial

                                                type DeepPartial<Type> = Type extends Exclude<Builtin, Error>
                                                ? Type
                                                : Type extends Map<infer Keys, infer Values>
                                                ? Map<DeepPartial<Keys>, DeepPartial<Values>>
                                                : Type extends ReadonlyMap<infer Keys, infer Values>
                                                ? ReadonlyMap<DeepPartial<Keys>, DeepPartial<Values>>
                                                : Type extends WeakMap<infer Keys, infer Values>
                                                ? WeakMap<DeepPartial<Keys>, DeepPartial<Values>>
                                                : Type extends Set<infer Values>
                                                ? Set<DeepPartial<Values>>
                                                : Type extends ReadonlySet<infer Values>
                                                ? ReadonlySet<DeepPartial<Values>>
                                                : Type extends WeakSet<infer Values>
                                                ? WeakSet<DeepPartial<Values>>
                                                : Type extends Promise<infer Value>
                                                ? Promise<DeepPartial<Value>>
                                                : Type extends {}
                                                ? {
                                                [Key in keyof Type]?: DeepPartial<Type[Key]>;
                                                }
                                                : IsUnknown<Type> extends true
                                                ? unknown
                                                : Partial<Type>;

                                                  type DeepPick

                                                  type DeepPick<Type, Filter> = Type extends Builtin
                                                  ? Type
                                                  : Type extends Map<infer Keys, infer Values>
                                                  ? Filter extends Map<Keys, infer FilterValues>
                                                  ? Map<Keys, DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends ReadonlyMap<infer Keys, infer Values>
                                                  ? Filter extends ReadonlyMap<Keys, infer FilterValues>
                                                  ? ReadonlyMap<Keys, DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends WeakMap<infer Keys, infer Values>
                                                  ? Filter extends WeakMap<Keys, infer FilterValues>
                                                  ? WeakMap<Keys, DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends Set<infer Values>
                                                  ? Filter extends Set<infer FilterValues>
                                                  ? Set<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends ReadonlySet<infer Values>
                                                  ? Filter extends ReadonlySet<infer FilterValues>
                                                  ? ReadonlySet<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends WeakSet<infer Values>
                                                  ? Filter extends WeakSet<infer FilterValues>
                                                  ? WeakSet<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends Array<infer Values>
                                                  ? Filter extends Array<infer FilterValues>
                                                  ? Array<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends Promise<infer Value>
                                                  ? Filter extends Promise<infer FilterValue>
                                                  ? Promise<DeepPick<Value, FilterValue>>
                                                  : Type
                                                  : Filter extends AnyRecord
                                                  ? {
                                                  [Key in keyof Type as Key extends keyof Filter ? Key : never]: Filter[Key &
                                                  keyof Filter] extends true
                                                  ? Type[Key]
                                                  : Key extends keyof Filter
                                                  ? DeepPick<Type[Key], Filter[Key]>
                                                  : never;
                                                  }
                                                  : never;

                                                    type DeepReadonly

                                                    type DeepReadonly<
                                                    Type,
                                                    OverrideDeepReadonlyOptions extends {
                                                    builtin?: Partial<DeepReadonlyOptions['builtin']>;
                                                    } = {}
                                                    > = DeepReadonlyWithOptions<
                                                    Type,
                                                    {
                                                    builtin: CreateTypeOptions<
                                                    DeepReadonlyOptions['builtin'],
                                                    OverrideDeepReadonlyOptions['builtin'] extends {}
                                                    ? OverrideDeepReadonlyOptions['builtin']
                                                    : {},
                                                    DefaultDeepReadonlyOptions['builtin']
                                                    >;
                                                    }
                                                    >;

                                                      type DeepRequired

                                                      type DeepRequired<Type> = Type extends Error
                                                      ? Required<Type>
                                                      : Type extends Builtin
                                                      ? Type
                                                      : Type extends Map<infer Keys, infer Values>
                                                      ? Map<DeepRequired<Keys>, DeepRequired<Values>>
                                                      : Type extends ReadonlyMap<infer Keys, infer Values>
                                                      ? ReadonlyMap<DeepRequired<Keys>, DeepRequired<Values>>
                                                      : Type extends WeakMap<infer Keys, infer Values>
                                                      ? WeakMap<DeepRequired<Keys>, DeepRequired<Values>>
                                                      : Type extends Set<infer Values>
                                                      ? Set<DeepRequired<Values>>
                                                      : Type extends ReadonlySet<infer Values>
                                                      ? ReadonlySet<DeepRequired<Values>>
                                                      : Type extends WeakSet<infer Values>
                                                      ? WeakSet<DeepRequired<Values>>
                                                      : Type extends Promise<infer Value>
                                                      ? Promise<DeepRequired<Value>>
                                                      : Type extends ReadonlyArray<infer Values>
                                                      ? IsNever<IsTuple<Type>> extends false
                                                      ? {
                                                      [Key in keyof Type]-?: DeepRequired<Type[Key]>;
                                                      }
                                                      : Type extends Array<Values>
                                                      ? Array<Exclude<DeepRequired<Values>, undefined>>
                                                      : ReadonlyArray<Exclude<DeepRequired<Values>, undefined>>
                                                      : Type extends {}
                                                      ? {
                                                      [Key in keyof Type]-?: DeepRequired<Type[Key]>;
                                                      }
                                                      : Required<Type>;

                                                        type DeepUndefinable

                                                        type DeepUndefinable<Type> = IsNever<Type> extends true
                                                        ? undefined
                                                        : Type extends Builtin
                                                        ? Type | undefined
                                                        : Type extends Map<infer Keys, infer Values>
                                                        ? Map<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                        : Type extends ReadonlyMap<infer Keys, infer Values>
                                                        ? ReadonlyMap<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                        : Type extends WeakMap<infer Keys, infer Values>
                                                        ? DeepUndefinable<Keys> extends object
                                                        ? WeakMap<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                        : never
                                                        : Type extends Set<infer Values>
                                                        ? Set<DeepUndefinable<Values>>
                                                        : Type extends ReadonlySet<infer Values>
                                                        ? ReadonlySet<DeepUndefinable<Values>>
                                                        : Type extends WeakSet<infer Values>
                                                        ? DeepUndefinable<Values> extends object
                                                        ? WeakSet<DeepUndefinable<Values>>
                                                        : never
                                                        : Type extends ReadonlyArray<infer Values>
                                                        ? Type extends IsTuple<Type>
                                                        ? {
                                                        [Key in keyof Type]: DeepUndefinable<Type[Key]> | undefined;
                                                        }
                                                        : Type extends Array<Values>
                                                        ? Array<DeepUndefinable<Values>>
                                                        : ReadonlyArray<DeepUndefinable<Values>>
                                                        : Type extends Promise<infer Value>
                                                        ? Promise<DeepUndefinable<Value>>
                                                        : Type extends {}
                                                        ? {
                                                        [Key in keyof Type]: DeepUndefinable<Type[Key]>;
                                                        }
                                                        : Type | undefined;

                                                          type DeepWritable

                                                          type DeepWritable<Type> = Type extends Exclude<Builtin, Error>
                                                          ? Type
                                                          : Type extends Map<infer Key, infer Value>
                                                          ? Map<DeepWritable<Key>, DeepWritable<Value>>
                                                          : Type extends ReadonlyMap<infer Key, infer Value>
                                                          ? Map<DeepWritable<Key>, DeepWritable<Value>>
                                                          : Type extends WeakMap<infer Key, infer Value>
                                                          ? WeakMap<DeepWritable<Key>, DeepWritable<Value>>
                                                          : Type extends Set<infer Values>
                                                          ? Set<DeepWritable<Values>>
                                                          : Type extends ReadonlySet<infer Values>
                                                          ? Set<DeepWritable<Values>>
                                                          : Type extends WeakSet<infer Values>
                                                          ? WeakSet<DeepWritable<Values>>
                                                          : Type extends Promise<infer Value>
                                                          ? Promise<DeepWritable<Value>>
                                                          : Type extends {}
                                                          ? DeepWritableObject<Type>
                                                          : IsUnknown<Type> extends true
                                                          ? unknown
                                                          : Type;

                                                            type Dictionary

                                                            type Dictionary<Type, Keys extends KeyofBase = string> = {
                                                            [key in Keys]: Type;
                                                            };

                                                              type DictionaryValues

                                                              type DictionaryValues<Type> = Type[keyof Type];
                                                              • Deprecated

                                                                please use ValueOf instead

                                                              type ElementOf

                                                              type ElementOf<Type extends readonly any[]> = Type extends readonly (infer Values)[]
                                                              ? Values
                                                              : never;

                                                                type Exact

                                                                type Exact<TValue, TShape> = IsExact<TValue, TShape>;
                                                                • Deprecated

                                                                  Exact will be removed in v11.0. Use IsExact<TValue, TShape> instead

                                                                type Head<Type extends AnyArray> = Type extends unknown
                                                                ? Type['length'] extends 0
                                                                ? never
                                                                : Type[0]
                                                                : never;

                                                                  type IsAny

                                                                  type IsAny<Type> = 0 extends 1 & Type ? true : false;

                                                                    type IsExact

                                                                    type IsExact<TValue, TShape> = [TValue] extends [readonly any[]]
                                                                    ? [TShape] extends [readonly any[]]
                                                                    ? ArrayExact<TValue, TShape>
                                                                    : never
                                                                    : [TValue] extends [AnyRecord]
                                                                    ? ObjectExact<TValue, TShape>
                                                                    : PrimitiveExact<TValue, TShape>;

                                                                      type IsNever

                                                                      type IsNever<Type> = [Type] extends [never] ? true : false;

                                                                        type IsTuple

                                                                        type IsTuple<Type> = Type extends ReadonlyArray<infer Values>
                                                                        ? Array<Values> extends Type
                                                                        ? IsNever<keyof Type & `${number}`> extends true
                                                                        ? never
                                                                        : Type
                                                                        : Type
                                                                        : never;

                                                                          type IsUnknown

                                                                          type IsUnknown<Type> = IsAny<Type> extends true
                                                                          ? false
                                                                          : unknown extends Type
                                                                          ? true
                                                                          : false;

                                                                            type JsonArray

                                                                            type JsonArray = JsonValue[] | readonly JsonValue[];

                                                                              type JsonObject

                                                                              type JsonObject = {
                                                                              [Key in string]: JsonValue;
                                                                              };

                                                                                type JsonPrimitive

                                                                                type JsonPrimitive = null | number | string | boolean;

                                                                                  type JsonValue

                                                                                  type JsonValue = JsonPrimitive | JsonObject | JsonArray;

                                                                                    type KeyofBase

                                                                                    type KeyofBase = keyof any;

                                                                                      type MarkOptional

                                                                                      type MarkOptional<Type, Keys extends keyof Type> = Type extends Type
                                                                                      ? Extract<
                                                                                      Prettify<Partial<Type> & Required<Omit<Type, Keys | OptionalKeys<Type>>>>,
                                                                                      Partial<Type>
                                                                                      >
                                                                                      : never;

                                                                                        type MarkReadonly

                                                                                        type MarkReadonly<Type, Keys extends keyof Type> = Type extends Type
                                                                                        ? Prettify<
                                                                                        Readonly<Type> & Writable<Omit<Type, Keys | ReadonlyKeys<Type & object>>>
                                                                                        >
                                                                                        : never;

                                                                                          type MarkRequired

                                                                                          type MarkRequired<Type, Keys extends keyof Type> = Type extends Type
                                                                                          ? Prettify<Type & Required<Omit<Type, Exclude<keyof Type, Keys>>>>
                                                                                          : never;

                                                                                            type MarkWritable

                                                                                            type MarkWritable<Type, Keys extends keyof Type> = Type extends Type
                                                                                            ? Prettify<
                                                                                            Readonly<Type> &
                                                                                            Writable<
                                                                                            Omit<Type, Exclude<keyof Type, WritableKeys<Type & object> | Keys>>
                                                                                            >
                                                                                            >
                                                                                            : never;

                                                                                              type Merge

                                                                                              type Merge<Object1, Object2> = Prettify<Omit<Object1, keyof Object2> & Object2>;

                                                                                                type MergeN

                                                                                                type MergeN<Tuple extends readonly any[]> = _MergeN<Tuple, {}>;

                                                                                                  type NonEmptyArray

                                                                                                  type NonEmptyArray<Type> = AnyNonEmptyArray<Type>;
                                                                                                  • Deprecated

                                                                                                    NonEmptyArray will be removed in v11.0. Use AnyNonEmptyArray instead.

                                                                                                  type NonEmptyObject

                                                                                                  type NonEmptyObject<Object extends AnyRecord> = keyof Object extends never
                                                                                                  ? never
                                                                                                  : Object;

                                                                                                    type NonNever

                                                                                                    type NonNever<Type extends {}> = Pick<
                                                                                                    Type,
                                                                                                    {
                                                                                                    [Key in keyof Type]: Type[Key] extends never ? never : Key;
                                                                                                    }[keyof Type]
                                                                                                    >;
                                                                                                    • Deprecated

                                                                                                      Use OmitNeverProperties<Type> instead

                                                                                                    type NonUnion

                                                                                                    type NonUnion<Type> = [Type] extends [UnionToIntersection<Type>] ? Type : never;

                                                                                                      type OmitNeverProperties

                                                                                                      type OmitNeverProperties<Type extends {}> = NonNever<Type>;

                                                                                                        type OmitProperties

                                                                                                        type OmitProperties<Type, Value> = {
                                                                                                        [Key in keyof Type as Type[Key] extends Value ? never : Key]: Type[Key];
                                                                                                        };

                                                                                                          type Opaque

                                                                                                          type Opaque<Type, Token extends string> = Token extends StringLiteral<Token>
                                                                                                          ? Type & WithOpaque<Token>
                                                                                                          : never;

                                                                                                            type OptionalKeys

                                                                                                            type OptionalKeys<Type> = Type extends object
                                                                                                            ? keyof {
                                                                                                            [Key in keyof Type as Type extends Required<Pick<Type, Key>>
                                                                                                            ? never
                                                                                                            : Key]: never;
                                                                                                            }
                                                                                                            : never;

                                                                                                              type Paths

                                                                                                              type Paths<
                                                                                                              Type,
                                                                                                              OverridePathOptions extends Partial<PathsOptions> = {}
                                                                                                              > = UnsafePaths<
                                                                                                              Type,
                                                                                                              CreateTypeOptions<PathsOptions, OverridePathOptions, DefaultPathsOptions>
                                                                                                              >;

                                                                                                                type PathValue

                                                                                                                type PathValue<Type, StringPath> = GetWithArray<Type, Path<StringPath>>;

                                                                                                                  type PickKeys

                                                                                                                  type PickKeys<Type, Value> = keyof PickProperties<Type, Value>;

                                                                                                                    type PickProperties

                                                                                                                    type PickProperties<Type, Value> = {
                                                                                                                    [Key in keyof Type as Type[Key] extends Value ? Key : never]: Type[Key];
                                                                                                                    };

                                                                                                                      type PredicateFunction

                                                                                                                      type PredicateFunction = (x: any, ..._z: any[]) => x is any;

                                                                                                                        type PredicateType

                                                                                                                        type PredicateType<Type extends PredicateFunction> = Type extends (
                                                                                                                        target: any,
                                                                                                                        ...rest: any[]
                                                                                                                        ) => target is infer NarrowedType
                                                                                                                        ? NarrowedType
                                                                                                                        : never;

                                                                                                                          type Prettify

                                                                                                                          type Prettify<Type> = Type extends Function
                                                                                                                          ? Type
                                                                                                                          : {
                                                                                                                          [Key in keyof Type]: Type[Key];
                                                                                                                          };

                                                                                                                            type Primitive

                                                                                                                            type Primitive = string | number | boolean | bigint | symbol | undefined | null;

                                                                                                                              type PublicInterface

                                                                                                                              type PublicInterface<Type> = {
                                                                                                                              [Key in keyof Type]: Type[Key];
                                                                                                                              };

                                                                                                                                type ReadonlyArrayOrSingle

                                                                                                                                type ReadonlyArrayOrSingle<Type> = Type | readonly Type[];

                                                                                                                                  type ReadonlyKeys

                                                                                                                                  type ReadonlyKeys<Type extends object> = Type extends unknown
                                                                                                                                  ? keyof {
                                                                                                                                  [Key in keyof Type as IsFullyWritable<Pick<Type, Key>> extends true
                                                                                                                                  ? never
                                                                                                                                  : Key]: never;
                                                                                                                                  }
                                                                                                                                  : never;

                                                                                                                                    type RequireAtLeastOne

                                                                                                                                    type RequireAtLeastOne<
                                                                                                                                    Type extends AnyRecord,
                                                                                                                                    Keys extends keyof Type = keyof Type
                                                                                                                                    > = IsAny<Type> extends true ? any : _RequireAtLeastOne<Type, Keys>;

                                                                                                                                      type RequireAtMostOne

                                                                                                                                      type RequireAtMostOne<
                                                                                                                                      Type extends AnyRecord,
                                                                                                                                      Keys extends keyof Type = keyof Type
                                                                                                                                      > = IsAny<Type> extends true ? any : _RequireAtMostOne<Type, Keys>;

                                                                                                                                        type RequiredKeys

                                                                                                                                        type RequiredKeys<Type> = Type extends unknown
                                                                                                                                        ? Exclude<keyof Type, OptionalKeys<Type>>
                                                                                                                                        : never;

                                                                                                                                          type SafeDictionary

                                                                                                                                          type SafeDictionary<Type, Keys extends KeyofBase = string> = {
                                                                                                                                          [key in Keys]?: Type;
                                                                                                                                          };

                                                                                                                                            type StrictDeepOmit

                                                                                                                                            type StrictDeepOmit<Type, Filter extends DeepModify<Type>> = DeepOmit<Type, Filter>;

                                                                                                                                              type StrictDeepPick

                                                                                                                                              type StrictDeepPick<Type, Filter extends DeepModify<Type>> = DeepPick<Type, Filter>;

                                                                                                                                                type StrictExclude

                                                                                                                                                type StrictExclude<UnionType, ExcludedMembers extends UnionType> = Exclude<
                                                                                                                                                UnionType,
                                                                                                                                                ExcludedMembers
                                                                                                                                                >;

                                                                                                                                                  type StrictExtract

                                                                                                                                                  type StrictExtract<Type, Union extends Partial<Type>> = Extract<Type, Union>;

                                                                                                                                                    type StrictOmit

                                                                                                                                                    type StrictOmit<
                                                                                                                                                    Type extends AnyRecord,
                                                                                                                                                    Keys extends keyof Type
                                                                                                                                                    > = Type extends AnyArray ? never : Omit<Type, Keys>;

                                                                                                                                                      type Tail

                                                                                                                                                      type Tail<Type extends AnyArray> = Type extends readonly []
                                                                                                                                                      ? never
                                                                                                                                                      : Type extends readonly [any?, ...infer Rest]
                                                                                                                                                      ? Rest
                                                                                                                                                      : never;

                                                                                                                                                        type Tuple

                                                                                                                                                        type Tuple<Type = any> = [Type?, ...Type[]];

                                                                                                                                                          type UnionKeys

                                                                                                                                                          type UnionKeys<UnionType> = keyof UnionToIntersection<
                                                                                                                                                          UnionType extends UnionType ? Record<keyof UnionType, never> : never
                                                                                                                                                          >;

                                                                                                                                                            type UnionToIntersection

                                                                                                                                                            type UnionToIntersection<Union> = (
                                                                                                                                                            Union extends any ? (arg: Union) => void : never
                                                                                                                                                            ) extends (arg: infer Intersection) => void // Order matters here - do not swap Intersection and Union
                                                                                                                                                            ? Intersection & Union
                                                                                                                                                            : never;

                                                                                                                                                              type ValueOf

                                                                                                                                                              type ValueOf<Type> = Type extends Primitive
                                                                                                                                                              ? Type
                                                                                                                                                              : Type extends AnyArray
                                                                                                                                                              ? Type[number]
                                                                                                                                                              : Type extends AnyFunction
                                                                                                                                                              ? ReturnType<Type>
                                                                                                                                                              : Type[keyof Type];

                                                                                                                                                                type WithOpaque

                                                                                                                                                                type WithOpaque<Token extends string> = {
                                                                                                                                                                readonly [__OPAQUE_TYPE__]: Token;
                                                                                                                                                                };

                                                                                                                                                                  type Writable

                                                                                                                                                                  type Writable<Type> = {
                                                                                                                                                                  -readonly [Key in keyof Type]: Type[Key];
                                                                                                                                                                  };

                                                                                                                                                                    type WritableKeys

                                                                                                                                                                    type WritableKeys<Type extends object> = Type extends unknown
                                                                                                                                                                    ? Exclude<keyof Type, ReadonlyKeys<Type>>
                                                                                                                                                                    : never;

                                                                                                                                                                      type XOR

                                                                                                                                                                      type XOR<
                                                                                                                                                                      Type1,
                                                                                                                                                                      Type2,
                                                                                                                                                                      Type3 = unknown,
                                                                                                                                                                      Type4 = unknown,
                                                                                                                                                                      Type5 = unknown,
                                                                                                                                                                      Type6 = unknown,
                                                                                                                                                                      Type7 = unknown,
                                                                                                                                                                      Type8 = unknown,
                                                                                                                                                                      Type9 = unknown,
                                                                                                                                                                      Type10 = unknown,
                                                                                                                                                                      Type11 = unknown,
                                                                                                                                                                      Type12 = unknown,
                                                                                                                                                                      Type13 = unknown,
                                                                                                                                                                      Type14 = unknown,
                                                                                                                                                                      Type15 = unknown,
                                                                                                                                                                      Type16 = unknown,
                                                                                                                                                                      Type17 = unknown,
                                                                                                                                                                      Type18 = unknown,
                                                                                                                                                                      Type19 = unknown,
                                                                                                                                                                      Type20 = unknown,
                                                                                                                                                                      Type21 = unknown,
                                                                                                                                                                      Type22 = unknown,
                                                                                                                                                                      Type23 = unknown,
                                                                                                                                                                      Type24 = unknown,
                                                                                                                                                                      Type25 = unknown,
                                                                                                                                                                      Type26 = unknown,
                                                                                                                                                                      Type27 = unknown,
                                                                                                                                                                      Type28 = unknown,
                                                                                                                                                                      Type29 = unknown,
                                                                                                                                                                      Type30 = unknown,
                                                                                                                                                                      Type31 = unknown,
                                                                                                                                                                      Type32 = unknown,
                                                                                                                                                                      Type33 = unknown,
                                                                                                                                                                      Type34 = unknown,
                                                                                                                                                                      Type35 = unknown,
                                                                                                                                                                      Type36 = unknown,
                                                                                                                                                                      Type37 = unknown,
                                                                                                                                                                      Type38 = unknown,
                                                                                                                                                                      Type39 = unknown,
                                                                                                                                                                      Type40 = unknown,
                                                                                                                                                                      Type41 = unknown,
                                                                                                                                                                      Type42 = unknown,
                                                                                                                                                                      Type43 = unknown,
                                                                                                                                                                      Type44 = unknown,
                                                                                                                                                                      Type45 = unknown,
                                                                                                                                                                      Type46 = unknown,
                                                                                                                                                                      Type47 = unknown,
                                                                                                                                                                      Type48 = unknown,
                                                                                                                                                                      Type49 = unknown,
                                                                                                                                                                      Type50 = unknown
                                                                                                                                                                      > = Prettify<
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type1
                                                                                                                                                                      > &
                                                                                                                                                                      Type1)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type2
                                                                                                                                                                      > &
                                                                                                                                                                      Type2)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type3
                                                                                                                                                                      > &
                                                                                                                                                                      Type3)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type4
                                                                                                                                                                      > &
                                                                                                                                                                      Type4)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type5
                                                                                                                                                                      > &
                                                                                                                                                                      Type5)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type6
                                                                                                                                                                      > &
                                                                                                                                                                      Type6)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type7
                                                                                                                                                                      > &
                                                                                                                                                                      Type7)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type8
                                                                                                                                                                      > &
                                                                                                                                                                      Type8)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type9
                                                                                                                                                                      > &
                                                                                                                                                                      Type9)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type10
                                                                                                                                                                      > &
                                                                                                                                                                      Type10)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type11
                                                                                                                                                                      > &
                                                                                                                                                                      Type11)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type12
                                                                                                                                                                      > &
                                                                                                                                                                      Type12)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type13
                                                                                                                                                                      > &
                                                                                                                                                                      Type13)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type14
                                                                                                                                                                      > &
                                                                                                                                                                      Type14)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type15
                                                                                                                                                                      > &
                                                                                                                                                                      Type15)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type16
                                                                                                                                                                      > &
                                                                                                                                                                      Type16)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type17
                                                                                                                                                                      > &
                                                                                                                                                                      Type17)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type18
                                                                                                                                                                      > &
                                                                                                                                                                      Type18)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type19
                                                                                                                                                                      > &
                                                                                                                                                                      Type19)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type20
                                                                                                                                                                      > &
                                                                                                                                                                      Type20)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type21
                                                                                                                                                                      > &
                                                                                                                                                                      Type21)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type22
                                                                                                                                                                      > &
                                                                                                                                                                      Type22)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type23
                                                                                                                                                                      > &
                                                                                                                                                                      Type23)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type24
                                                                                                                                                                      > &
                                                                                                                                                                      Type24)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type25
                                                                                                                                                                      > &
                                                                                                                                                                      Type25)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type26
                                                                                                                                                                      > &
                                                                                                                                                                      Type26)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type27
                                                                                                                                                                      > &
                                                                                                                                                                      Type27)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type28
                                                                                                                                                                      > &
                                                                                                                                                                      Type28)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type29
                                                                                                                                                                      > &
                                                                                                                                                                      Type29)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type30
                                                                                                                                                                      > &
                                                                                                                                                                      Type30)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type31
                                                                                                                                                                      > &
                                                                                                                                                                      Type31)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type32
                                                                                                                                                                      > &
                                                                                                                                                                      Type32)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type33
                                                                                                                                                                      > &
                                                                                                                                                                      Type33)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type34
                                                                                                                                                                      > &
                                                                                                                                                                      Type34)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type35
                                                                                                                                                                      > &
                                                                                                                                                                      Type35)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type36
                                                                                                                                                                      > &
                                                                                                                                                                      Type36)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type37
                                                                                                                                                                      > &
                                                                                                                                                                      Type37)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type38
                                                                                                                                                                      > &
                                                                                                                                                                      Type38)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type39
                                                                                                                                                                      > &
                                                                                                                                                                      Type39)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type40
                                                                                                                                                                      > &
                                                                                                                                                                      Type40)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type41
                                                                                                                                                                      > &
                                                                                                                                                                      Type41)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type42
                                                                                                                                                                      > &
                                                                                                                                                                      Type42)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type43
                                                                                                                                                                      > &
                                                                                                                                                                      Type43)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type44
                                                                                                                                                                      > &
                                                                                                                                                                      Type44)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type45
                                                                                                                                                                      > &
                                                                                                                                                                      Type45)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type46
                                                                                                                                                                      > &
                                                                                                                                                                      Type46)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type47
                                                                                                                                                                      > &
                                                                                                                                                                      Type47)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type49 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type48
                                                                                                                                                                      > &
                                                                                                                                                                      Type48)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type50,
                                                                                                                                                                      Type49
                                                                                                                                                                      > &
                                                                                                                                                                      Type49)
                                                                                                                                                                      | (Without<
                                                                                                                                                                      Type1 &
                                                                                                                                                                      Type2 &
                                                                                                                                                                      Type3 &
                                                                                                                                                                      Type4 &
                                                                                                                                                                      Type5 &
                                                                                                                                                                      Type6 &
                                                                                                                                                                      Type7 &
                                                                                                                                                                      Type8 &
                                                                                                                                                                      Type9 &
                                                                                                                                                                      Type10 &
                                                                                                                                                                      Type11 &
                                                                                                                                                                      Type12 &
                                                                                                                                                                      Type13 &
                                                                                                                                                                      Type14 &
                                                                                                                                                                      Type15 &
                                                                                                                                                                      Type16 &
                                                                                                                                                                      Type17 &
                                                                                                                                                                      Type18 &
                                                                                                                                                                      Type19 &
                                                                                                                                                                      Type20 &
                                                                                                                                                                      Type21 &
                                                                                                                                                                      Type22 &
                                                                                                                                                                      Type23 &
                                                                                                                                                                      Type24 &
                                                                                                                                                                      Type25 &
                                                                                                                                                                      Type26 &
                                                                                                                                                                      Type27 &
                                                                                                                                                                      Type28 &
                                                                                                                                                                      Type29 &
                                                                                                                                                                      Type30 &
                                                                                                                                                                      Type31 &
                                                                                                                                                                      Type32 &
                                                                                                                                                                      Type33 &
                                                                                                                                                                      Type34 &
                                                                                                                                                                      Type35 &
                                                                                                                                                                      Type36 &
                                                                                                                                                                      Type37 &
                                                                                                                                                                      Type38 &
                                                                                                                                                                      Type39 &
                                                                                                                                                                      Type40 &
                                                                                                                                                                      Type41 &
                                                                                                                                                                      Type42 &
                                                                                                                                                                      Type43 &
                                                                                                                                                                      Type44 &
                                                                                                                                                                      Type45 &
                                                                                                                                                                      Type46 &
                                                                                                                                                                      Type47 &
                                                                                                                                                                      Type48 &
                                                                                                                                                                      Type49,
                                                                                                                                                                      Type50
                                                                                                                                                                      > &
                                                                                                                                                                      Type50)
                                                                                                                                                                      >;

                                                                                                                                                                        Package Files (86)

                                                                                                                                                                        Dependencies (0)

                                                                                                                                                                        No dependencies.

                                                                                                                                                                        Dev Dependencies (10)

                                                                                                                                                                        Peer Dependencies (1)

                                                                                                                                                                        Badge

                                                                                                                                                                        To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                                                                                                                                                        You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/ts-essentials.

                                                                                                                                                                        • Markdown
                                                                                                                                                                          [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/ts-essentials)
                                                                                                                                                                        • HTML
                                                                                                                                                                          <a href="https://www.jsdocs.io/package/ts-essentials"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>