ts-essentials

  • Version 10.1.1
  • Published
  • 243 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: Exact<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 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> = 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 ReadonlyArray<infer Values>
                                              ? Type extends IsTuple<Type>
                                              ? {
                                              [Key in keyof Type]?: DeepPartial<Type[Key]>;
                                              }
                                              : Type extends Array<Values>
                                              ? Array<DeepPartial<Values> | undefined>
                                              : ReadonlyArray<DeepPartial<Values> | undefined>
                                              : 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> = Type extends Exclude<Builtin, Error>
                                                  ? Type
                                                  : Type extends Map<infer Keys, infer Values>
                                                  ? ReadonlyMap<DeepReadonly<Keys>, DeepReadonly<Values>>
                                                  : Type extends ReadonlyMap<infer Keys, infer Values>
                                                  ? ReadonlyMap<DeepReadonly<Keys>, DeepReadonly<Values>>
                                                  : Type extends WeakMap<infer Keys, infer Values>
                                                  ? WeakMap<DeepReadonly<Keys>, DeepReadonly<Values>>
                                                  : Type extends Set<infer Values>
                                                  ? ReadonlySet<DeepReadonly<Values>>
                                                  : Type extends ReadonlySet<infer Values>
                                                  ? ReadonlySet<DeepReadonly<Values>>
                                                  : Type extends WeakSet<infer Values>
                                                  ? WeakSet<DeepReadonly<Values>>
                                                  : Type extends Promise<infer Value>
                                                  ? Promise<DeepReadonly<Value>>
                                                  : Type extends AnyArray<infer Values>
                                                  ? IsNever<IsTuple<Type>> extends false
                                                  ? {
                                                  readonly [Key in keyof Type]: DeepReadonly<Type[Key]>;
                                                  }
                                                  : ReadonlyArray<DeepReadonly<Values>>
                                                  : Type extends {}
                                                  ? {
                                                  readonly [Key in keyof Type]: DeepReadonly<Type[Key]>;
                                                  }
                                                  : IsUnknown<Type> extends true
                                                  ? unknown
                                                  : Readonly<Type>;

                                                    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> = 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 {}
                                                        ? {
                                                        -readonly [Key in keyof Type]: DeepWritable<Type[Key]>;
                                                        }
                                                        : 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> = [TValue] extends [readonly any[]]
                                                              ? [TShape] extends [readonly any[]]
                                                              ? ArrayExact<TValue, TShape>
                                                              : never
                                                              : [TValue] extends [AnyRecord]
                                                              ? ObjectExact<TValue, TShape>
                                                              : PrimitiveExact<TValue, TShape>;
                                                                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 IsNever

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

                                                                      type IsTuple

                                                                      type IsTuple<Type> = Type extends readonly any[]
                                                                      ? any[] extends Type
                                                                      ? never
                                                                      : Type
                                                                      : never;

                                                                        type IsUnknown

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

                                                                          type KeyofBase

                                                                          type KeyofBase = keyof any;

                                                                            type MarkOptional

                                                                            type MarkOptional<Type, Keys extends keyof Type> = Type extends Type
                                                                            ? Prettify<Partial<Type> & Required<Omit<Type, Keys | OptionalKeys<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> = [Type, ...Type[]];

                                                                                          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]
                                                                                            >;

                                                                                              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
                                                                                                                : Extract<
                                                                                                                {
                                                                                                                [Key in keyof Type]: Type[Key];
                                                                                                                },
                                                                                                                Type
                                                                                                                >;

                                                                                                                  type Primitive

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

                                                                                                                    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 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 UnionToIntersection

                                                                                                                                          type UnionToIntersection<Union> = (
                                                                                                                                          Union extends any ? (arg: Union) => void : never
                                                                                                                                          ) extends (arg: infer Intersection) => void
                                                                                                                                          ? Intersection
                                                                                                                                          : 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 (74)

                                                                                                                                                      Dependencies (0)

                                                                                                                                                      No dependencies.

                                                                                                                                                      Dev Dependencies (12)

                                                                                                                                                      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>