pax_global_header00006660000000000000000000000064150031742770014520gustar00rootroot0000000000000052 comment=ed7b8b07a38b46eaea3c693771265f9c4ce0b76d python-pyodata-1.11.2/000077500000000000000000000000001500317427700145625ustar00rootroot00000000000000python-pyodata-1.11.2/.flake8000066400000000000000000000000271500317427700157340ustar00rootroot00000000000000[flake8] ignore = E501 python-pyodata-1.11.2/.github/000077500000000000000000000000001500317427700161225ustar00rootroot00000000000000python-pyodata-1.11.2/.github/workflows/000077500000000000000000000000001500317427700201575ustar00rootroot00000000000000python-pyodata-1.11.2/.github/workflows/python-linters.yml000066400000000000000000000022411500317427700237000ustar00rootroot00000000000000# This workflow will install Python dependencies and run linters for the codebase # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: lint the package on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.10.10"] lxml-version: ["4.9.1"] steps: - uses: actions/checkout@v2 - name: Install lxml dependencies run: sudo apt-get install -y libxml2-dev libxslt-dev - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install lxml==${{ matrix.lxml-version }} python -m pip install -r dev-requirements.txt python -m pip install -r requirements.txt - name: Lint run: | make lint - name: Security uses: jpetrucciani/bandit-check@master with: bandit_flags: '-lll' python-pyodata-1.11.2/.github/workflows/python-tests-compatibility.yml000066400000000000000000000051521500317427700262350ustar00rootroot00000000000000# This workflow will install Python dependencies, run tests with variety of Python versions # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: test the package on: push: branches: [ master ] pull_request: branches: [ master ] schedule: - cron: '0 0 * * SUN' jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.9", "3.10", "3.11", "3.12"] lxml-version: ["4.2.6", "4.3.5", "4.4.3", "4.5.2", "4.6.5", "4.7.1", "4.8.0", "4.9.1", "4.9.4", "5.0.1", "5.1.0"] exclude: - python-version: 3.9 lxml-version: 4.2.6 - python-version: 3.10 lxml-version: 4.2.6 - python-version: 3.10 lxml-version: 4.3.5 - python-version: 3.10 lxml-version: 4.4.3 - python-version: 3.10 lxml-version: 4.5.2 - python-version: 3.11 lxml-version: 4.2.6 - python-version: 3.11 lxml-version: 4.3.5 - python-version: 3.11 lxml-version: 4.4.3 - python-version: 3.11 lxml-version: 4.5.2 - python-version: 3.11 lxml-version: 4.6.5 - python-version: 3.11 lxml-version: 4.7.1 - python-version: 3.11 lxml-version: 4.8.0 - python-version: 3.12 lxml-version: 4.2.6 - python-version: 3.12 lxml-version: 4.3.5 - python-version: 3.12 lxml-version: 4.4.3 - python-version: 3.12 lxml-version: 4.4.3 - python-version: 3.12 lxml-version: 4.5.2 - python-version: 3.12 lxml-version: 4.6.5 - python-version: 3.12 lxml-version: 4.7.1 - python-version: 3.12 lxml-version: 4.8.0 - python-version: 3.12 lxml-version: 4.9.1 steps: - uses: actions/checkout@v2 - name: Install lxml dependencies run: sudo apt-get install -y libxml2-dev libxslt-dev - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install lxml==${{ matrix.lxml-version }} python -m pip install -r dev-requirements.txt python -m pip install -r requirements.txt - name: Test run: | make test report-coverage python-pyodata-1.11.2/.gitignore000066400000000000000000000001301500317427700165440ustar00rootroot00000000000000/pyodata.egg-info *.pyc __pycache__ *.swp docs/_build htmlcov venv dist .idea .coverage python-pyodata-1.11.2/.pylintrc000066400000000000000000000312701500317427700164320ustar00rootroot00000000000000[MASTER] # Specify a configuration file. #rcfile= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook= # Add files or directories to the blacklist. They should be base names, not # paths. ignore=CVS # Add files or directories matching the regex patterns to the blacklist. The # regex matches against base names, not paths. ignore-patterns= # Pickle collected data for later comparisons. persistent=yes # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= # Use multiple processes to speed up Pylint. jobs=1 # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. unsafe-load-any-extension=no # A comma-separated list of package or module names from where C extensions may # be loaded. Extensions are loading into the active Python interpreter and may # run arbitrary code extension-pkg-whitelist=lxml # Allow optimization of some AST trees. This will activate a peephole AST # optimizer, which will apply various small optimizations. For instance, it can # be used to obtain the result of joining multiple strings with the addition # operator. Joining a lot of strings can lead to a maximum recursion error in # Pylint and this flag can prevent that. It has one side effect, the resulting # AST will be different than the one from reality. This option is deprecated # and it will be removed in Pylint 2.0. optimize-ast=no [MESSAGES CONTROL] # Only show warnings with the listed confidence levels. Leave empty to show # all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED confidence= # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time (only on the command line, not in the configuration file where # it should appear only once). See also the "--disable" option for examples. #enable= # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifiers separated by comma (,) or put this # option multiple times (only on the command line, not in the configuration # file where it should appear only once).You can also use "--disable=all" to # disable everything first and then reenable specific checks. For example, if # you want to run only the similarities checker, you can use "--disable=all # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" disable=locally-disabled, super-with-arguments, raise-missing-from [REPORTS] # Set the output format. Available formats are text, parseable, colorized, msvs # (visual studio) and html. You can also give a reporter class, eg # mypackage.mymodule.MyReporterClass. output-format=text # Put messages in a separate file for each module / package specified on the # command line instead of printing them on stdout. Reports (if any) will be # written in a file name "pylint_global.[txt|html]". This option is deprecated # and it will be removed in Pylint 2.0. files-output=no # Tells whether to display a full report or only the messages reports=no # Python expression which should return a note less than 10 (10 is the highest # note). You have access to the variables errors warning, statement which # respectively contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (RP0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Template used to display messages. This is a python new-style format string # used to format the message information. See doc for all details #msg-template= [BASIC] # Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_ # Bad variable names which should always be refused, separated by a comma bad-names=foo,bar,baz,toto,tutu,tata # Colon-delimited sets of names that determine each other's naming style when # the name regexes allow several styles. name-group= # Include a hint for the correct naming format with invalid-name include-naming-hint=no # List of decorators that produce properties, such as abc.abstractproperty. Add # to this list to register other decorators that produce valid properties. property-classes=abc.abstractproperty # Regular expression matching correct function names function-rgx=[a-z_][a-z0-9_]{2,30}$ # Naming hint for function names function-name-hint=[a-z_][a-z0-9_]{2,30}$ # Regular expression matching correct variable names variable-rgx=[a-z_][a-z0-9_]{2,30}$ # Naming hint for variable names variable-name-hint=[a-z_][a-z0-9_]{2,30}$ # Regular expression matching correct constant names const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ # Naming hint for constant names const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$ # Regular expression matching correct attribute names attr-rgx=[a-z_][a-z0-9_]{2,30}$ # Naming hint for attribute names attr-name-hint=[a-z_][a-z0-9_]{2,30}$ # Regular expression matching correct argument names argument-rgx=[a-z_][a-z0-9_]{2,30}$ # Naming hint for argument names argument-name-hint=[a-z_][a-z0-9_]{2,30}$ # Regular expression matching correct class attribute names class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ # Naming hint for class attribute names class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ # Regular expression matching correct inline iteration names inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ # Naming hint for inline iteration names inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$ # Regular expression matching correct class names class-rgx=[A-Z_][a-zA-Z0-9]+$ # Naming hint for class names class-name-hint=[A-Z_][a-zA-Z0-9]+$ # Regular expression matching correct module names module-rgx=(([a-z_][a-z0-9_-]*)|([A-Z][a-zA-Z0-9]+))$ # Naming hint for module names module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ # Regular expression matching correct method names method-rgx=[a-z_][a-z0-9_]{2,42}$ # Naming hint for method names method-name-hint=[a-z_][a-z0-9_]{2,42}$ # Regular expression which should only match function or class names that do # not require a docstring. no-docstring-rgx=^_ # Minimum line length for functions/classes that require docstrings, shorter # ones are exempt. docstring-min-length=-1 [ELIF] # Maximum number of nested blocks for function / method body max-nested-blocks=5 [FORMAT] # Maximum number of characters on a single line. max-line-length=120 # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ # Allow the body of an if to be on the same line as the test if there is no # else. single-line-if-stmt=no # List of optional constructs for which whitespace checking is disabled. `dict- # separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. # `trailing-comma` allows a space between comma and closing bracket: (a, ). # `empty-line` allows space-only lines. no-space-check=trailing-comma,dict-separator # Maximum number of lines in a module max-module-lines=1000 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' # Number of spaces of indent required inside a hanging or continued line. indent-after-paren=4 # Expected format of line ending, e.g. empty (any line ending), LF or CRLF. expected-line-ending-format= [LOGGING] # Logging modules to check that the string format arguments are in logging # function parameter format logging-modules=logging [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME,XXX [SIMILARITIES] # Minimum lines number of a similarity. min-similarity-lines=4 # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # Ignore imports when computing similarities. ignore-imports=no [SPELLING] # Spelling dictionary name. Available dictionaries: none. To make it working # install python-enchant package. spelling-dict= # List of comma separated words that should not be checked. spelling-ignore-words= # A path to a file that contains private dictionary; one word per line. spelling-private-dict-file= # Tells whether to store unknown words to indicated private dictionary in # --spelling-private-dict-file option instead of raising a message. spelling-store-unknown-words=no [TYPECHECK] # Tells whether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # List of module names for which member attributes should not be checked # (useful for modules/projects where namespaces are manipulated during runtime # and thus existing member attributes cannot be deduced by static analysis. It # supports qualified module names, as well as Unix pattern matching. ignored-modules= # List of class names for which member attributes should not be checked (useful # for classes with dynamically set attributes). This supports the use of # qualified names. ignored-classes=optparse.Values,thread._local,_thread._local,LookupDict # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E1101 when accessed. Python regular # expressions are accepted. generated-members= # List of decorators that produce context managers, such as # contextlib.contextmanager. Add to this list to register other decorators that # produce valid context managers. contextmanager-decorators=contextlib.contextmanager [VARIABLES] # Tells whether we should check for unused import in __init__ files. init-import=no # A regular expression matching the name of dummy variables (i.e. expectedly # not used). dummy-variables-rgx=(_+[a-zA-Z0-9]*?$)|dummy # List of additional names supposed to be defined in builtins. Remember that # you should avoid to define new builtins when possible. additional-builtins= # List of strings which can identify a callback function by name. A callback # name must start or end with one of those strings. callbacks=cb_,_cb # List of qualified module names which can have objects that can redefine # builtins. redefining-builtins-modules=six.moves,future.builtins [CLASSES] # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__,__new__,setUp # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls # List of valid names for the first argument in a metaclass class method. valid-metaclass-classmethod-first-arg=mcs # List of member names, which should be excluded from the protected access # warning. exclude-protected=_asdict,_fields,_replace,_source,_make [DESIGN] # Maximum number of arguments for function / method max-args=7 # Argument names that match this expression will be ignored. Default to name # with leading underscore ignored-argument-names=_.* # Maximum number of locals for function / method body max-locals=15 # Maximum number of return / yield for function / method body max-returns=6 # Maximum number of branch for function / method body max-branches=12 # Maximum number of statements in function / method body max-statements=50 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Minimum number of public methods for a class (see R0903). min-public-methods=1 # Maximum number of public methods for a class (see R0904). max-public-methods=20 # Maximum number of boolean expressions in a if statement max-bool-expr=5 [IMPORTS] # Deprecated modules which should not be used, separated by a comma deprecated-modules=regsub,TERMIOS,Bastion,rexec # Create a graph of every (i.e. internal and external) dependencies in the # given file (report RP0402 must not be disabled) import-graph= # Create a graph of external dependencies in the given file (report RP0402 must # not be disabled) ext-import-graph= # Create a graph of internal dependencies in the given file (report RP0402 must # not be disabled) int-import-graph= # Force import order to recognize a module as part of the standard # compatibility libraries. known-standard-library= # Force import order to recognize a module as part of a third party library. known-third-party=enchant # Analyse import fallback blocks. This can be used to support both Python 2 and # 3 compatible code, which means that the block might have code that exists # only in one or another interpreter, leading to false positives when analysed. analyse-fallback-blocks=no [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "Exception" overgeneral-exceptions=Exception python-pyodata-1.11.2/.reuse/000077500000000000000000000000001500317427700157635ustar00rootroot00000000000000python-pyodata-1.11.2/.reuse/dep5000066400000000000000000000005341500317427700165450ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: python-pyodata Upstream-Contact: Petr Hanak , Jakub Filak Source: https://github.com/SAP/python-pyodata Files: * Copyright: 2021 SAP SE or an SAP affiliate company and task-explorer contributors License: Apache-2.0 python-pyodata-1.11.2/CHANGELOG.md000066400000000000000000000160011500317427700163710ustar00rootroot00000000000000# Change Log All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ## [1.11.2] ### Fixed - service: fix space in application/http for batch - bpreissler - model: adding two missing possibilities for ValueListParameter - Jon Friesen ### Removed - Python 3.8 and Python 3.7 are no longer supported by pyodata. Python 3.9 is now minimal supported version. - Petr Hanak ## [1.11.1] ### Fixed - Model: Bugfix of adding expanded entities to EntityProxy - Manuel Seeger ## [1.11.0] ### Added - Service: Encode paths with entity keys with option to disable it - Linda Jahn ### Fixed - Model: Fix adding expanded entities to EntityProxy - Manuel Seeger ### Stable, not Experimental - Service: Support for server-side pagination (partial listings trough _next field) - Reto Schneider ## [1.10.1] ### Fixed - Model: fix edge case for Edm.DateTimeOffset.from_json() without offset - @squeakyboots, Petr Hanak ## [1.10.0] ### Added - Service: Add async networking libraries support - mnunzio, Albo90, Petr Hanak ### Fixed - Service: fix navigation in EntityProxy - Masterchen09 ## [1.9.2] ### Fixed - Service: associations relationship fixes - Masterchen09 ## [1.9.1] ### Added - Client: Accept content type application/atom+xml - OmniTroid - Model: Extract property 'FixedLength' - Reto Schneider ### Experimental, possible subject to backward incompatible changes - Service: Support for server-side pagination (partial listings trough _next field) - Reto Schneider ## [1.9.0] ### Added - Prevent substitution of missing, nullable values - Reto Schneider ### Fixed - Fix Increased robustness when schema with empty properties is returned - Andre Gensler - Use valid default value for Edm.DateTimeOffset - Reto Schneider ### Changed - Adjusted Edm.DateTime default value to January 1, 1753 A.D - Reto Schneider ## [1.8.0] ### Fixed - Fix Edm.Binary literal representation - Daniel Balko - Datetime support for Edm.DateTimeOffset - Reto Schneider - Disallow creation of non-UTC Edm.DateTime - Reto Schneider ### Changed - Split properties schema.entity_types/complex_types and their generated Collections - Petr Hanak ### Removed - Python 3.6 (after its EOL) is no longer supported by pyodata. Python 3.7 is now minimal supported version. - Petr Hanak ## [1.7.1] ### Fixed - Workaround for screwed up date values - Timo S. - Always escape special chars in URL query params - Simon Brulhart - Helper for obtaining a token for services coming from SAP BTP, ABAP environment - Stoyko Stoev ## [1.7.0] ### Added - Add inlinecount support - Stoyko Stoev - Add a ProgramError exception - Stoyko Stoev - Add is_valid schema property - Petr Hanak ### Fixed - Passing custom URL query parameters for Entity Requests - Sylvain Fankhauser ## [1.6.0] ### Added - Specify PATCH, PUT, or MERGE method for EntityUpdateRequest - Barton Ip - Add a Service wide configuration (e.g. http.update\_method) - Jakub Filak - <, <=, >, >= operators on GetEntitySetFilter - Barton Ip - Django style filtering - Barton Ip - Add etag property to EntityProxy - Martin Miksik ### Fixed - URL encode $filter contents - Barton Ip - JSON errors caused by invalid content length of Batch responses - Barton Ip - Invalid test case - test_create_entity_nested_list - Martin Miksik ### Changed - ODataHttpResponse.from_string produces header of type {header: value} instead of [(header, value)] - Martin Miksik ## [1.5.0] ### Added - support for Edm.Float - Jakub Filak ### Changed - handle GET EntitySet payload without the member results - Jakub Filak - both Literal and JSON DateTimes has Timezone set to UTC - Jakub Filak ### Fixed - removed superfluous debug print when parsing FunctionImports from metadata - Jakub Filak - property 'Nullable' attributes are correctly parsed and respected - Vasilii Khomutov - use correct type of deserialization of Literal (URL) structure values - Jakub Filak - null values are correctly handled - Jakub Filak ## [1.4.0] ### Added - Client can be created from local metadata - Jakub Filak - support all standard EDM schema versions - Jakub Filak ### Fixed - make sure configured error policies are applied for Annotations referencing unknown type/member - Martin Miksik ## [1.3.0] ### Added - support Edm.EnumType - Martin Miksik - support for permissive parsing of $metadata - Martin Miksik - support deleting Entities - Martin Miksik ### Changed - Edm.Int64 literals do no need to have the suffix L - Jakub Filak - more user friendly Function call errors - Jakub Filak ### Fixed - correctly handle calls to Function Imports without return type - Jakub Filak - correctly serialize DateTime values to JSON in create/update methods - Martin Miksik - remove timezone info from DateTime URL literals - Martin Miksik ## [1.2.3] ### Added - add support for whitelisted and custom namespaces - Martin Miksik - add Microsoft's edm namespace to whitelisted namespaces - Martin Miksik ## [1.2.2] ### Fixed - fix parsing of Namespaces with several dots - Jakub Filak ## [1.2.1] ### Changed - handle association set ends with same entity sets - Lubos Mjachky ## [1.2.0] ### Added - add implementation of $count - FedorSelitsky ### Fixed - fix searching for Associations Set without Namespace - Jakub Filak ### Changed - reword error messages for Association Sets - Jakub Filak ## [1.1.2] ### Fixed - client: correctly detect MIME of $metadata - Jakub Filak ### Changed - dependencies: Update setup.py - minimal lxml instead of pinned. - Petr Hanak ## 1.1.1 - First PIP package release [Unreleased]: https://github.com/SAP/python-pyodata/compare/1.11.1...HEAD [1.11.1]: https://github.com/SAP/python-pyodata/compare/1.11.1...1.11.2 [1.11.1]: https://github.com/SAP/python-pyodata/compare/1.11.0...1.11.1 [1.11.0]: https://github.com/SAP/python-pyodata/compare/1.10.1...1.11.0 [1.10.1]: https://github.com/SAP/python-pyodata/compare/1.10.0...1.10.1 [1.10.0]: https://github.com/SAP/python-pyodata/compare/1.9.2...1.10.0 [1.9.2]: https://github.com/SAP/python-pyodata/compare/1.9.1...1.9.2 [1.9.1]: https://github.com/SAP/python-pyodata/compare/1.9.0...1.9.1 [1.9.0]: https://github.com/SAP/python-pyodata/compare/1.8.0...1.9.0 [1.8.0]: https://github.com/SAP/python-pyodata/compare/1.7.1...1.8.0 [1.7.1]: https://github.com/SAP/python-pyodata/compare/1.7.0...1.7.1 [1.7.0]: https://github.com/SAP/python-pyodata/compare/1.6.0...1.7.0 [1.6.0]: https://github.com/SAP/python-pyodata/compare/1.5.0...1.6.0 [1.5.0]: https://github.com/SAP/python-pyodata/compare/1.4.0...1.5.0 [1.4.0]: https://github.com/SAP/python-pyodata/compare/1.3.0...1.4.0 [1.3.0]: https://github.com/SAP/python-pyodata/compare/1.2.3...1.3.0 [1.2.3]: https://github.com/SAP/python-pyodata/compare/1.2.2...1.2.3 [1.2.2]: https://github.com/SAP/python-pyodata/compare/1.2.1...1.2.2 [1.2.1]: https://github.com/SAP/python-pyodata/compare/1.2.0...1.2.1 [1.2.0]: https://github.com/SAP/python-pyodata/compare/1.1.2...1.2.0 [1.1.2]: https://github.com/SAP/python-pyodata/compare/1.1.1...1.1.2 python-pyodata-1.11.2/CODE_OF_CONDUCT.md000066400000000000000000000064271500317427700173720ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource@sap.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq python-pyodata-1.11.2/CONTRIBUTING.md000066400000000000000000000071601500317427700170170ustar00rootroot00000000000000# How to contribute to PyOData ## **Did you find a bug?** * Create a pull request for simple problems. * Otherwise open a new issue with steps to reproduce. ## **Did you write a patch?** * Before contributing, please, make yourself familiar with git. You can [try git online](https://try.github.io/). Things would be easier for all of us if you do your changes on a branch. Use a single commit for every logical reviewable change, without unrelated modifications (that will help us if need to revert a particular commit). Please avoid adding commits fixing your previous commits, do amend or rebase instead. * Every Pull Request must contain test or a good justification why the test part is not included. * Every Pull Request must have signed CLA agreement. You can do it simply in the PR checks section. * If you believe that it is not necessary to add a test because there is already a test going through the statements you have modified, you are probably wrong because you either added something new and it should be tested or you fixed a bug which was not detected by the test and hence the test must be enhanced (ideally, you first fix the test to reproduce the bug and then you fix the bug). * Link commits to issues via referencing issue numbers: https://help.github.com/en/articles/closing-issues-using-keywords * Every commit must have either comprehensive commit message saying what is being changed and why or a link (an issue number on Github) to a bug report where this information is available. It is also useful to include notes about negative decisions - i.e. why you decided to not do particular things. Please bare in mind that other developers might not understand what the original problem was. * Try to follow the seven rules when writing commit messages: https://chris.beams.io/posts/git-commit/ * If you are not sure how to write a good commit message, go through the project history to find some inspiration. * Update [CHANGELOG.md](CHANGELOG.md) (Unreleased section) * Please use following (testing) workflow for your local work (same run on CI Github Actions but should pass locally before creating new PR): * use virtualenv, so you are isolated from your system-level installed packages * activate the virtualenv according your OS * pip install -r dev-requirements.txt * pip install -r requirements.txt * pytest --cov-report term --cov=pyodata * pylint --rcfile=.pylintrc --output-format=parseable --reports=no pyodata * flake8 --config=.flake8 pyodata There is a Makefile with all targets that can be used as well, if you are fan of makefiles. ## **Did you fix whitespace, format code, or make a purely cosmetic patch?** Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability of PyOData will generally not be accepted. ## Developer Certificate of Origin (DCO) Due to legal reasons, contributors will be asked to accept a DCO before they submit the first pull request to this project. SAP uses the standard DCO text of the Linux Foundation. This happens in an automated fashion during the submission process: the CLA assistant tool will add a comment to the pull request. Click it to check the DCO, then accept it on the following screen. CLA assistant will save this decision for upcoming contributions. This DCO replaces the previously used CLA ("Contributor License Agreement") as well as the "Corporate Contributor License Agreement" with new terms which are well-known standards and hence easier to approve by legal departments. Contributors who had already accepted the CLA in the past may be asked once to accept the new DCO. python-pyodata-1.11.2/LICENSE000066400000000000000000000261071500317427700155750ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2019 SAP® Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. python-pyodata-1.11.2/LICENSES/000077500000000000000000000000001500317427700157675ustar00rootroot00000000000000python-pyodata-1.11.2/LICENSES/Apache-2.0.txt000066400000000000000000000261071500317427700202140ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2019 SAP® Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. python-pyodata-1.11.2/MANIFEST.in000066400000000000000000000000401500317427700163120ustar00rootroot00000000000000include VERSION include LICENSE python-pyodata-1.11.2/Makefile000066400000000000000000000033771500317427700162340ustar00rootroot00000000000000PYTHON_MODULE=pyodata PYTHON_BINARIES= PYTHON_MODULE_FILES=$(shell find $(PYTHON_MODULE) -type f -name '*.py') TESTS_DIR=tests TESTS_UNIT_DIR=$(TESTS_DIR) TESTS_UNIT_FILES=$(shell find $(TESTS_UNIT_DIR) -type f -name '*.py') PYTHON_BIN=python3 PYTEST_MODULE=pytest PYTEST_PARAMS=--cov-report term --cov=pyodata PYLINT_BIN=pylint PYLINT_RC_FILE=.pylintrc PYLINT_PARAMS=--output-format=parseable --reports=no FLAKE8_BIN=flake8 FLAKE8_CONFIG_FILE=.flake8 FLAKE8_PARAMS= COVERAGE_BIN=coverage3 COVERAGE_REPORT_ARGS=--skip-covered COVERAGE_CMD_REPORT=$(COVERAGE_BIN) report COVERAGE_CMD_HTML=$(COVERAGE_BIN) html COVERAGE_HTML_DIR=.htmlcov COVERAGE_HTML_ARGS=$(COVERAGE_REPORT_ARGS) -d $(COVERAGE_HTML_DIR) COVERAGE_REPORT_FILES=$(PYTHON_BINARIES) $(PYTHON_MODULE_FILES) all: check .PHONY=check lint: doc $(PYLINT_BIN) --rcfile=$(PYLINT_RC_FILE) $(PYLINT_PARAMS) $(PYTHON_MODULE) $(FLAKE8_BIN) --config=$(FLAKE8_CONFIG_FILE) $(FLAKE8_PARAMS) $(PYTHON_MODULE) .PHONY=test test: $(PYTHON_BIN) -m $(PYTEST_MODULE) $(PYTEST_PARAMS) .coverage: $(COVERAGE_REPORT_FILES) $(TESTS_UNIT_FILES) $(MAKE) test PYTEST_PARAMS="--cov-report= --cov=$(PYTHON_MODULE)" .PHONY: report-coverage report-coverage: .coverage @ echo "Generating code coverage report ..." @ $(COVERAGE_CMD_REPORT) $(COVERAGE_REPORT_ARGS) $(COVERAGE_REPORT_FILES) .PHONY: report-coverage-html report-coverage-html: .coverage @ echo "Generating HTML code coverage report ..." @ $(COVERAGE_CMD_HTML) $(COVERAGE_HTML_ARGS) $(COVERAGE_REPORT_FILES) @ echo "Report: file://$$(pwd)/$(COVERAGE_HTML_DIR)/index.html" .PHONY=check check: lint test .PHONY=doc doc: $(MAKE) -C docs html @ echo -e "\nOpen: file://$$(pwd)/docs/_build/html/index.html" .PHONY=clean clean: rm --preserve-root -rf $(COVERAGE_HTML_DIR) .coverage python-pyodata-1.11.2/NOTICE000066400000000000000000000001141500317427700154620ustar00rootroot00000000000000Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. python-pyodata-1.11.2/README.md000066400000000000000000000062031500317427700160420ustar00rootroot00000000000000![Build Status](https://github.com/SAP/python-pyodata/actions/workflows/python-tests-compatibility.yml/badge.svg) ![Lint Status](https://github.com/SAP/python-pyodata/actions/workflows/python-linters.yml/badge.svg) [![PyPI version](https://badge.fury.io/py/pyodata.svg)](https://badge.fury.io/py/pyodata) [![codecov](https://codecov.io/gh/SAP/python-pyodata/branch/master/graph/badge.svg)](https://codecov.io/gh/SAP/python-pyodata) [![REUSE status](https://api.reuse.software/badge/github.com/SAP/python-pyodata)](https://api.reuse.software/info/github.com/SAP/python-pyodata) # Python OData Client - pyodata Python OData client which provides comfortable Python agnostic way for communication with OData services. The goal of this Python module is to hide all OData protocol implementation details. ## Supported features - OData V2 ## Requirements - [Python >= 3.9](https://www.python.org/downloads/) ## Download and Installation Install and update using pip: ```bash pip install -U pyodata ``` ## Configuration You can start building your OData projects straight away after installing the Python module without any additional configuration steps needed. ## Limitations There have been no limitations discovered yet. ## Known Issues There are no known issues at this time. ## How to obtain support We accept bug reports, feature requests, questions and comments via [GitHub issues](https://github.com/SAP/python-pyodata/issues) ## Usage The only thing you need to do is to import the _pyodata_ Python module and provide an object implementing interface compatible with [Session Object](https://2.python-requests.org/en/master/user/advanced/#session-objects) for the library [Requests](https://2.python-requests.org/en/master/). ```python import requests import pyodata SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' # Create instance of OData client client = pyodata.Client(SERVICE_URL, requests.Session()) ``` Find more sophisticated examples in [The User Guide](docs/usage/README.md). ## Contributing Please, go through [the Contributing guideline](CONTRIBUTING.md). ### Authoring a patch Here's an example workflow for a project `PyOData` hosted on Github Your username is `yourname` and you're submitting a basic bugfix or feature. * Hit 'fork' on Github, creating e.g. `yourname/PyOData`. * `git clone git@github.com:yourname/PyOData` * `git checkout -b foo_the_bars` to create new local branch named foo_the_bars * Hack, hack, hack * Run `python3 -m pytest` or `make check` * `git status` * `git add` * `git commit -s -m "Foo the bars"` * `git push -u origin HEAD` to create foo_the_bars branch in your fork * Visit your fork at Github and click handy "Pull request" button. * In the description field, write down issue number (if submitting code fixing an existing issue) or describe the issue + your fix (if submitting a wholly new bugfix). * Hit 'submit'! And please be patient - the maintainers will get to you when they can. ## License Copyright (c) 2023 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in [the LICENSE file](LICENSE) python-pyodata-1.11.2/VERSION000066400000000000000000000000071500317427700156270ustar00rootroot000000000000001.11.2 python-pyodata-1.11.2/bin/000077500000000000000000000000001500317427700153325ustar00rootroot00000000000000python-pyodata-1.11.2/bin/pyodata000077500000000000000000000161761500317427700167340ustar00rootroot00000000000000#!/usr/bin/env python3 import sys import logging from argparse import ArgumentParser import pyodata from pyodata.v2.model import PolicyFatal, PolicyWarning, PolicyIgnore, ParserError, Config import requests from getpass import getpass ERROR_POLICIES={ 'FATAL': PolicyFatal, 'WARNING': PolicyWarning, 'IGNORE': PolicyIgnore } POLICY_TARGETS={ 'PARSER_INVALID_PROPERTY': ParserError.PROPERTY, 'PARSER_INVALID_ANNOTATION': ParserError.ANNOTATION, 'PARSER_INVALID_ASSOCIATION': ParserError.ASSOCIATION, 'PARSER_INVALID_ENUM_TYPE': ParserError.ENUM_TYPE, 'PARSER_INVALID_ENTITY_TYPE': ParserError.ENTITY_TYPE, 'PARSER_INVALID_COMPLEX_TYPE': ParserError.COMPLEX_TYPE } def print_out_metadata_info(args, client): print('[Printing out all Entity Sets ...]') for es in client.schema.entity_sets: print(es.name) proprties = es.entity_type.proprties() for prop in es.entity_type.key_proprties: print(f' K {prop.name}({prop.typ.name})') proprties.remove(prop) for prop in proprties: print(f' + {prop.name}({prop.typ.name})') for prop in es.entity_type.nav_proprties: print(f' + {prop.name}({prop.to_role.entity_type_name})') for fs in client.schema.function_imports: print(f'{fs.http_method} {fs.name}') for param in fs.parameters: print(f' > {param.name}({param.typ.name})') if fs.return_type is not None: print(f' < {fs.return_type.name}') def print_out_entity_set(args, client): typ = client.schema.entity_set(args.name).entity_type entity_set = getattr(client.entity_sets, args.name) count = entity_set.get_entities().count().execute() count_width = len(str(count)) print('[Size of entity set:', count, ']') skip = 0 top = args.chunk_size start = 0 keys = {kp.name for kp in typ.key_proprties} members = {mp.name for mp in typ.proprties() if mp.name not in keys} while skip < count: if args.chunk_size < 1: entities = entity_set.get_entities().execute() skip = count # stop iteration after the first run else: entities = entity_set.get_entities().skip(skip).top(top).execute() for seq_no, entity in enumerate(entities, start=start): seq_no_str = str(seq_no) print('-- {0:-03}'.format(seq_no), '-' * (76 - len(seq_no_str))) for prop in keys: print(f'K {prop} = {getattr(entity, prop)}') for prop in members: print(f'+ {prop} = {getattr(entity, prop)}') print('-' * 80) skip += top start += len(entities) def print_out_function_import(args, client): function = getattr(client.functions, args.name) response = function.execute() print(response) def _parse_args(argv): parser = ArgumentParser() parser.add_argument('SERVICE_ROOT_URL', type=str) parser.add_argument('--user', default=None, type=str) parser.add_argument('--password', default=None, type=str) parser.add_argument('--metadata', default=None, type=str, help='Path to the XML file with service $metadata') parser.add_argument('--no-session-init', default=False, action='store_true', help='Skip HTTP session initialization') parser.add_argument('--default-error-policy', default=None, choices=ERROR_POLICIES.keys(), help='Specify metadata parser default error handler') parser.add_argument('--custom-error-policy', action='append', type=str, help='Specify metadata parser custom error handlers in the form: TARGET=POLICY') parser.add_argument('-v', '--verbose', dest='verbose_count', action='count', default=0, help='make verbose output') parser.add_argument('--chunk-size', type=int, default=0, help='amount of fetched entities in one GET EntitySet Request; 0 means all') parser.set_defaults(func=print_out_metadata_info) subparsers = parser.add_subparsers() entity_set_parser = subparsers.add_parser('ENTITY_SET') entity_set_parser.add_argument('name', type=str) entity_set_parser.set_defaults(func=print_out_entity_set) func_import_parser = subparsers.add_parser('FUNCTION_IMPORT') func_import_parser.add_argument('name', type=str) func_import_parser.add_argument('PARAMETERS', nargs='*', type=str, help='NAME=VALUE pairs') func_import_parser.set_defaults(func=print_out_function_import) args = parser.parse_args(argv[1:]) return args def _main(argv): args = _parse_args(argv) loglevel = max(3 - args.verbose_count, 0) * 10 logging.basicConfig() logger = logging.getLogger() logger.setLevel(loglevel) logging.debug('Logging level: %i', loglevel) session = requests.Session() if args.user is not None: if args.password is None: args.password = getpass(f'Enter password for {args.user}: ') session.auth = (args.user, args.password) # Oh, I am sorry for the double negation, # but I cannot find a better construction. if not args.no_session_init: print('[Initializing HTTP session ...]') try: session.head(args.SERVICE_ROOT_URL) args.password = 'xxxxx' except pyodata.exceptions.HttpError as err: sys.stderr.write(str(err)) sys.stderr.write('\n') sys.exit(1) static_metadata = None if args.metadata: print(f'[Loading $metadata from: {args.metadata} ...]') with open(args.metadata, 'rb') as mtd_fl: static_metadata = mtd_fl.read() else: print('[Fetching $metadata ...]') config = None def get_config(): if config is None: return Config() return config if args.default_error_policy: config = get_config() config.set_default_error_policy(ERROR_POLICIES[args.default_error_policy]()) if args.custom_error_policy: custom_policies = dict() try: for target, policy in (param.split('=') for param in args.custom_error_policy): try: custom_policies[POLICY_TARGETS[target]] = ERROR_POLICIES[policy]() except KeyError as ex: print(f'Invalid Error Target ({target}) or Error Policy ({policy}): {str(ex)}', file=sys.stderr) print('Allowed targets : {}'.format(';'.join(POLICY_TARGETS.keys())), file=sys.stderr) print('Allowed policies: {}'.format(';'.join(ERROR_POLICIES.keys())), file=sys.stderr) sys.exit(1) except ValueError as ex: print('Custom policy must have the format TARGET=POLICY: {}'.format(' '.join(args.custom_error_policy)), file=sys.stderr) sys.exit(1) config = get_config() config.set_custom_error_policy(custom_policies) client = pyodata.Client(args.SERVICE_ROOT_URL, session, metadata=static_metadata, config=config) args.func(args, client) print('[Done!]') return 0 if __name__ == '__main__': sys.exit(_main(sys.argv)) python-pyodata-1.11.2/dev-requirements.txt000066400000000000000000000003201500317427700206150ustar00rootroot00000000000000requests>=2.28.1 pytest>=7.1.2 pytest-aiohttp>=1.0.4 responses>=0.21.0 httpx>=0.23.0 respx>=0.19.2 setuptools>=38.2.4 setuptools-scm>=1.15.6 pylint==2.8.3 pytest-cov>=3.0.0 flake8==3.8.4 bandit==1.7.5 sphinx python-pyodata-1.11.2/docs/000077500000000000000000000000001500317427700155125ustar00rootroot00000000000000python-pyodata-1.11.2/docs/Makefile000066400000000000000000000011511500317427700171500ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: clean help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) clean: rm -rf "$(BUILDDIR)" python-pyodata-1.11.2/docs/conf.py000066400000000000000000000125611500317427700170160ustar00rootroot00000000000000# -*- coding: utf-8 -*- # # Configuration file for the Sphinx documentation builder. # # This file does only contain a selection of the most common options. For a # full list see the documentation: # http://www.sphinx-doc.org/en/master/config # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # # import os # import sys # sys.path.insert(0, os.path.abspath('.')) # -- Project information ----------------------------------------------------- project = 'PyOData' copyright = '2019 SAP SE or an SAP affiliate company' author = 'SAP' # The short X.Y version version = '' # The full version, including alpha/beta/rc tags release = '1.2.1' # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] source_suffix = ['.rst', '.md'] # The master toctree document. master_doc = 'index' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['usage/README.md'] # The name of the Pygments (syntax highlighting) style to use. pygments_style = None # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'alabaster' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # html_theme_options = { "show_related": False, "github_button": True, "github_user": "SAP", "github_repo": "python-pyodata", "github_type": "star", "travis_button": True, } # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # Custom sidebar templates, must be a dictionary that maps document names # to template names. # # The default sidebars (for documents that don't match any pattern) are # defined by theme itself. Builtin themes are using these templates by # default: ``['localtoc.html', 'relations.html', 'sourcelink.html', # 'searchbox.html']``. # # html_sidebars = {} # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. htmlhelp_basename = 'PyODatadoc' # -- Options for LaTeX output ------------------------------------------------ latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # # 'preamble': '', # Latex figure (float) alignment # # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'PyOData.tex', 'PyOData Documentation', 'SAP', 'manual'), ] # -- Options for manual page output ------------------------------------------ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'pyodata', 'PyOData Documentation', [author], 1) ] # -- Options for Texinfo output ---------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'PyOData', 'PyOData Documentation', author, 'PyOData', 'One line description of project.', 'Miscellaneous'), ] # -- Options for Epub output ------------------------------------------------- # Bibliographic Dublin Core info. epub_title = project # The unique identifier of the text. This can be a ISBN number # or the project homepage. # # epub_identifier = '' # A unique identification for the text. # # epub_uid = '' # A list of files that should not be packed into the epub file. epub_exclude_files = ['search.html'] # -- Extension configuration ------------------------------------------------- python-pyodata-1.11.2/docs/index.rst000066400000000000000000000032031500317427700173510ustar00rootroot00000000000000.. PyOData documentation master file, created by sphinx-quickstart on Sat Jun 15 16:52:02 2019. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. PyOData: OData for Pythonistas ============================== .. image:: https://badge.fury.io/py/pyodata.svg :target: https://pypi.org/project/pyodata/ .. image:: https://img.shields.io/pypi/pyversions/pyodata.svg :target: https://pypi.org/project/pyodata/ .. image:: https://img.shields.io/pypi/l/pyodata.svg :target: https://pypi.org/project/pyodata/ Python agnostic implementation of OData client library. Supported features ------------------ - OData V2 Basic usage ----------- .. _Requests: https://2.python-requests.org/en/master/ .. _Session: https://2.python-requests.org/en/master/user/advanced/#session-objects The only thing you need to do is to import the **pyodata** Python module and provide an object implementing interface compatible with Session_ from the library Requests_. .. code-block:: python import pyodata import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' HTTP_LIB = requests.Session() northwind = pyodata.Client(SERVICE_URL, HTTP_LIB) for customer in northwind.entity_sets.Customers.get_entities().execute(): print(customer.CustomerID, customer.CompanyName) The User Guide -------------- .. toctree:: :maxdepth: 2 usage/initialization.rst usage/querying.rst usage/creating.rst usage/updating.rst usage/deleting.rst usage/function_imports.rst usage/metadata.rst usage/advanced.rst usage/urls.rst python-pyodata-1.11.2/docs/make.bat000066400000000000000000000014271500317427700171230ustar00rootroot00000000000000@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=source set BUILDDIR=build if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% :end popd python-pyodata-1.11.2/docs/usage/000077500000000000000000000000001500317427700166165ustar00rootroot00000000000000python-pyodata-1.11.2/docs/usage/README.md000066400000000000000000000004501500317427700200740ustar00rootroot00000000000000The User Guide -------------- * [Initialization](initialization.rst) * [Querying](querying.rst) * [Creating](creating.rst) * [Updating](updating.rst) * [Deleting](deleting.rst) * [Function Imports](function_imports.rst) * [Metadata](metadata.rst) * [Advanced](advanced.rst) * [URLs](urls.rst) python-pyodata-1.11.2/docs/usage/advanced.rst000066400000000000000000000062161500317427700211220ustar00rootroot00000000000000Advanced usage ============== Batch requests -------------- Example of batch request that contains 3 simple entity queries: .. code-block:: python batch = northwind.create_batch() batch.add_request(northwind.entity_sets.Employees.get_entity(108)) batch.add_request(northwind.entity_sets.Employees.get_entity(234)) batch.add_request(northwind.entity_sets.Employees.get_entity(23)) response = batch.execute() print(response[0].EmployeeID, response[0].LastName) print(response[1].EmployeeID, response[1].LastName) print(response[2].EmployeeID, response[2].LastName) Example of batch request that contains simple entity query as well as changest consisting of two requests for entity modification: .. code-block:: python batch = northwind.create_batch() batch.add_request(northwind.entity_sets.Employees.get_entity(108)) changeset = northwind.create_changeset() changeset.add_request(northwind.entity_sets.Employees.update_entity(45).set(LastName='Douglas')) batch.add_request(changeset) response = batch.execute() print(response[0].EmployeeID, response[0].LastName) Error handling -------------- PyOData returns *HttpError* when the response code does not match the expected code. Basically the exception is raised for all status codes >= 400 and its instances have the property response which holds return value of the library making HTTP requests. For example, the following code show how to print out error details if Python Requests is used as the HTTP communication library. .. code-block:: python try: new_data = create_request.execute() except pyodata.exceptions.HttpError as ex: print(ex.response.text) In the case you know the implementation of back-end part and you want to show accurate errors reported by your service, you can replace *HttpError* by your sub-class *HttpError* by assigning your type into the class member *VendorType* of the class *HttpError*. .. code-block:: python from pyodata.exceptions import HttpError class MyHttpError(HttpError): def __init__(self, message, response): super(MyHttpError, self).__init__('Better message', response) HttpError.VendorType = MyHttpError The class *pyodata.vendor.SAP.BusinessGatewayError* is an example of such an HTTP error handling. Enable Logging -------------- .. _Python logging: https://docs.python.org/3/library/logging.html The library uses `Python logging`_ without own handler, so to enable logging it is enough to set log level to the desired value. .. code-block:: python import logging logging.basicConfig() root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) Dynamically referenced EntitySet ------------------------------------------------ If you need to work with many Entity Sets the same way or if you just need to pick up the used Entity Set name in run-time, you may find out the ability to get an instance of Entity Set proxy dynamically. Here is an example of how you can print a count of all employees: .. code-block:: python count = getattr(northwind.entity_sets, 'Employees').get_entities().count().execute() print(count) python-pyodata-1.11.2/docs/usage/creating.rst000066400000000000000000000032771500317427700211550ustar00rootroot00000000000000Creating ======== .. _CSRF: https://en.wikipedia.org/wiki/Cross-site_request_forgery .. _Requests: https://2.python-requests.org/en/master/ The create action executes the HTTP method POST which is usually protected by CSRF_ and therefore you must make some effort to initialize your HTTP Session to send POST requests acceptable by the remote server. Let's assume you use the python library Requests_ .. code-block:: python import pyodata import requests SERVICE_URL = 'http://example.io/TheServiceRoot/' session = requests.Session() response = session.head(SERVICE_URL, headers={'x-csrf-token': 'fetch'}) token = response.headers.get('x-csrf-token', '') session.headers.update({'x-csrf-token': token}) theservice = pyodata.Client(SERVICE_URL, session) Create an entity with a complex type property --------------------------------------------- You need to use the method set which accepts key value parameters: .. code-block:: python employee_data = { 'FirstName': 'Mark', 'LastName': 'Goody', 'Address': { 'HouseNumber': 42, 'Street': 'Paradise', 'City': 'Heaven' } } create_request = northwind.entity_sets.Employees.create_entity() create_request.set(**employee_data) new_employee_entity = create_request.execute() or you can do it explicitly: .. code-block:: python create_request = northwind.entity_sets.Employees.create_entity() create_request.set( FirstName='Mark', LastName='Goody', Address={ 'HouseNumber': 42, 'Street': 'Paradise', 'City': 'Heaven' } ) new_employee_entity = request.execute() python-pyodata-1.11.2/docs/usage/deleting.rst000066400000000000000000000031251500317427700211440ustar00rootroot00000000000000Deleting ======== .. _CSRF: https://en.wikipedia.org/wiki/Cross-site_request_forgery .. _Requests: https://2.python-requests.org/en/master/ The delete action executes the HTTP method DELETE which is usually protected by CSRF_ and therefore you must make some effort to initialize your HTTP Session to send DELETE requests acceptable by the remote server. Let's assume you use the python library Requests_ .. code-block:: python import pyodata import requests SERVICE_URL = 'http://example.io/TheServiceRoot/' session = requests.Session() response = session.head(SERVICE_URL, headers={'x-csrf-token': 'fetch'}) token = response.headers.get('x-csrf-token', '') session.headers.update({'x-csrf-token': token}) theservice = pyodata.Client(SERVICE_URL, session) Deleting an entity ------------------ You can either delete entity by passing its PropertyRef value to the delete function .. code-block:: python request = service.entity_sets.Employees.delete_entity(23) request.execute() or by passing the EntityKey object .. code-block:: python key = EntityKey(service.schema.entity_type('Employee'), ID=23) request = service.entity_sets.Employees.delete_entity(key=key) request.execute() Encode OData URL Path ------------------------------------------- By default the resource paths of requests are percent encoded. However if this is not what your API expects, you can disable the encoding with the variable encode_path by setting it to False. .. code-block:: python request = service.entity_sets.Employees.delete_entity(key=key, encode_path=False)python-pyodata-1.11.2/docs/usage/function_imports.rst000066400000000000000000000003701500317427700227520ustar00rootroot00000000000000Function imports ================ Calling a function import ------------------------- .. code-block:: python products = northwind.functions.GetProductsByRating.parameter('rating', 16).execute() for prod in products: print(prod) python-pyodata-1.11.2/docs/usage/initialization.rst000066400000000000000000000177551500317427700224160ustar00rootroot00000000000000Initialization ============== .. _Requests: https://requests.readthedocs.io/en/latest/ .. _Session: https://requests.readthedocs.io/en/latest/user/advanced/#session-objects **PyOData** requires an external HTTP library which has API compatible with Session_ from Requests_. Get the service --------------- Basic initialization which is going to work for everybody: .. code-block:: python import pyodata import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' northwind = pyodata.Client(SERVICE_URL, requests.Session()) Get the service for async libraries ----------------------------------- Initialization of the session instance is dependent on particular library, but also must have API compatible Session_ from Requests_. .. code-block:: python import httpx import aiohttp SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' service_httpx = await pyodata.Client.build_async_client(SERVICE_URL, httpx) service_aiohttp = await pyodata.Client.build_async_client(SERVICE_URL, aiohttp.ClientSession()) Get the service proxy client for an OData service requiring sap-client parameter -------------------------------------------------------------------------------- This is a sample when it is necessary to specify sap-client: .. code-block:: python import pyodata import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' session = requests.Session() param = {'sap-client': '510'} session.params = param northwind = pyodata.Client(SERVICE_URL, session) Get the service proxy client for an OData service requiring authentication -------------------------------------------------------------------------- Let's assume you need to work with a service at the URL *https://odata.example.com/Secret.svc* and User ID is 'MyUser' with the password 'MyPassword'. .. code-block:: python import pyodata import requests SERVICE_URL = 'https://odata.example.com/Secret.svc' session = requests.Session() session.auth = ('MyUser', 'MyPassword') theservice = pyodata.Client(SERVICE_URL, session) Get the service proxy client for an OData service requiring Certificate authentication -------------------------------------------------------------------------------------- Let's assume your service requires certificate based authentication and you are able to export the certificate into the file *mycert.p12*. You need to split the certificate into public key, private key and certificate authority key. The following steps has been verified on Fedora Linux and Mac OS. .. code-block:: bash openssl pkcs12 -in mycert.p12 -out ca.pem -cacerts -nokeys openssl pkcs12 -in mycert.p12 -out client.pem -clcerts -nokeys openssl pkcs12 -in mycert.p12 -out key.pem -nocerts openssl rsa -in key.pem -out key_decrypt.pem You can verify your steps by curl: .. code-block:: bash curl --key key_decrypt.pem --cacert ca.pem --cert client.pem -k 'SERVICE_URL/$metadata' Python client initialization: .. code-block:: python import pyodata import requests SERVICE_URL = 'https://odata.example.com/Secret.svc' session = requests.Session() session.verify = 'ca.pem' session.cert = ('client.pem', 'key_decrypt.pem') client = pyodata.Client(SERVICE_URL, session) For more information on client side SSL cerificationcas, please refer to this [gist](https://gist.github.com/mtigas/952344). Get the service with local metadata ----------------------------------- It may happen that you will have metadata document for your service downloaded in a local file and you will want to initialize the service proxy from this file. In such a case you can provide content of the file as the named argument `metadata`. Please, make sure you provide `bytes` and not `str` (required by the xml parser lxml). .. code-block:: python import pyodata import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' with open('/the/file/path.xml', 'rb') as mtd_file: local_metadata = mtd_file.read() northwind = pyodata.Client(SERVICE_URL, requests.Session(), metadata=local_metadata) Dealing with errors during parsing metadata ------------------------------------------- In the case where you need to consume a service which has not fully valid metadata document and is not under your control, you can configure the metadata parser to try to recover from detected problems. Parser recovery measures include actions such as using a stub entity type if the parser cannot find a referenced entity type. The stub entity type allows the parser to continue processing the given metadata but causes fatal errors when accessed from the client. Class config provides easy to use wrapper for all parser configuration. These are: - XML namespaces - Parser policies (how parser act in case of invalid XML tag). We now support three types of policies: - Policy fatal - the policy raises exception and terminates the parser - Policy warning - the policy reports the detected problem, executes a fallback code and then continues normally - Policy ignore - the policy executes a fallback code without reporting the problem and then continues normally Parser policies can be specified individually for each XML tag (See enum ParserError for more details). If no policy is specified for the tag, the default policy is used. For parser to use your custom configuration, it needs to be passed as an argument to the client. .. code-block:: python import pyodata from pyodata.v2.model import PolicyFatal, PolicyWarning, PolicyIgnore, ParserError, Config import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' namespaces = { 'edmx': 'customEdmxUrl.com', 'edm': 'customEdmUrl.com' } custom_config = Config( xml_namespaces=namespaces, default_error_policy=PolicyFatal(), custom_error_policies={ ParserError.ANNOTATION: PolicyWarning(), ParserError.ASSOCIATION: PolicyIgnore() }) northwind = pyodata.Client(SERVICE_URL, requests.Session(), config=custom_config) Additionally, Schema class has Boolean atribute 'is_valid' that returns if the parser encountered errors. It's value does not depends on used Parser policy. .. code-block:: python northwind.schema.is_valid Prevent substitution by default values -------------------------------------- Per default, missing properties get filled in by type specific default values. While convenient, this throws away the knowledge of whether a value was missing in the first place. To prevent this, the class config mentioned in the section above takes an additional parameter, `retain_null`. .. code-block:: python import pyodata import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' northwind = pyodata.Client(SERVICE_URL, requests.Session(), config=pyodata.v2.model.Config(retain_null=True)) unknown_shipped_date = northwind.entity_sets.Orders_Qries.get_entity(OrderID=11058, CompanyName='Blauer See Delikatessen').execute() print( f'Shipped date: {"unknown" if unknown_shipped_date.ShippedDate is None else unknown_shipped_date.ShippedDate}') Changing `retain_null` to `False` will print `Shipped date: 1753-01-01 00:00:00+00:00`. Set custom namespaces (Deprecated - use config instead) ------------------------------------------------------- Let's assume you need to work with a service which uses namespaces not directly supported by this library e. g. ones hosted on private urls such as *customEdmxUrl.com* and *customEdmUrl.com*: .. code-block:: python import pyodata import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' namespaces = { 'edmx': 'customEdmxUrl.com' 'edm': 'customEdmUrl.com' } northwind = pyodata.Client(SERVICE_URL, requests.Session(), namespaces=namespaces) python-pyodata-1.11.2/docs/usage/metadata.rst000066400000000000000000000023071500317427700211320ustar00rootroot00000000000000Metadata evaluation =================== By default, the client makes sure that references to properties, entities and entity sets are pointing to existing elements. The most often problem that we had to deal with was an invalid *ValueList* annotation pointing to a non-existing property. To enable verification of service definition, the client instance of the class *Service* publishes the property *schema* which returns an instance of the class *Schema* from the module *pyodata.v2.model* and it contains parsed *$metadata*. List of the defined EntitySets ------------------------------ If you need to iterate over all EntitySets: .. code-block:: python for es in service.schema.entity_sets: print(es.name) or if you just need the list of EntitySet names: .. code-block:: python entity_set_names = [es.name for es in service.schema.entity_sets] Property has this label ----------------------- .. code-block:: python assert northwind.schema.entity_type('Customer').proprty('CustomerID').label == 'Identifier' Property has a value helper --------------------------- .. code-block:: python assert northwind.schema.entity_type('Customer').proprty('City').value_helper is not None python-pyodata-1.11.2/docs/usage/querying.rst000066400000000000000000000137301500317427700212170ustar00rootroot00000000000000Querying ======== Get one entity identified by its key value ------------------------------------------ Get employee identified by 1 and print employee first name: .. code-block:: python employee1 = northwind.entity_sets.Employees.get_entity(1).execute() print(employee1.FirstName) Get one entity identified by its key value which is not scalar -------------------------------------------------------------- Get number of orderd units in the order identified by ProductID 42 and OrderID 10248: .. code-block:: python order = northwind.entity_sets.Order_Details.get_entity(OrderID=10248, ProductID=42).execute() print(order.Quantity) Get all entities of an entity set --------------------------------- Print unique identification (Id) and last name of all employees: .. code-block:: python employees = northwind.entity_sets.Employees.get_entities().select('EmployeeID,LastName').execute() for employee in employees: print(employee.EmployeeID, employee.LastName) Get entities matching a filter ------------------------------ Print unique identification (Id) of all employees with name John Smith: .. code-block:: python smith_employees_request = northwind.entity_sets.Employees.get_entities() smith_employees_request = smith_employees_request.filter("FirstName eq 'John' and LastName eq 'Smith'") for smith in smith_employees_request.execute(): print(smith.EmployeeID) Get entities matching a filter in more Pythonic way --------------------------------------------------- Print unique identification (Id) of all employees with name John Smith: .. code-block:: python from pyodata.v2.service import GetEntitySetFilter as esf smith_employees_request = northwind.entity_sets.Employees.get_entities() smith_employees_request = smith_employees_request.filter(esf.and_( smith_employees_request.FirstName == 'Jonh', smith_employees_request.LastName == 'Smith')) for smith in smith_employees_request.execute(): print(smith.EmployeeID) Get entities matching a filter in ORM style --------------------------------------------------- Print unique identification (Id) of all employees with name John Smith: .. code-block:: python from pyodata.v2.service import GetEntitySetFilter as esf smith_employees_request = northwind.entity_sets.Employees.get_entities() smith_employees_request = smith_employees_request.filter(FirstName="John", LastName="Smith") for smith in smith_employees_request.execute(): print(smith.EmployeeID) Get entities matching a complex filter in ORM style --------------------------------------------------- Print unique identification (Id) of all employees with name John Smith: .. code-block:: python from pyodata.v2.service import GetEntitySetFilter as esf smith_employees_request = northwind.entity_sets.Employees.get_entities() smith_employees_request = smith_employees_request.filter(FirstName__contains="oh", LastName__startswith="Smi") for smith in smith_employees_request.execute(): print(smith.EmployeeID) Get a count of entities ----------------------- Print a count of all employees: .. code-block:: python count = northwind.entity_sets.Employees.get_entities().count().execute() print(count) Print all employees and their count: .. code-block:: python employees = northwind.entity_sets.Employees.get_entities().count(inline=True).execute() print(employees.total_count) for employee in employees: print(employee.EmployeeID, employee.LastName) Get a count of entities via navigation property ----------------------------------------------- Print a count of all orders associated with Employee 1: .. code-block:: python count = northwind.entity_sets.Employees.get_entity(1).nav('Orders').get_entities().count().execute() print(count) Print all orders associated with Employee 1 and their count: .. code-block:: python orders = northwind.entity_sets.Employees.get_entity(1).nav('Orders').get_entities().count(inline=True).execute() print(orders.total_count) for order in orders: print(order.OrderID, order.ProductID) Use non-standard OData URL Query parameters ------------------------------------------- Sometimes services implement extension to OData model and require addition URL query parameters. In such a case, you can enrich HTTP request made by pyodata with these parameters by the method `custom(name: str, value: str)`. .. code-block:: python employee = northwind.entity_sets.Employees.get_entity(1).custom('sap-client', '100').execute() .. code-block:: python employees = northwind.entity_sets.Employees.get_entities().custom('sap-client', '100').custom('$skiptoken', 'ABCD').top(10).execute() Encode OData URL Path ------------------------------------------- By default the resource paths of requests are percent encoded. However if this is not what your API expects, you can disable the encoding with the variable encode_path by setting it to False. .. code-block:: python employee = northwind.entity_sets.Employees.get_entity(1, encode_path=False).execute() Query server-side paginations using the __next field ------------------------------------------------------------------- Response may contains ony partial listings of the Collection. In this case, "__next" name/value pair is included, where the value is a URI which identifies the next partial set of entities. .. code-block:: python employees = northwind.entity_sets.Employees.get_entities().select('EmployeeID,LastName').execute() while True: for employee in employees: print(employee.EmployeeID, employee.LastName) # Stop if server has no more entities left if employees.next_url is None: break # We got a partial answer - continue with next page employees = northwind.entity_sets.Employees.get_entities().next_url(employees.next_url).execute() python-pyodata-1.11.2/docs/usage/updating.rst000066400000000000000000000030611500317427700211630ustar00rootroot00000000000000Updating ======== To update an entity, you must create an updated request, set properties to the values you want and execute the request. The library will send an HTTP PATCH request to the remote service. .. code-block:: python import pyodata import requests SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' northwind = pyodata.Client(SERVICE_URL, requests.Session()) update_request = northwind.entity_sets.Customers.update_entity(CustomerID='ALFKI') update_request.set(CompanyName='Alfons Kitten') update_request.execute() In the case the service you are dealing with requires PUT method, you have two options. The first option allows you to change the used HTTP method for a single call via the key word parameter *method* of the method *update_entity*. .. code-block:: python update_request = northwind.entity_sets.Customers.update_entity(CustomerID='ALFKI', method='PUT') If you need to run more update requests for different entity sets and all of them must be *PUT*, then you can consider setting the default service's update method to *PUT*. .. code-block:: python northwind.config['http']['update_method'] = 'PUT' Encode OData URL Path ------------------------------------------- By default the resource paths of requests are percent encoded. However if this is not what your API expects, you can disable the encoding with the variable encode_path by setting it to False. .. code-block:: python update_request = northwind.entity_sets.Customers.update_entity(CustomerID='ALFKI', encode_path=False)python-pyodata-1.11.2/docs/usage/urls.rst000066400000000000000000000026031500317427700203360ustar00rootroot00000000000000URLs generation =============== .. _Locust: https://docs.locust.io/en/stable/ Sometimes you may want to not use **PyOData** to actually make the HTTP requests, but just grab the url and body for some other library. For that, you can use following methods from ODataHttpRequest class - which is base of every query, update or delete covered in pyodata documentation. .. code-block:: python .get_method() .get_path() .get_query_params() .get_body() Locust integration example -------------------------- **Warning** - execute load testing scripts only against service you own! Following is example of integration of pyodata as url provider for Locust_ load testing tool. .. code-block:: python import requests import pyodata import os from locust import HttpUser, task, between SERVICE_URL = 'http://services.odata.org/V2/Northwind/Northwind.svc/' odataClient = pyodata.Client(SERVICE_URL, requests.Session()) smith_employees_query = odataClient.entity_sets.Employees.get_entities().filter("FirstName eq 'John' and LastName eq 'Smith'") class MyUser(HttpUser): wait_time = between(5, 15) host = SERVICE_URL @task(1) def filter_query(self): urlpath = smith_employees_query.get_path() url = os.path.join(SERVICE_URL,urlpath) params = smith_employees_query.get_query_params() self.client.get(url,params=params) python-pyodata-1.11.2/docs/usage/vendors.rst000066400000000000000000000027251500317427700210360ustar00rootroot00000000000000Vendor-specific helpers ============== This document presents the helpers found in ``pyodata.vendor`` Get the service proxy client for an OData service published on SAP BTP, ABAP environment -------------------------------------------------------------------------- Let's assume you have an ABAP environment service instance running on SAP Business Technology Platform. You have used this instance to provide an OData service by using, for example, the ABAP RESTful Application Programming Model. To connect to it, you need to provide several attributes found in the JSON service key of the instance, as well as your username and password for SAP BTP. ``pyodata.vendor.SAP`` offers a helper that takes the arguments described above, as well as an existing ``requests.Session`` object (or another one conforming to the same API), and adds the required token to the session object's authorization header. The following code demonstrates using the helper. .. code-block:: python import pyodata from pyodata.vendor import SAP import requests import json with open('key.txt', 'r') as f: KEY = json.loads(f.read()) USER = "MyBtpUser" PASSWORD = "MyBtpPassword" SERVICE_URL = KEY["url"] + "/sap/opu/odata/sap/" + "ZMyBtpService" session = SAP.add_btp_token_to_session(requests.Session(), KEY, USER, PASSWORD) # do something more with session object if necessary (e.g. adding sap-client parameter, or CSRF token) client = pyodata.Client(SERVICE_URL, session) python-pyodata-1.11.2/pyodata/000077500000000000000000000000001500317427700162235ustar00rootroot00000000000000python-pyodata-1.11.2/pyodata/__init__.py000066400000000000000000000001351500317427700203330ustar00rootroot00000000000000"""Enterprise ready Python OData client""" from .client import Client __all__ = ["Client"] python-pyodata-1.11.2/pyodata/client.py000066400000000000000000000105621500317427700200570ustar00rootroot00000000000000"""OData Client Implementation""" import logging import warnings import pyodata.v2.model import pyodata.v2.service from pyodata.exceptions import PyODataException, HttpError async def _async_fetch_metadata(connection, url, logger): logger.info('Fetching metadata') async with connection.get(url + '$metadata') as async_response: resp = pyodata.v2.service.ODataHttpResponse(url=async_response.url, headers=async_response.headers, status_code=async_response.status, content=await async_response.read()) return _common_fetch_metadata(resp, logger) def _fetch_metadata(connection, url, logger): # download metadata logger.info('Fetching metadata') resp = connection.get(url + '$metadata') return _common_fetch_metadata(resp, logger) def _common_fetch_metadata(resp, logger): logger.debug('Retrieved the response:\n%s\n%s', '\n'.join((f'H: {key}: {value}' for key, value in resp.headers.items())), resp.content) if resp.status_code != 200: raise HttpError( f'Metadata request failed, status code: {resp.status_code}, body:\n{resp.content}', resp) mime_type = resp.headers['content-type'] if not any((typ in ['application/xml', 'application/atom+xml', 'text/xml'] for typ in mime_type.split(';'))): raise HttpError( f'Metadata request did not return XML, MIME type: {mime_type}, body:\n{resp.content}', resp) return resp.content class Client: """OData service client""" # pylint: disable=too-few-public-methods ODATA_VERSION_2 = 2 @staticmethod async def build_async_client(url, connection, odata_version=ODATA_VERSION_2, namespaces=None, config: pyodata.v2.model.Config = None, metadata: str = None): """Create instance of the OData Client for given URL""" logger = logging.getLogger('pyodata.client') if odata_version == Client.ODATA_VERSION_2: # sanitize url url = url.rstrip('/') + '/' if metadata is None: metadata = await _async_fetch_metadata(connection, url, logger) else: logger.info('Using static metadata') return Client._build_service(logger, url, connection, odata_version, namespaces, config, metadata) raise PyODataException(f'No implementation for selected odata version {odata_version}') def __new__(cls, url, connection, odata_version=ODATA_VERSION_2, namespaces=None, config: pyodata.v2.model.Config = None, metadata: str = None): """Create instance of the OData Client for given URL""" logger = logging.getLogger('pyodata.client') if odata_version == Client.ODATA_VERSION_2: # sanitize url url = url.rstrip('/') + '/' if metadata is None: metadata = _fetch_metadata(connection, url, logger) else: logger.info('Using static metadata') return Client._build_service(logger, url, connection, odata_version, namespaces, config, metadata) raise PyODataException(f'No implementation for selected odata version {odata_version}') @staticmethod def _build_service(logger, url, connection, odata_version=ODATA_VERSION_2, namespaces=None, config: pyodata.v2.model.Config = None, metadata: str = None): if config is not None and namespaces is not None: raise PyODataException('You cannot pass namespaces and config at the same time') if config is None: config = pyodata.v2.model.Config() if namespaces is not None: warnings.warn("Passing namespaces directly is deprecated. Use class Config instead", DeprecationWarning) config.namespaces = namespaces # create model instance from received metadata logger.info('Creating OData Schema (version: %d)', odata_version) schema = pyodata.v2.model.MetadataBuilder(metadata, config=config).build() # create service instance based on model we have logger.info('Creating OData Service (version: %d)', odata_version) service = pyodata.v2.service.Service(url, schema, connection, config=config) return service python-pyodata-1.11.2/pyodata/exceptions.py000066400000000000000000000021031500317427700207520ustar00rootroot00000000000000"""PyOData exceptions hierarchy""" class PyODataException(Exception): """Base class for all PyOData exceptions Raised when an error is detected that does not fall in any of the other categories. """ class PyODataModelError(PyODataException): """Raised when model error occurs""" class PyODataParserError(PyODataException): """Raised when parser error occurs""" class ExpressionError(PyODataException): """Raise when runtime logical expression error occurs""" class HttpError(PyODataException): """Raised when unexpected HTTP status code is received """ VendorType = None def __new__(cls, message, response): if HttpError.VendorType is not None: return super(HttpError, cls).__new__(HttpError.VendorType, message, response) return super(HttpError, cls).__new__(cls, message, response) def __init__(self, message, response): super(HttpError, self).__init__(message) self.response = response class ProgramError(PyODataException): """Raised when an error in the program logic occurs""" python-pyodata-1.11.2/pyodata/v2/000077500000000000000000000000001500317427700165525ustar00rootroot00000000000000python-pyodata-1.11.2/pyodata/v2/__init__.py000066400000000000000000000000001500317427700206510ustar00rootroot00000000000000python-pyodata-1.11.2/pyodata/v2/model.py000066400000000000000000003050641500317427700202340ustar00rootroot00000000000000""" Simple representation of Metadata of OData V2 Author: Jakub Filak Date: 2017-08-21 """ # pylint: disable=missing-docstring,too-many-instance-attributes,too-many-arguments,protected-access,no-member,line-too-long,logging-format-interpolation,too-few-public-methods,too-many-lines, too-many-public-methods import base64 import collections import datetime from enum import Enum, auto import io import itertools import logging import re import warnings from abc import ABC, abstractmethod from lxml import etree from pyodata.exceptions import PyODataException, PyODataModelError, PyODataParserError LOGGER_NAME = 'pyodata.model' FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE = False FIX_SCREWED_UP_MAXIMUM_DATETIME_VALUE = False IdentifierInfo = collections.namedtuple('IdentifierInfo', 'namespace name') TypeInfo = collections.namedtuple('TypeInfo', 'namespace name is_collection') def modlog(): return logging.getLogger(LOGGER_NAME) class NullAssociation: def __init__(self, name): self.name = name def __getattr__(self, item): raise PyODataModelError('Cannot access this association. An error occurred during parsing ' 'association metadata due to that annotation has been omitted.') class NullType: def __init__(self, name): self.name = name def __getattr__(self, item): raise PyODataModelError(f'Cannot access this type. An error occurred during parsing ' f'type stated in xml({self.name}) was not found, therefore it has been replaced with NullType.') class ErrorPolicy(ABC): @abstractmethod def resolve(self, ekseption): pass class PolicyFatal(ErrorPolicy): def resolve(self, ekseption): raise ekseption class PolicyWarning(ErrorPolicy): def __init__(self): logging.basicConfig(format='%(levelname)s: %(message)s') self._logger = logging.getLogger() def resolve(self, ekseption): self._logger.warning('[%s] %s', ekseption.__class__.__name__, str(ekseption)) class PolicyIgnore(ErrorPolicy): def resolve(self, ekseption): pass class ParserError(Enum): PROPERTY = auto() ANNOTATION = auto() ASSOCIATION = auto() ENUM_TYPE = auto() ENTITY_TYPE = auto() COMPLEX_TYPE = auto() class Config: def __init__(self, custom_error_policies=None, default_error_policy=None, xml_namespaces=None, retain_null=False): """ :param custom_error_policies: {ParserError: ErrorPolicy} (default None) Used to specified individual policies for XML tags. See documentation for more details. :param default_error_policy: ErrorPolicy (default PolicyFatal) If custom policy is not specified for the tag, the default policy will be used. :param xml_namespaces: {str: str} (default None) :param retain_null: bool (default False) If true, do not substitute missing (and null-able) values with default value. """ self._custom_error_policy = custom_error_policies if default_error_policy is None: default_error_policy = PolicyFatal() self._default_error_policy = default_error_policy if xml_namespaces is None: xml_namespaces = {} self._namespaces = xml_namespaces self._retain_null = retain_null def err_policy(self, error: ParserError): if self._custom_error_policy is None: return self._default_error_policy return self._custom_error_policy.get(error, self._default_error_policy) def set_default_error_policy(self, policy: ErrorPolicy): self._custom_error_policy = None self._default_error_policy = policy def set_custom_error_policy(self, policies: dict): self._custom_error_policy = policies @property def namespaces(self): return self._namespaces @namespaces.setter def namespaces(self, value: dict): self._namespaces = value @property def retain_null(self): return self._retain_null class Identifier: def __init__(self, name): super(Identifier, self).__init__() self._name = name def __repr__(self): return f"{self.__class__.__name__}({self._name})" def __str__(self): return f"{self.__class__.__name__}({self._name})" @property def name(self): return self._name @staticmethod def parse(value): parts = value.split('.') if len(parts) == 1: return IdentifierInfo(None, value) return IdentifierInfo('.'.join(parts[:-1]), parts[-1]) class Types: """Repository of all available OData V2 primitive types + their Collection variants Since each type has instance of appropriate type, this repository acts as central storage for all instances. The rule is: don't create any type instances if not necessary, always reuse existing instances if possible """ Types = None @staticmethod def _build_types(): """Create and register instances of all primitive Edm types""" if Types.Types is None: Types.Types = {} Types.register_type(Typ('Null', 'null')) Types.register_type(Typ('Edm.Binary', 'binary\'\'', EdmBinaryTypTraits('(?:binary|X)'))) Types.register_type(Typ('Edm.Boolean', 'false', EdmBooleanTypTraits())) Types.register_type(Typ('Edm.Byte', '0')) Types.register_type(Typ('Edm.DateTime', 'datetime\'1753-01-01T00:00\'', EdmDateTimeTypTraits())) Types.register_type(Typ('Edm.Decimal', '0.0M')) Types.register_type(Typ('Edm.Double', '0.0d', EdmFPNumTypTraits.edm_double())) Types.register_type(Typ('Edm.Single', '0.0f', EdmFPNumTypTraits.edm_single())) Types.register_type(Typ('Edm.Float', '0.0d', EdmFPNumTypTraits.edm_float())) Types.register_type( Typ('Edm.Guid', 'guid\'00000000-0000-0000-0000-000000000000\'', EdmPrefixedTypTraits('guid'))) Types.register_type(Typ('Edm.Int16', '0', EdmIntTypTraits())) Types.register_type(Typ('Edm.Int32', '0', EdmIntTypTraits())) Types.register_type(Typ('Edm.Int64', '0L', EdmLongIntTypTraits())) Types.register_type(Typ('Edm.SByte', '0')) Types.register_type(Typ('Edm.String', '\'\'', EdmStringTypTraits())) Types.register_type(Typ('Edm.Time', 'time\'PT00H00M\'')) Types.register_type( Typ('Edm.DateTimeOffset', 'datetimeoffset\'1753-01-01T00:00:00Z\'', EdmDateTimeOffsetTypTraits())) @staticmethod def register_type(typ): """Add new type to the type repository as well as its collection variant""" # build types hierarchy on first use (lazy creation) if Types.Types is None: Types._build_types() # register type only if it doesn't exist # pylint: disable=unsupported-membership-test if typ.name not in Types.Types: # pylint: disable=unsupported-assignment-operation Types.Types[typ.name] = typ # automatically create and register collection variant if not exists collection_name = f'Collection({typ.name})' # pylint: disable=unsupported-membership-test if collection_name not in Types.Types: collection_typ = Collection(typ.name, typ) # pylint: disable=unsupported-assignment-operation Types.Types[collection_name] = collection_typ @staticmethod def from_name(name): # build types hierarchy on first use (lazy creation) if Types.Types is None: Types._build_types() search_name = name # detect if name represents collection is_collection = name.lower().startswith('collection(') and name.endswith(')') if is_collection: name = name[11:-1] # strip collection() decorator search_name = f'Collection({name})' # pylint: disable=unsubscriptable-object return Types.Types[search_name] @staticmethod def parse_type_name(type_name): # detect if name represents collection is_collection = type_name.lower().startswith('collection(') and type_name.endswith(')') if is_collection: type_name = type_name[11:-1] # strip collection() decorator identifier = Identifier.parse(type_name) if identifier.namespace == 'Edm': return TypeInfo(None, type_name, is_collection) return TypeInfo(identifier.namespace, identifier.name, is_collection) class EdmStructTypeSerializer: """Basic implementation of (de)serialization for Edm complex types All properties existing in related Edm type are taken into account, others are ignored TODO: it can happen that inifinite recurision occurs for cases when property types are referencich each other. We need some research here to avoid such cases. """ @staticmethod def to_literal(edm_type, value): # pylint: disable=no-self-use if not edm_type: raise PyODataException(f'Cannot encode value {value} without complex type information') result = {} for type_prop in edm_type.proprties(): if type_prop.name in value: result[type_prop.name] = type_prop.to_literal(value[type_prop.name]) return result @staticmethod def from_json(edm_type, value): # pylint: disable=no-self-use if not edm_type: raise PyODataException(f'Cannot decode value {value} without complex type information') result = {} for type_prop in edm_type.proprties(): if type_prop.name in value: result[type_prop.name] = type_prop.from_json(value[type_prop.name]) return result @staticmethod def from_literal(edm_type, value): # pylint: disable=no-self-use if not edm_type: raise PyODataException(f'Cannot decode value {value} without complex type information') result = {} for type_prop in edm_type.proprties(): if type_prop.name in value: result[type_prop.name] = type_prop.from_literal(value[type_prop.name]) return result class TypTraits: """Encapsulated differences between types""" def __repr__(self): return self.__class__.__name__ # pylint: disable=no-self-use def to_literal(self, value): return value # pylint: disable=no-self-use def from_json(self, value): return value def to_json(self, value): return value def from_literal(self, value): return value class EdmPrefixedTypTraits(TypTraits): """Is good for all types where values have form: prefix'value'""" def __init__(self, prefix): super(EdmPrefixedTypTraits, self).__init__() self._prefix = prefix def to_literal(self, value): return '{}\'{}\''.format(self._prefix, value) def from_literal(self, value): matches = re.match(f"^{self._prefix}'(.*)'$", value) if not matches: raise PyODataModelError( f"Malformed value {value} for primitive Edm type. Expected format is {self._prefix}'value'") return matches.group(1) class EdmBinaryTypTraits(EdmPrefixedTypTraits): """Edm.Binary traits""" def to_literal(self, value): binary = base64.b64decode(value, validate=True) return f"binary'{base64.b16encode(binary).decode()}'" def from_literal(self, value): binary = base64.b16decode(super().from_literal(value), casefold=True) return base64.b64encode(binary).decode() def ms_since_epoch_to_datetime(value, tzinfo): """Convert milliseconds since midnight 1.1.1970 to datetime""" try: # https://stackoverflow.com/questions/36179914/timestamp-out-of-range-for-platform-localtime-gmtime-function return datetime.datetime(1970, 1, 1, tzinfo=tzinfo) + datetime.timedelta(milliseconds=int(value)) except (ValueError, OverflowError): min_ticks = -62135596800000 max_ticks = 253402300799999 if FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE and int(value) < min_ticks: # Some service providers return false minimal date values. # -62135596800000 is the lowest value PyOData could read. # This workaround fixes this issue and returns 0001-01-01 00:00:00+00:00 in such a case. return datetime.datetime(year=1, day=1, month=1, tzinfo=tzinfo) if FIX_SCREWED_UP_MAXIMUM_DATETIME_VALUE and int(value) > max_ticks: return datetime.datetime(year=9999, day=31, month=12, tzinfo=tzinfo) raise PyODataModelError(f'Cannot decode datetime from value {value}. ' f'Possible value range: {min_ticks} to {max_ticks}. ' f'You may fix this by setting `FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE` ' f' or `FIX_SCREWED_UP_MAXIMUM_DATETIME_VALUE` as a workaround.') def parse_datetime_literal(value): try: return datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%f') except ValueError: try: return datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S') except ValueError: try: return datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M') except ValueError: raise PyODataModelError(f'Cannot decode datetime from value {value}.') class EdmDateTimeTypTraits(EdmPrefixedTypTraits): """Edm.DateTime traits Represents date and time with values ranging from 12:00:00 midnight, January 1, 1753 A.D. through 11:59:59 P.M, December 9999 A.D. Literal form: datetime'yyyy-mm-ddThh:mm[:ss[.fffffff]]' NOTE: Spaces are not allowed between datetime and quoted portion. datetime is case-insensitive Example 1: datetime'2000-12-12T12:00' JSON has following format: /Date(1516614510000)/ https://blogs.sap.com/2017/01/05/date-and-time-in-sap-gateway-foundation/ """ def __init__(self): super(EdmDateTimeTypTraits, self).__init__('datetime') def to_literal(self, value): """Convert python datetime representation to literal format None: this could be done also via formatting string: value.strftime('%Y-%m-%dT%H:%M:%S.%f') """ if not isinstance(value, datetime.datetime): raise PyODataModelError( f'Cannot convert value of type {type(value)} to literal. Datetime format is required.') if value.tzinfo != datetime.timezone.utc: raise PyODataModelError('Edm.DateTime accepts only UTC') # Sets timezone to none to avoid including timezone information in the literal form. return super(EdmDateTimeTypTraits, self).to_literal(value.replace(tzinfo=None).isoformat()) def to_json(self, value): if isinstance(value, str): return value if value.tzinfo != datetime.timezone.utc: raise PyODataModelError('Edm.DateTime accepts only UTC') # Converts datetime into timestamp in milliseconds in UTC timezone as defined in ODATA specification # https://www.odata.org/documentation/odata-version-2-0/json-format/ # See also: https://docs.python.org/3/library/datetime.html#datetime.datetime.timestamp ticks = (value - datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc)) / datetime.timedelta(milliseconds=1) return f'/Date({int(ticks)})/' def from_json(self, value): if value is None: return None matches = re.match(r"^/Date\((?P-?\d+)(?P[+-]\d+)?\)/$", value) try: milliseconds_since_epoch = matches.group('milliseconds_since_epoch') except AttributeError: raise PyODataModelError( f"Malformed value {value} for primitive Edm.DateTime type." " Expected format is /Date([±])/") try: offset_in_minutes = int(matches.group('offset_in_minutes') or 0) timedelta = datetime.timedelta(minutes=offset_in_minutes) except ValueError: raise PyODataModelError( f"Malformed value {value} for primitive Edm.DateTime type." " Expected format is /Date([±])/") except AttributeError: timedelta = datetime.timedelta() # Missing offset is interpreted as UTC # Might raise a PyODataModelError exception return ms_since_epoch_to_datetime(milliseconds_since_epoch, datetime.timezone.utc) + timedelta def from_literal(self, value): if value is None: return None value = super(EdmDateTimeTypTraits, self).from_literal(value) # Note: parse_datetime_literal raises a PyODataModelError exception on invalid formats return parse_datetime_literal(value).replace(tzinfo=datetime.timezone.utc) class EdmDateTimeOffsetTypTraits(EdmPrefixedTypTraits): """Edm.DateTimeOffset traits Represents date and time, plus an offset in minutes from UTC, with values ranging from 12:00:00 midnight, January 1, 1753 A.D. through 11:59:59 P.M, December 9999 A.D Literal forms: datetimeoffset'yyyy-mm-ddThh:mm[:ss]±ii:nn' (works for all time zones) datetimeoffset'yyyy-mm-ddThh:mm[:ss]Z' (works only for UTC) NOTE: Spaces are not allowed between datetimeoffset and quoted portion. The datetime part is case-insensitive, the offset one is not. Example 1: datetimeoffset'1970-01-01T00:00:01+00:30' - /Date(1000+0030)/ (As DateTime, but with a 30 minutes timezone offset) Example 1: datetimeoffset'1970-01-01T00:00:01-00:60' - /Date(1000-0030)/ (As DateTime, but with a negative 60 minutes timezone offset) https://blogs.sap.com/2017/01/05/date-and-time-in-sap-gateway-foundation/ """ def __init__(self): super(EdmDateTimeOffsetTypTraits, self).__init__('datetimeoffset') def to_literal(self, value): """Convert python datetime representation to literal format""" if not isinstance(value, datetime.datetime) or value.utcoffset() is None: raise PyODataModelError( f'Cannot convert value of type {type(value)} to literal. Datetime format including offset is required.') return super(EdmDateTimeOffsetTypTraits, self).to_literal(value.isoformat()) def to_json(self, value): # datetime.timestamp() does not work due to its limited precision offset_in_minutes = int(value.utcoffset() / datetime.timedelta(minutes=1)) ticks = int((value - datetime.datetime(1970, 1, 1, tzinfo=value.tzinfo)) / datetime.timedelta(milliseconds=1)) return f'/Date({ticks}{offset_in_minutes:+05})/' def from_json(self, value): # special edge case: # datetimeoffset'yyyy-mm-ddThh:mm[:ss]' = defaults to UTC, when offset value is not provided in response # by service, but the metadata is EdmDateTimeOffset # intentionally just for from_json, generation of to_json should always provide timezone info matches = re.match(r"^/Date\((?P-?\d+)(?P[+-]\d+)?\)/$", value) try: milliseconds_since_epoch = matches.group('milliseconds_since_epoch') if matches.group('offset_in_minutes') is not None: offset_in_minutes = int(matches.group('offset_in_minutes')) else: offset_in_minutes = 0 except (ValueError, AttributeError): raise PyODataModelError( f"Malformed value {value} for primitive Edm.DateTimeOffset type." " Expected format is /Date(±)/") tzinfo = datetime.timezone(datetime.timedelta(minutes=offset_in_minutes)) # Might raise a PyODataModelError exception return ms_since_epoch_to_datetime(milliseconds_since_epoch, tzinfo) def from_literal(self, value): if value is None: return None value = super(EdmDateTimeOffsetTypTraits, self).from_literal(value) try: # Note: parse_datetime_literal raises a PyODataModelError exception on invalid formats if re.match(r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z', value, flags=re.ASCII | re.IGNORECASE): datetime_part = value[:-1] tz_info = datetime.timezone.utc else: match = re.match(r'(?P.+)(?P[\\+-])(?P\d{2}):(?P\d{2})', value, flags=re.ASCII) datetime_part = match.group('datetime') tz_offset = datetime.timedelta(hours=int(match.group('hours')), minutes=int(match.group('minutes'))) tz_sign = -1 if match.group('sign') == '-' else 1 tz_info = datetime.timezone(tz_sign * tz_offset) return parse_datetime_literal(datetime_part).replace(tzinfo=tz_info) except (ValueError, AttributeError): raise PyODataModelError(f'Cannot decode datetimeoffset from value {value}.') class EdmStringTypTraits(TypTraits): """Edm.String traits""" # pylint: disable=no-self-use def to_literal(self, value): return '\'%s\'' % (value) # pylint: disable=no-self-use def from_json(self, value): return value.strip('\'') def from_literal(self, value): return value.strip('\'') class EdmBooleanTypTraits(TypTraits): """Edm.Boolean traits""" # pylint: disable=no-self-use def to_literal(self, value): return 'true' if value else 'false' # pylint: disable=no-self-use def from_json(self, value): return value def from_literal(self, value): return value == 'true' class EdmIntTypTraits(TypTraits): """All Edm Integer traits""" # pylint: disable=no-self-use def to_literal(self, value): return '%d' % (value) # pylint: disable=no-self-use def from_json(self, value): return int(value) def from_literal(self, value): return int(value) class EdmLongIntTypTraits(TypTraits): """All Edm Integer for big numbers traits""" # pylint: disable=no-self-use def to_literal(self, value): return '%dL' % (value) # pylint: disable=no-self-use def from_json(self, value): if value[-1] == 'L': return int(value[:-1]) return int(value) def from_literal(self, value): return self.from_json(value) class EdmFPNumTypTraits(TypTraits): """Edm Floating Point Number traits""" def __init__(self, precision, suffix, conversion): self.precision = precision self.suffix = suffix self.conversion = conversion def __repr__(self): parent = super(EdmFPNumTypTraits, self).__repr__() return f'{parent}({self.precision},{self.suffix})' @staticmethod def edm_float(): return EdmFPNumTypTraits(7, 'd', '{:E}') @staticmethod def edm_double(): return EdmFPNumTypTraits(15, 'd', '{:E}') @staticmethod def edm_single(): return EdmFPNumTypTraits(7, 'f', '{:f}') # pylint: disable=no-self-use def to_literal(self, value): return self.conversion.format(value) def to_json(self, value): return self.to_literal(value) # pylint: disable=no-self-use def from_json(self, value): if not isinstance(value, str) or value[-1] != self.suffix: return float(value) return float(value[:-1]) def from_literal(self, value): return self.from_json(value) class EdmStructTypTraits(TypTraits): """Edm structural types (EntityType, ComplexType) traits""" def __init__(self, edm_type=None): super(EdmStructTypTraits, self).__init__() self._edm_type = edm_type # pylint: disable=no-self-use def to_literal(self, value): return EdmStructTypeSerializer.to_literal(self._edm_type, value) # pylint: disable=no-self-use def from_json(self, value): return EdmStructTypeSerializer.from_json(self._edm_type, value) def from_literal(self, value): return EdmStructTypeSerializer.from_literal(self._edm_type, value) class EnumTypTrait(TypTraits): def __init__(self, enum_type): self._enum_type = enum_type def to_literal(self, value): return f'{value.parent.namespace}.{value}' def from_json(self, value): return getattr(self._enum_type, value) def from_literal(self, value): # remove namespaces enum_value = value.split('.')[-1] # remove enum type name = enum_value.split("'")[1] return getattr(self._enum_type, name) class Typ(Identifier): Types = None Kinds = Enum('Kinds', 'Primitive Complex') def __init__(self, name, null_value, traits=TypTraits(), kind=None): super(Typ, self).__init__(name) self._null_value = null_value self._kind = kind if kind is not None else Typ.Kinds.Primitive # no way how to us enum value for parameter default value self._traits = traits @property def null_value(self): return self._null_value @property def traits(self): return self._traits @property def is_collection(self): return False @property def kind(self): return self._kind class Collection(Typ): """Represents collection items""" def __init__(self, name, item_type): super(Collection, self).__init__(name, [], kind=item_type.kind) self._item_type = item_type def __repr__(self): return f'Collection({repr(self._item_type)})' @property def is_collection(self): return True @property def item_type(self): return self._item_type @property def traits(self): return self # pylint: disable=no-self-use def to_literal(self, value): if not isinstance(value, list): raise PyODataException(f'Bad format: invalid list value {value}') return [self._item_type.traits.to_literal(v) for v in value] # pylint: disable=no-self-use def from_json(self, value): if not isinstance(value, list): raise PyODataException(f'Bad format: invalid list value {value}') return [self._item_type.traits.from_json(v) for v in value] class VariableDeclaration(Identifier): MAXIMUM_LENGTH = -1 def __init__(self, name, type_info, nullable, max_length, precision, scale, fixed_length=None): super(VariableDeclaration, self).__init__(name) self._type_info = type_info self._typ = None self._nullable = bool(nullable) if not max_length: self._max_length = None elif max_length.upper() == 'MAX': self._max_length = VariableDeclaration.MAXIMUM_LENGTH else: self._max_length = int(max_length) if not precision: self._precision = 0 else: self._precision = int(precision) if not scale: self._scale = 0 else: self._scale = int(scale) self._check_scale_value() self._fixed_length = bool(fixed_length) @property def type_info(self): return self._type_info @property def typ(self): return self._typ @typ.setter def typ(self, value): if self._typ is not None: raise RuntimeError(f'Cannot replace {self._typ} of {self} by {value}') if value.name != self._type_info[1]: raise RuntimeError(f'{value} cannot be the type of {self}') self._typ = value @property def nullable(self): return self._nullable @property def max_length(self): return self._max_length @property def precision(self): return self._precision @property def scale(self): return self._scale @property def fixed_length(self): return self._fixed_length def from_literal(self, value): if value is None: if not self.nullable: raise PyODataException(f'Cannot convert null URL literal to value of {str(self)}') return None return self.typ.traits.from_literal(value) def to_literal(self, value): if value is None: if not self.nullable: raise PyODataException(f'Cannot convert None to URL literal of {str(self)}') return None return self.typ.traits.to_literal(value) def from_json(self, value): if value is None: if not self.nullable: raise PyODataException(f'Cannot convert null JSON to value of {str(self)}') return None return self.typ.traits.from_json(value) def to_json(self, value): if value is None: if not self.nullable: raise PyODataException(f'Cannot convert None to JSON of {str(self)}') return None return self.typ.traits.to_json(value) def _check_scale_value(self): if self._scale > self._precision: raise PyODataModelError('Scale value ({}) must be less than or equal to precision value ({})' .format(self._scale, self._precision)) class Schema: class Declaration: def __init__(self, namespace): super(Schema.Declaration, self).__init__() self.namespace = namespace self.entity_types = dict() self.complex_types = dict() self.enum_types = dict() self.entity_sets = dict() self.function_imports = dict() self.associations = dict() self.association_sets = dict() # generated collections for ease of lookup (e.g. function import return type) self._collections_entity_types = dict() self._collections_complex_types = dict() def list_entity_types(self): return list(self.entity_types.values()) def list_complex_types(self): return list(self.complex_types.values()) def list_enum_types(self): return list(self.enum_types.values()) def list_entity_sets(self): return list(self.entity_sets.values()) def list_function_imports(self): return list(self.function_imports.values()) def list_associations(self): return list(self.associations.values()) def list_association_sets(self): return list(self.association_sets.values()) def add_entity_type(self, etype): """Add new type to the type repository as well as its collection variant""" self.entity_types[etype.name] = etype # automatically create and register collection variant if not exists if isinstance(etype, NullType): return collection_type_name = f'Collection({etype.name})' self._collections_entity_types[collection_type_name] = Collection(etype.name, etype) # TODO performance memory: this is generating collection for every entity type encoutered, regardless of such collection is really used. def add_complex_type(self, ctype): """Add new complex type to the type repository as well as its collection variant""" self.complex_types[ctype.name] = ctype # automatically create and register collection variant if not exists if isinstance(ctype, NullType): return collection_type_name = f'Collection({ctype.name})' self._collections_complex_types[collection_type_name] = Collection(ctype.name, ctype) # TODO performance memory: this is generating collection for every entity type encoutered, regardless of such collection is really used. def add_enum_type(self, etype): """Add new enum type to the type repository""" self.enum_types[etype.name] = etype class Declarations(dict): def __getitem__(self, key): try: return super(Schema.Declarations, self).__getitem__(key) except KeyError: raise KeyError(f'There is no Schema Namespace {key}') def __init__(self, config: Config): super(Schema, self).__init__() self._decls = Schema.Declarations() self._config = config self._is_valid = False def __str__(self): return f"{self.__class__.__name__}({','.join(self.namespaces)})" @property def namespaces(self): return list(self._decls.keys()) @property def config(self): return self._config @property def is_valid(self): """Returns if metadata provided were parsed to schema without any problem regardless of Policies (Fatal, Warning, Ignore). Policies affects behaviour o parser while this property represents status. """ return self._is_valid def typ(self, type_name, namespace=None): """Returns either EntityType, ComplexType or EnumType that matches the name. """ for type_space in (self.entity_type, self._collections_entity_types, self.complex_type, self._collections_complex_types, self.enum_type): try: return type_space(type_name, namespace=namespace) except KeyError: pass raise KeyError('Type {} does not exist in Schema{}' .format(type_name, ' Namespace ' + namespace if namespace else '')) def entity_type(self, type_name, namespace=None): if namespace is not None: try: return self._decls[namespace].entity_types[type_name] except KeyError: raise KeyError(f'EntityType {type_name} does not exist in Schema Namespace {namespace}') for decl in list(self._decls.values()): try: return decl.entity_types[type_name] except KeyError: pass raise KeyError(f'EntityType {type_name} does not exist in any Schema Namespace') def _collections_entity_types(self, type_name, namespace=None): if namespace is not None: try: return self._decls[namespace]._collections_entity_types[type_name] except KeyError: raise KeyError(f'EntityType collection {type_name} does not exist in Schema Namespace {namespace}') for decl in list(self._decls.values()): try: return decl._collections_entity_types[type_name] except KeyError: pass raise KeyError(f'EntityType collection {type_name} does not exist in any Schema Namespace') def complex_type(self, type_name, namespace=None): if namespace is not None: try: return self._decls[namespace].complex_types[type_name] except KeyError: raise KeyError(f'ComplexType {type_name} does not exist in Schema Namespace {namespace}') for decl in list(self._decls.values()): try: return decl.complex_types[type_name] except KeyError: pass raise KeyError(f'ComplexType {type_name} does not exist in any Schema Namespace') def _collections_complex_types(self, type_name, namespace=None): if namespace is not None: try: return self._decls[namespace]._collections_complex_types[type_name] except KeyError: raise KeyError(f'ComplexType collection {type_name} does not exist in Schema Namespace {namespace}') for decl in list(self._decls.values()): try: return decl._collections_complex_types[type_name] except KeyError: pass raise KeyError(f'ComplexType collection {type_name} does not exist in any Schema Namespace') def enum_type(self, type_name, namespace=None): if namespace is not None: try: return self._decls[namespace].enum_types[type_name] except KeyError: raise KeyError(f'EnumType {type_name} does not exist in Schema Namespace {namespace}') for decl in list(self._decls.values()): try: return decl.enum_types[type_name] except KeyError: pass raise KeyError(f'EnumType {type_name} does not exist in any Schema Namespace') def get_type(self, type_info): # construct search name based on collection information search_name = type_info.name if not type_info.is_collection else f'Collection({type_info.name})' # first look for type in primitive types try: return Types.from_name(search_name) except KeyError: pass # then look for type in entity types and collections of entity types try: return self.entity_type(search_name, type_info.namespace) except KeyError: pass try: return self._collections_entity_types(search_name, type_info.namespace) except KeyError: pass # then look for type in complex types and collections of complex types try: return self.complex_type(search_name, type_info.namespace) except KeyError: pass try: return self._collections_complex_types(search_name, type_info.namespace) except KeyError: pass # then look for type in enum types try: return self.enum_type(search_name, type_info.namespace) except KeyError: pass raise PyODataModelError( 'Neither primitive types nor types parsed from service metadata contain requested type {}' .format(type_info.name)) @property def entity_types(self): return list(itertools.chain(*(decl.list_entity_types() for decl in list(self._decls.values())))) @property def complex_types(self): return list(itertools.chain(*(decl.list_complex_types() for decl in list(self._decls.values())))) @property def enum_types(self): return list(itertools.chain(*(decl.list_enum_types() for decl in list(self._decls.values())))) def entity_set(self, set_name, namespace=None): if namespace is not None: try: return self._decls[namespace].entity_sets[set_name] except KeyError: raise KeyError(f'EntitySet {set_name} does not exist in Schema Namespace {namespace}') for decl in list(self._decls.values()): try: return decl.entity_sets[set_name] except KeyError: pass raise KeyError(f'EntitySet {set_name} does not exist in any Schema Namespace') @property def entity_sets(self): return list(itertools.chain(*(decl.list_entity_sets() for decl in list(self._decls.values())))) def function_import(self, function_import, namespace=None): if namespace is not None: try: return self._decls[namespace].function_imports[function_import] except KeyError: raise KeyError('FunctionImport {} does not exist in Schema Namespace {}' .format(function_import, namespace)) for decl in list(self._decls.values()): try: return decl.function_imports[function_import] except KeyError: pass raise KeyError(f'FunctionImport {function_import} does not exist in any Schema Namespace') @property def function_imports(self): return list(itertools.chain(*(decl.list_function_imports() for decl in list(self._decls.values())))) def association(self, association_name, namespace=None): if namespace is not None: try: return self._decls[namespace].associations[association_name] except KeyError: raise KeyError(f'Association {association_name} does not exist in namespace {namespace}') for decl in list(self._decls.values()): try: return decl.associations[association_name] except KeyError: return None @property def associations(self): return list(itertools.chain(*(decl.list_associations() for decl in list(self._decls.values())))) def association_set_by_association(self, association_name, namespace=None): if namespace is not None: for association_set in list(self._decls[namespace].association_sets.values()): if association_set.association_type.name == association_name: return association_set raise KeyError('Association Set for Association {} does not exist in Schema Namespace {}'.format( association_name, namespace)) for decl in list(self._decls.values()): for association_set in list(decl.association_sets.values()): if association_set.association_type.name == association_name: return association_set raise KeyError('Association Set for Association {} does not exist in any Schema Namespace'.format( association_name)) def association_set(self, set_name, namespace=None): if namespace is not None: try: return self._decls[namespace].association_sets[set_name] except KeyError: raise KeyError(f'Association set {set_name} does not exist in namespace {namespace}') for decl in list(self._decls.values()): try: return decl.association_sets[set_name] except KeyError: return None @property def association_sets(self): return list(itertools.chain(*(decl.list_association_sets() for decl in list(self._decls.values())))) def check_role_property_names(self, role, entity_type_name, namespace): for proprty in role.property_names: try: entity_type = self.entity_type(entity_type_name, namespace) except KeyError: raise PyODataModelError('EntityType {} does not exist in Schema Namespace {}' .format(entity_type_name, namespace)) try: entity_type.proprty(proprty) except KeyError: raise PyODataModelError(f'Property {proprty} does not exist in {entity_type.name}') # pylint: disable=too-many-locals,too-many-branches,too-many-statements @staticmethod def from_etree(schema_nodes, config: Config): schema = Schema(config) schema._is_valid = True # Parse Schema nodes by parts to get over the problem of not-yet known # entity types referenced by entity sets, function imports and # annotations. # First, process EnumType, EntityType and ComplexType nodes. They have almost no dependencies on other elements. for schema_node in schema_nodes: namespace = schema_node.get('Namespace') decl = Schema.Declaration(namespace) schema._decls[namespace] = decl for enum_type in schema_node.xpath('edm:EnumType', namespaces=config.namespaces): try: etype = EnumType.from_etree(enum_type, namespace, config) except (PyODataParserError, AttributeError) as ex: config.err_policy(ParserError.ENUM_TYPE).resolve(ex) etype = NullType(enum_type.get('Name')) schema._is_valid = False decl.add_enum_type(etype) for complex_type in schema_node.xpath('edm:ComplexType', namespaces=config.namespaces): try: ctype = ComplexType.from_etree(complex_type, config) except (KeyError, AttributeError) as ex: config.err_policy(ParserError.COMPLEX_TYPE).resolve(ex) ctype = NullType(complex_type.get('Name')) schema._is_valid = False decl.add_complex_type(ctype) for entity_type in schema_node.xpath('edm:EntityType', namespaces=config.namespaces): try: etype = EntityType.from_etree(entity_type, config) except (KeyError, AttributeError) as ex: config.err_policy(ParserError.ENTITY_TYPE).resolve(ex) etype = NullType(entity_type.get('Name')) schema._is_valid = False decl.add_entity_type(etype) # resolve types of properties for stype in itertools.chain(schema.entity_types, schema.complex_types): if isinstance(stype, NullType): continue if stype.kind == Typ.Kinds.Complex: # skip collections (no need to assign any types since type of collection # items is resolved separately if stype.is_collection: continue for prop in stype.proprties(): try: prop.typ = schema.get_type(prop.type_info) except PyODataModelError as ex: config.err_policy(ParserError.PROPERTY).resolve(ex) prop.typ = NullType(prop.type_info.name) schema._is_valid = False # pylint: disable=too-many-nested-blocks # Then, process Associations nodes because they refer EntityTypes and # they are referenced by AssociationSets. for schema_node in schema_nodes: namespace = schema_node.get('Namespace') decl = schema._decls[namespace] for association in schema_node.xpath('edm:Association', namespaces=config.namespaces): assoc = Association.from_etree(association, config) try: for end_role in assoc.end_roles: try: # search and assign entity type (it must exist) if end_role.entity_type_info.namespace is None: end_role.entity_type_info.namespace = namespace etype = schema.entity_type(end_role.entity_type_info.name, end_role.entity_type_info.namespace) end_role.entity_type = etype except KeyError: schema._is_valid = False raise PyODataModelError( f'EntityType {end_role.entity_type_info.name} does not exist in Schema ' f'Namespace {end_role.entity_type_info.namespace}') if assoc.referential_constraint is not None: role_names = [end_role.role for end_role in assoc.end_roles] principal_role = assoc.referential_constraint.principal # Check if the role was defined in the current association if principal_role.name not in role_names: schema._is_valid = False raise RuntimeError( f'Role {principal_role.name} was not defined in association {assoc.name}') # Check if principal role properties exist role_name = principal_role.name entity_type_name = assoc.end_by_role(role_name).entity_type_name schema.check_role_property_names(principal_role, entity_type_name, namespace) dependent_role = assoc.referential_constraint.dependent # Check if the role was defined in the current association if dependent_role.name not in role_names: schema._is_valid = False raise RuntimeError( f'Role {dependent_role.name} was not defined in association {assoc.name}') # Check if dependent role properties exist role_name = dependent_role.name entity_type_name = assoc.end_by_role(role_name).entity_type_name schema.check_role_property_names(dependent_role, entity_type_name, namespace) except (PyODataModelError, RuntimeError) as ex: config.err_policy(ParserError.ASSOCIATION).resolve(ex) decl.associations[assoc.name] = NullAssociation(assoc.name) schema._is_valid = False else: decl.associations[assoc.name] = assoc # resolve navigation properties for stype in schema.entity_types: # skip null type if isinstance(stype, NullType): continue # skip collections if stype.is_collection: continue for nav_prop in stype.nav_proprties: try: assoc = schema.association(nav_prop.association_info.name, nav_prop.association_info.namespace) nav_prop.association = assoc except KeyError as ex: config.err_policy(ParserError.ASSOCIATION).resolve(ex) nav_prop.association = NullAssociation(nav_prop.association_info.name) schema._is_valid = False # Then, process EntitySet, FunctionImport and AssociationSet nodes. for schema_node in schema_nodes: namespace = schema_node.get('Namespace') decl = schema._decls[namespace] for entity_set in schema_node.xpath('edm:EntityContainer/edm:EntitySet', namespaces=config.namespaces): eset = EntitySet.from_etree(entity_set) eset.entity_type = schema.entity_type(eset.entity_type_info[1], namespace=eset.entity_type_info[0]) decl.entity_sets[eset.name] = eset for function_import in schema_node.xpath('edm:EntityContainer/edm:FunctionImport', namespaces=config.namespaces): efn = FunctionImport.from_etree(function_import, config) # complete type information for return type and parameters if efn.return_type_info is not None: efn.return_type = schema.get_type(efn.return_type_info) for param in efn.parameters: param.typ = schema.get_type(param.type_info) decl.function_imports[efn.name] = efn for association_set in schema_node.xpath('edm:EntityContainer/edm:AssociationSet', namespaces=config.namespaces): assoc_set = AssociationSet.from_etree(association_set, config) try: try: assoc_set.association_type = schema.association(assoc_set.association_type_name, assoc_set.association_type_namespace) except KeyError: schema._is_valid = False raise PyODataModelError( 'Association {} does not exist in namespace {}' .format(assoc_set.association_type_name, assoc_set.association_type_namespace)) for end in assoc_set.end_roles: # Check if an entity set exists in the current scheme # and add a reference to the corresponding entity set try: entity_set = schema.entity_set(end.entity_set_name, namespace) end.entity_set = entity_set except KeyError: schema._is_valid = False raise PyODataModelError('EntitySet {} does not exist in Schema Namespace {}' .format(end.entity_set_name, namespace)) # Check if role is defined in Association if assoc_set.association_type.end_by_role(end.role) is None: schema._is_valid = False raise PyODataModelError('Role {} is not defined in association {}' .format(end.role, assoc_set.association_type_name)) except (PyODataModelError, KeyError) as ex: config.err_policy(ParserError.ASSOCIATION).resolve(ex) decl.association_sets[assoc_set.name] = NullAssociation(assoc_set.name) schema._is_valid = False else: decl.association_sets[assoc_set.name] = assoc_set # pylint: disable=too-many-nested-blocks # Finally, process Annotation nodes when all Scheme nodes are completely processed. for schema_node in schema_nodes: for annotation_group in schema_node.xpath('edm:Annotations', namespaces=ANNOTATION_NAMESPACES): for annotation in ExternalAnnontation.from_etree(annotation_group): if not annotation.element_namespace != schema.namespaces: modlog().warning('{0} not in the namespaces {1}'.format(annotation, ','.join(schema.namespaces))) continue try: if annotation.kind == Annotation.Kinds.ValueHelper: try: annotation.entity_set = schema.entity_set( annotation.collection_path, namespace=annotation.element_namespace) except KeyError: schema._is_valid = False raise RuntimeError(f'Entity Set {annotation.collection_path} ' f'for {annotation} does not exist') try: vh_type = schema.typ(annotation.proprty_entity_type_name, namespace=annotation.element_namespace) except KeyError: schema._is_valid = False raise RuntimeError(f'Target Type {annotation.proprty_entity_type_name} ' f'of {annotation} does not exist') try: target_proprty = vh_type.proprty(annotation.proprty_name) except KeyError: schema._is_valid = False raise RuntimeError(f'Target Property {annotation.proprty_name} ' f'of {vh_type} as defined in {annotation} does not exist') annotation.proprty = target_proprty target_proprty.value_helper = annotation except (RuntimeError, PyODataModelError) as ex: schema._is_valid = False config.err_policy(ParserError.ANNOTATION).resolve(ex) return schema class StructType(Typ): def __init__(self, name, label, is_value_list): super(StructType, self).__init__(name, None, EdmStructTypTraits(self), Typ.Kinds.Complex) self._label = label self._is_value_list = is_value_list self._key = list() self._properties = dict() @property def label(self): return self._label @property def is_value_list(self): return self._is_value_list def proprty(self, property_name): return self._properties[property_name] def proprties(self): return list(self._properties.values()) def has_proprty(self, proprty_name): return proprty_name in self._properties @classmethod def from_etree(cls, type_node, config: Config): name = type_node.get('Name') label = sap_attribute_get_string(type_node, 'label') is_value_list = sap_attribute_get_bool(type_node, 'value-list', False) stype = cls(name, label, is_value_list) for proprty in type_node.xpath('edm:Property', namespaces=config.namespaces): stp = StructTypeProperty.from_etree(proprty) if stp.name in stype._properties: raise KeyError(f'{stype} already has property {stp.name}') stype._properties[stp.name] = stp # We have to update the property when # all properites are loaded because # there might be links between them. for ctp in list(stype._properties.values()): ctp.struct_type = stype return stype # implementation of Typ interface @property def is_collection(self): return False @property def kind(self): return Typ.Kinds.Complex @property def null_value(self): return None @property def traits(self): # return self._traits return EdmStructTypTraits(self) class ComplexType(StructType): """Representation of Edm.ComplexType""" class EnumMember: def __init__(self, parent, name, value): self._parent = parent self._name = name self._value = value def __str__(self): return f"{self._parent.name}\'{self._name}\'" @property def name(self): return self._name @property def value(self): return self._value @property def parent(self): return self._parent class EnumType(Identifier): def __init__(self, name, is_flags, underlying_type, namespace): super(EnumType, self).__init__(name) self._member = list() self._underlying_type = underlying_type self._traits = TypTraits() self._namespace = namespace if is_flags == 'True': self._is_flags = True else: self._is_flags = False def __str__(self): return f"{self.__class__.__name__}({self._name})" def __getattr__(self, item): member = next(filter(lambda x: x.name == item, self._member), None) if member is None: raise PyODataException(f'EnumType {self} has no member {item}') return member def __getitem__(self, item): # If the item is type string then we want to check for members with that name instead if isinstance(item, str): return self.__getattr__(item) member = next(filter(lambda x: x.value == int(item), self._member), None) if member is None: raise PyODataException(f'EnumType {self} has no member with value {item}') return member # pylint: disable=too-many-locals @staticmethod def from_etree(type_node, namespace, config: Config): ename = type_node.get('Name') is_flags = type_node.get('IsFlags') underlying_type = type_node.get('UnderlyingType') valid_types = { 'Edm.Byte': [0, 2 ** 8 - 1], 'Edm.Int16': [-2 ** 15, 2 ** 15 - 1], 'Edm.Int32': [-2 ** 31, 2 ** 31 - 1], 'Edm.Int64': [-2 ** 63, 2 ** 63 - 1], 'Edm.SByte': [-2 ** 7, 2 ** 7 - 1] } if underlying_type not in valid_types: raise PyODataParserError( f'Type {underlying_type} is not valid as underlying type for EnumType - must be one of {valid_types}') mtype = Types.from_name(underlying_type) etype = EnumType(ename, is_flags, mtype, namespace) members = type_node.xpath('edm:Member', namespaces=config.namespaces) next_value = 0 for member in members: name = member.get('Name') value = member.get('Value') if value is not None: next_value = int(value) vtype = valid_types[underlying_type] if not vtype[0] < next_value < vtype[1]: raise PyODataParserError(f'Value {next_value} is out of range for type {underlying_type}') emember = EnumMember(etype, name, next_value) etype._member.append(emember) next_value += 1 return etype @property def is_flags(self): return self._is_flags @property def traits(self): return EnumTypTrait(self) @property def namespace(self): return self._namespace class EntityType(StructType): def __init__(self, name, label, is_value_list): super(EntityType, self).__init__(name, label, is_value_list) self._key = list() self._nav_properties = dict() @property def key_proprties(self): return list(self._key) @property def nav_proprties(self): """Gets the navigation properties defined for this entity type""" return list(self._nav_properties.values()) def nav_proprty(self, property_name): return self._nav_properties[property_name] @classmethod def from_etree(cls, type_node, config: Config): etype = super(EntityType, cls).from_etree(type_node, config) for proprty in type_node.xpath('edm:Key/edm:PropertyRef', namespaces=config.namespaces): etype._key.append(etype.proprty(proprty.get('Name'))) for proprty in type_node.xpath('edm:NavigationProperty', namespaces=config.namespaces): navp = NavigationTypeProperty.from_etree(proprty) if navp.name in etype._nav_properties: raise KeyError(f'{etype} already has navigation property {navp.name}') etype._nav_properties[navp.name] = navp return etype class EntitySet(Identifier): def __init__(self, name, entity_type_info, addressable, creatable, updatable, deletable, searchable, countable, pageable, topable, req_filter, label): super(EntitySet, self).__init__(name) self._entity_type_info = entity_type_info self._entity_type = None self._addressable = addressable self._creatable = creatable self._updatable = updatable self._deletable = deletable self._searchable = searchable self._countable = countable self._pageable = pageable self._topable = topable self._req_filter = req_filter self._label = label @property def entity_type_info(self): return self._entity_type_info @property def entity_type(self): return self._entity_type @entity_type.setter def entity_type(self, value): if self._entity_type is not None: raise RuntimeError(f'Cannot replace {self._entity_type} of {self} to {value}') if value.name != self.entity_type_info[1]: raise RuntimeError(f'{value} cannot be the type of {self}') self._entity_type = value @property def addressable(self): return self._addressable @property def creatable(self): return self._creatable @property def updatable(self): return self._updatable @property def deletable(self): return self._deletable @property def searchable(self): return self._searchable @property def countable(self): return self._countable @property def pageable(self): return self._pageable @property def topable(self): return self._topable @property def requires_filter(self): return self._req_filter @property def label(self): return self._label @staticmethod def from_etree(entity_set_node): name = entity_set_node.get('Name') et_info = Types.parse_type_name(entity_set_node.get('EntityType')) # TODO: create a class SAP attributes addressable = sap_attribute_get_bool(entity_set_node, 'addressable', True) creatable = sap_attribute_get_bool(entity_set_node, 'creatable', True) updatable = sap_attribute_get_bool(entity_set_node, 'updatable', True) deletable = sap_attribute_get_bool(entity_set_node, 'deletable', True) searchable = sap_attribute_get_bool(entity_set_node, 'searchable', False) countable = sap_attribute_get_bool(entity_set_node, 'countable', True) pageable = sap_attribute_get_bool(entity_set_node, 'pageable', True) topable = sap_attribute_get_bool(entity_set_node, 'topable', pageable) req_filter = sap_attribute_get_bool(entity_set_node, 'requires-filter', False) label = sap_attribute_get_string(entity_set_node, 'label') return EntitySet(name, et_info, addressable, creatable, updatable, deletable, searchable, countable, pageable, topable, req_filter, label) class StructTypeProperty(VariableDeclaration): """Property of structure types (Entity/Complex type) Type of the property can be: * primitive type * complex type * enumeration type (in version 4) * collection of one of previous """ # pylint: disable=too-many-locals def __init__(self, name, type_info, nullable, max_length, precision, scale, uncode, label, creatable, updatable, sortable, filterable, filter_restr, req_in_filter, text, visible, display_format, value_list, fixed_length=None): super(StructTypeProperty, self).__init__(name, type_info, nullable, max_length, precision, scale, fixed_length) self._value_helper = None self._struct_type = None self._uncode = uncode self._label = label self._creatable = creatable self._updatable = updatable self._sortable = sortable self._filterable = filterable self._filter_restr = filter_restr self._req_in_filter = req_in_filter self._text_proprty_name = text self._visible = visible self._display_format = display_format self._value_list = value_list # Lazy loading self._text_proprty = None @property def struct_type(self): return self._struct_type @struct_type.setter def struct_type(self, value): if self._struct_type is not None: raise RuntimeError(f'Cannot replace {self._struct_type} of {self} to {value}') self._struct_type = value if self._text_proprty_name: try: self._text_proprty = self._struct_type.proprty(self._text_proprty_name) except KeyError: # TODO: resolve EntityType of text property if '/' not in self._text_proprty_name: raise RuntimeError('The attribute sap:text of {1} is set to non existing Property \'{0}\'' .format(self._text_proprty_name, self)) @property def text_proprty_name(self): return self._text_proprty_name @property def text_proprty(self): return self._text_proprty @property def uncode(self): return self._uncode @property def label(self): return self._label @property def creatable(self): return self._creatable @property def updatable(self): return self._updatable @property def sortable(self): return self._sortable @property def filterable(self): return self._filterable @property def filter_restriction(self): return self._filter_restr @property def required_in_filter(self): return self._req_in_filter @property def visible(self): return self._visible @property def upper_case(self): return self._display_format == 'UpperCase' @property def date(self): return self._display_format == 'Date' @property def non_negative(self): return self._display_format == 'NonNegative' @property def value_helper(self): return self._value_helper @property def value_list(self): return self._value_list @value_helper.setter def value_helper(self, value): # Value Help property must not be changed if self._value_helper is not None: raise RuntimeError(f'Cannot replace value helper {self._value_helper} of {self} by {value}') self._value_helper = value @staticmethod def from_etree(entity_type_property_node): return StructTypeProperty( entity_type_property_node.get('Name'), Types.parse_type_name(entity_type_property_node.get('Type')), attribute_get_bool(entity_type_property_node, 'Nullable', True), entity_type_property_node.get('MaxLength'), entity_type_property_node.get('Precision'), entity_type_property_node.get('Scale'), # TODO: create a class SAP attributes sap_attribute_get_bool(entity_type_property_node, 'unicode', True), sap_attribute_get_string(entity_type_property_node, 'label'), sap_attribute_get_bool(entity_type_property_node, 'creatable', True), sap_attribute_get_bool(entity_type_property_node, 'updatable', True), sap_attribute_get_bool(entity_type_property_node, 'sortable', True), sap_attribute_get_bool(entity_type_property_node, 'filterable', True), sap_attribute_get_string(entity_type_property_node, 'filter-restriction'), sap_attribute_get_bool(entity_type_property_node, 'required-in-filter', False), sap_attribute_get_string(entity_type_property_node, 'text'), sap_attribute_get_bool(entity_type_property_node, 'visible', True), sap_attribute_get_string(entity_type_property_node, 'display-format'), sap_attribute_get_string(entity_type_property_node, 'value-list'), # Back to regular, non-SAP attributes. attribute_get_bool(entity_type_property_node, 'FixedLength', False), ) class NavigationTypeProperty(VariableDeclaration): """Defines a navigation property, which provides a reference to the other end of an association Unlike properties defined with the Property element, navigation properties do not define the shape and characteristics of data. They provide a way to navigate an association between two entity types. Note that navigation properties are optional on both entity types at the ends of an association. If you define a navigation property on one entity type at the end of an association, you do not have to define a navigation property on the entity type at the other end of the association. The data type returned by a navigation property is determined by the multiplicity of its remote association end. For example, suppose a navigation property, OrdersNavProp, exists on a Customer entity type and navigates a one-to-many association between Customer and Order. Because the remote association end for the navigation property has multiplicity many (*), its data type is a collection (of Order). Similarly, if a navigation property, CustomerNavProp, exists on the Order entity type, its data type would be Customer since the multiplicity of the remote end is one (1). """ def __init__(self, name, from_role_name, to_role_name, association_info): super(NavigationTypeProperty, self).__init__(name, None, False, None, None, None, None) self.from_role_name = from_role_name self.to_role_name = to_role_name self._association_info = association_info self._association = None @property def association_info(self): return self._association_info @property def association(self): return self._association @association.setter def association(self, value): if self._association is not None: raise PyODataModelError(f'Cannot replace {self._association} of {self} to {value}') if value.name != self._association_info.name: raise PyODataModelError(f'{value} cannot be the type of {self}') self._association = value @property def to_role(self): return self._association.end_by_role(self.to_role_name) @property def typ(self): return self.to_role.entity_type @staticmethod def from_etree(node): return NavigationTypeProperty( node.get('Name'), node.get('FromRole'), node.get('ToRole'), Identifier.parse(node.get('Relationship'))) class EndRole: MULTIPLICITY_ONE = '1' MULTIPLICITY_ZERO_OR_ONE = '0..1' MULTIPLICITY_ZERO_OR_MORE = '*' def __init__(self, entity_type_info, multiplicity, role): self._entity_type_info = entity_type_info self._entity_type = None self._multiplicity = multiplicity self._role = role def __repr__(self): return f"{self.__class__.__name__}({self.role})" @property def entity_type_info(self): return self._entity_type_info @property def entity_type_name(self): return self._entity_type_info.name @property def entity_type(self): return self._entity_type @entity_type.setter def entity_type(self, value): if self._entity_type is not None: raise PyODataModelError(f'Cannot replace {self._entity_type} of {self} to {value}') if value.name != self._entity_type_info.name: raise PyODataModelError(f'{value} cannot be the type of {self}') self._entity_type = value @property def multiplicity(self): return self._multiplicity @property def role(self): return self._role @staticmethod def from_etree(end_role_node): entity_type_info = Types.parse_type_name(end_role_node.get('Type')) multiplicity = end_role_node.get('Multiplicity') role = end_role_node.get('Role') return EndRole(entity_type_info, multiplicity, role) class ReferentialConstraintRole: def __init__(self, name, property_names): self._name = name self._property_names = property_names @property def name(self): return self._name @property def property_names(self): return self._property_names class PrincipalRole(ReferentialConstraintRole): pass class DependentRole(ReferentialConstraintRole): pass class ReferentialConstraint: def __init__(self, principal, dependent): self._principal = principal self._dependent = dependent @property def principal(self): return self._principal @property def dependent(self): return self._dependent @staticmethod def from_etree(referential_constraint_node, config: Config): principal = referential_constraint_node.xpath('edm:Principal', namespaces=config.namespaces) if len(principal) != 1: raise RuntimeError('Referential constraint must contain exactly one principal element') principal_name = principal[0].get('Role') if principal_name is None: raise RuntimeError('Principal role name was not specified') principal_refs = [] for property_ref in principal[0].xpath('edm:PropertyRef', namespaces=config.namespaces): principal_refs.append(property_ref.get('Name')) if not principal_refs: raise RuntimeError(f'In role {principal_name} should be at least one principal property defined') dependent = referential_constraint_node.xpath('edm:Dependent', namespaces=config.namespaces) if len(dependent) != 1: raise RuntimeError('Referential constraint must contain exactly one dependent element') dependent_name = dependent[0].get('Role') if dependent_name is None: raise RuntimeError('Dependent role name was not specified') dependent_refs = [] for property_ref in dependent[0].xpath('edm:PropertyRef', namespaces=config.namespaces): dependent_refs.append(property_ref.get('Name')) if len(principal_refs) != len(dependent_refs): raise RuntimeError('Number of properties should be equal for the principal {} and the dependent {}' .format(principal_name, dependent_name)) return ReferentialConstraint( PrincipalRole(principal_name, principal_refs), DependentRole(dependent_name, dependent_refs)) class Association: """Defines a relationship between two entity types. An association must specify the entity types that are involved in the relationship and the possible number of entity types at each end of the relationship, which is known as the multiplicity. The multiplicity of an association end can have a value of one (1), zero or one (0..1), or many (*). This information is specified in two child End elements. """ def __init__(self, name): self._name = name self._referential_constraint = None self._end_roles = list() def __str__(self): return f'{self.__class__.__name__}({self._name})' @property def name(self): return self._name @property def end_roles(self): return self._end_roles def end_by_role(self, end_role): try: return next((item for item in self._end_roles if item.role == end_role)) except StopIteration: raise KeyError(f'Association {self._name} has no End with Role {end_role}') @property def referential_constraint(self): return self._referential_constraint @staticmethod def from_etree(association_node, config: Config): name = association_node.get('Name') association = Association(name) for end in association_node.xpath('edm:End', namespaces=config.namespaces): end_role = EndRole.from_etree(end) if end_role.entity_type_info is None: raise RuntimeError(f'End type is not specified in the association {name}') association._end_roles.append(end_role) if len(association._end_roles) != 2: raise RuntimeError(f'Association {name} does not have two end roles') refer = association_node.xpath('edm:ReferentialConstraint', namespaces=config.namespaces) if len(refer) > 1: raise RuntimeError(f'In association {name} is defined more than one referential constraint') if not refer: referential_constraint = None else: referential_constraint = ReferentialConstraint.from_etree(refer[0], config) association._referential_constraint = referential_constraint return association class AssociationSetEndRole: def __init__(self, role, entity_set_name): self._role = role self._entity_set_name = entity_set_name self._entity_set = None def __repr__(self): return f"{self.__class__.__name__}({self.role})" @property def role(self): return self._role @property def entity_set_name(self): return self._entity_set_name @property def entity_set(self): return self._entity_set @entity_set.setter def entity_set(self, value): if self._entity_set: raise PyODataModelError(f'Cannot replace {self._entity_set} of {self} to {value}') if value.name != self._entity_set_name: raise PyODataModelError( f'Assigned entity set {value} differentiates from the declared {self._entity_set_name}') self._entity_set = value @staticmethod def from_etree(end_node): role = end_node.get('Role') entity_set = end_node.get('EntitySet') return AssociationSetEndRole(role, entity_set) class AssociationSet: def __init__(self, name, association_type_name, association_type_namespace, end_roles): self._name = name self._association_type_name = association_type_name self._association_type_namespace = association_type_namespace self._association_type = None self._end_roles = end_roles def __str__(self): return f"{self.__class__.__name__}({self._name})" @property def name(self): return self._name @property def association_type(self): return self._association_type @property def association_type_name(self): return self._association_type_name @property def association_type_namespace(self): return self._association_type_namespace @property def end_roles(self): return self._end_roles def end_by_role(self, end_role): try: return next((end for end in self._end_roles if end.role == end_role)) except StopIteration: raise KeyError(f'Association set {self._name} has no End with Role {end_role}') def end_by_entity_set(self, entity_set): try: return next((end for end in self._end_roles if end.entity_set_name == entity_set)) except StopIteration: raise KeyError(f'Association set {self._name} has no End with Entity Set {entity_set}') @association_type.setter def association_type(self, value): if self._association_type is not None: raise RuntimeError(f'Cannot replace {self._association_type} of {self} with {value}') self._association_type = value @staticmethod def from_etree(association_set_node, config: Config): end_roles = [] name = association_set_node.get('Name') association = Identifier.parse(association_set_node.get('Association')) end_roles_list = association_set_node.xpath('edm:End', namespaces=config.namespaces) if len(end_roles) > 2: raise PyODataModelError(f'Association {name} cannot have more than 2 end roles') for end_role in end_roles_list: end_roles.append(AssociationSetEndRole.from_etree(end_role)) return AssociationSet(name, association.name, association.namespace, end_roles) class Annotation: Kinds = Enum('Kinds', 'ValueHelper') def __init__(self, kind, target, qualifier=None): super(Annotation, self).__init__() self._kind = kind self._element_namespace, self._element = target.split('.') self._qualifier = qualifier def __str__(self): return f"{self.__class__.__name__}({self.target})" @property def element_namespace(self): return self._element_namespace @property def element(self): return self._element @property def target(self): return f'{self._element_namespace}.{self._element}' @property def kind(self): return self._kind @staticmethod def from_etree(target, annotation_node): term = annotation_node.get('Term') if term in SAP_ANNOTATION_VALUE_LIST: return ValueHelper.from_etree(target, annotation_node) modlog().warning('Unsupported Annotation({0})'.format(term)) return None class ExternalAnnontation: @staticmethod def from_etree(annotations_node): target = annotations_node.get('Target') if annotations_node.get('Qualifier'): modlog().warning('Ignoring qualified Annotations of {}'.format(target)) return for annotation in annotations_node.xpath('edm:Annotation', namespaces=ANNOTATION_NAMESPACES): annot = Annotation.from_etree(target, annotation) if annot is None: continue yield annot class ValueHelper(Annotation): def __init__(self, target, collection_path, label, search_supported): # pylint: disable=unused-argument super(ValueHelper, self).__init__(Annotation.Kinds.ValueHelper, target) self._entity_type_name, self._proprty_name = self.element.split('/') self._proprty = None self._collection_path = collection_path self._entity_set = None self._label = label self._parameters = list() def __str__(self): return f"{self.__class__.__name__}({self.element})" @property def proprty_name(self): return self._proprty_name @property def proprty_entity_type_name(self): return self._entity_type_name @property def proprty(self): return self._proprty @proprty.setter def proprty(self, value): if self._proprty is not None: raise RuntimeError(f'Cannot replace {self._proprty} of {self} with {value}') if value.struct_type.name != self.proprty_entity_type_name or value.name != self.proprty_name: raise RuntimeError(f'{self} cannot be an annotation of {value}') self._proprty = value for param in self._parameters: if param.local_property_name: etype = self._proprty.struct_type try: param.local_property = etype.proprty(param.local_property_name) except KeyError: raise RuntimeError('{0} of {1} points to an non existing LocalDataProperty {2} of {3}'.format( param, self, param.local_property_name, etype)) @property def collection_path(self): return self._collection_path @property def entity_set(self): return self._entity_set @entity_set.setter def entity_set(self, value): if self._entity_set is not None: raise RuntimeError(f'Cannot replace {self._entity_set} of {self} with {value}') if value.name != self.collection_path: raise RuntimeError(f'{self} cannot be assigned to {value}') self._entity_set = value for param in self._parameters: if param.list_property_name: etype = self._entity_set.entity_type try: param.list_property = etype.proprty(param.list_property_name) except KeyError: raise RuntimeError('{0} of {1} points to an non existing ValueListProperty {2} of {3}'.format( param, self, param.list_property_name, etype)) @property def label(self): return self._label @property def parameters(self): return self._parameters def local_property_param(self, name): for prm in self._parameters: if prm.local_property.name == name: return prm raise KeyError(f'{self} has no local property {name}') def list_property_param(self, name): for prm in self._parameters: if prm.list_property.name == name: return prm raise KeyError(f'{self} has no list property {name}') @staticmethod def from_etree(target, annotation_node): label = None collection_path = None search_supported = False params_node = None for prop_value in annotation_node.xpath('edm:Record/edm:PropertyValue', namespaces=ANNOTATION_NAMESPACES): rprop = prop_value.get('Property') if rprop == 'Label': label = prop_value.get('String') elif rprop == 'CollectionPath': collection_path = prop_value.get('String') elif rprop == 'SearchSupported': search_supported = prop_value.get('Bool') elif rprop == 'Parameters': params_node = prop_value value_helper = ValueHelper(target, collection_path, label, search_supported) if params_node is not None: for prm in params_node.xpath('edm:Collection/edm:Record', namespaces=ANNOTATION_NAMESPACES): param = ValueHelperParameter.from_etree(prm) param.value_helper = value_helper value_helper._parameters.append(param) return value_helper class ValueHelperParameter: Direction = Enum('Direction', 'In InOut Out DisplayOnly FilterOnly Constant Constants') def __init__(self, direction, local_property_name, list_property_name): super(ValueHelperParameter, self).__init__() self._direction = direction self._value_helper = None self._local_property = None self._local_property_name = local_property_name self._list_property = None self._list_property_name = list_property_name def __str__(self): if self._direction in [ValueHelperParameter.Direction.DisplayOnly, ValueHelperParameter.Direction.FilterOnly]: return f"{self.__class__.__name__}({self._list_property_name})" return f"{self.__class__.__name__}({self._local_property_name}={self._list_property_name})" @property def value_helper(self): return self._value_helper @value_helper.setter def value_helper(self, value): if self._value_helper is not None: raise RuntimeError(f'Cannot replace {self._value_helper} of {self} with {value}') self._value_helper = value @property def direction(self): return self._direction @property def local_property_name(self): return self._local_property_name @property def local_property(self): return self._local_property @local_property.setter def local_property(self, value): if self._local_property is not None: raise RuntimeError(f'Cannot replace {self._local_property} of {self} with {value}') self._local_property = value @property def list_property_name(self): return self._list_property_name @property def list_property(self): return self._list_property @list_property.setter def list_property(self, value): if self._list_property is not None: raise RuntimeError(f'Cannot replace {self._list_property} of {self} with {value}') self._list_property = value @staticmethod def from_etree(value_help_parameter_node): typ = value_help_parameter_node.get('Type') direction = SAP_VALUE_HELPER_DIRECTIONS[typ] local_prop_name = None list_prop_name = None for pval in value_help_parameter_node.xpath('edm:PropertyValue', namespaces=ANNOTATION_NAMESPACES): pv_name = pval.get('Property') if pv_name == 'LocalDataProperty': local_prop_name = pval.get('PropertyPath') elif pv_name == 'ValueListProperty': list_prop_name = pval.get('String') return ValueHelperParameter(direction, local_prop_name, list_prop_name) class FunctionImport(Identifier): def __init__(self, name, return_type_info, entity_set, parameters, http_method='GET'): super(FunctionImport, self).__init__(name) self._entity_set_name = entity_set self._return_type_info = return_type_info self._return_type = None self._parameters = parameters self._http_method = http_method @property def return_type_info(self): return self._return_type_info @property def return_type(self): return self._return_type @return_type.setter def return_type(self, value): if self._return_type is not None: raise RuntimeError(f'Cannot replace {self._return_type} of {self} by {value}') if value.name != self.return_type_info[1]: raise RuntimeError(f'{value} cannot be the type of {self}') self._return_type = value @property def entity_set_name(self): return self._entity_set_name @property def parameters(self): return list(self._parameters.values()) def get_parameter(self, parameter): return self._parameters[parameter] @property def http_method(self): return self._http_method # pylint: disable=too-many-locals @staticmethod def from_etree(function_import_node, config: Config): name = function_import_node.get('Name') entity_set = function_import_node.get('EntitySet') http_method = metadata_attribute_get(function_import_node, 'HttpMethod') rt_type = function_import_node.get('ReturnType') rt_info = None if rt_type is None else Types.parse_type_name(rt_type) parameters = dict() for param in function_import_node.xpath('edm:Parameter', namespaces=config.namespaces): param_name = param.get('Name') param_type_info = Types.parse_type_name(param.get('Type')) param_nullable = attribute_get_bool(param, 'Nullable', False) param_max_length = param.get('MaxLength') param_precision = param.get('Precision') param_scale = param.get('Scale') param_mode = param.get('Mode') parameters[param_name] = FunctionImportParameter(param_name, param_type_info, param_nullable, param_max_length, param_precision, param_scale, param_mode) return FunctionImport(name, rt_info, entity_set, parameters, http_method) class FunctionImportParameter(VariableDeclaration): Modes = Enum('Modes', 'In Out InOut') def __init__(self, name, type_info, nullable, max_length, precision, scale, mode): super(FunctionImportParameter, self).__init__(name, type_info, nullable, max_length, precision, scale, None) self._mode = mode @property def mode(self): return self._mode def sap_attribute_get(node, attr): return node.get('{http://www.sap.com/Protocols/SAPData}%s' % (attr)) def metadata_attribute_get(node, attr): return node.get('{http://schemas.microsoft.com/ado/2007/08/dataservices/metadata}%s' % (attr)) def sap_attribute_get_string(node, attr): return sap_attribute_get(node, attr) def str_to_bool(value, attr, default): if value is None: return default if value == 'true': return True if value == 'false': return False raise TypeError(f'Not a bool attribute: {attr} = {value}') def attribute_get_bool(node, attr, default): return str_to_bool(node.get(attr), attr, default) def sap_attribute_get_bool(node, attr, default): return str_to_bool(sap_attribute_get(node, attr), attr, default) ANNOTATION_NAMESPACES = { 'edm': 'http://docs.oasis-open.org/odata/ns/edm', 'edmx': 'http://docs.oasis-open.org/odata/ns/edmx' } SAP_VALUE_HELPER_DIRECTIONS = { 'com.sap.vocabularies.Common.v1.ValueListParameterIn': ValueHelperParameter.Direction.In, 'com.sap.vocabularies.Common.v1.ValueListParameterInOut': ValueHelperParameter.Direction.InOut, 'com.sap.vocabularies.Common.v1.ValueListParameterOut': ValueHelperParameter.Direction.Out, 'com.sap.vocabularies.Common.v1.ValueListParameterDisplayOnly': ValueHelperParameter.Direction.DisplayOnly, 'com.sap.vocabularies.Common.v1.ValueListParameterFilterOnly': ValueHelperParameter.Direction.FilterOnly, 'com.sap.vocabularies.Common.v1.ValueListParameterConstant': ValueHelperParameter.Direction.Constant, 'com.sap.vocabularies.Common.v1.ValueListParameterConstants': ValueHelperParameter.Direction.Constants } SAP_ANNOTATION_VALUE_LIST = ['com.sap.vocabularies.Common.v1.ValueList'] class MetadataBuilder: EDMX_WHITELIST = [ 'http://schemas.microsoft.com/ado/2007/06/edmx', 'http://docs.oasis-open.org/odata/ns/edmx', ] EDM_WHITELIST = [ 'http://schemas.microsoft.com/ado/2006/04/edm', 'http://schemas.microsoft.com/ado/2007/05/edm', 'http://schemas.microsoft.com/ado/2008/09/edm', 'http://schemas.microsoft.com/ado/2009/11/edm', 'http://docs.oasis-open.org/odata/ns/edm' ] def __init__(self, xml, config=None): self._xml = xml if config is None: config = Config() self._config = config @property def config(self): return self._config def build(self): """ Build model from the XML metadata""" if isinstance(self._xml, str): mdf = io.StringIO(self._xml) elif isinstance(self._xml, bytes): mdf = io.BytesIO(self._xml) else: raise TypeError(f'Expected bytes or str type on metadata_xml, got : {type(self._xml)}') namespaces = self._config.namespaces try: xml = etree.parse(mdf) except etree.XMLSyntaxError as ex: raise PyODataParserError('Metadata document syntax error') from ex edmx = xml.getroot() try: dataservices = next((child for child in edmx if etree.QName(child.tag).localname == 'DataServices')) except StopIteration: raise PyODataParserError('Metadata document is missing the element DataServices') try: schema = next((child for child in dataservices if etree.QName(child.tag).localname == 'Schema')) except StopIteration: raise PyODataParserError('Metadata document is missing the element Schema') if 'edmx' not in self._config.namespaces: namespace = etree.QName(edmx.tag).namespace if namespace not in self.EDMX_WHITELIST: raise PyODataParserError(f'Unsupported Edmx namespace - {namespace}') namespaces['edmx'] = namespace if 'edm' not in self._config.namespaces: namespace = etree.QName(schema.tag).namespace if namespace not in self.EDM_WHITELIST: raise PyODataParserError(f'Unsupported Schema namespace - {namespace}') namespaces['edm'] = namespace self._config.namespaces = namespaces self.update_global_variables_with_alias(self.get_aliases(xml, self._config)) edm_schemas = xml.xpath('/edmx:Edmx/edmx:DataServices/edm:Schema', namespaces=self._config.namespaces) schema = Schema.from_etree(edm_schemas, self._config) return schema @staticmethod def get_aliases(edmx, config: Config): """Get all aliases""" aliases = collections.defaultdict(set) edm_root = edmx.xpath('/edmx:Edmx', namespaces=config.namespaces) if edm_root: edm_ref_includes = edm_root[0].xpath('edmx:Reference/edmx:Include', namespaces=ANNOTATION_NAMESPACES) for ref_incl in edm_ref_includes: namespace = ref_incl.get('Namespace') alias = ref_incl.get('Alias') if namespace is not None and alias is not None: aliases[namespace].add(alias) return aliases @staticmethod def update_global_variables_with_alias(aliases): """Update global variables with aliases""" global SAP_ANNOTATION_VALUE_LIST # pylint: disable=global-statement namespace, suffix = SAP_ANNOTATION_VALUE_LIST[0].rsplit('.', 1) SAP_ANNOTATION_VALUE_LIST.extend([alias + '.' + suffix for alias in aliases[namespace]]) global SAP_VALUE_HELPER_DIRECTIONS # pylint: disable=global-statement helper_direction_keys = list(SAP_VALUE_HELPER_DIRECTIONS.keys()) for direction_key in helper_direction_keys: namespace, suffix = direction_key.rsplit('.', 1) for alias in aliases[namespace]: SAP_VALUE_HELPER_DIRECTIONS[alias + '.' + suffix] = SAP_VALUE_HELPER_DIRECTIONS[direction_key] def schema_from_xml(metadata_xml, namespaces=None): """Parses XML data and returns Schema representing OData Metadata""" meta = MetadataBuilder( metadata_xml, config=Config( xml_namespaces=namespaces, )) return meta.build() class Edmx: @staticmethod def parse(metadata_xml, namespaces=None): warnings.warn("Edmx class is deprecated in favor of MetadataBuilder", DeprecationWarning) return schema_from_xml(metadata_xml, namespaces) python-pyodata-1.11.2/pyodata/v2/service.py000066400000000000000000002066471500317427700206030ustar00rootroot00000000000000"""OData service implementation Details regarding batch requests and changesets: http://www.odata.org/documentation/odata-version-2-0/batch-processing/ """ # pylint: disable=too-many-lines import logging from functools import partial import json import random from email.parser import Parser from http.client import HTTPResponse from io import BytesIO from urllib.parse import urlencode, quote from pyodata.exceptions import HttpError, PyODataException, ExpressionError, ProgramError from . import model LOGGER_NAME = 'pyodata.service' HTTP_CODE_OK = 200 HTTP_CODE_CREATED = 201 def urljoin(*path): """Joins the passed string parts into a one string url""" return '/'.join((part.strip('/') for part in path)) def encode_multipart(boundary, http_requests): """Encode list of requests into multipart body""" lines = [] lines.append('') for req in http_requests: lines.append(f'--{boundary}') if not isinstance(req, MultipartRequest): lines.extend(('Content-Type: application/http', 'Content-Transfer-Encoding:binary')) lines.append('') # request line (method + path + query params) line = f'{req.get_method()} {req.get_path()}' query_params = urlencode(req.get_query_params()) if query_params: line += '?' + query_params line += ' HTTP/1.1' lines.append(line) # request specific headers for hdr, hdr_val in req.get_headers().items(): lines.append(f'{hdr}: {hdr_val}') lines.append('') body = req.get_body() if body is not None: lines.append(req.get_body()) else: # this is very important since SAP gateway rejected request witout this line. It seems # blank line must be provided as a representation of emtpy body, else we are getting # 400 Bad fromat from SAP gateway lines.append('') lines.append(f'--{boundary}--') return '\r\n'.join(lines) def decode_multipart(data, content_type): """Decode parts of the multipart mime content""" def decode(message): """Decode tree of messages for specific message""" messages = [] for i, part in enumerate(message.walk()): # pylint: disable=unused-variable if part.get_content_type() == 'multipart/mixed': for submessage in part.get_payload(): messages.append(decode(submessage)) break messages.append(part.get_payload()) return messages data = f"Content-Type: {content_type}\n" + data parser = Parser() parsed = parser.parsestr(data) decoded = decode(parsed) return decoded class ODataHttpResponse: """Representation of http response""" def __init__(self, headers, status_code, content=None, url=None): self.url = url self.headers = headers self.status_code = status_code self.content = content @staticmethod def from_string(data): """Parse http response to status code, headers and body Based on: https://stackoverflow.com/questions/24728088/python-parse-http-response-string """ class FakeSocket: """Fake socket to simulate received http response content""" def __init__(self, response_str): self._file = BytesIO(response_str.encode('utf-8')) def makefile(self, *args, **kwargs): """Fake file that provides string content""" # pylint: disable=unused-argument return self._file source = FakeSocket(data) response = HTTPResponse(source) response.begin() response.length = response.fp.__sizeof__() return ODataHttpResponse( dict(response.getheaders()), response.status, response.read(len(data)) # the len here will give a 'big enough' value to read the whole content ) def json(self): """Return response as decoded json""" # TODO: see implementation in python requests, our simple # approach can bring issues with encoding # https://github.com/requests/requests/blob/master/requests/models.py#L868 if self.content: return json.loads(self.content.decode('utf-8')) return None class EntityKey: """An immutable entity-key, made up of either a single value (single) or multiple key-value pairs (complex). Every entity must have an entity-key. The entity-key must be unique within the entity-set, and thus defines an entity's identity. The string representation of an entity-key is wrapped with parentheses, such as (2), ('foo') or (a=1,foo='bar'). Entity-keys are equal if their string representations are equal. """ TYPE_SINGLE = 0 TYPE_COMPLEX = 1 def __init__(self, entity_type, single_key=None, **args): self._logger = logging.getLogger(LOGGER_NAME) self._proprties = args self._entity_type = entity_type self._key = entity_type.key_proprties # single key does not need property name if single_key is not None: # check that entity type key consists of exactly one property if len(self._key) != 1: raise PyODataException(('Key of entity type {} consists of multiple properties {} ' 'and cannot be initialized by single value').format( self._entity_type.name, ', '.join([prop.name for prop in self._key]))) # get single key property and format key string key_prop = self._key[0] args[key_prop.name] = single_key self._type = EntityKey.TYPE_SINGLE self._logger.debug(('Detected single property key, adding pair %s->%s to key' 'properties'), key_prop.name, single_key) else: for key_prop in self._key: if key_prop.name not in args: raise PyODataException(f'Missing value for key property {key_prop.name}') self._type = EntityKey.TYPE_COMPLEX @property def key_properties(self): """Key properties""" return self._key def to_key_string_without_parentheses(self): """Gets the string representation of the key without parentheses""" if self._type == EntityKey.TYPE_SINGLE: # first property is the key property key_prop = self._key[0] return key_prop.to_literal(self._proprties[key_prop.name]) key_pairs = [] for key_prop in self._key: # if key_prop.name not in self.__dict__['_cache']: # raise RuntimeError('Entity key is not complete, missing value of property: {0}'.format(key_prop.name)) key_pairs.append( f'{key_prop.name}={key_prop.to_literal(self._proprties[key_prop.name])}') return ','.join(key_pairs) def to_key_string(self): """Gets the string representation of the key, including parentheses""" return f'({self.to_key_string_without_parentheses()})' def __repr__(self): return self.to_key_string() class ODataHttpRequest: """Deferred HTTP Request""" def __init__(self, url, connection, handler, headers=None): self._connection = connection self._url = url self._handler = handler self._headers = headers or dict() self._logger = logging.getLogger(LOGGER_NAME) self._customs = {} # string -> string hash self._next_url = None @property def handler(self): """Getter for handler""" return self._handler def get_path(self): """Get path of the HTTP request""" # pylint: disable=no-self-use return '' def get_query_params(self): """Get query params""" # pylint: disable=no-self-use return dict(self._customs) def get_method(self): """Get HTTP method""" # pylint: disable=no-self-use return 'GET' def get_body(self): """Get HTTP body or None if not applicable""" # pylint: disable=no-self-use return None def get_default_headers(self): """Get dict of Child specific HTTP headers""" # pylint: disable=no-self-use return dict() def get_headers(self): """Get dict of HTTP headers which is union of return value of the method get_default_headers() and the headers added via the method add_headers() where the latter headers have priority - same keys get value of the latter. """ headers = self.get_default_headers() headers.update(self._headers) return headers def add_headers(self, value): """Add the give dictionary of HTTP headers to HTTP request sent by this ODataHttpRequest instance. """ if not isinstance(value, dict): raise TypeError(f"Headers must be of type 'dict' not {type(value)}") self._headers.update(value) def _build_request(self): if self._next_url: url = self._next_url else: url = urljoin(self._url, self.get_path()) # pylint: disable=assignment-from-none body = self.get_body() headers = self.get_headers() self._logger.debug('Send (execute) %s request to %s', self.get_method(), url) self._logger.debug(' query params: %s', self.get_query_params()) self._logger.debug(' headers: %s', headers) if body: self._logger.debug(' body: %s', body) params = self.get_query_params() return url, body, headers, params async def async_execute(self): """Fetches HTTP response and returns processed result Sends the query-request to the OData service, returning a client-side Enumerable for subsequent in-memory operations. Fetches HTTP response and returns processed result""" url, body, headers, params = self._build_request() async with self._connection.request(self.get_method(), url, headers=headers, params=params, data=body) as async_response: response = ODataHttpResponse(url=async_response.url, headers=async_response.headers, status_code=async_response.status, content=await async_response.read()) return self._call_handler(response) def execute(self): """Fetches HTTP response and returns processed result Sends the query-request to the OData service, returning a client-side Enumerable for subsequent in-memory operations. Fetches HTTP response and returns processed result""" url, body, headers, params = self._build_request() response = self._connection.request( self.get_method(), url, headers=headers, params=urlencode(params), data=body) return self._call_handler(response) def _call_handler(self, response): self._logger.debug('Received response') self._logger.debug(' url: %s', response.url) self._logger.debug(' headers: %s', response.headers) self._logger.debug(' status code: %d', response.status_code) try: self._logger.debug(' body: %s', response.content.decode('utf-8')) except UnicodeDecodeError: self._logger.debug(' body: ') return self._handler(response) def custom(self, name, value): """Adds a custom name-value pair.""" # returns QueryRequest self._customs[name] = value return self class EntityGetRequest(ODataHttpRequest): """Used for GET operations of a single entity""" def __init__(self, handler, entity_key, entity_set_proxy, encode_path=True): super(EntityGetRequest, self).__init__(entity_set_proxy.service.url, entity_set_proxy.service.connection, handler) self._logger = logging.getLogger(LOGGER_NAME) self._entity_key = entity_key self._entity_set_proxy = entity_set_proxy self._select = None self._expand = None self._encode_path = encode_path self._logger.debug('New instance of EntityGetRequest for last segment: %s', self._entity_set_proxy.last_segment) def nav(self, nav_property): """Navigates to given navigation property and returns the EntitySetProxy""" return self._entity_set_proxy.nav(nav_property, self._entity_key) def select(self, select): """Specifies a subset of properties to return. @param select a comma-separated list of selection clauses """ self._select = select return self def expand(self, expand): """Specifies related entities to expand inline as part of the response. @param expand a comma-separated list of navigation properties """ self._expand = expand return self def get_path(self): if self.get_encode_path(): return quote(self._entity_set_proxy.last_segment + self._entity_key.to_key_string()) return self._entity_set_proxy.last_segment + self._entity_key.to_key_string() def get_default_headers(self): return {'Accept': 'application/json'} def get_query_params(self): qparams = super(EntityGetRequest, self).get_query_params() if self._select is not None: qparams['$select'] = self._select if self._expand is not None: qparams['$expand'] = self._expand return qparams def get_value(self, connection=None): """Returns Value of Media EntityTypes also known as the $value URL suffix.""" if connection is None: connection = self._connection def stream_handler(response): """Returns $value from HTTP Response""" if response.status_code != HTTP_CODE_OK: raise HttpError('HTTP GET for $value failed with status code {}' .format(response.status_code), response) return response return ODataHttpRequest( urljoin(self._url, self.get_path(), '/$value'), connection, stream_handler) def get_encode_path(self): """Getter for encode path flag""" return self._encode_path class NavEntityGetRequest(EntityGetRequest): """Used for GET operations of a single entity accessed via a Navigation property""" def __init__(self, handler, master_key, entity_set_proxy, nav_property): super(NavEntityGetRequest, self).__init__(handler, master_key, entity_set_proxy) self._nav_property = nav_property def get_path(self): return f"{super(NavEntityGetRequest, self).get_path()}/{self._nav_property}" class EntityCreateRequest(ODataHttpRequest): """Used for creating entities (POST operations of a single entity) Call execute() to send the create-request to the OData service and get the newly created entity.""" def __init__(self, url, connection, handler, entity_set, last_segment=None): super(EntityCreateRequest, self).__init__(url, connection, handler) self._logger = logging.getLogger(LOGGER_NAME) self._entity_set = entity_set self._entity_type = entity_set.entity_type if last_segment is None: self._last_segment = self._entity_set.name else: self._last_segment = last_segment self._values = {} # get all properties declared by entity type self._type_props = self._entity_type.proprties() self._logger.debug('New instance of EntityCreateRequest for entity type: %s on path %s', self._entity_type.name, self._last_segment) def get_path(self): return self._last_segment def get_method(self): # pylint: disable=no-self-use return 'POST' def _get_body(self): """Recursively builds a dictionary of values where some of the values might be another entities. """ body = {} for key, val in self._values.items(): # The value is either an entity or a scalar if isinstance(val, EntityProxy): body[key] = val._get_body() # pylint: disable=protected-access else: body[key] = val return body def get_body(self): return json.dumps(self._get_body()) def get_default_headers(self): return {'Accept': 'application/json', 'Content-Type': 'application/json', 'X-Requested-With': 'X'} @staticmethod def _build_values(entity_type, entity): """Recursively converts a dictionary of values where some of the values might be another entities (navigation properties) into the internal representation. """ if isinstance(entity, list): return [EntityCreateRequest._build_values(entity_type, item) for item in entity] values = {} for key, val in entity.items(): try: val = entity_type.proprty(key).to_json(val) except KeyError: try: nav_prop = entity_type.nav_proprty(key) val = EntityCreateRequest._build_values(nav_prop.typ, val) except KeyError: raise PyODataException('Property {} is not declared in {} entity type'.format( key, entity_type.name)) values[key] = val return values def set(self, **kwargs): """Set properties on the new entity.""" self._logger.info(kwargs) # TODO: consider use of attset for setting properties self._values = EntityCreateRequest._build_values(self._entity_type, kwargs) return self class EntityDeleteRequest(ODataHttpRequest): """Used for deleting entity (DELETE operations on a single entity)""" def __init__(self, url, connection, handler, entity_set, entity_key, encode_path=True): super(EntityDeleteRequest, self).__init__(url, connection, handler) self._logger = logging.getLogger(LOGGER_NAME) self._entity_set = entity_set self._entity_key = entity_key self._encode_path = encode_path self._logger.debug('New instance of EntityDeleteRequest for entity type: %s', entity_set.entity_type.name) def get_path(self): if self.get_encode_path(): return quote(self._entity_set.name + self._entity_key.to_key_string()) return self._entity_set.name + self._entity_key.to_key_string() def get_encode_path(self): """Getter for encode path flag""" return self._encode_path def get_method(self): # pylint: disable=no-self-use return 'DELETE' # pylint: disable=too-many-instance-attributes class EntityModifyRequest(ODataHttpRequest): """Used for modyfing entities (UPDATE/MERGE operations on a single entity) Call execute() to send the update-request to the OData service and get the modified entity.""" ALLOWED_HTTP_METHODS = ['PATCH', 'PUT', 'MERGE'] # pylint: disable=too-many-arguments def __init__(self, url, connection, handler, entity_set, entity_key, method="PATCH", encode_path=True): super(EntityModifyRequest, self).__init__(url, connection, handler) self._logger = logging.getLogger(LOGGER_NAME) self._entity_set = entity_set self._entity_type = entity_set.entity_type self._entity_key = entity_key self._encode_path = encode_path self._method = method.upper() if self._method not in EntityModifyRequest.ALLOWED_HTTP_METHODS: raise ValueError('The value "{}" is not on the list of allowed Entity Update HTTP Methods: {}' .format(method, ', '.join(EntityModifyRequest.ALLOWED_HTTP_METHODS))) self._values = {} # get all properties declared by entity type self._type_props = self._entity_type.proprties() self._logger.debug('New instance of EntityModifyRequest for entity type: %s', self._entity_type.name) def get_path(self): if self.get_encode_path(): return quote(self._entity_set.name + self._entity_key.to_key_string()) return self._entity_set.name + self._entity_key.to_key_string() def get_method(self): # pylint: disable=no-self-use return self._method def get_body(self): # pylint: disable=no-self-use body = {} for key, val in self._values.items(): body[key] = val return json.dumps(body) def get_default_headers(self): return {'Accept': 'application/json', 'Content-Type': 'application/json'} def get_encode_path(self): """Getter for encode path flag""" return self._encode_path def set(self, **kwargs): """Set properties to be changed.""" self._logger.info(kwargs) for key, val in kwargs.items(): try: val = self._entity_type.proprty(key).to_json(val) except KeyError: raise PyODataException( f'Property {key} is not declared in {self._entity_type.name} entity type') self._values[key] = val return self class QueryRequest(ODataHttpRequest): """INTERFACE A consumer-side query-request builder. Call execute() to issue the request.""" # pylint: disable=too-many-instance-attributes def __init__(self, url, connection, handler, last_segment): super(QueryRequest, self).__init__(url, connection, handler) self._logger = logging.getLogger(LOGGER_NAME) self._count = None self._inlinecount = None self._top = None self._skip = None self._order_by = None self._filter = None self._select = None self._expand = None self._last_segment = last_segment self._logger.debug('New instance of QueryRequest for last segment: %s', self._last_segment) def count(self, inline=False): """Sets a flag to return the number of items. Can be inline with results or just the count.""" if inline: self._inlinecount = True else: self._count = True return self def next_url(self, next_url): """ Sets URL which identifies the next partial set of entities from the originally identified complete set. Once set, this URL takes precedence over all query parameters. For details, see section "6. Representing Collections of Entries" on https://www.odata.org/documentation/odata-version-2-0/json-format/ """ self._next_url = next_url return self def expand(self, expand): """Sets the expand expressions.""" self._expand = expand return self def filter(self, filter_val): """Sets the filter expression.""" # returns QueryRequest self._filter = filter_val return self # def nav(self, key_value, nav_property): # """Navigates to a referenced collection using a collection-valued navigation property.""" # # returns QueryRequest # raise NotImplementedError def order_by(self, order_by): """Sets the ordering expressions.""" self._order_by = order_by return self def select(self, select): """Sets the selection clauses.""" self._select = select return self def skip(self, skip): """Sets the number of items to skip.""" self._skip = skip return self def top(self, top): """Sets the number of items to return.""" self._top = top return self def get_path(self): if self._count: return urljoin(self._last_segment, '/$count') return self._last_segment def get_default_headers(self): if self._count: return {} return { 'Accept': 'application/json', } def get_query_params(self): if self._next_url: return {} qparams = super(QueryRequest, self).get_query_params() if self._top is not None: qparams['$top'] = self._top if self._skip is not None: qparams['$skip'] = self._skip if self._order_by is not None: qparams['$orderby'] = self._order_by if self._filter is not None: qparams['$filter'] = self._filter if self._select is not None: qparams['$select'] = self._select if self._expand is not None: qparams['$expand'] = self._expand if self._inlinecount: qparams['$inlinecount'] = 'allpages' return qparams class FunctionRequest(QueryRequest): """Function import request (Service call)""" def __init__(self, url, connection, handler, function_import): super(FunctionRequest, self).__init__(url, connection, handler, function_import.name) self._function_import = function_import self._logger.debug('New instance of FunctionRequest for %s', self._function_import.name) def parameter(self, name, value): '''Sets value of parameter.''' # check if param is valid (is declared in metadata) try: param = self._function_import.get_parameter(name) # add parameter as custom query argument self.custom(param.name, param.to_literal(value)) except KeyError: raise PyODataException('Function import {0} does not have pararmeter {1}' .format(self._function_import.name, name)) return self def get_method(self): return self._function_import.http_method def get_default_headers(self): return { 'Accept': 'application/json' } # pylint: disable=too-many-instance-attributes class EntityProxy: """An immutable OData entity instance, consisting of an identity (an entity-set and a unique entity-key within that set), properties (typed, named values), and links (references to other entities). """ # pylint: disable=too-many-branches,too-many-nested-blocks,too-many-statements def __init__(self, service, entity_set, entity_type, proprties=None, entity_key=None, etag=None): self._logger = logging.getLogger(LOGGER_NAME) self._service = service self._entity_set = entity_set self._entity_type = entity_type self._key_props = entity_type.key_proprties self._cache = dict() self._entity_key = entity_key self._etag = etag self._logger.debug('New entity proxy instance of type %s from properties: %s', entity_type.name, proprties) # cache values of individual properties if provided if proprties is not None: etag_body = proprties.get('__metadata', dict()).get('etag', None) if etag is not None and etag_body is not None and etag_body != etag: raise PyODataException('Etag from header does not match the Etag from response body') if etag_body is not None: self._etag = etag_body # first, cache values of direct properties for type_proprty in self._entity_type.proprties(): if type_proprty.name in proprties: # Property value available if proprties[type_proprty.name] is not None: self._cache[type_proprty.name] = type_proprty.from_json(proprties[type_proprty.name]) continue # Property value missing and user wants a type specific default value filled in if not self._service.retain_null: # null value is in literal form for now, convert it to python representation self._cache[type_proprty.name] = type_proprty.from_literal(type_proprty.typ.null_value) continue # Property is nullable - save it as such if type_proprty.nullable: self._cache[type_proprty.name] = None continue raise PyODataException(f'Value of non-nullable Property {type_proprty.name} is null') # then, assign all navigation properties for prop in self._entity_type.nav_proprties: if prop.name in proprties: # entity type of navigation property prop_etype = prop.to_role.entity_type # cache value according to multiplicity if prop.to_role.multiplicity in \ [model.EndRole.MULTIPLICITY_ONE, model.EndRole.MULTIPLICITY_ZERO_OR_ONE]: # cache None in case we receive nothing (null) instead of entity data if proprties[prop.name] is None: self._cache[prop.name] = None else: self._cache[prop.name] = EntityProxy(service, None, prop_etype, proprties[prop.name]) elif prop.to_role.multiplicity == model.EndRole.MULTIPLICITY_ZERO_OR_MORE: # default value is empty array self._cache[prop.name] = [] # if there are no entities available, received data consists of # metadata properties only. if 'results' in proprties[prop.name]: # available entities are serialized in results array for entity in proprties[prop.name]['results']: self._cache[prop.name].append(EntityProxy(service, None, prop_etype, entity)) elif isinstance(proprties[prop.name], list): for entity in proprties[prop.name]: self._cache[prop.name].append(EntityProxy(service, None, prop_etype, entity)) else: raise PyODataException('Unknown multiplicity {0} of association role {1}' .format(prop.to_role.multiplicity, prop.to_role.name)) # build entity key if not provided if self._entity_key is None: # try to build key from available property values try: # if key seems to be simple (consists of single property) if len(self._key_props) == 1: self._entity_key = EntityKey(entity_type, self._cache[self._key_props[0].name]) else: # build complex key self._entity_key = EntityKey(entity_type, **self._cache) except KeyError: pass except PyODataException: pass def __repr__(self): return self._entity_key.to_key_string() def __getattr__(self, attr): try: return self._cache[attr] except KeyError: try: value = self.get_proprty(attr).execute() self._cache[attr] = value return value except KeyError as ex: raise AttributeError('EntityType {0} does not have Property {1}: {2}' .format(self._entity_type.name, attr, str(ex))) async def async_getattr(self, attr): """Get cached value of attribute or do async call to service to recover attribute value""" try: return self._cache[attr] except KeyError: try: value = await self.get_proprty(attr).async_execute() self._cache[attr] = value return value except KeyError as ex: raise AttributeError('EntityType {0} does not have Property {1}: {2}' .format(self._entity_type.name, attr, str(ex))) def nav(self, nav_property): """Navigates to given navigation property and returns the EntitySetProxy""" # for now duplicated with simillar method in entity set proxy class try: navigation_property = self._entity_type.nav_proprty(nav_property) except KeyError: raise PyODataException('Navigation property {} is not declared in {} entity type'.format( nav_property, self._entity_type)) # Get entity set of navigation property association_info = navigation_property.association_info association_set = self._service.schema.association_set_by_association( association_info.name, association_info.namespace) end = association_set.end_by_role(navigation_property.to_role.role) navigation_entity_set = self._service.schema.entity_set(end.entity_set_name) if navigation_property.to_role.multiplicity != model.EndRole.MULTIPLICITY_ZERO_OR_MORE: return self._get_nav_entity(nav_property, navigation_entity_set) return EntitySetProxy( self._service, self._service.schema.entity_set(navigation_entity_set.name), nav_property, self._entity_set.name + self._entity_key.to_key_string()) def _get_nav_entity(self, nav_property, navigation_entity_set): """Get entity based on Navigation property name""" def get_entity_handler(parent, nav_property, navigation_entity_set, response): """Gets entity from HTTP response""" if response.status_code != HTTP_CODE_OK: raise HttpError('HTTP GET for Entity {0} failed with status code {1}' .format(self._name, response.status_code), response) entity = response.json()['d'] return NavEntityProxy(parent, nav_property, navigation_entity_set.entity_type, entity) self._logger.info( 'Getting the nav property %s of the entity %s for the key %s', nav_property, self._entity_set, self.entity_key) return NavEntityGetRequest( partial(get_entity_handler, self, nav_property, navigation_entity_set), self.entity_key, getattr(self._service.entity_sets, self.entity_set.name), nav_property) def get_path(self): """Returns this entity's relative path - e.g. EntitySet(KEY)""" return self._entity_set._name + self._entity_key.to_key_string() # pylint: disable=protected-access def get_proprty(self, name, connection=None): """Returns value of the property""" self._logger.info('Initiating property request for %s', name) def proprty_get_handler(key, proprty, response): """Gets property value from HTTP Response""" if response.status_code != HTTP_CODE_OK: raise HttpError('HTTP GET for Attribute {0} of Entity {1} failed with status code {2}' .format(proprty.name, key, response.status_code), response) data = response.json()['d'] return proprty.from_json(data[proprty.name]) path = urljoin(self.get_path(), name) return self._service.http_get_odata( path, partial(proprty_get_handler, path, self._entity_type.proprty(name)), connection=connection) def get_value(self, connection=None): "Returns $value of Stream entities" def value_get_handler(key, response): """Gets property value from HTTP Response""" if response.status_code != HTTP_CODE_OK: raise HttpError('HTTP GET for $value of Entity {0} failed with status code {1}' .format(key, response.status_code), response) return response path = urljoin(self.get_path(), '/$value') return self._service.http_get_odata(path, partial(value_get_handler, self.entity_key), connection=connection) @property def entity_set(self): """Entity set related to this entity""" return self._entity_set @property def entity_key(self): """Key of entity""" return self._entity_key @property def url(self): """URL of the real entity""" service_url = self._service.url.rstrip('/') entity_path = self.get_path() return urljoin(service_url, entity_path) @property def etag(self): """ETag generated by service""" return self._etag def equals(self, other): """Returns true if the self and the other contains the same data""" # pylint: disable=W0212 return self._cache == other._cache class NavEntityProxy(EntityProxy): """Special case of an Entity access via 1 to 1 Navigation property""" def __init__(self, parent_entity, prop_name, entity_type, entity): # pylint: disable=protected-access super(NavEntityProxy, self).__init__(parent_entity._service, parent_entity._entity_set, entity_type, entity) self._parent_entity = parent_entity self._prop_name = prop_name def get_path(self): """Returns URL of the entity""" return urljoin(self._parent_entity.get_path(), self._prop_name) class GetEntitySetFilter: """Create filters for humans""" def __init__(self, proprty): self._proprty = proprty @staticmethod def build_expression(operator, operands): """Creates a expression by joining the operands with the operator""" if len(operands) < 2: raise ExpressionError('The $filter operator \'{}\' needs at least two operands'.format(operator)) return f"({' {} '.format(operator).join(operands)})" @staticmethod def and_(*operands): """Creates logical AND expression from the operands""" return GetEntitySetFilter.build_expression('and', operands) @staticmethod def or_(*operands): """Creates logical OR expression from the operands""" return GetEntitySetFilter.build_expression('or', operands) @staticmethod def format_filter(proprty, operator, value): """Creates a filter expression """ return f'{proprty.name} {operator} {proprty.to_literal(value)}' def __eq__(self, value): return GetEntitySetFilter.format_filter(self._proprty, 'eq', value) def __ne__(self, value): return GetEntitySetFilter.format_filter(self._proprty, 'ne', value) def __lt__(self, value): return GetEntitySetFilter.format_filter(self._proprty, 'lt', value) def __le__(self, value): return GetEntitySetFilter.format_filter(self._proprty, 'le', value) def __ge__(self, value): return GetEntitySetFilter.format_filter(self._proprty, 'ge', value) def __gt__(self, value): return GetEntitySetFilter.format_filter(self._proprty, 'gt', value) class FilterExpression: """A class representing named expression of OData $filter""" def __init__(self, **kwargs): self._expressions = kwargs self._other = None self._operator = None @property def expressions(self): """Get expressions where key is property name with the operator suffix and value is the left hand side operand. """ return self._expressions.items() @property def other(self): """Get an instance of the other operand""" return self._other @property def operator(self): """The other operand""" return self._operator def __or__(self, other): if self._other is not None: raise RuntimeError('The FilterExpression already initialized') self._other = other self._operator = "or" return self def __and__(self, other): if self._other is not None: raise RuntimeError('The FilterExpression already initialized') self._other = other self._operator = "and" return self class GetEntitySetFilterChainable: """ Example expressions FirstName='Tim' FirstName__contains='Tim' Age__gt=56 Age__gte=6 Age__lt=78 Age__lte=90 Age__range=(5,9) FirstName__in=['Tim', 'Bob', 'Sam'] FirstName__startswith='Tim' FirstName__endswith='mothy' Addresses__Suburb='Chatswood' Addresses__Suburb__contains='wood' """ OPERATORS = [ 'startswith', 'endswith', 'lt', 'lte', 'gt', 'gte', 'contains', 'range', 'in', 'length', 'eq' ] def __init__(self, entity_type, filter_expressions, exprs): self._entity_type = entity_type self._filter_expressions = filter_expressions self._expressions = exprs @property def expressions(self): """Get expressions as a list of tuples where the first item is a property name with the operator suffix and the second item is a left hand side value. """ return self._expressions.items() def proprty_obj(self, name): """Returns a model property for a particular property""" return self._entity_type.proprty(name) def _decode_and_combine_filter_expression(self, filter_expression): filter_expressions = [self._decode_expression(expr, val) for expr, val in filter_expression.expressions] return self._combine_expressions(filter_expressions) def _process_query_objects(self): """Processes FilterExpression objects to OData lookups""" filter_expressions = [] for expr in self._filter_expressions: lhs_expressions = self._decode_and_combine_filter_expression(expr) if expr.other is not None: rhs_expressions = self._decode_and_combine_filter_expression(expr.other) filter_expressions.append(f'({lhs_expressions}) {expr.operator} ({rhs_expressions})') else: filter_expressions.append(lhs_expressions) return filter_expressions def _process_expressions(self): filter_expressions = [self._decode_expression(expr, val) for expr, val in self.expressions] filter_expressions.extend(self._process_query_objects()) return filter_expressions def _decode_expression(self, expr, val): field = None # field_heirarchy = [] operator = 'eq' exprs = expr.split('__') for part in exprs: if self._entity_type.has_proprty(part): field = part # field_heirarchy.append(part) elif part in self.__class__.OPERATORS: operator = part else: raise ValueError(f'"{part}" is not a valid property or operator') # field = '/'.join(field_heirarchy) # target_field = self.proprty_obj(field_heirarchy[-1]) expression = self._build_expression(field, operator, val) return expression # pylint: disable=no-self-use def _combine_expressions(self, expressions): return ' and '.join(expressions) # pylint: disable=too-many-return-statements, too-many-branches def _build_expression(self, field_name, operator, value): target_field = self.proprty_obj(field_name) if operator not in ['length', 'in', 'range']: value = target_field.to_literal(value) if operator == 'lt': return f'{field_name} lt {value}' if operator == 'lte': return f'{field_name} le {value}' if operator == 'gte': return f'{field_name} ge {value}' if operator == 'gt': return f'{field_name} gt {value}' if operator == 'startswith': return f'startswith({field_name}, {value}) eq true' if operator == 'endswith': return f'endswith({field_name}, {value}) eq true' if operator == 'length': value = int(value) return f'length({field_name}) eq {value}' if operator in ['contains']: return f'substringof({value}, {field_name}) eq true' if operator == 'range': if not isinstance(value, (tuple, list)): raise TypeError(f'Range must be tuple or list not {type(value)}') if len(value) != 2: raise ValueError('Only two items can be passed in a range.') low_bound = target_field.to_literal(value[0]) high_bound = target_field.to_literal(value[1]) return f'{field_name} gte {low_bound} and {field_name} lte {high_bound}' if operator == 'in': literal_values = (f'{field_name} eq {target_field.to_literal(item)}' for item in value) return ' or '.join(literal_values) if operator == 'eq': return f'{field_name} eq {value}' raise ValueError(f'Invalid expression {operator}') def __str__(self): expressions = self._process_expressions() result = self._combine_expressions(expressions) return result class GetEntitySetRequest(QueryRequest): """GET on EntitySet""" def __init__(self, url, connection, handler, last_segment, entity_type, encode_path=True): super(GetEntitySetRequest, self).__init__(url, connection, handler, last_segment) self._entity_type = entity_type self._encode_path = encode_path def __getattr__(self, name): proprty = self._entity_type.proprty(name) return GetEntitySetFilter(proprty) def _set_filter(self, filter_val): filter_text = self._filter + ' and ' if self._filter else '' filter_text += filter_val self._filter = filter_text def filter(self, *args, **kwargs): if args and len(args) == 1 and isinstance(args[0], str): self._filter = args[0] else: self._set_filter(str(GetEntitySetFilterChainable(self._entity_type, args, kwargs))) return self def get_path(self): if self.get_encode_path(): path = quote(self._last_segment) else: path = self._last_segment if self._count: return urljoin(path, '/$count') return path def get_encode_path(self): """Getter for encode path flag""" return self._encode_path class ListWithTotalCount(list): """ A list with the additional property total_count and next_url. If set, use next_url to fetch the next batch of entities. """ def __init__(self, total_count, next_url): super(ListWithTotalCount, self).__init__() self._total_count = total_count self._next_url = next_url @property def next_url(self): """ URL which identifies the next partial set of entities from the originally identified complete set. None if no entities remaining. """ return self._next_url @property def total_count(self): """Count of all entities""" if self._total_count is None: raise ProgramError('The collection does not include Total Count ' 'of items because the request was made without ' 'specifying "count(inline=True)".') return self._total_count class EntitySetProxy: """EntitySet Proxy""" def __init__(self, service, entity_set, alias=None, parent_last_segment=None): """Creates new Entity Set object @param alias in case the entity set is access via assossiation @param parent_last_segment in case of association also parent key must be used """ self._service = service self._entity_set = entity_set self._alias = alias if parent_last_segment is None: self._parent_last_segment = '' else: if parent_last_segment.endswith('/'): self._parent_last_segment = parent_last_segment else: self._parent_last_segment = parent_last_segment + '/' self._name = entity_set.name self._key = entity_set.entity_type.key_proprties self._logger = logging.getLogger(LOGGER_NAME) self._logger.debug('New entity set proxy instance for %s', self._name) @property def service(self): """Return service""" return self._service @property def last_segment(self): """Return last segment of url""" entity_set_name = self._alias if self._alias is not None else self._entity_set.name return self._parent_last_segment + entity_set_name def nav(self, nav_property, key): """Navigates to given navigation property and returns the EntitySetProxy""" try: navigation_property = self._entity_set.entity_type.nav_proprty(nav_property) except KeyError: raise PyODataException('Navigation property {} is not declared in {} entity type'.format( nav_property, self._entity_set.entity_type)) # Get entity set of navigation property association_info = navigation_property.association_info association_set = self._service.schema.association_set_by_association( association_info.name) end = association_set.end_by_role(navigation_property.to_role.role) navigation_entity_set = self._service.schema.entity_set(end.entity_set_name) if navigation_property.to_role.multiplicity != model.EndRole.MULTIPLICITY_ZERO_OR_MORE: return self._get_nav_entity(key, nav_property, navigation_entity_set) return EntitySetProxy( self._service, navigation_entity_set, nav_property, self._entity_set.name + key.to_key_string()) def _get_nav_entity(self, master_key, nav_property, navigation_entity_set): """Get entity based on provided key of the master and Navigation property name""" def get_entity_handler(parent, nav_property, navigation_entity_set, response): """Gets entity from HTTP response""" if response.status_code != HTTP_CODE_OK: raise HttpError('HTTP GET for Entity {0} failed with status code {1}' .format(self._name, response.status_code), response) entity = response.json()['d'] return NavEntityProxy(parent, nav_property, navigation_entity_set.entity_type, entity) self._logger.info( 'Getting the nav property %s of the entity %s for the key %s', nav_property, self._entity_set.entity_type.name, master_key) parent = EntityProxy(self._service, self, self._entity_set.entity_type, entity_key=master_key) return NavEntityGetRequest( partial(get_entity_handler, parent, nav_property, navigation_entity_set), master_key, self, nav_property) def get_entity(self, key=None, encode_path=True, **args): """Get entity based on provided key properties""" def get_entity_handler(response): """Gets entity from HTTP response""" if response.status_code != HTTP_CODE_OK: raise HttpError('HTTP GET for Entity {0} failed with status code {1}' .format(self._name, response.status_code), response) entity = response.json()['d'] etag = response.headers.get('ETag', None) return EntityProxy(self._service, self._entity_set, self._entity_set.entity_type, entity, etag=etag) if key is not None and isinstance(key, EntityKey): entity_key = key else: entity_key = EntityKey(self._entity_set.entity_type, key, **args) self._logger.info('Getting entity %s for key %s and args %s', self._entity_set.entity_type.name, key, args) return EntityGetRequest(get_entity_handler, entity_key, self, encode_path=encode_path) def get_entities(self, encode_path=True): """Get some, potentially all entities""" def get_entities_handler(response): """Gets entity set from HTTP Response""" if response.status_code != HTTP_CODE_OK: raise HttpError('HTTP GET for Entity Set {0} failed with status code {1}' .format(self._name, response.status_code), response) content = response.json() if isinstance(content, int): return content entities = content['d'] total_count = None next_url = None if isinstance(entities, dict): if '__count' in entities: total_count = int(entities['__count']) if '__next' in entities: next_url = entities['__next'] entities = entities['results'] self._logger.info('Fetched %d entities', len(entities)) result = ListWithTotalCount(total_count, next_url) for props in entities: entity = EntityProxy(self._service, self._entity_set, self._entity_set.entity_type, props) result.append(entity) return result entity_set_name = self._alias if self._alias is not None else self._entity_set.name return GetEntitySetRequest(self._service.url, self._service.connection, get_entities_handler, self._parent_last_segment + entity_set_name, self._entity_set.entity_type, encode_path=encode_path) def create_entity(self, return_code=HTTP_CODE_CREATED): """Creates a new entity in the given entity-set.""" def create_entity_handler(response): """Gets newly created entity encoded in HTTP Response""" if response.status_code != return_code: raise HttpError('HTTP POST for Entity Set {0} failed with status code {1}' .format(self._name, response.status_code), response) entity_props = response.json()['d'] etag = response.headers.get('ETag', None) return EntityProxy(self._service, self._entity_set, self._entity_set.entity_type, entity_props, etag=etag) return EntityCreateRequest(self._service.url, self._service.connection, create_entity_handler, self._entity_set, self.last_segment) def update_entity(self, key=None, method=None, encode_path=True, **kwargs): """Updates an existing entity in the given entity-set.""" def update_entity_handler(response): """Gets modified entity encoded in HTTP Response""" if response.status_code != 204: raise HttpError('HTTP modify request for Entity Set {} failed with status code {}' .format(self._name, response.status_code), response) if key is not None and isinstance(key, EntityKey): entity_key = key else: entity_key = EntityKey(self._entity_set.entity_type, key, **kwargs) self._logger.info('Updating entity %s for key %s and args %s', self._entity_set.entity_type.name, key, kwargs) if method is None: method = self._service.config['http']['update_method'] return EntityModifyRequest(self._service.url, self._service.connection, update_entity_handler, self._entity_set, entity_key, method=method, encode_path=encode_path) def delete_entity(self, key: EntityKey = None, encode_path=True, **kwargs): """Delete the entity""" def delete_entity_handler(response): """Check if entity deletion was successful""" if response.status_code != 204: raise HttpError(f'HTTP POST for Entity delete {self._name} ' f'failed with status code {response.status_code}', response) if key is not None and isinstance(key, EntityKey): entity_key = key else: entity_key = EntityKey(self._entity_set.entity_type, key, **kwargs) return EntityDeleteRequest(self._service.url, self._service.connection, delete_entity_handler, self._entity_set, entity_key, encode_path=encode_path) # pylint: disable=too-few-public-methods class EntityContainer: """Set of EntitSet proxies""" def __init__(self, service): self._service = service self._entity_sets = dict() for entity_set in self._service.schema.entity_sets: self._entity_sets[entity_set.name] = EntitySetProxy(self._service, entity_set) def __getattr__(self, name): try: return self._entity_sets[name] except KeyError: raise AttributeError( f"EntitySet {name} not defined in {','.join(list(self._entity_sets.keys()))}.") class FunctionContainer: """Set of Function proxies Call a server-side functions (also known as a service operation). """ def __init__(self, service): self._service = service self._functions = dict() for fimport in self._service.schema.function_imports: self._functions[fimport.name] = fimport def __getattr__(self, name): if name not in self._functions: raise AttributeError( f"Function {name} not defined in {','.join(list(self._functions.keys()))}.") fimport = self._service.schema.function_import(name) def function_import_handler(fimport, response): """Get function call response from HTTP Response""" if 300 <= response.status_code < 400: raise HttpError(f'Function Import {fimport.name} requires Redirection which is not supported', response) if response.status_code == 401: raise HttpError(f'Not authorized to call Function Import {fimport.name}', response) if response.status_code == 403: raise HttpError(f'Missing privileges to call Function Import {fimport.name}', response) if response.status_code == 405: raise HttpError( f'Despite definition Function Import {fimport.name} does not support HTTP {fimport.http_method}', response) if 400 <= response.status_code < 500: raise HttpError( f'Function Import {fimport.name} call has failed with status code {response.status_code}', response) if response.status_code >= 500: raise HttpError(f'Server has encountered an error while processing Function Import {fimport.name}', response) if fimport.return_type is None: if response.status_code != 204: logging.getLogger(LOGGER_NAME).warning( 'The No Return Function Import %s has replied with HTTP Status Code %d instead of 204', fimport.name, response.status_code) if response.text: logging.getLogger(LOGGER_NAME).warning( 'The No Return Function Import %s has returned content:\n%s', fimport.name, response.text) return None if response.status_code != 200: logging.getLogger(LOGGER_NAME).warning( 'The Function Import %s has replied with HTTP Status Code %d instead of 200', fimport.name, response.status_code) response_data = response.json()['d'] # 1. if return types is "entity type", return instance of appropriate entity proxy if isinstance(fimport.return_type, model.EntityType): entity_set = self._service.schema.entity_set(fimport.entity_set_name) return EntityProxy(self._service, entity_set, fimport.return_type, response_data) # 2. return raw data for all other return types (primitives, complex types encoded in dicts, etc.) return response_data return FunctionRequest(self._service.url, self._service.connection, partial(function_import_handler, fimport), fimport) class Service: """OData service""" def __init__(self, url, schema, connection, config=None): self._url = url self._schema = schema self._connection = connection self._retain_null = config.retain_null if config else False self._entity_container = EntityContainer(self) self._function_container = FunctionContainer(self) self._config = {'http': {'update_method': 'PATCH'}} @property def schema(self): """Parsed metadata""" return self._schema @property def url(self): """Service url""" return self._url @property def connection(self): """Service connection""" return self._connection @property def retain_null(self): """Whether to respect null-ed values or to substitute them with type specific default values""" return self._retain_null @property def entity_sets(self): """EntitySet proxy""" return self._entity_container @property def functions(self): """Functions proxy""" return self._function_container @property def config(self): """Service specific configuration""" return self._config def http_get(self, path, connection=None): """HTTP GET response for the passed path in the service""" conn = connection if conn is None: conn = self._connection return conn.get(urljoin(self._url, path)) async def async_http_get(self, path, connection=None): """HTTP GET response for the passed path in the service""" conn = connection if conn is None: conn = self._connection async with conn.get(urljoin(self._url, path)) as resp: return resp def http_get_odata(self, path, handler, connection=None): """HTTP GET request proxy for the passed path in the service""" conn = connection if conn is None: conn = self._connection return ODataHttpRequest( urljoin(self._url, path), conn, handler, headers={'Accept': 'application/json'}) def create_batch(self, batch_id=None): """Create instance of OData batch request""" def batch_handler(batch, parts): """Process parsed multipart request (parts)""" logging.getLogger(LOGGER_NAME).debug('Batch handler called for batch %s', batch.id) result = [] for part, req in zip(parts, batch.requests): logging.getLogger(LOGGER_NAME).debug('Batch handler is processing part %s for request %s', part, req) # if part represents multiple requests, dont' parse body and # process parts by appropriate reuqest instance if isinstance(req, MultipartRequest): result.append(req.handler(req, part)) else: # part represents single request, we have to parse # content (without checking Content type for binary/http) response = ODataHttpResponse.from_string(part[0]) result.append(req.handler(response)) return result return BatchRequest(self._url, self._connection, batch_handler, batch_id) def create_changeset(self, changeset_id=None): """Create instance of OData changeset""" def changeset_handler(changeset, parts): """Gets changeset response from HTTP response""" logging.getLogger(LOGGER_NAME).debug('Changeset handler called for changeset %s', changeset.id) result = [] # check if changeset response consists of parts, this is important # to distinguish cases when server responds with single HTTP response # for whole request if not isinstance(parts[0], list): # raise error (even for successfull status codes) since such changeset response # always means something wrong happened on server response = ODataHttpResponse.from_string(parts[0]) raise HttpError('Changeset cannot be processed due to single response received, status code: {}'.format( response.status_code), response) for part, req in zip(parts, changeset.requests): logging.getLogger(LOGGER_NAME).debug('Changeset handler is processing part %s for request %s', part, req) if isinstance(req, MultipartRequest): raise PyODataException('Changeset cannot contain nested multipart content') # part represents single request, we have to parse # content (without checking Content type for binary/http) response = ODataHttpResponse.from_string(part[0]) result.append(req.handler(response)) return result return Changeset(self._url, self._connection, changeset_handler, changeset_id) class MultipartRequest(ODataHttpRequest): """HTTP Batch request""" def __init__(self, url, connection, handler, request_id=None): super(MultipartRequest, self).__init__(url, connection, partial(MultipartRequest.http_response_handler, self)) self.requests = [] self._handler_decoded = handler # generate random id of form dddd-dddd-dddd # pylint: disable=invalid-name self.id = request_id if request_id is not None else '{}_{}_{}'.format( random.randint(1000, 9999), random.randint(1000, 9999), random.randint(1000, 9999)) self._logger.debug('New multipart %s request initialized, id=%s', self.__class__.__name__, self.id) @property def handler(self): return self._handler_decoded def get_boundary(self): """Get boundary used for request parts""" return self.id def get_default_headers(self): # pylint: disable=no-self-use return {'Content-Type': f'multipart/mixed;boundary={self.get_boundary()}'} def get_body(self): return encode_multipart(self.get_boundary(), self.requests) def add_request(self, request): """Add request to be sent in batch""" self.requests.append(request) self._logger.debug('New %s request added to multipart request %s', request.get_method(), self.id) @staticmethod def http_response_handler(request, response): """Process HTTP response to mutipart HTTP request""" if response.status_code != 202: # 202 Accepted raise HttpError('HTTP POST for multipart request {0} failed with status code {1}' .format(request.id, response.status_code), response) logging.getLogger(LOGGER_NAME).debug('Generic multipart http response request handler called') # get list of all parts (headers + body) decoded = decode_multipart(response.content.decode('utf-8'), response.headers['Content-Type']) return request.handler(request, decoded) class BatchRequest(MultipartRequest): """HTTP Batch request""" def get_boundary(self): return 'batch_' + self.id def get_path(self): # pylint: disable=no-self-use return '$batch' def get_method(self): # pylint: disable=no-self-use return 'POST' class Changeset(MultipartRequest): """Representation of changeset (unsorted group of requests)""" def get_boundary(self): return 'changeset_' + self.id python-pyodata-1.11.2/pyodata/vendor/000077500000000000000000000000001500317427700175205ustar00rootroot00000000000000python-pyodata-1.11.2/pyodata/vendor/SAP.py000066400000000000000000000053731500317427700205250ustar00rootroot00000000000000"""SAP extensions to OData protocol""" import json import logging from pyodata.exceptions import HttpError def json_get(obj, member, typ, default=None): """Tries to get the passed member from the passed JSON object obj and makes sure it is instance of the passed typ. If the passed member is not found the default is returned instead. If the typ is not matched the exception ValueError is raised. """ if not isinstance(obj, dict): raise ValueError('the passed JSON is not a dict') value = obj.get(member, default) if not isinstance(value, typ): raise ValueError(f'{member} is not a {typ.__name__}') return value def add_btp_token_to_session(session, key, user, password): """Using the provided credentials, the function tries to add the necessary token for establishing a connection to an OData service coming from SAP BTP, ABAP environment. If any of the provided credentials are invalid, the server will respond with 401, and the function will raise HttpError. """ token_url = key['uaa']['url'] + f'/oauth/token?grant_type=password&username={user}&password={password}' token_response = session.post(token_url, auth=(key['uaa']['clientid'], key['uaa']['clientsecret'])) if token_response.status_code != 200: raise HttpError( f'Token request failed, status code: {token_response.status_code}, body:\n{token_response.content}', token_response) token_response = json.loads(token_response.text) token = token_response['id_token'] session.headers.update({'Authorization': f'Bearer {token}'}) return session class BusinessGatewayError(HttpError): """To display the right error message""" def __init__(self, message, response): """Try to parse the response as JSON and get the error message from BG """ logging.debug('SAP BusinessGateway HTTP Error parser') errordetails = [] try: data = json.loads(response.content.decode('utf-8')) error = json_get(data, 'error', dict, {}) innererror = json_get(error, 'innererror', dict, {}) message = json_get(json_get(error, 'message', dict, {}), 'value', str, message) errordetails = [json_get(detail, 'message', str, '') for detail in json_get(innererror, 'errordetails', list, [])] except ValueError as ex: logging.debug( 'The HTTP error is not a SAP BusinessGateway JSON error') logging.debug('JSON parsing error: %s', str(ex)) super(BusinessGatewayError, self).__init__(message, response) self.errordetails = errordetails python-pyodata-1.11.2/pyodata/vendor/__init__.py000066400000000000000000000000001500317427700216170ustar00rootroot00000000000000python-pyodata-1.11.2/requirements.txt000066400000000000000000000000131500317427700200400ustar00rootroot00000000000000lxml>=4.2.6python-pyodata-1.11.2/setup.cfg000066400000000000000000000002251500317427700164020ustar00rootroot00000000000000[metadata] license_file=LICENSE long_description=file: README.md [aliases] test=pytest [tool:pytest] addopts = --verbose python_files = tests/*.py python-pyodata-1.11.2/setup.py000066400000000000000000000047121500317427700163000ustar00rootroot00000000000000# Copyright 2018 SAP SE. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http: //www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, # either express or implied. See the License for the specific # language governing permissions and limitations under the License. import os import os.path from setuptools import setup, find_packages source_location = os.path.abspath(os.path.dirname(__file__)) NAME = 'python-pyodata' HERE = os.path.abspath(os.path.dirname(__file__)) def _read(name): with open(os.path.join(HERE, name), 'r', encoding='utf-8') as f: return f.read() setup( name="pyodata", version=_read('VERSION').strip(), license="Apache License Version 2.0", url="https://github.com/SAP/python-pyodata", author="Jakub Filak, Michal Nezerka, Patrik Petrik, Petr Hanak", author_email="jakub.filak@sap.com, michal.nezerka@sap.com, patrik.petrik@sap.com, petr.hanak@sap.com", description="Enterprise ready Python OData client", long_description=_read('README.md'), long_description_content_type="text/markdown", packages=find_packages(exclude=("tests")), zip_safe=False, install_requires=[ "lxml>=4.2.6", ], extras_require={ }, tests_require=[ "codecov", "flake8", "setuptools>=38.2.4", "setuptools-scm>=1.15.6", "requests>=2.28.1", "responses>=0.21.0", "pylint", "pytest>=7.1.2", "pytest-cov>=3.0.0", "sphinx", ], classifiers=[ # cf. http://pypi.python.org/pypi?%3Aaction=list_classifiers 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'Intended Audience :: Developers', 'License :: OSI Approved :: Apache Software License', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Software Development', 'Topic :: Software Development :: Libraries :: Python Modules', ], entry_points = { }, ) python-pyodata-1.11.2/tests/000077500000000000000000000000001500317427700157245ustar00rootroot00000000000000python-pyodata-1.11.2/tests/__init__.py000066400000000000000000000000011500317427700200240ustar00rootroot00000000000000 python-pyodata-1.11.2/tests/conftest.py000066400000000000000000000112771500317427700201330ustar00rootroot00000000000000"""PyTest Fixtures""" import logging import os import pytest from pyodata.v2.model import schema_from_xml, Types def contents_of_fixtures_file(file_name): path_to_current_file = os.path.realpath(__file__) current_directory = os.path.split(path_to_current_file)[0] path_to_file = os.path.join(current_directory, file_name) with open(path_to_file, 'rb') as md_file: return md_file.read() @pytest.fixture def metadata(): """Example OData metadata""" return contents_of_fixtures_file("metadata.xml") @pytest.fixture def xml_builder_factory(): """Skeleton OData metadata""" class XMLBuilder: """Helper class for building XML metadata document""" # pylint: disable=too-many-instance-attributes,line-too-long def __init__(self): self.reference_is_enabled = True self.data_services_is_enabled = True self.schema_is_enabled = True self.namespaces = { 'edmx': "http://schemas.microsoft.com/ado/2007/06/edmx", 'sap': 'http://www.sap.com/Protocols/SAPData', 'edm': 'http://schemas.microsoft.com/ado/2008/09/edm', 'm': 'http://schemas.microsoft.com/ado/2007/08/dataservices/metadata', 'd': 'http://schemas.microsoft.com/ado/2007/08/dataservices', } self.custom_edmx_prologue = None self.custom_edmx_epilogue = None self.custom_data_services_prologue = None self.custom_data_services_epilogue = None self._reference = '\n' + \ '\n' + \ '\n' self._schemas = '' def add_schema(self, namespace, xml_definition): """Add schema element""" self._schemas += f""""\n""" self._schemas += "\n" + xml_definition self._schemas += '\n' def serialize(self): """Returns full metadata XML document""" result = self._edmx_prologue() if self.reference_is_enabled: result += self._reference if self.data_services_is_enabled: result += self._data_services_prologue() if self.schema_is_enabled: result += self._schemas if self.data_services_is_enabled: result += self._data_services_epilogue() result += self._edmx_epilogue() return result def _edmx_prologue(self): if self.custom_edmx_prologue: prologue = self.custom_edmx_prologue else: prologue = f"""""" return prologue def _edmx_epilogue(self): if self.custom_edmx_epilogue: epilogue = self.custom_edmx_epilogue else: epilogue = '\n' return epilogue def _data_services_prologue(self): if self.custom_data_services_prologue: prologue = self.custom_data_services_prologue else: prologue = '\n' return prologue def _data_services_epilogue(self): if self.custom_data_services_epilogue: prologue = self.custom_data_services_epilogue else: prologue = '\n' return prologue return XMLBuilder @pytest.fixture def schema(metadata): """Parsed metadata""" # pylint: disable=redefined-outer-name return schema_from_xml(metadata) def assert_logging_policy(mock_warning, *args): """Assert if an warning was outputted by PolicyWarning """ assert logging.Logger.warning is mock_warning mock_warning.assert_called_with('[%s] %s', *args) def assert_request_contains_header(headers, name, value): assert name in headers assert headers[name] == value @pytest.fixture def type_date_time(): return Types.from_name('Edm.DateTime') @pytest.fixture def type_date_time_offset(): return Types.from_name('Edm.DateTimeOffset') python-pyodata-1.11.2/tests/enormous_batch_response000066400000000000000000020371621500317427700226100ustar00rootroot00000000000000--16804F9C063D8720EACA19F7DFB3CD4A0 Content-Type: application/http; charset=utf-8 Content-Length: 539625 content-transfer-encoding: binary HTTP/1.1 200 OK Content-Type: application/json Content-Length: 539521 dataserviceversion: 2.0 {"d": {"results": [{"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='cfyqo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='cfyqo')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "cfyqo", "Value": "lxviegy svauh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='bfrkr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='bfrkr')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "bfrkr", "Value": "pkaoe ihkwkv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='aqihr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='aqihr')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "aqihr", "Value": "ofpbhm dxbrubyp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='stdfg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='stdfg')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "stdfg", "Value": "pgqpcv mnoorv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='bygxu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='bygxu')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "bygxu", "Value": "uffkqp nrzrgi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='mhpvj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='mhpvj')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "mhpvj", "Value": "bmicpn wbufjqh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tebbc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tebbc')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "tebbc", "Value": "zioomi anbapbyi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='bwjzl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='bwjzl')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "bwjzl", "Value": "uhnjopjf lvomsjzi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='xjyvk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='xjyvk')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "xjyvk", "Value": "wmjtrq adehgxs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='vgswx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='vgswx')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "vgswx", "Value": "bnngvr qnzwcp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tkwnj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tkwnj')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "tkwnj", "Value": "ibhqvbkh wktwy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='lncxj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='lncxj')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "lncxj", "Value": "vfkksmoe odazbes"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='ycral')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='ycral')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "ycral", "Value": "vagoad syjwxtl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='njzzi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='njzzi')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "njzzi", "Value": "vlyainjq ttsdt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='fxzvm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='fxzvm')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "fxzvm", "Value": "oinjksgh oqaddf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='hxgsh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='hxgsh')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "hxgsh", "Value": "oywddcu xgylfho"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='lfnmd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='lfnmd')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "lfnmd", "Value": "ujhkc lnilcen"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='pveaw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='pveaw')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "pveaw", "Value": "qacymp xpogrhb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='aupyu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='aupyu')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "aupyu", "Value": "tbxrytp nyuzaieq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='xehbi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='xehbi')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "xehbi", "Value": "sdekuju sqkaqnf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='kceof')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='kceof')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "kceof", "Value": "ohywj lvecv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='htjzd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='htjzd')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "htjzd", "Value": "xyekof iyqbddn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tpudy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tpudy')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "tpudy", "Value": "lgaapl ehxug"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tvrbl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='tvrbl')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "tvrbl", "Value": "avdmz trxzrl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='gclye')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='gclye')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "gclye", "Value": "kbzce fbegy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='eltou')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='eltou')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "eltou", "Value": "yftowae sndrfx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='wppzt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='akuhwlj',RefKey='wppzt')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "akuhwlj", "RefKey": "wppzt", "Value": "ldzfuere qvcdrdzq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='vzfpk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='vzfpk')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "vzfpk", "Value": "cjgez zzrmaf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='vwwjn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='vwwjn')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "vwwjn", "Value": "otbftc krqsfkq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='miihd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='miihd')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "miihd", "Value": "hcpgoiv ickpag"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='ygjfi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='ygjfi')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "ygjfi", "Value": "biausv mfrqvf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='wbnri')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='wbnri')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "wbnri", "Value": "lkiliww lqpyvj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='viagk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='viagk')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "viagk", "Value": "yakutii uchmg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='xxnop')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='xxnop')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "xxnop", "Value": "cegikbx pvbhbm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='jqpuq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='jqpuq')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "jqpuq", "Value": "qpxls oeivgwl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='cbzec')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='cbzec')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "cbzec", "Value": "rcmqqcoy yruawz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='vxwhc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='vxwhc')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "vxwhc", "Value": "kbgjwmys aaloejbq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='evyss')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='evyss')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "evyss", "Value": "vdxpk fjtnbf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='hgurq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='hgurq')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "hgurq", "Value": "xobol dfvrx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='rpcbd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='rpcbd')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "rpcbd", "Value": "lzqglskn ygwdnlvq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='slbti')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='slbti')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "slbti", "Value": "eynvwliq qwisfu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='smfmp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='smfmp')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "smfmp", "Value": "cufpdai qsxrhaq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='jwkzs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='jwkzs')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "jwkzs", "Value": "lzqnt grkdi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='zpxak')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='zpxak')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "zpxak", "Value": "qwjud fpmrcz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='etptn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='lnofnil',RefKey='etptn')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "lnofnil", "RefKey": "etptn", "Value": "colvagm hzkanwct"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='ntqky')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='ntqky')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "ntqky", "Value": "fiebhso rmbwcftn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='jnito')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='jnito')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "jnito", "Value": "inhyp nqoli"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='xegeu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='xegeu')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "xegeu", "Value": "qnoyr kwoacwky"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='ygprx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='ygprx')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "ygprx", "Value": "zcncc hqjov"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='cwngy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='cwngy')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "cwngy", "Value": "suilob hymie"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='cymxs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='cymxs')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "cymxs", "Value": "uyush hpademt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='drhft')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='drhft')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "drhft", "Value": "kfjmozmh zfolv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='tiaus')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='olrpbqwncfwb',PropertyName='xqgevnogb',RefKey='tiaus')", "type": "olrpbqwncfwb.Enumeration"}, "EntityType": "olrpbqwncfwb", "PropertyName": "xqgevnogb", "RefKey": "tiaus", "Value": "uwiddnp qtutv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='oifzs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='oifzs')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "htboooctns", "RefKey": "oifzs", "Value": "wxeboym ukztapv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='uuddf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='uuddf')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "htboooctns", "RefKey": "uuddf", "Value": "mhrdxp nwsvlh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='jpoks')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='jpoks')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "htboooctns", "RefKey": "jpoks", "Value": "oscqwe cskrdr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='fwesr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='fwesr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "htboooctns", "RefKey": "fwesr", "Value": "juunub wtlzn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='pbmil')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='pbmil')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "htboooctns", "RefKey": "pbmil", "Value": "jkvasa bfwtns"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='zmkew')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='zmkew')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "htboooctns", "RefKey": "zmkew", "Value": "hobcezsl naqvtflm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='tyyte')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='htboooctns',RefKey='tyyte')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "htboooctns", "RefKey": "tyyte", "Value": "jzbfnvzq hyqmxyrn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='cmhcc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='cmhcc')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "cmhcc", "Value": "kwcjen vvqki"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='xprou')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='xprou')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "xprou", "Value": "yozjtk uibuf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='mjppx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='mjppx')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "mjppx", "Value": "aafduwcq jphlnb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='vbiph')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='vbiph')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "vbiph", "Value": "omdme gavyuxb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='dcgsc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='dcgsc')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "dcgsc", "Value": "nfcpc arqrr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='wufce')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='wufce')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "wufce", "Value": "sdypi yooeb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='fruxi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='fruxi')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "fruxi", "Value": "pkzng swcxwjlw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='tedqd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='tedqd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "tedqd", "Value": "jomrf amafi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='wsgfk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='wsgfk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "wsgfk", "Value": "vnrjq nythby"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='aoiyx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='aoiyx')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "aoiyx", "Value": "kikrgojo mrzpaxln"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='qplvz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='qplvz')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "qplvz", "Value": "vumyfpg zburqatg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='tbbdu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='tbbdu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "tbbdu", "Value": "behkor apzir"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='iuqzw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='iuqzw')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "iuqzw", "Value": "uujcn jmeysoz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='jsmmg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='dndjyublgo',RefKey='jsmmg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "dndjyublgo", "RefKey": "jsmmg", "Value": "cmlztp fpbopv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='rmvsf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='rmvsf')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "rmvsf", "Value": "zhbqvsc zwqoyh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='pgdyp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='pgdyp')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "pgdyp", "Value": "iccal hbjaruau"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='ooydm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='ooydm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "ooydm", "Value": "efjnnr ojcfgfr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='uexvd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='uexvd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "uexvd", "Value": "sqqdoz uqrfeym"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='trkrl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='trkrl')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "trkrl", "Value": "wekjeqk rcvbqiko"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='qdkfu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='qdkfu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "qdkfu", "Value": "adhly rfvwqj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='lqtzr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='lqtzr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "lqtzr", "Value": "mnycdi kblblf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='vtzpw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='vtzpw')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "vtzpw", "Value": "opjbcuxp lwncms"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='xrrro')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='xrrro')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "xrrro", "Value": "yvatj eyybru"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='lriwg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='lriwg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "lriwg", "Value": "tqvnj kulou"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='vlhvm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='vlhvm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "vlhvm", "Value": "flqztjoj nktgbob"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='xvdjb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='xvdjb')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "xvdjb", "Value": "uxusd zarrmdo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='aqglm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='aqglm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "aqglm", "Value": "lirkoga nfito"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='qggtd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='qggtd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "qggtd", "Value": "gqappvx zvftqq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='mkprs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaazclooeo',RefKey='mkprs')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaazclooeo", "RefKey": "mkprs", "Value": "medkkjzg pyehyhy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='uocbx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='uocbx')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "uocbx", "Value": "wbbpuw wvkwolqv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='wcrfn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='wcrfn')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "wcrfn", "Value": "ihdisks wvxsd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='qahzy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='qahzy')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "qahzy", "Value": "bxpezox iqgqitp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='nciil')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='nciil')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "nciil", "Value": "ohvapool kxfft"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='iryah')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='iryah')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "iryah", "Value": "xjddsrf jctgxk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='dgabi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='dgabi')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "dgabi", "Value": "pnqidt xniuh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='kgodu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='kgodu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "kgodu", "Value": "fsxvxa sqqni"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='rnvbg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='yobnuuobp',RefKey='rnvbg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "yobnuuobp", "RefKey": "rnvbg", "Value": "utglb wdayi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='oymdxwrhcga',RefKey='pmfra')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='oymdxwrhcga',RefKey='pmfra')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "oymdxwrhcga", "RefKey": "pmfra", "Value": "pgtleoz hzeobxba"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='oymdxwrhcga',RefKey='fhowu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='oymdxwrhcga',RefKey='fhowu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "oymdxwrhcga", "RefKey": "fhowu", "Value": "dspmpggf ezrne"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ccowr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ccowr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "ccowr", "Value": "coyyv qtqyohft"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='pnwmy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='pnwmy')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "pnwmy", "Value": "cejfei bbmswuq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='thgzm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='thgzm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "thgzm", "Value": "yscak oaovf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='zxoeg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='zxoeg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "zxoeg", "Value": "odcwfnig xgntjelo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='qfwnt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='qfwnt')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "qfwnt", "Value": "wbhzj lkjjb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='gxems')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='gxems')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "gxems", "Value": "mhyfw epqmoc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='prvmd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='prvmd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "prvmd", "Value": "hwajtn hjqpwcjh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='vkbwc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='vkbwc')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "vkbwc", "Value": "empsmevr oheyshn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='qtqbr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='qtqbr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "qtqbr", "Value": "uzkdadr mvmslfom"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ipuyi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ipuyi')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "ipuyi", "Value": "guqbepa gzjbcaxk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='jktiw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='jktiw')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "jktiw", "Value": "tqhjc lgpoawf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='fyxvl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='fyxvl')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "fyxvl", "Value": "dbkkr wkenp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='pkkrt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='pkkrt')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "pkkrt", "Value": "ienclq jwejyw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='bvzwx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='bvzwx')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "bvzwx", "Value": "fjzgqll xinbk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ekfif')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ekfif')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "ekfif", "Value": "bsnuiix qitdv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='clzii')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='clzii')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "clzii", "Value": "tjkhulgo ykngfy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ctghf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='ctghf')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "ctghf", "Value": "oebqkwe buykheo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='auuqe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='auuqe')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "auuqe", "Value": "nhjtzmda zyxcxly"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='kbrfw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='kbrfw')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "kbrfw", "Value": "xmxdxw ovfvxw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='fpxba')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='fpxba')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "fpxba", "Value": "hqeyv ejuawii"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='hgdfr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nhrmquxpsi',RefKey='hgdfr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nhrmquxpsi", "RefKey": "hgdfr", "Value": "emnssoey dhbwrpf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaibdrizqn',RefKey='galop')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaibdrizqn',RefKey='galop')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaibdrizqn", "RefKey": "galop", "Value": "ehrcgxr mfpeu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaibdrizqn',RefKey='fwxgr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaibdrizqn',RefKey='fwxgr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaibdrizqn", "RefKey": "fwxgr", "Value": "tfrkxnw nycoymdh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaibdrizqn',RefKey='jknpr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='gaibdrizqn',RefKey='jknpr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "gaibdrizqn", "RefKey": "jknpr", "Value": "ogqawr ruqkme"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='xagji')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='xagji')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "xagji", "Value": "yseye jtkuph"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='bdiah')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='bdiah')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "bdiah", "Value": "tilzd pnhtx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='etzzu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='etzzu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "etzzu", "Value": "ekixxe bawuog"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='wegms')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='wegms')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "wegms", "Value": "xfexvex eisppl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='aymck')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='aymck')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "aymck", "Value": "bcymvusq mtixpfa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='osmxz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='osmxz')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "osmxz", "Value": "nvims mlkcwbkd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='wtszq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='wtszq')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "wtszq", "Value": "iyitpt ljetnbf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='ijhlu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='ijhlu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "ijhlu", "Value": "lgfec qnslmrkw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='gvoec')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='ldyrelx',RefKey='gvoec')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "ldyrelx", "RefKey": "gvoec", "Value": "vvntox yydrzw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='jeqmeky',RefKey='koxnl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='jeqmeky',RefKey='koxnl')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "jeqmeky", "RefKey": "koxnl", "Value": "oirwqtco wncznyz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='jeqmeky',RefKey='tmgso')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='jeqmeky',RefKey='tmgso')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "jeqmeky", "RefKey": "tmgso", "Value": "ysipp sdxniky"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='amzxx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='amzxx')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "zgpjakkfrwwi", "RefKey": "amzxx", "Value": "wmiee haspr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='ilymt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='ilymt')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "zgpjakkfrwwi", "RefKey": "ilymt", "Value": "hjszxyk iglovc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='nkxxc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='nkxxc')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "zgpjakkfrwwi", "RefKey": "nkxxc", "Value": "xfrij dykmkjxu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='yqave')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='yqave')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "zgpjakkfrwwi", "RefKey": "yqave", "Value": "oahdlf sqmputa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='ptlpy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='ptlpy')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "zgpjakkfrwwi", "RefKey": "ptlpy", "Value": "zldfmfpc hcste"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='pueip')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='zgpjakkfrwwi',RefKey='pueip')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "zgpjakkfrwwi", "RefKey": "pueip", "Value": "aleorp sgmsblrf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='zfbtd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='zfbtd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "zfbtd", "Value": "jkvznqm cxdzli"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='ujjha')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='ujjha')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "ujjha", "Value": "rpktqzr kkahih"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='wqqix')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='wqqix')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "wqqix", "Value": "bwutgkzd veryvm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='vbagv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='vbagv')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "vbagv", "Value": "ozjhnrf jmgtt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='mmovd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='mmovd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "mmovd", "Value": "dcjduc ryzcim"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='krxfp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='krxfp')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "krxfp", "Value": "gtdmq pvtbgwbg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='qfgbb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='qfgbb')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "qfgbb", "Value": "cgelhj lnjvehm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='wkehh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='wkehh')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "wkehh", "Value": "dyprr zkerdylc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='tdouz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='tdouz')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "tdouz", "Value": "bjztyly hdxnjqa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='thuxy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='thuxy')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "thuxy", "Value": "usdqi fsmpyuy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='aphav')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='aphav')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "aphav", "Value": "fkixhven dofww"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='dseau')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='dseau')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "dseau", "Value": "wamod ynrjc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='zmusc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='zmusc')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "zmusc", "Value": "yqmqsml dbort"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='igqjx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='igqjx')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "igqjx", "Value": "bkxaamxr docvxuap"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='uudgg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='uudgg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "uudgg", "Value": "ihayw pkwdpvc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='yfjjn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='yfjjn')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "yfjjn", "Value": "sgglkfa celefxha"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='kbcjz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='kbcjz')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "kbcjz", "Value": "fctwvsp nrakfs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='zjkaq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='zjkaq')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "zjkaq", "Value": "mevcn lvmfwsry"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='eyqob')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='eyqob')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "eyqob", "Value": "pjuhblp bxlgxf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='tsghe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='tsghe')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "tsghe", "Value": "acbwo xmeci"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='pdata')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='pdata')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "pdata", "Value": "rvizfkg epkgp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='bftlf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='bftlf')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "bftlf", "Value": "dbgino xqnvjk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='rhogj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='rhogj')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "rhogj", "Value": "vdmugh kmwpt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='ojnhl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='ojnhl')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "ojnhl", "Value": "kclwgi tiuzc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='ilhwk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='sspnppgwxumbq',RefKey='ilhwk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "sspnppgwxumbq", "RefKey": "ilhwk", "Value": "aojdb wfgevr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='wjqhqlj',RefKey='teqbz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='wjqhqlj',RefKey='teqbz')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "wjqhqlj", "RefKey": "teqbz", "Value": "hdglyu zkcpwz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='mivcd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='mivcd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "mivcd", "Value": "dbopr wzjdycw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='aehca')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='aehca')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "aehca", "Value": "ihbrqt qctrbupf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='spxih')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='spxih')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "spxih", "Value": "oayuhei shgasr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jqvjd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jqvjd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "jqvjd", "Value": "byvrmmhs rgcil"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='zhgtp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='zhgtp')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "zhgtp", "Value": "uurbjcc fzjxbhdo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='zgrnq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='zgrnq')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "zgrnq", "Value": "gpbpnhwa smkyljk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='okcif')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='okcif')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "okcif", "Value": "ylqvkmd addckxcr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='geoak')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='geoak')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "geoak", "Value": "ankncn ujlyow"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xzdqb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xzdqb')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "xzdqb", "Value": "ylrvxkj vnruknvd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='wtwxd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='wtwxd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "wtwxd", "Value": "jstey djrfyos"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='wclbh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='wclbh')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "wclbh", "Value": "drnqkykr oqvxe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='ymqso')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='ymqso')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "ymqso", "Value": "yalnl uqvicq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xkhlq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xkhlq')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "xkhlq", "Value": "mlenc qfblq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='sreyk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='sreyk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "sreyk", "Value": "dbdcyie ffjife"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='bbcab')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='bbcab')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "bbcab", "Value": "nnwnb yvtvanuj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='rjqbk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='rjqbk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "rjqbk", "Value": "kulkmru cuqgyu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xeuky')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xeuky')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "xeuky", "Value": "ntyhp vsmcbfoo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='dtsvm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='dtsvm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "dtsvm", "Value": "mhgfb fqbcn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xjdgv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='xjdgv')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "xjdgv", "Value": "mvyngo fmcmqf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jwcgp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jwcgp')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "jwcgp", "Value": "pinziy fwxtidab"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='egttt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='egttt')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "egttt", "Value": "eovnq qwexw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jrwob')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jrwob')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "jrwob", "Value": "dzslhcin ftkiz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='vucpk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='vucpk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "vucpk", "Value": "stnioj ekeongt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='ugakr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='ugakr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "ugakr", "Value": "ovtznncr louyxti"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='oyrjo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='oyrjo')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "oyrjo", "Value": "acnrrd smazkhr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='kdypu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='kdypu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "kdypu", "Value": "kkhrzyl bjhmzfct"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='vsrqt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='vsrqt')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "vsrqt", "Value": "dgztnfd mjmjpd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jglck')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='jglck')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "jglck", "Value": "oeuabkgh cygjnbo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='wsfom')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='nsolxech',RefKey='wsfom')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "nsolxech", "RefKey": "wsfom", "Value": "gnaywx livujrvi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='gopes')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='gopes')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "gopes", "Value": "fdpzr jtkgykld"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='okgqk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='okgqk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "okgqk", "Value": "cdived oaaaf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='dpzlm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='dpzlm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "dpzlm", "Value": "tybiv qvopwsta"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='uimew')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='uimew')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "uimew", "Value": "uvlmrnxc iaszi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='qluhh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='qluhh')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "qluhh", "Value": "jvgtuwi wlgosb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tyjdr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tyjdr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "tyjdr", "Value": "vicpjn uezqc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='jodun')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='jodun')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "jodun", "Value": "qtmam xodgxugt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='kyjjq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='kyjjq')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "kyjjq", "Value": "arhsfd cerom"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='pnjbn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='pnjbn')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "pnjbn", "Value": "dysrkgbv fhcnvtg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='yimnt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='yimnt')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "yimnt", "Value": "xxeys vinfzs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='rpmrh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='rpmrh')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "rpmrh", "Value": "afyuuz nulbyd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='vnjdn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='vnjdn')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "vnjdn", "Value": "gsoomj nnltwzc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='yktol')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='yktol')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "yktol", "Value": "npgesfu ltzwqv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='keqmu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='keqmu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "keqmu", "Value": "oprfpwpi celueh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='ynqds')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='ynqds')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "ynqds", "Value": "usozz tikhbj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='fboxl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='fboxl')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "fboxl", "Value": "rihdclyr aahrkfo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='otpfu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='otpfu')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "otpfu", "Value": "srqltfr qpgqewh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tbdjy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tbdjy')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "tbdjy", "Value": "bkfwbdu fpajzr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='haajn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='haajn')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "haajn", "Value": "defujdra byzvn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tqmhg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tqmhg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "tqmhg", "Value": "vpqyem qqyxz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='ulwhq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='ulwhq')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "ulwhq", "Value": "aufryyo zqdyh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='wwrjm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='wwrjm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "wwrjm", "Value": "zenzpa vgrfy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tflgd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='tflgd')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "tflgd", "Value": "biolaso rhgoj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='ocybh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='ocybh')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "ocybh", "Value": "mtokd rouobti"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='bgvbs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='bgvbs')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "bgvbs", "Value": "hbfkqpvy ksmxw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='gwmcs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='gwmcs')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "gwmcs", "Value": "uybqd xiqsllvr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='qygjb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='qygjb')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "qygjb", "Value": "jedzcz rkubnmwf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='auxkg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='auxkg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "auxkg", "Value": "cozvd knoguw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='jozzs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='jozzs')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "jozzs", "Value": "zdwagim bbvdntk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='adzym')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='adzym')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "adzym", "Value": "vegsjifd brpyytq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='roaqf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='roaqf')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "roaqf", "Value": "seaom bjrtky"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='jizip')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='mjxhrbzcc',RefKey='jizip')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "mjxhrbzcc", "RefKey": "jizip", "Value": "tlypcjg opsbatkp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='orzjm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='orzjm')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "orzjm", "Value": "vnbyqavs yfzeltqt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='birly')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='birly')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "birly", "Value": "pzemuko nakavpi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='zfbuo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='zfbuo')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "zfbuo", "Value": "doirgelr ismxpqa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='jqlce')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='jqlce')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "jqlce", "Value": "dhudkilp xreqex"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='eywmk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='eywmk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "eywmk", "Value": "najfx iutvajmz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='kbcou')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='kbcou')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "kbcou", "Value": "wuatrso cmlit"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='hkhss')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='hkhss')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "hkhss", "Value": "hrtojpji uwpkafo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='rcjiv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='rcjiv')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "rcjiv", "Value": "pgzrcb xwsmecl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='nyvyn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='nyvyn')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "nyvyn", "Value": "xkjkoc ysxftazk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='ztdcg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='ztdcg')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "ztdcg", "Value": "xqkmtu xmzkg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='jtuyv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='jtuyv')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "jtuyv", "Value": "giuiudi fprdwyqb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='jnamr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='jnamr')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "jnamr", "Value": "zggwtqr rdpcodp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='qouiw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='fkywifeei',RefKey='qouiw')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "fkywifeei", "RefKey": "qouiw", "Value": "coyrwsr rrutp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='bbzra')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='bbzra')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "bbzra", "Value": "izczf rkqxxxdb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='azoqp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='azoqp')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "azoqp", "Value": "jdurq noqgkryt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='arppb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='arppb')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "arppb", "Value": "xsjawyy xscnnev"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='pligh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='pligh')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "pligh", "Value": "sgudue rohyv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='nklgs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='nklgs')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "nklgs", "Value": "eghlfg smbwzrc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='dwjog')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='dwjog')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "dwjog", "Value": "mddguw xkswb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='ygimf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='ygimf')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "ygimf", "Value": "kqbmcu jywsbaj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='vmxms')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='vmxms')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "vmxms", "Value": "txpgrsn qezdd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='olqdp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='olqdp')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "olqdp", "Value": "reohr psmwgf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='snvmz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='snvmz')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "snvmz", "Value": "ecgamudu cdecvnlz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='rpcab')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='rpcab')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "rpcab", "Value": "bppymdnq xjjxhqjq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='fgdux')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='fgdux')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "fgdux", "Value": "eagnugot yoayonet"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='kxubv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='kxubv')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "kxubv", "Value": "ysetl zshcyau"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='qkmhv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='qkmhv')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "qkmhv", "Value": "karjv apnrf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='bzrvs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='bzrvs')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "bzrvs", "Value": "wlbhgqb bsepnre"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='wanhc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='wanhc')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "wanhc", "Value": "etxqt eoohavu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='iborn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='iborn')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "iborn", "Value": "zxlum xujwon"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='vgbck')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='vgbck')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "vgbck", "Value": "ginnkpm jehrrkhn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='seoes')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='seoes')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "seoes", "Value": "ztyvejwg ywabqbmb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='dgcst')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='dgcst')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "dgcst", "Value": "twbstxr aehiplii"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='slncx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='slncx')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "slncx", "Value": "oiorqq jcidwq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='nmrjy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='nmrjy')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "nmrjy", "Value": "txrtrj axroph"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='cospk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='cospk')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "cospk", "Value": "iwuqzew fyfodkfy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='mqliv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='mqliv')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "mqliv", "Value": "suyelhx pecvachj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='hnull')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='hnull')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "hnull", "Value": "ijehnxka shlvd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='tbwie')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='bsbqtulr',PropertyName='aviqkjudevkhg',RefKey='tbwie')", "type": "bsbqtulr.Enumeration"}, "EntityType": "bsbqtulr", "PropertyName": "aviqkjudevkhg", "RefKey": "tbwie", "Value": "ztxqsnc hjseu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='hclaw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='hclaw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "hclaw", "Value": "nrjkb thfgvs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='vezxj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='vezxj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "vezxj", "Value": "yyrpzr qybyy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='psicp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='psicp')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "psicp", "Value": "okygndd erukfq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='etlda')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='etlda')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "etlda", "Value": "nhkgb pzeell"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='xkowq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='xkowq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "xkowq", "Value": "qtktk tuziayc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='biwxq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='biwxq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "biwxq", "Value": "zsustsp uwgkpk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='warhd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='warhd')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "warhd", "Value": "faghlvxq eyclokm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='omgqw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='omgqw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "omgqw", "Value": "rkxuz phyozpsy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='xeqjc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='xeqjc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "xeqjc", "Value": "bievt yilzrziw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='uehkv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='uehkv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "uehkv", "Value": "edtbjg sebrfw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='ggngf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='ggngf')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "ggngf", "Value": "urgeef tbnuvi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='tzqas')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='tzqas')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "tzqas", "Value": "voshsyr sulfd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='usfcs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='usfcs')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "usfcs", "Value": "hmkyu bsdlfu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='tyytg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='tyytg')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "tyytg", "Value": "ikwxs fxikukaw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='dktww')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='dktww')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "dktww", "Value": "bmjmuo fanhwel"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='zhwuu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='tykzvfon',RefKey='zhwuu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "tykzvfon", "RefKey": "zhwuu", "Value": "fkrqe vslxdivn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='iafsb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='iafsb')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "iafsb", "Value": "ntozfxb fkpsfztj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='nixhs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='nixhs')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "nixhs", "Value": "ghnnkphp kyexfvk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='ubykr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='ubykr')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "ubykr", "Value": "pmjdi onwbpy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='rgpgj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='rgpgj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "rgpgj", "Value": "cssgjjq jxudg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='yamys')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='yamys')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "yamys", "Value": "bpicknjh mytncshi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='jkyfx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='jkyfx')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "jkyfx", "Value": "ohjosqxs ugrtjv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='nmfup')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='nmfup')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "nmfup", "Value": "sxbsov zumlqjx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='tsccn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='tsccn')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "tsccn", "Value": "jsidxpay agsckocj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='ygnwa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='ygnwa')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "ygnwa", "Value": "isjpklgc tczaj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='sczad')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='sczad')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "sczad", "Value": "lxbhhzjh lraqjvf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='tjoxv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='tjoxv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "tjoxv", "Value": "vzbtdxac qglvsib"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='bvfsc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='kvoysvbsnx',RefKey='bvfsc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "kvoysvbsnx", "RefKey": "bvfsc", "Value": "cjofobvp jkmnm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='cazrf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='cazrf')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "cazrf", "Value": "udvgm erbhjbs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='nwrky')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='nwrky')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "nwrky", "Value": "xbrwwo bvchdtch"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='smqpg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='smqpg')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "smqpg", "Value": "pbtss wcuik"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='txjob')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='txjob')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "txjob", "Value": "nngsnjs gxggcy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='miooo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='miooo')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "miooo", "Value": "zjpokxdn nurmm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='hdadj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='hdadj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "hdadj", "Value": "iskzukq itduwawy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='txeah')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='txeah')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "txeah", "Value": "fhjndyjb nrwhxpla"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='bblzk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='wjlcomkthylv',RefKey='bblzk')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "wjlcomkthylv", "RefKey": "bblzk", "Value": "umbokog htbqwm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='gkqzz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='gkqzz')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "coypbgqa", "RefKey": "gkqzz", "Value": "kqzdvok ennbszmh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='uwizl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='uwizl')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "coypbgqa", "RefKey": "uwizl", "Value": "vhmznh kbdowxo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='bjaxm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='bjaxm')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "coypbgqa", "RefKey": "bjaxm", "Value": "nronpv qtzbbw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='nrnjh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='coypbgqa',RefKey='nrnjh')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "coypbgqa", "RefKey": "nrnjh", "Value": "zkewoly mpkaepy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='jefhi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='jefhi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "jefhi", "Value": "xkicnxm dwawj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='cpaoq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='cpaoq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "cpaoq", "Value": "oogtp crugyw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='gdnze')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='gdnze')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "gdnze", "Value": "fiecb mgqpto"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='csudy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='csudy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "csudy", "Value": "swbcdwh mybdu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='imdft')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='imdft')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "imdft", "Value": "hxbesl ohfhxml"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='znmwe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='znmwe')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "znmwe", "Value": "doxgk ynuykhob"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='aogxu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='aogxu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "aogxu", "Value": "psbhqnv alzivok"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='xmgmy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='xmgmy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "xmgmy", "Value": "cqguem htpcx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mkmic')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mkmic')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "mkmic", "Value": "yfuyym xwvyyiou"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='vipcf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='vipcf')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "vipcf", "Value": "gdhvwsv vxjyq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='xypun')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='xypun')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "xypun", "Value": "uipqayh mxcrw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='xsuby')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='xsuby')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "xsuby", "Value": "wxcwxvif gsackxno"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mpfwi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mpfwi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "mpfwi", "Value": "feungd qotvmvsp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='kwhll')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='kwhll')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "kwhll", "Value": "govfse mudlh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='dowoo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='dowoo')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "dowoo", "Value": "ebrthv ijatnbkn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='nkkar')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='nkkar')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "nkkar", "Value": "nazllmg cftqrqfw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mxbgy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mxbgy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "mxbgy", "Value": "wohve mbagck"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='bcuco')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='bcuco')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "bcuco", "Value": "utkfl tmfrdg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='jvaet')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='jvaet')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "jvaet", "Value": "atgpu iwbnvqg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='pekod')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='pekod')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "pekod", "Value": "mhyoa swtqjb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='isrcy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='isrcy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "isrcy", "Value": "xdddbjbl sablesov"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mwumk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='mwumk')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "mwumk", "Value": "cfvqotc ywcnecfd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='flxgu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='flxgu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "flxgu", "Value": "nangvm nfvlavyq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='gparq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='gparq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "gparq", "Value": "qwmhm qcsvl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='rytjn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='rytjn')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "rytjn", "Value": "ghsxdhba iwgbbbb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='tlddt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='tlddt')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "tlddt", "Value": "mdqyesso vwtbdzp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='duhtr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='duhtr')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "duhtr", "Value": "zvulp gwtrscv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='syxhm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='syxhm')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "syxhm", "Value": "deqtst lntsznzb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='woepe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='woepe')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "woepe", "Value": "dvizlug xsltp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='vwrkb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='vwrkb')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "vwrkb", "Value": "wgekq wnyse"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='lanxl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ejrcncq',RefKey='lanxl')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ejrcncq", "RefKey": "lanxl", "Value": "yglrignl zwkgyhe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='ulldo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='ulldo')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "ulldo", "Value": "avmmgbon lqgud"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='qntgt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='qntgt')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "qntgt", "Value": "xrqge ykewy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='qahlk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='qahlk')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "qahlk", "Value": "acbnnt oioofx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='seiku')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='seiku')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "seiku", "Value": "aiymrc syvxhxo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='hpvbl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='hpvbl')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "hpvbl", "Value": "xnmjf yprwxd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='ndfpb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='ndfpb')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "ndfpb", "Value": "mzjqfqbc rijtg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='dxphw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='dxphw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "dxphw", "Value": "sczjnua yevkto"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='crdyz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='crdyz')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "crdyz", "Value": "vlhcgcw nbnmsrox"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='ufekj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='ufekj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "ufekj", "Value": "akawr xgvlwk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='rgyqi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='vlmehmprb',RefKey='rgyqi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "vlmehmprb", "RefKey": "rgyqi", "Value": "nnblim dzmeacjg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='fjfhx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='fjfhx')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "fjfhx", "Value": "mtixcf msjud"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='rnrtv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='rnrtv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "rnrtv", "Value": "euxxi ucymp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='shrad')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='shrad')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "shrad", "Value": "sgppl ttucsqb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='vkzup')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='vkzup')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "vkzup", "Value": "yherxd tqzxvixp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='tydpd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='tydpd')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "tydpd", "Value": "wzenw zdgrax"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='noebh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='noebh')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "noebh", "Value": "xhylny hkvpboat"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='rhkvt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='rhkvt')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "rhkvt", "Value": "qeykirvv qdfnj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='qxmvx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='qxmvx')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "qxmvx", "Value": "wyjph ocrbq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='ogkcd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fllfmpbf',RefKey='ogkcd')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fllfmpbf", "RefKey": "ogkcd", "Value": "rnvlnyd cunvko"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='sssoi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='sssoi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "sssoi", "Value": "wfqsezwd nuwczlw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='rshol')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='rshol')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "rshol", "Value": "ybwvy kpbfcn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='weayu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='weayu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "weayu", "Value": "vqnjhz pyznnbde"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='jrpkw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='jrpkw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "jrpkw", "Value": "ixnzqqxn nshzkwb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='siket')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='siket')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "siket", "Value": "mcywytm hvvjkrf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='yneha')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='yneha')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "yneha", "Value": "lzweakfg wrzompzv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='gfjol')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='gfjol')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "gfjol", "Value": "ehrho teqkcc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='ksogw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='ksogw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "ksogw", "Value": "xiiif saahduga"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='hvmuh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='hvmuh')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "hvmuh", "Value": "bqdffsm aadnl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='lhjsq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='lhjsq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "lhjsq", "Value": "lksmvfa osujz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='gndyu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='gndyu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "gndyu", "Value": "rwpfk tuvxcq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='kgylg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='kgylg')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "kgylg", "Value": "tqfld crnmqeai"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='hoqzo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='fodygjjjztjeu',RefKey='hoqzo')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "fodygjjjztjeu", "RefKey": "hoqzo", "Value": "jjceq jiioqkbu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ljqthnvqa',RefKey='kovau')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ljqthnvqa',RefKey='kovau')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ljqthnvqa", "RefKey": "kovau", "Value": "mdrcbwy joypu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ljqthnvqa',RefKey='uilhp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ljqthnvqa',RefKey='uilhp')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ljqthnvqa", "RefKey": "uilhp", "Value": "xcszpbm oqjmqrl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='egbdh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='egbdh')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "egbdh", "Value": "zfmyzzw uqwehu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='uxczs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='uxczs')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "uxczs", "Value": "xriskjn vybbu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='qhana')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='qhana')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "qhana", "Value": "xfqpvv pufzz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='yicaa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='yicaa')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "yicaa", "Value": "gbzfy niyxg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='ycuia')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='ycuia')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "ycuia", "Value": "bhvwrtvy smijgmgp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='tslyv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='tslyv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "tslyv", "Value": "jxmawajx bqwkanbg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='zcccn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='zcccn')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "zcccn", "Value": "clbxxi ucnmxn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='pwubf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='pwubf')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "pwubf", "Value": "asypyxk ztlcuqqv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='lmrop')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='lmrop')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "lmrop", "Value": "ettxh fvadu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='xkbyw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='xkbyw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "xkbyw", "Value": "bpokod anjiwk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='wamfm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='wamfm')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "wamfm", "Value": "gkeccn muxjfm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='pgqhb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='pgqhb')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "pgqhb", "Value": "ktrsv xsdjucma"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='czohp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='czohp')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "czohp", "Value": "ikixxgr hrpjigwi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='ervht')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='ervht')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "ervht", "Value": "ijupbc klfad"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='znydo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='znydo')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "znydo", "Value": "jpizt qmzur"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='nhqak')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='nhqak')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "nhqak", "Value": "lbtsddw hkfhs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='tggwc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='ihwjfofunmq',RefKey='tggwc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "ihwjfofunmq", "RefKey": "tggwc", "Value": "rivblh zeujlcrj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='yhslv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='yhslv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "yhslv", "Value": "lqfgvic okfasvd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='kbnwi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='kbnwi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "kbnwi", "Value": "rsfgqno qoutkekd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='zrnwf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='zrnwf')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "zrnwf", "Value": "zekuxz idisqz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='enmmy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='enmmy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "enmmy", "Value": "gtgksay vhylc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='shbjr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='shbjr')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "shbjr", "Value": "fdqgh xblnslyy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='peqjk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='peqjk')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "peqjk", "Value": "fvvnj azmsmtz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='nzfld')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='nzfld')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "nzfld", "Value": "qgndkqd cjcjsns"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='ambap')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='ambap')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "ambap", "Value": "dratgfjm qpgkvq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='oqohq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='oqohq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "oqohq", "Value": "lrbwuf nawudgl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='qhdrh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='qhdrh')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "qhdrh", "Value": "gjwbec qpwfmloc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='ukduh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='ukduh')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "ukduh", "Value": "meltswem qmcgovei"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='bkbft')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='bkbft')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "bkbft", "Value": "elkpf wumylh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='dtirn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='dtirn')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "dtirn", "Value": "yzmbn ouspxwm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='oejwl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='oejwl')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "oejwl", "Value": "ewtinszk aprts"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='eldla')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='eldla')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "eldla", "Value": "scxytxvn yvhztu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='dlsfu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='dlsfu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "dlsfu", "Value": "yisqvean iktgin"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='pnsic')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='pnsic')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "pnsic", "Value": "odzsb uzepu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='rvvrv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='rvvrv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "rvvrv", "Value": "obgxsb ogdtsdb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='scymv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='scymv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "scymv", "Value": "yyyfmn ylqmfth"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='ebmqz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='ebmqz')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "ebmqz", "Value": "ujhbm ffnjxz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='sazxk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='sazxk')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "sazxk", "Value": "jyzlugr kkagfds"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='pzrzi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='pzrzi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "pzrzi", "Value": "ctcndqgp xohfq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='fgdqr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='fgdqr')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "fgdqr", "Value": "rjxeh jknrukm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='jjqfu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='jjqfu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "jjqfu", "Value": "dqkemug ylnla"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='mqhtm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='mqhtm')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "mqhtm", "Value": "pnrfoyfk koqhihbc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='vtizr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='vtizr')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "vtizr", "Value": "qngplxgn qdeqc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='sqruj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='sqruj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "sqruj", "Value": "rvrkvsyj otmxkxkx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='wfumf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='wfumf')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "wfumf", "Value": "pytrvo lpbic"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='rpvdq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='rpvdq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "rpvdq", "Value": "klnupcqu ypzjje"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='sgcgs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='sgcgs')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "sgcgs", "Value": "cutqnndl tblcvabf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='cugch')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='cugch')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "cugch", "Value": "nnotuyz bfgyip"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='oevgt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='oevgt')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "oevgt", "Value": "hqdjz xlgceh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='wwtfn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='cxwispcf',RefKey='wwtfn')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "cxwispcf", "RefKey": "wwtfn", "Value": "haqcfpsq rpuscq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='xdakf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='xdakf')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "xdakf", "Value": "cujvq ywvhtc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='wwfhz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='wwfhz')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "wwfhz", "Value": "scgmtinp qrkkfwnb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='syuzj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='syuzj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "syuzj", "Value": "aubhul piksuz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='lzaqg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='lzaqg')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "lzaqg", "Value": "hglvifle kqthznms"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='urtjj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='urtjj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "urtjj", "Value": "bqaob xogvuvb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='nbjkr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='nbjkr')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "nbjkr", "Value": "hyxtrrx xmpjcl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='spshs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='spshs')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "spshs", "Value": "cramat safomp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='xelkg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='xzkizfqafv',RefKey='xelkg')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "xzkizfqafv", "RefKey": "xelkg", "Value": "nknzed uyabg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='mtufu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='mtufu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "mtufu", "Value": "jeojjdq gishalr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='udofc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='udofc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "udofc", "Value": "coxbt llubzfp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='acsuv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='acsuv')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "acsuv", "Value": "cvpaamok tbulnlj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='uvtwn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='uvtwn')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "uvtwn", "Value": "pzerch gylglitm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='aszke')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='aszke')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "aszke", "Value": "fmmmey jnpob"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='swlku')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='swlku')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "swlku", "Value": "wqhowmne jsfkg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='oslns')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='oslns')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "oslns", "Value": "roprek rvboyfe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='ubcia')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='ubcia')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "ubcia", "Value": "jhomexv skrzh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='thrdw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='thrdw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "thrdw", "Value": "bkrntir ijokme"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='tntox')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='tntox')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "tntox", "Value": "xfsduh lbwgpmx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='gmysi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='gmysi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "gmysi", "Value": "jliiodbl acctipk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='khtqw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='khtqw')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "khtqw", "Value": "wucgtg anzvfzqe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='odalp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='odalp')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "odalp", "Value": "qqvvw nfrpmlu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='pywqy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='pywqy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "pywqy", "Value": "eqqlpwrs iyswe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='crbht')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='crbht')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "crbht", "Value": "gvglcd ckvlcrdt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='ekwuq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='ekwuq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "ekwuq", "Value": "zglgmrwj ylwjcizp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='wfccx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='wfccx')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "wfccx", "Value": "higylsp ffkrhqz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='xltjy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='xltjy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "xltjy", "Value": "mwcev gihisk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='brzdk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='brzdk')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "brzdk", "Value": "yjonz hkawxary"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='gdnvg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='gdnvg')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "gdnvg", "Value": "swktx ozxer"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='jkzka')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='jkzka')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "jkzka", "Value": "atnyp cljgpzbf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='xohrp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='xohrp')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "xohrp", "Value": "ccvjhde chscrviz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='nczwo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='nczwo')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "nczwo", "Value": "lminrkwm qnaoxo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='adwkj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='adwkj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "adwkj", "Value": "dcipem lgvucm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='ndpqj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='lnhyeup',RefKey='ndpqj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "lnhyeup", "RefKey": "ndpqj", "Value": "lljyypm thfvj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='itcra')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='itcra')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "itcra", "Value": "bneefrk rhwilfi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='nqypi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='nqypi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "nqypi", "Value": "ppjgir fhmvh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='qjwne')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='qjwne')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "qjwne", "Value": "onzscm ylexc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='rqsal')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='rqsal')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "rqsal", "Value": "eiekkn wzisk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='mprmc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='mprmc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "mprmc", "Value": "knczda cyirge"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='sgwtj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='sgwtj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "sgwtj", "Value": "onjjud dlppc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='ujzrd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='ujzrd')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "ujzrd", "Value": "otfzh affypa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='pmfed')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='pmfed')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "pmfed", "Value": "ejaseadc msmzufr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='xaauq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='uzckokcit',RefKey='xaauq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "uzckokcit", "RefKey": "xaauq", "Value": "rylfeglf mrjkws"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='xnypq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='xnypq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "xnypq", "Value": "jthwm rddnlhv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='advkc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='advkc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "advkc", "Value": "bwnpl mapoklf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='enywa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='enywa')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "enywa", "Value": "mlwsy gcebcm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='yzqgr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='yzqgr')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "yzqgr", "Value": "fmuojz ayzmzsod"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='kqigi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='kqigi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "kqigi", "Value": "ygmmwy glhpipxj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='qjhkn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='qjhkn')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "qjhkn", "Value": "kcymvj ixlvwr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='ghiic')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='ghiic')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "ghiic", "Value": "kymsm hlizt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='cozju')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='cozju')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "cozju", "Value": "dnbkeuh nrvyxsz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='hsjfj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='hsjfj')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "hsjfj", "Value": "itlvl svfid"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='suxym')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='suxym')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "suxym", "Value": "fdsuivl aexhqm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='tonsz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='tonsz')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "tonsz", "Value": "csvknik kykpy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='snjwp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='snjwp')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "snjwp", "Value": "bsojyu yfshwvy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='czqqa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='czqqa')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "czqqa", "Value": "esrkjr lmgmmc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='rybeu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='rybeu')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "rybeu", "Value": "arnduz hgrzqq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='vwfob')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='vwfob')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "vwfob", "Value": "brojvu acvvzhon"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='owfir')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='owfir')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "owfir", "Value": "nxnjgagy imqbili"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='areoy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='areoy')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "areoy", "Value": "zuprdscm uabygxd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='dtqzq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='dtqzq')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "dtqzq", "Value": "bexeimi dvlulixu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='avosc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='avosc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "avosc", "Value": "ykogpwq vtlsk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='nvrhb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='nvrhb')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "nvrhb", "Value": "opygzhm lbxlrpln"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='efdlc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='efdlc')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "efdlc", "Value": "stwpsw evqvhx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='bbvhx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='bbvhx')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "bbvhx", "Value": "hrcqxck ebgavzt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='gtwzi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='alddiht',PropertyName='dlxnlalmr',RefKey='gtwzi')", "type": "alddiht.Enumeration"}, "EntityType": "alddiht", "PropertyName": "dlxnlalmr", "RefKey": "gtwzi", "Value": "cjihay fzouyeey"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='dsvtk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='dsvtk')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "dsvtk", "Value": "cegci adicebn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='zqntt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='zqntt')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "zqntt", "Value": "qipxve nfbrk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='jndyi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='jndyi')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "jndyi", "Value": "rkdzprtn ryyqckq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ierau')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ierau')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "ierau", "Value": "fbqzlb zwtmln"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='lxmxq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='lxmxq')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "lxmxq", "Value": "uldhsu bafyl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ialvd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ialvd')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "ialvd", "Value": "kzvakyhw uijdlmt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='rysta')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='rysta')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "rysta", "Value": "soujy gyhmq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='vjmhr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='vjmhr')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "vjmhr", "Value": "kswsy xpkqs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='taldm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='taldm')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "taldm", "Value": "vufiii pgveeydk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kxsxq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kxsxq')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "kxsxq", "Value": "bhpwujnb xrcah"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='eigsa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='eigsa')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "eigsa", "Value": "wciiiwm htttdfm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ldejk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ldejk')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "ldejk", "Value": "lygdft zlrve"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='bihdq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='bihdq')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "bihdq", "Value": "ssxiz ewtzhh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='bowjr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='bowjr')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "bowjr", "Value": "kcqdo bkhlal"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='rnigd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='rnigd')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "rnigd", "Value": "otlgcbgq mfknfc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='mjpgz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='mjpgz')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "mjpgz", "Value": "ubljomsr uzprr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ydivb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ydivb')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "ydivb", "Value": "mvamr tbbgr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='qsrxx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='qsrxx')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "qsrxx", "Value": "xcoef lvvpmcj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='yftyl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='yftyl')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "yftyl", "Value": "fdkgs sgbcrrxy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='fjtst')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='fjtst')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "fjtst", "Value": "mjcehd mfkxk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='gurib')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='gurib')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "gurib", "Value": "iukwyhn ezhobn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='duvvj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='duvvj')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "duvvj", "Value": "xjupghx gywsxn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='qlyqi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='qlyqi')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "qlyqi", "Value": "vhjilpn skrflk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kaokv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kaokv')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "kaokv", "Value": "bmnufp dijtdo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='svizl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='svizl')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "svizl", "Value": "vtuwdxle yjrgtvu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ogfzh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='ogfzh')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "ogfzh", "Value": "sywxjv njtvmzi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='mgvlp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='mgvlp')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "mgvlp", "Value": "mmsfi hhzyjlk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='frkub')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='frkub')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "frkub", "Value": "qddjs jevrgpl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kkmyk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kkmyk')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "kkmyk", "Value": "techwufm yuiznult"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='xdkoi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='xdkoi')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "xdkoi", "Value": "ofnypn yifho"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kcmuh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='preqoichyodb',RefKey='kcmuh')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "preqoichyodb", "RefKey": "kcmuh", "Value": "ouszcyrj jfeqtyv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='jqcab')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='jqcab')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "jqcab", "Value": "kayypkjd qtaixvy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='igmba')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='igmba')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "igmba", "Value": "qsgeny ilpfvbd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='uestc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='uestc')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "uestc", "Value": "xnbaod sbdzl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='kefvk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='kefvk')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "kefvk", "Value": "tywqe fhatbjt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='uajue')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='uajue')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "uajue", "Value": "gtgoasj deumpt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='scdqx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='scdqx')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "scdqx", "Value": "spdra hlmhjatk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='igitr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='igitr')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "igitr", "Value": "iexliyw lcixqo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='uebvo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='uebvo')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "uebvo", "Value": "wsiqk rnhphs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='fvrof')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='fvrof')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "fvrof", "Value": "xlirlbya zpstidu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='mudhl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='mudhl')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "mudhl", "Value": "fthggzxu tbwtxkhf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='hmwdc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='hmwdc')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "hmwdc", "Value": "shojhkck hkswwi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='ixzkt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='ixzkt')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "ixzkt", "Value": "tzevll vbrodjdr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='tfnvy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='tfnvy')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "tfnvy", "Value": "ozrvqz xvffib"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='jtzdl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='jtzdl')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "jtzdl", "Value": "adatihfy yanurgg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='xhglg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='xhglg')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "xhglg", "Value": "lbplttce fintbpo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='awkpw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='awkpw')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "awkpw", "Value": "fuiyo zifakrp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='hdryo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='hdryo')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "hdryo", "Value": "qvxknpj vrmgy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='xfcqc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='xfcqc')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "xfcqc", "Value": "nmstl wzvahgpw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='agmrf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='agmrf')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "agmrf", "Value": "afmdohcd bszxntra"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='btsec')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='btsec')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "btsec", "Value": "zlxjshjm sjrbafzy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='blzqb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='blzqb')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "blzqb", "Value": "nuoxqrlv ywynuif"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='quaom')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='quaom')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "quaom", "Value": "esyhc ahquds"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='udslg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='udslg')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "udslg", "Value": "pcgjj dkklupum"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='cyxcc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='cyxcc')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "cyxcc", "Value": "ehjpzjj paywna"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='qclbc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='qclbc')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "qclbc", "Value": "tngrunbl hnwjbhp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='svjla')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='svjla')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "svjla", "Value": "kufcrf azhmhotz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='ksgmv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='ksgmv')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "ksgmv", "Value": "saexvytr vbnyjm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='dvzzb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='dvzzb')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "dvzzb", "Value": "kuxnnvy ejeldrj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='iqtpg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='iqtpg')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "iqtpg", "Value": "pptwwng mcjmwwfm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='ylamp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='ylamp')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "ylamp", "Value": "brfruyjr ktupc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='dxlwr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='dxlwr')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "dxlwr", "Value": "qnvuwicz ekolaq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='quoty')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='pusipylz',PropertyName='boylfwgjl',RefKey='quoty')", "type": "pusipylz.Enumeration"}, "EntityType": "pusipylz", "PropertyName": "boylfwgjl", "RefKey": "quoty", "Value": "mlgjdwkv jzgbyno"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='artwr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='artwr')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "artwr", "Value": "bndcnwy dyvugb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='tmzov')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='tmzov')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "tmzov", "Value": "jfmcqm keyyx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='qmong')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='qmong')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "qmong", "Value": "yqizpcn dqdaqti"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='jhayo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='jhayo')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "jhayo", "Value": "ogutox yyymb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='xszmb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='xszmb')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "xszmb", "Value": "fvytrah uuimba"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='emqys')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='emqys')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "emqys", "Value": "zwxengx wayljwd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='rabwg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='rabwg')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "rabwg", "Value": "vcjgss ydzcbwl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='rkiyg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='rkiyg')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "rkiyg", "Value": "lrietpty thmbyk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='tgiqy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='tgiqy')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "tgiqy", "Value": "nficrmt syysjv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='twudi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='twudi')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "twudi", "Value": "kvekzxzy mpmbq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='wzkxc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='wzkxc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "wzkxc", "Value": "lzyhp xetvbzlp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='bfuxs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='bfuxs')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "bfuxs", "Value": "zrjash zmgxo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='uejfj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='uejfj')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "uejfj", "Value": "sgkkzy otwmf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='sivpa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='sivpa')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "sivpa", "Value": "izwtyy poqcm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='zdwel')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='zdwel')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "zdwel", "Value": "imnlihgd fgbba"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='gxvyg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='gxvyg')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "gxvyg", "Value": "oymyltr awjrm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='dzxds')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='dzxds')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "dzxds", "Value": "ktgau sjhbj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='xwnyo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='xwnyo')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "xwnyo", "Value": "hdlhvvwe ewoyig"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='bvsel')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='bvsel')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "bvsel", "Value": "lnxeph qyhvfoxh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='vmmpd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='nvtvoxdjyu',RefKey='vmmpd')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "nvtvoxdjyu", "RefKey": "vmmpd", "Value": "jvtvbfix kcgvew"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='xfbdk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='xfbdk')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fkpavhczwswb", "RefKey": "xfbdk", "Value": "evtitza buwbj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='gttkc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='gttkc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fkpavhczwswb", "RefKey": "gttkc", "Value": "chwdkb feraglv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='tmysy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='tmysy')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fkpavhczwswb", "RefKey": "tmysy", "Value": "dkaywj hwjyb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='lifso')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fkpavhczwswb',RefKey='lifso')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fkpavhczwswb", "RefKey": "lifso", "Value": "avmptoad itmxvb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='vvggk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='vvggk')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "vvggk", "Value": "vriql xxidwq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='yrumx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='yrumx')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "yrumx", "Value": "bodybmxg xwuyv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='tmjlp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='tmjlp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "tmjlp", "Value": "godxsob uqwuhhar"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='iecph')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='iecph')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "iecph", "Value": "efbxu wjfqxvr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='tojys')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='tojys')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "tojys", "Value": "ictsrkm xfynw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='qwtym')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='qwtym')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "qwtym", "Value": "hfdmdt gxtyp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ixhed')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ixhed')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "ixhed", "Value": "gdfspw bgiro"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='azpsp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='azpsp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "azpsp", "Value": "qnroexmz doqqgkat"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='zxbly')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='zxbly')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "zxbly", "Value": "iiqfg dzsvugkq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='hdlwm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='hdlwm')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "hdlwm", "Value": "csxrodg fqwxyv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='gujxp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='gujxp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "gujxp", "Value": "xsbbo yfxpzftw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ebipw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ebipw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "ebipw", "Value": "bqypj uxahioph"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='mevqf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='mevqf')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "mevqf", "Value": "jxvap yrqtaxa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='agzob')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='agzob')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "agzob", "Value": "rlttjok ejkrudts"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ahxqy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ahxqy')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "ahxqy", "Value": "oizjqvu iafvvax"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='avjdj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='avjdj')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "avjdj", "Value": "dwsdapjc neelymmd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='iehhh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='iehhh')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "iehhh", "Value": "zzxas yhccpfl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='lxvlq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='lxvlq')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "lxvlq", "Value": "smthuwb wzlmzw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='xoaki')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='xoaki')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "xoaki", "Value": "txpwuvz zpvgbhm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='fqwdo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='fqwdo')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "fqwdo", "Value": "iqdbuf nsnfjpi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='weitq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='weitq')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "weitq", "Value": "wkgzfa isdlvvm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ucdfe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ucdfe')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "ucdfe", "Value": "ffgig wwstwd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='xrsur')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='xrsur')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "xrsur", "Value": "rrqba pusudvp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='unjvv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='unjvv')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "unjvv", "Value": "uxxkuehr hobzmgp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ihgdb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='ihgdb')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "ihgdb", "Value": "aaeffmv eiszv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='oyjfz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='oyjfz')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "oyjfz", "Value": "wfinfbe cjrwxkez"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='bnrne')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='bnrne')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "bnrne", "Value": "pimuko rkphp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='crqyh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='crqyh')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "crqyh", "Value": "treje ffsijpaj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='kewxm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='kewxm')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "kewxm", "Value": "tymjnaya txlfa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='vjmaw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='vjmaw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "vjmaw", "Value": "snzvs uvkynwd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='kdnho')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='vdifivyoak',RefKey='kdnho')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "vdifivyoak", "RefKey": "kdnho", "Value": "waavj qiustti"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='cuyer')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='cuyer')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "hnqjpvsiowbqr", "RefKey": "cuyer", "Value": "nxbssub dmhlez"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='joswe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='joswe')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "hnqjpvsiowbqr", "RefKey": "joswe", "Value": "cqllo yvwpur"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='albbc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='albbc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "hnqjpvsiowbqr", "RefKey": "albbc", "Value": "innpjls nytvvkt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='stphn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='hnqjpvsiowbqr',RefKey='stphn')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "hnqjpvsiowbqr", "RefKey": "stphn", "Value": "opkjyrf ynnhdclz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='dfoqa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='dfoqa')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "dfoqa", "Value": "mrhom sjuph"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='wwgcd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='wwgcd')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "wwgcd", "Value": "vkcwy rpbryg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='difay')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='difay')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "difay", "Value": "gcbzrw dbfxai"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='axmwe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='axmwe')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "axmwe", "Value": "dagrut kgqxx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='dgfcg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='dgfcg')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "dgfcg", "Value": "qgumohah lyymmyei"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='qctxc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='qctxc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "qctxc", "Value": "hwiwnrg nclibzu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='pzqbr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='pzqbr')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "pzqbr", "Value": "usisq tyyowir"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='uapvv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='uapvv')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "uapvv", "Value": "mgxor jnpfuwjl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='qlzyv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='qlzyv')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "qlzyv", "Value": "ixjgd fknbahnu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='mnhtq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='mnhtq')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "mnhtq", "Value": "wlvvxad lcefef"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='ykwin')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='ykwin')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "ykwin", "Value": "mcsnohp rrbwxjup"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='wzmda')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='wzmda')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "wzmda", "Value": "cgtonu hldmgh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='cbvbt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='cbvbt')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "cbvbt", "Value": "tokies zsrkfac"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='xzsqe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='xzsqe')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "xzsqe", "Value": "rwlxoxe sxywkavx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='dqunk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='dqunk')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "dqunk", "Value": "eeqqbjsh iojhl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='olhyp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='olhyp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "olhyp", "Value": "qyzenhqo gfmvv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='hqeau')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='hqeau')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "hqeau", "Value": "kjmjsotm sryeq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='ortjl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='ortjl')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "ortjl", "Value": "pfyoc juinpb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='ahxcx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='fbkmjsuovfn',RefKey='ahxcx')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "fbkmjsuovfn", "RefKey": "ahxcx", "Value": "cpguuwx uactjfkl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='wepno')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='wepno')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "wepno", "Value": "enpowl bissdq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='yjuwa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='yjuwa')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "yjuwa", "Value": "ntzhxw mxmatr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='lirgi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='lirgi')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "lirgi", "Value": "ydmbv qixrab"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='zdmlc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='zdmlc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "zdmlc", "Value": "twkavf esobqjn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='bxqck')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='bxqck')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "bxqck", "Value": "tbwgkzx nujgzp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='mkwmc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='mkwmc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "mkwmc", "Value": "nalvq cajac"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='odgxw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='odgxw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "odgxw", "Value": "ivzngamh gfgzfrb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='wtdek')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='wtdek')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "wtdek", "Value": "rjricddt rcbfev"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='ayaiz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='ayaiz')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "ayaiz", "Value": "keasb vpsyrbez"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='jljve')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='jljve')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "jljve", "Value": "orpjgav syxkcxq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='jhvvw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='lrwehwbzng',RefKey='jhvvw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "lrwehwbzng", "RefKey": "jhvvw", "Value": "loxclcz znzyygh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='eldea')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='eldea')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "eldea", "Value": "gugkgeji idsxm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='mtqya')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='mtqya')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "mtqya", "Value": "ujnojdci qjhmuqd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='pcpxu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='pcpxu')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "pcpxu", "Value": "ibugqfgs gmrrl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='kakqv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='kakqv')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "kakqv", "Value": "vnnclon csidm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='otvff')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='otvff')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "otvff", "Value": "innnsq wpxxqj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='unuaw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='unuaw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "unuaw", "Value": "bobhku odtcf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hbban')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hbban')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "hbban", "Value": "kllbmaas micswc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='tlmud')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='tlmud')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "tlmud", "Value": "bbvbemu eguycvy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='wresn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='wresn')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "wresn", "Value": "viyqdk iaadwwo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='sycta')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='sycta')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "sycta", "Value": "ahidwv nyxkjl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hdeda')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hdeda')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "hdeda", "Value": "iukhpfns gifbguop"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='kbaoa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='kbaoa')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "kbaoa", "Value": "ptsoa xhmie"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='nmduc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='nmduc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "nmduc", "Value": "hybtxjiv ioqhle"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='tjrzy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='tjrzy')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "tjrzy", "Value": "gkykmw osygok"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='buywp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='buywp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "buywp", "Value": "dwgjkti ccuxbkqi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='wyqfx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='wyqfx')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "wyqfx", "Value": "kzyraft tflxyg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='bzxob')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='bzxob')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "bzxob", "Value": "ucswp upnyzw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hsmli')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hsmli')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "hsmli", "Value": "jlqyl iederkla"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hgqqa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='hgqqa')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "hgqqa", "Value": "wkmeqfx mvnnh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='rzruw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='rzruw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "rzruw", "Value": "ityrgh zqhmk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='cjyul')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='cjyul')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "cjyul", "Value": "lugaj ixwhnwm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='bgfjt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='bgfjt')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "bgfjt", "Value": "fltrn adffwi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='htgqy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='htgqy')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "htgqy", "Value": "krmovhr phjylqnj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='fbbei')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='fbbei')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "fbbei", "Value": "oobdaj bbblhh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='lttvh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kcsdcbfdz',RefKey='lttvh')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kcsdcbfdz", "RefKey": "lttvh", "Value": "jgewdl pskdrk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='ahapl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='ahapl')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "ahapl", "Value": "hoqtlj xratn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='qmibv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='qmibv')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "qmibv", "Value": "gcksejgt udgkj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='tqntx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='tqntx')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "tqntx", "Value": "jkfhtek pymlqts"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='cszmg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='cszmg')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "cszmg", "Value": "dywoofrd kdcfu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='olfdz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='olfdz')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "olfdz", "Value": "jzwgrhjc jupqlpbf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='osepy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='osepy')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "osepy", "Value": "kktbbw dvltgjk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='nfiys')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='nfiys')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "nfiys", "Value": "iwwok vdjuz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='ppyag')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='ppyag')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "ppyag", "Value": "qcobuoq wcqedz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='wyxye')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='wyxye')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "wyxye", "Value": "nutbik clswwgu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='jdykc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='jdykc')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "jdykc", "Value": "ynbhfoy tywcykt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='aawlt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='aawlt')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "aawlt", "Value": "svojclo wmqfylg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='dwsmw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='dwsmw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "dwsmw", "Value": "lbkwcsfn ywqxjo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='vnyux')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='vnyux')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "vnyux", "Value": "blwch tdawex"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='aqfoh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='aqfoh')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "aqfoh", "Value": "qemrvnqy yagxgopy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='haoja')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='haoja')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "haoja", "Value": "xsbod yinzjce"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='gkdpb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='gkdpb')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "gkdpb", "Value": "glwlgt qfvva"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='wxeqj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='wxeqj')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "wxeqj", "Value": "hmuoah zabyo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='eunke')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='eunke')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "eunke", "Value": "egxpul vluzj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='qkdga')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='qkdga')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "qkdga", "Value": "toosgv shtujf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='bmhlf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='bmhlf')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "bmhlf", "Value": "yisjeu ohzzn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='nkekp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='nkekp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "nkekp", "Value": "nzckt fflnmry"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='kxkjz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='kxkjz')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "kxkjz", "Value": "etmodmbg jedrie"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='xnsem')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='xnsem')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "xnsem", "Value": "qvbpo lkuomr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='qlift')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='qlift')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "qlift", "Value": "kuzqdhhe bycdc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='vrtth')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='vrtth')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "vrtth", "Value": "yvqrzn qyxrney"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='chhhk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='chhhk')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "chhhk", "Value": "nnhcpoja nujqo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='hjcza')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='hjcza')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "hjcza", "Value": "bywepwj kffun"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='zhtlr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='kifnaokasdwnf',RefKey='zhtlr')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "kifnaokasdwnf", "RefKey": "zhtlr", "Value": "dmdkhf pawmxaq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='ouvpw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='ouvpw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "ouvpw", "Value": "pnjdsbz fkljdld"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='dvdzp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='dvdzp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "dvdzp", "Value": "durwpr dzpnhbb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='skncp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='skncp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "skncp", "Value": "ksomn cwffjby"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='bynss')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='bynss')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "bynss", "Value": "tzzbnbsg tytnnzg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='uwqqr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='uwqqr')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "uwqqr", "Value": "pgkwtlvi eoxkffnt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='hyrhs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='hyrhs')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "hyrhs", "Value": "bbieeekh pcrqdydc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='ljgmh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='ljgmh')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "ljgmh", "Value": "rwbecnah mkxlq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='rogcd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='rogcd')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "rogcd", "Value": "ojpkfn yvgdnva"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='mjlgt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='mjlgt')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "mjlgt", "Value": "lwvginmi zluneu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='zgfzj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='zgfzj')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "zgfzj", "Value": "dwdotqf vazdoa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='grcoe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='grcoe')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "grcoe", "Value": "eqmvl bhdvrvv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='feoug')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='feoug')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "feoug", "Value": "gdhudu fpdmoadm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='tvshn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='tvshn')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "tvshn", "Value": "ireol qigot"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='ssvlx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='gzdkhnbgbp',RefKey='ssvlx')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "gzdkhnbgbp", "RefKey": "ssvlx", "Value": "kwlrb zrztlvj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='qcvdm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='qcvdm')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "qcvdm", "Value": "uqssarc nueworiz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='hxhug')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='hxhug')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "hxhug", "Value": "lubmqa feonsus"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='fbbvw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='fbbvw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "fbbvw", "Value": "hqwru jumgyljf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='ejbsk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='ejbsk')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "ejbsk", "Value": "lnwvs lvdfa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='scggh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='scggh')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "scggh", "Value": "atimlsz qxbokm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='vyjfa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='vyjfa')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "vyjfa", "Value": "kefna xbwktuno"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='wnkhu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='wnkhu')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "wnkhu", "Value": "jlevxwjc amdjvo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='keflm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='keflm')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "keflm", "Value": "mpgky zxmhjn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='yobhw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='yobhw')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "yobhw", "Value": "nwyzgev mmnkk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='uxlut')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='uxlut')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "uxlut", "Value": "zatftxdr aucbip"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='yruzd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='yruzd')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "yruzd", "Value": "imlymrs ephai"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='vqcgl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='vqcgl')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "vqcgl", "Value": "xuuztsu pspadfe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='raicj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='raicj')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "raicj", "Value": "qetnwad qqpdd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='znfjt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='znfjt')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "znfjt", "Value": "hatkdjka fabtmhu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='cybxy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='cybxy')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "cybxy", "Value": "wrrgifae rjshjarm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='prrhh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='prrhh')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "prrhh", "Value": "xevrgkav zyumvia"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='bgken')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='bgken')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "bgken", "Value": "fkolzud ibdbdfug"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='xgixu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='xgixu')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "xgixu", "Value": "xdokzh natxgcaq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='kqqix')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='czmqhknxdv',RefKey='kqqix')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "czmqhknxdv", "RefKey": "kqqix", "Value": "gbomb jlepinfa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='jutyjzz',RefKey='bjxfk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='jutyjzz',RefKey='bjxfk')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "jutyjzz", "RefKey": "bjxfk", "Value": "kzmswfri utddak"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='xjpdt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='xjpdt')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "xjpdt", "Value": "dhswxf epoymb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='fowku')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='fowku')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "fowku", "Value": "sudoh typpg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='gvhxe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='gvhxe')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "gvhxe", "Value": "dfenja omdsto"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='dsuzo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='dsuzo')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "dsuzo", "Value": "uejsmcu hncnvieb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='zrmbq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='zrmbq')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "zrmbq", "Value": "bzbujfpv yayrjr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='mkyoo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='mkyoo')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "mkyoo", "Value": "ioylo qwtkdh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='shrcm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='shrcm')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "shrcm", "Value": "xywqkq vqkluwry"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='xgvod')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='xgvod')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "xgvod", "Value": "eqtcha tnwdm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='ksdpa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='ksdpa')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "ksdpa", "Value": "edbxdlp nczkfe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='vdxpu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='vdxpu')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "vdxpu", "Value": "mjrim ctwpwbrk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='hfzmu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='yktddchm',RefKey='hfzmu')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "yktddchm", "RefKey": "hfzmu", "Value": "iohsqpxf vnmplnuy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='dmczu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='dmczu')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "cgdbjxhwwe", "RefKey": "dmczu", "Value": "zwlkzu pdxxjs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='elxor')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='elxor')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "cgdbjxhwwe", "RefKey": "elxor", "Value": "sugddoav paawpp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='ozmqp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='ozmqp')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "cgdbjxhwwe", "RefKey": "ozmqp", "Value": "ldrzkz gddwxqd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='kfvyt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='kfvyt')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "cgdbjxhwwe", "RefKey": "kfvyt", "Value": "jygwhbph htwazjwd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='khfwm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='umlvmmd',PropertyName='cgdbjxhwwe',RefKey='khfwm')", "type": "umlvmmd.Enumeration"}, "EntityType": "umlvmmd", "PropertyName": "cgdbjxhwwe", "RefKey": "khfwm", "Value": "hvytqfvv vnkmbgue"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='ywdlk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='ywdlk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "ywdlk", "Value": "ucoad mgkrh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='qupnw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='qupnw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "qupnw", "Value": "aiwougy jjyogip"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='jyffe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='jyffe')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "jyffe", "Value": "dnyurx kyfqod"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='eqeeq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='eqeeq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "eqeeq", "Value": "fpvxrov imootwob"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='vzlyl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='vzlyl')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "vzlyl", "Value": "yymab tahvakm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='iaacb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='iaacb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "iaacb", "Value": "vcstglfu iaogj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='jxowr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='jxowr')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "jxowr", "Value": "vaaoldw swyoyud"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='fcdrr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='fcdrr')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "fcdrr", "Value": "slxcrd cawsm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='ingst')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='ingst')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "ingst", "Value": "fprmrbaj rjubf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='omoga')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='omoga')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "omoga", "Value": "vvhlekb vzymwztk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='lbwue')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='lbwue')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "lbwue", "Value": "wwvpo pfrlssn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='kldhu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='kldhu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "kldhu", "Value": "siwdgh cpbvfas"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='utypp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='rkwozndoqozjk',RefKey='utypp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "rkwozndoqozjk", "RefKey": "utypp", "Value": "bxwfbujz fhtapw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='glgus')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='glgus')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "glgus", "Value": "abhymk qqgnces"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='lcpek')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='lcpek')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "lcpek", "Value": "tyrwg uvghekn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='uadln')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='uadln')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "uadln", "Value": "khlhxr bibzf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='gywyh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='gywyh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "gywyh", "Value": "udhyndaf uznya"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='qcemf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='qcemf')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "qcemf", "Value": "fymzbkmr gwcfikm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='qgaop')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='qgaop')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "qgaop", "Value": "gxxmgc xdutqkz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='qgyos')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='qgyos')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "qgyos", "Value": "bmsztx ksrut"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='oqyac')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='oqyac')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "oqyac", "Value": "uutvwxpa gdnup"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='pfyjn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='pfyjn')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "pfyjn", "Value": "vdxiof wpdjgm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='fmevv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='fmevv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "fmevv", "Value": "vwadaa vljvwt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='znnrx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='znnrx')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "znnrx", "Value": "zlyybgo csnlcj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='nbiuy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='nbiuy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "nbiuy", "Value": "xexuqq rwlbbp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='pkxqz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='pkxqz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "pkxqz", "Value": "lzlodpj tnjeezb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='iyllu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='iyllu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "iyllu", "Value": "xfqpms evavz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='rrkjb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='rrkjb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "rrkjb", "Value": "phpajqg tndlr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='vpkta')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='vpkta')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "vpkta", "Value": "vvvpd rabusjp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='dlqvq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='dlqvq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "dlqvq", "Value": "olmohjt eilyc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='eyvwh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='eyvwh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "eyvwh", "Value": "qsxkypt arycin"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='bmipz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ztpqswwhwmubi',RefKey='bmipz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ztpqswwhwmubi", "RefKey": "bmipz", "Value": "fyzjks avwvumzy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='zhkuh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='zhkuh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "zhkuh", "Value": "ccxzrb rzguz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='xdlnu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='xdlnu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "xdlnu", "Value": "uczkwr izpye"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='rrnjz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='rrnjz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "rrnjz", "Value": "umlhiea grmkbpxz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='zbvfw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='zbvfw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "zbvfw", "Value": "xjfsde xvgxegl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='tfusj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='tfusj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "tfusj", "Value": "dieaskh qegvuqrr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='wrtze')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='wrtze')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "wrtze", "Value": "gjlefih rxvbhz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='ftbom')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='ftbom')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "ftbom", "Value": "fnfrmbpj befwn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='ialgd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='egtshrzxgyer',RefKey='ialgd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "egtshrzxgyer", "RefKey": "ialgd", "Value": "cihhjvdx bpoojdy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='hcsif')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='hcsif')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "hcsif", "Value": "tpsdbaf ocjms"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='vmlkg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='vmlkg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "vmlkg", "Value": "yezfon tmhds"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='qwezd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='qwezd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "qwezd", "Value": "sfgixdwr yahxqeif"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='koicy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='koicy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "koicy", "Value": "jllzqil ynimizrx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='pisdc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='pisdc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "pisdc", "Value": "aabpoluc rccub"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='vohta')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='vohta')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "vohta", "Value": "eecdr fldex"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='rpwso')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='rpwso')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "rpwso", "Value": "tqsrjk lggfj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='zhyfo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='cvitykgr',RefKey='zhyfo')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "cvitykgr", "RefKey": "zhyfo", "Value": "avsruri jwvzncf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='pcafq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='pcafq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "pcafq", "Value": "bgiue peusfj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='xwydw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='xwydw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "xwydw", "Value": "czzoov tcsvwnt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ypybl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ypybl')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "ypybl", "Value": "ezrjbrtk njrou"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ajzne')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ajzne')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "ajzne", "Value": "jjdja vgnobd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='gnoky')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='gnoky')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "gnoky", "Value": "ucibg pfmookx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='gifbe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='gifbe')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "gifbe", "Value": "mjnwbrql tizxiem"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='dkqmq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='dkqmq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "dkqmq", "Value": "aiqcja eedruh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='scxke')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='scxke')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "scxke", "Value": "sddio osltrquz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='cvaeo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='cvaeo')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "cvaeo", "Value": "vzqkv idswe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='pteos')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='pteos')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "pteos", "Value": "xvvxu kgoynvd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='pritj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='pritj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "pritj", "Value": "vvyci pnidia"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='tskoo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='tskoo')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "tskoo", "Value": "ijovgc bczhgqcp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='euwuk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='euwuk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "euwuk", "Value": "rjbrkm ladglcnf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='dqfic')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='dqfic')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "dqfic", "Value": "elpykcls rqenvm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='bxobu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='bxobu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "bxobu", "Value": "peewkewf iqluttm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='iqpew')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='iqpew')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "iqpew", "Value": "ltcaj pygynwtj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ciozh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ciozh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "ciozh", "Value": "eacxdq aqvbrx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='cyuxr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='cyuxr')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "cyuxr", "Value": "viohkiok tobcg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='jsbzm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='jsbzm')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "jsbzm", "Value": "ohnst ewyinss"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='jhmrb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='jhmrb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "jhmrb", "Value": "xwxscvgd iqdrd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='yzajv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='yzajv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "yzajv", "Value": "sthqnpba oaabbe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='hjfym')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='hjfym')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "hjfym", "Value": "iveqjkgn wibcox"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='dmmac')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='dmmac')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "dmmac", "Value": "usognxhv bdthqr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='billy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='billy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "billy", "Value": "bkptz uhwuu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='hlrcf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='hlrcf')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "hlrcf", "Value": "sczlibzj skayt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='wodbq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='wodbq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "wodbq", "Value": "etwonvol qfqndrg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='sudin')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='sudin')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "sudin", "Value": "dqzrb tlgllk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='cycqv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='cycqv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "cycqv", "Value": "jtrwj adzqer"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='gzhij')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='gzhij')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "gzhij", "Value": "esxblj ksrtlt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='mbfjn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='mbfjn')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "mbfjn", "Value": "nzkcbld bjlvu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ruumh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='ruumh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "ruumh", "Value": "cttywld dxdoo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='nogqu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='icipnpcpktfbb',RefKey='nogqu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "icipnpcpktfbb", "RefKey": "nogqu", "Value": "rfpmrfdn cufkhdy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='hxlriyunh',RefKey='qctmt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='hxlriyunh',RefKey='qctmt')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "hxlriyunh", "RefKey": "qctmt", "Value": "dlljbeh njcze"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='hxlriyunh',RefKey='chxsf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='hxlriyunh',RefKey='chxsf')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "hxlriyunh", "RefKey": "chxsf", "Value": "gxlsjll ewgbakpk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='hxglp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='hxglp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "hxglp", "Value": "sldpx dmigp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='pepds')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='pepds')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "pepds", "Value": "dwhvh zgioivl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='rcbql')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='rcbql')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "rcbql", "Value": "mghop agarw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='gjmeg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='gjmeg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "gjmeg", "Value": "hfuoux jidopomx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='vqzvp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='vqzvp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "vqzvp", "Value": "kslharkl wxlwwn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='aynjm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='aynjm')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "aynjm", "Value": "fshcnvif gjjrac"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='wexwy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='wexwy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "wexwy", "Value": "iyucc lfzwg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='ucdzw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='ucdzw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "ucdzw", "Value": "eufwe qkjsv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='skfmz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='skfmz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "skfmz", "Value": "iaifyo gblvfbq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='indqt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='indqt')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "indqt", "Value": "bboyf cqjipi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='rjhsd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='rjhsd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "rjhsd", "Value": "htrkye irkzq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='isgto')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='isgto')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "isgto", "Value": "jurqf ridcqtu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='avtqs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='avtqs')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "avtqs", "Value": "gsqob dokvb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='yybxt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='yybxt')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "yybxt", "Value": "xkqfalgp mrufz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='fdmyw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='fdmyw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "fdmyw", "Value": "bvcyrwxe kzapu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='yypfr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='yypfr')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "yypfr", "Value": "rnafwxw ffeqwae"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='vzzgg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='vzzgg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "vzzgg", "Value": "eelfk clszg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='fnfuv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='fnfuv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "fnfuv", "Value": "okxhscw lktzjhc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='lxpnv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='lxpnv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "lxpnv", "Value": "cbvtt nfkrnp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='udqyn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='udqyn')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "udqyn", "Value": "qhicyt bjztci"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='utmjh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='utmjh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "utmjh", "Value": "dkmapoqa iaiho"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='lgyyf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='lgyyf')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "lgyyf", "Value": "fgkze biyepu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='kgwjj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='kgwjj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "kgwjj", "Value": "tipfh pqezni"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='mmwob')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='duuqloqfugvzj',RefKey='mmwob')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "duuqloqfugvzj", "RefKey": "mmwob", "Value": "zrslsb izstloh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='ovweb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='ovweb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "mxlqhpjjxdvwu", "RefKey": "ovweb", "Value": "hznew whntnn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='kxtfl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='kxtfl')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "mxlqhpjjxdvwu", "RefKey": "kxtfl", "Value": "vkcxt ypvozm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='pmouk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='pmouk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "mxlqhpjjxdvwu", "RefKey": "pmouk", "Value": "vsvmanm wieiu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='neven')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='neven')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "mxlqhpjjxdvwu", "RefKey": "neven", "Value": "nydhkksg yufgfroj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='wpqxz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='wpqxz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "mxlqhpjjxdvwu", "RefKey": "wpqxz", "Value": "vosjk wqcsoku"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='wgbwr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='mxlqhpjjxdvwu',RefKey='wgbwr')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "mxlqhpjjxdvwu", "RefKey": "wgbwr", "Value": "vetzdw dcknfsx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='jyude')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='jyude')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "jyude", "Value": "izmchem cehvyphr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='qglab')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='qglab')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "qglab", "Value": "cikimjaj gftbm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='uzqtw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='uzqtw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "uzqtw", "Value": "ynhjthny fvxfh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='wrrgz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='wrrgz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "wrrgz", "Value": "bnhtv shyuf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='egtew')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='egtew')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "egtew", "Value": "hhfmngbg yhvtch"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='gfrmv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='gfrmv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "gfrmv", "Value": "xazselj autix"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='znttd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='znttd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "znttd", "Value": "ysztcf pfpgufd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='gsmdg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='gsmdg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "gsmdg", "Value": "tvhfcvq zdtth"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ykswf')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ykswf')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "ykswf", "Value": "mmdomq kbmkkbc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='hrqet')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='hrqet')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "hrqet", "Value": "xithonhn uorpwcef"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='hnrsk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='hnrsk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "hnrsk", "Value": "wppxq stnmo"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='tzuzx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='tzuzx')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "tzuzx", "Value": "wtouwy vtbgi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='xvasp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='xvasp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "xvasp", "Value": "muwkepqc nmerhilv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='hajni')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='hajni')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "hajni", "Value": "bflpo ugdlzkqm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='zkssp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='zkssp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "zkssp", "Value": "kiyzdmf cuomeom"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='wcuxh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='wcuxh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "wcuxh", "Value": "jbuqybic gvwwkn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ievcu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ievcu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "ievcu", "Value": "ghmnabt zgpbocc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='xppbg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='xppbg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "xppbg", "Value": "qmorneb dcfbrngv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='pgtgw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='pgtgw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "pgtgw", "Value": "euqcdau ofapvn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='eymkh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='eymkh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "eymkh", "Value": "enkzy pjpzzms"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='pccwp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='pccwp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "pccwp", "Value": "nrrxx mguhogk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='utcrz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='utcrz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "utcrz", "Value": "kmzemil kkwug"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='tutbb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='tutbb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "tutbb", "Value": "unrfatm ekply"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ydfdl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ydfdl')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "ydfdl", "Value": "yxftdf yygirh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='yssqq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='yssqq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "yssqq", "Value": "neomthxk foaiuqbh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='vtmqx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='vtmqx')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "vtmqx", "Value": "sdzzvyxb anyauwhj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='dzskz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='dzskz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "dzskz", "Value": "tcnzzqf amzhodu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='kadbn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='kadbn')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "kadbn", "Value": "njqtw hracqve"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='riwrq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='riwrq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "riwrq", "Value": "pfxxmzwu taymlrh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ionac')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='nkdseaxlqxcdi',RefKey='ionac')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "nkdseaxlqxcdi", "RefKey": "ionac", "Value": "yiavsm gftetbk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='oszeh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='oszeh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "oszeh", "Value": "yanskzrz jyktxdj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='ehmao')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='ehmao')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "ehmao", "Value": "fgwcnojs cqyzsix"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='inmns')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='inmns')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "inmns", "Value": "qledlgh davdizlt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='eobxh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='eobxh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "eobxh", "Value": "jsexilzp jsous"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='fhsmt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='fhsmt')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "fhsmt", "Value": "ezvthdmc umbqu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='kpawz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='kpawz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "kpawz", "Value": "qvglcwsg jhjtl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='yvpto')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='yvpto')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "yvpto", "Value": "lhahh ljchf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='rnaco')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='rnaco')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "rnaco", "Value": "lhidavy qblcrdbm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='uktqa')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='uktqa')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "uktqa", "Value": "xslhll bolnun"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='gsjwd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='gsjwd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "gsjwd", "Value": "kortne hygiq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='wbcue')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='wbcue')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "wbcue", "Value": "mjampvdn xycqx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='fkupb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='fkupb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "fkupb", "Value": "midtgr hhwcccdi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='vglyp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='aqvwjblmarlmt',RefKey='vglyp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "aqvwjblmarlmt", "RefKey": "vglyp", "Value": "kothayt vlbqxjdm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='eozsc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='eozsc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "eozsc", "Value": "ojmtpw fajwq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='lueos')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='lueos')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "lueos", "Value": "twxxl ptvavj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='henri')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='henri')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "henri", "Value": "mfocnj lglzz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='whwjy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='whwjy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "whwjy", "Value": "ebkwnxl qykdcey"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='dyvkq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='dyvkq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "dyvkq", "Value": "zleziusa sjbihp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='tpazj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='tpazj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "tpazj", "Value": "ixvep szcgc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='dbahu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='dbahu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "dbahu", "Value": "ciajvz hfhhlxc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='kpkig')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='kpkig')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "kpkig", "Value": "wqdrufv owfxgpwq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='azrpd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='azrpd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "azrpd", "Value": "ujevac dibfnnqw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='qxwyg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='qxwyg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "qxwyg", "Value": "qficxwe nvtgoixe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='wqttg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='wqttg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "wqttg", "Value": "tsagz uciaquq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='kjhyt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='kjhyt')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "kjhyt", "Value": "susti dtfdr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='psatj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='psatj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "psatj", "Value": "gwbqykl nqbacnj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='qhsva')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='qhsva')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "qhsva", "Value": "kblssofq fgtho"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='ugklp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='ugklp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "ugklp", "Value": "xdtach tcwevq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='fyiac')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='fyiac')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "fyiac", "Value": "komrll dbgoqf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='jterw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='jterw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "jterw", "Value": "pmwuc hgkxmru"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='nxjlm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='nxjlm')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "nxjlm", "Value": "khhez dfnsm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='rrcla')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='rrcla')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "rrcla", "Value": "idoxdj vkitad"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='svfbk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='svfbk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "svfbk", "Value": "nvxuhc phsou"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='bapgu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='dsbhspcxbhn',RefKey='bapgu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "dsbhspcxbhn", "RefKey": "bapgu", "Value": "vkfchel aluyu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='gxtyg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='gxtyg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "gxtyg", "Value": "yjpmbezz ihamz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='tzdoc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='tzdoc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "tzdoc", "Value": "ofmzg vsrzrrmr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='ifrre')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='ifrre')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "ifrre", "Value": "qzrnrfys sgfmw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='pxaiw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='pxaiw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "pxaiw", "Value": "wbseks nlivfkk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='zgeiy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='zgeiy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "zgeiy", "Value": "ujndcp vqjbz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='dzokw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='dzokw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "dzokw", "Value": "xrknsase tvwhtnw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='rheka')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='rheka')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "rheka", "Value": "pzjstk zfqwi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='irtrh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='irtrh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "irtrh", "Value": "xjpwx irajqipw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='dsuit')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='dsuit')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "dsuit", "Value": "tzzbp tddmv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='hknwj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='hknwj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "hknwj", "Value": "qktllpkk tmatgc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='mzfgj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='mzfgj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "mzfgj", "Value": "mdagp lihlh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='vrhbo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='vrhbo')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "vrhbo", "Value": "szjpa myigcy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='jubtb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='toitrvdguqphw',RefKey='jubtb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "toitrvdguqphw", "RefKey": "jubtb", "Value": "cdacklst kuopt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hpjyt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hpjyt')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "hpjyt", "Value": "nqjatp pqxbct"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hhwxz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hhwxz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "hhwxz", "Value": "zyrhdog mwchmv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='rgdqu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='rgdqu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "rgdqu", "Value": "auzwxemt musgp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='unblj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='unblj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "unblj", "Value": "paanl cqgufuys"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='lsgzn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='lsgzn')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "lsgzn", "Value": "shbbv jyhxbg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='qvdqu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='qvdqu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "qvdqu", "Value": "ossmmhdo iisgrvi"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='kohpv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='kohpv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "kohpv", "Value": "tiajujcl iapwzdyl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='pndtx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='pndtx')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "pndtx", "Value": "fqchvd muhygjqs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='orwzw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='orwzw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "orwzw", "Value": "fefcm ybdvzaxm"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='uwyis')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='uwyis')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "uwyis", "Value": "rmbnlt egppwsrz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='kpzws')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='kpzws')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "kpzws", "Value": "qxmvrk jdpwr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='yycag')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='yycag')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "yycag", "Value": "bdcqin cvgwnoer"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='uubuy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='uubuy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "uubuy", "Value": "zfmplvl zfmjg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hdknw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hdknw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "hdknw", "Value": "xpyhlcc isfxpz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='dhzqi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='dhzqi')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "dhzqi", "Value": "itdwsu mecru"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='ecubl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='ecubl')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "ecubl", "Value": "pfecl evwoxl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='geebe')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='geebe')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "geebe", "Value": "rvropju eylwy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='mngsv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='mngsv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "mngsv", "Value": "xcehn lmglhgq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hzubd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='ghonrbntvz',RefKey='hzubd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "ghonrbntvz", "RefKey": "hzubd", "Value": "baqnd gjvqb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='tuple')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='tuple')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "tuple", "Value": "kdsqbb aluacsrz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='qhqnb')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='qhqnb')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "qhqnb", "Value": "ginccqj lunhzs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='ccqea')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='ccqea')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "ccqea", "Value": "sdfvijhl sedlbhsx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='hhkgj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='hhkgj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "hhkgj", "Value": "yrlpluho mmyeb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='kmgad')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='kmgad')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "kmgad", "Value": "jbitxnm eywclbc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='kdyda')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='kdyda')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "kdyda", "Value": "uykwx ozlmzvhc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='kiowk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='kiowk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "kiowk", "Value": "qigenoys ferdcor"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='ubfds')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='ubfds')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "ubfds", "Value": "bkopyo kozfnrx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='minrj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='minrj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "minrj", "Value": "htqhfh udmhefe"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='qevzt')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='qevzt')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "qevzt", "Value": "hmjnzw wnfrkgk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='mhkpr')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='mhkpr')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "mhkpr", "Value": "ejcfule qzttq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='prfzi')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='prfzi')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "prfzi", "Value": "xjhonakn nmvrwblz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='eiocc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='eiocc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "eiocc", "Value": "pureidsi phtlgtxr"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='yhkga')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='gioomfvct',RefKey='yhkga')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "gioomfvct", "RefKey": "yhkga", "Value": "nncbypc gysdura"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='jpbez')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='jpbez')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "jpbez", "Value": "aivcqrwx wpnon"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='tqrvl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='tqrvl')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "tqrvl", "Value": "fcaztjju fnekfiwh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='isqii')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='isqii')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "isqii", "Value": "nifem tosumj"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='uqrrc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='uqrrc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "uqrrc", "Value": "aarldoos btipwudd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='cyamv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='cyamv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "cyamv", "Value": "qccuu pofnz"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='rksgq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='rksgq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "rksgq", "Value": "ypzmxe xhojzpy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='czcvx')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='czcvx')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "czcvx", "Value": "dtzjzele axafd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='rtoxo')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='rtoxo')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "rtoxo", "Value": "iwuydk kvjnn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='xpums')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='xpums')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "xpums", "Value": "iogyirf uupqvmam"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='tpsme')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='tpsme')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "tpsme", "Value": "bhbvni xsxcxvt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qroiq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qroiq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "qroiq", "Value": "ryeftrr chlflny"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='cilgs')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='cilgs')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "cilgs", "Value": "sequapha qiofslt"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='cemwc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='cemwc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "cemwc", "Value": "dapevmg brrlov"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='iienv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='iienv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "iienv", "Value": "tmmpyn wlemxp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qhdwz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qhdwz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "qhdwz", "Value": "nakggar vmrqomql"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='jmume')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='jmume')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "jmume", "Value": "jgtkug ebhchrhb"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='zqzdu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='zqzdu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "zqzdu", "Value": "ajqemq ttpks"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='kngiu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='kngiu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "kngiu", "Value": "jvadmy domtha"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qvtqn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qvtqn')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "qvtqn", "Value": "jqglmq fcyldqs"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='effny')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='effny')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "effny", "Value": "wuualom enrnhmv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qstvk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qstvk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "qstvk", "Value": "dlugqdy mawdjzw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='mdiuh')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='mdiuh')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "mdiuh", "Value": "vyiqqpk qjzkst"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='kuwfc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='kuwfc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "kuwfc", "Value": "qnzlmy hncnos"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qvugu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qvugu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "qvugu", "Value": "bznxtp xafzuwit"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='vdccw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='vdccw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "vdccw", "Value": "igivosbu wzbzf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='akmfc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='akmfc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "akmfc", "Value": "pqzqg tmlvwmpn"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='ixnbm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='ixnbm')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "ixnbm", "Value": "sfjhuul vsxabk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='grewg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='grewg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "grewg", "Value": "qcevuu fotmtgx"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qdirg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qdirg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "qdirg", "Value": "yfwipn gzzwguc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qtqzq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='qtqzq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "qtqzq", "Value": "zkexlbd dicmbp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='lbhco')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='lbhco')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "lbhco", "Value": "oaspked gnfis"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='dvnvy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='dvnvy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "dvnvy", "Value": "fluawpp bofaw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='gitkd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='gitkd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "gitkd", "Value": "vqrdhw mmqcysd"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='fcgbn')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='sxzidfb',RefKey='fcgbn')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "sxzidfb", "RefKey": "fcgbn", "Value": "ybhev yyqfevk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='hgklc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='hgklc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "hgklc", "Value": "xwoqbsy xdcayc"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='xoguy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='xoguy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "xoguy", "Value": "pptkhs lpelg"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='eqsvc')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='eqsvc')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "eqsvc", "Value": "ufflkbw uyfkuwf"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='ptqvm')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='ptqvm')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "ptqvm", "Value": "ajugbizf fwwqa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='buhlu')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='buhlu')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "buhlu", "Value": "sppvdkyr wuydhho"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='ofuwz')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='ofuwz')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "ofuwz", "Value": "ccyjqdr tlcywqa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='btiwp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='btiwp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "btiwp", "Value": "tzmhnx arapbfwy"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='yztdl')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='yztdl')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "yztdl", "Value": "mfieiqtw eaufvfh"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='fxebd')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='fxebd')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "fxebd", "Value": "zdoycjfs qundzquk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='ftxnj')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='ftxnj')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "ftxnj", "Value": "crscwqd dicvq"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='fuhbp')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='wogrkpkvmj',RefKey='fuhbp')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "wogrkpkvmj", "RefKey": "fuhbp", "Value": "rjdfp ohrovvfu"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='ltcuk')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='ltcuk')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "ltcuk", "Value": "vpdgltd ssaclxyl"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='fevhy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='fevhy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "fevhy", "Value": "mguhft rafwng"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='jsvjy')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='jsvjy')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "jsvjy", "Value": "mfkzh jonkrcw"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='poyan')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='poyan')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "poyan", "Value": "yzhkk ykwixrgk"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='fezoq')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='fezoq')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "fezoq", "Value": "qbcrkqkn cidtnmv"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='lglfw')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='lglfw')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "lglfw", "Value": "ojnfqe vrzsp"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='hftxg')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='hftxg')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "hftxg", "Value": "lpncjbx dpbujfa"}, {"__metadata": {"id": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='cufrv')", "uri": "https://nevergonnagiveyouup.nevergonnaletyoudown.com.au:6969/never-gonna-run-around/AndDesertYou/v6.9/Enumerations(EntityType='yndcxegcdes',PropertyName='fvsruvn',RefKey='cufrv')", "type": "yndcxegcdes.Enumeration"}, "EntityType": "yndcxegcdes", "PropertyName": "fvsruvn", "RefKey": "cufrv", "Value": "amweevxh rpgiax"}]}} --16804F9C063D8720EACA19F7DFB3CD4A0-- python-pyodata-1.11.2/tests/integration/000077500000000000000000000000001500317427700202475ustar00rootroot00000000000000python-pyodata-1.11.2/tests/integration/networking_libraries/000077500000000000000000000000001500317427700244725ustar00rootroot00000000000000python-pyodata-1.11.2/tests/integration/networking_libraries/test_aiohttp_client.py000066400000000000000000000114171500317427700311150ustar00rootroot00000000000000""" Test the pyodata integration with aiohttp client, based on asyncio https://docs.aiohttp.org/en/stable/ """ import aiohttp from aiohttp import web import pytest import pyodata.v2.service from pyodata import Client from pyodata.exceptions import PyODataException, HttpError from pyodata.v2.model import ParserError, PolicyWarning, PolicyFatal, PolicyIgnore, Config SERVICE_URL = '' @pytest.mark.asyncio async def test_invalid_odata_version(): """Check handling of request for invalid OData version implementation""" with pytest.raises(PyODataException) as e_info: async with aiohttp.ClientSession() as client: await Client.build_async_client(SERVICE_URL, client, 'INVALID VERSION') assert str(e_info.value).startswith('No implementation for selected odata version') @pytest.mark.asyncio async def test_create_client_for_local_metadata(metadata): """Check client creation for valid use case with local metadata""" async with aiohttp.ClientSession() as client: service_client = await Client.build_async_client(SERVICE_URL, client, metadata=metadata) assert isinstance(service_client, pyodata.v2.service.Service) assert service_client.schema.is_valid == True assert len(service_client.schema.entity_sets) != 0 @pytest.mark.asyncio def generate_metadata_response(headers=None, body=None, status=200): async def metadata_response(request): return web.Response(status=status, headers=headers, body=body) return metadata_response @pytest.mark.parametrize("content_type", ['application/xml', 'application/atom+xml', 'text/xml']) @pytest.mark.asyncio async def test_create_service_application(aiohttp_client, metadata, content_type): """Check client creation for valid MIME types""" app = web.Application() app.router.add_get('/$metadata', generate_metadata_response(headers={'content-type': content_type}, body=metadata)) client = await aiohttp_client(app) service_client = await Client.build_async_client(SERVICE_URL, client) assert isinstance(service_client, pyodata.v2.service.Service) # one more test for '/' terminated url service_client = await Client.build_async_client(SERVICE_URL + '/', client) assert isinstance(service_client, pyodata.v2.service.Service) assert service_client.schema.is_valid @pytest.mark.asyncio async def test_metadata_not_reachable(aiohttp_client): """Check handling of not reachable service metadata""" app = web.Application() app.router.add_get('/$metadata', generate_metadata_response(headers={'content-type': 'text/html'}, status=404)) client = await aiohttp_client(app) with pytest.raises(HttpError) as e_info: await Client.build_async_client(SERVICE_URL, client) assert str(e_info.value).startswith('Metadata request failed') @pytest.mark.asyncio async def test_metadata_saml_not_authorized(aiohttp_client): """Check handling of not SAML / OAuth unauthorized response""" app = web.Application() app.router.add_get('/$metadata', generate_metadata_response(headers={'content-type': 'text/html; charset=utf-8'})) client = await aiohttp_client(app) with pytest.raises(HttpError) as e_info: await Client.build_async_client(SERVICE_URL, client) assert str(e_info.value).startswith('Metadata request did not return XML, MIME type:') @pytest.mark.asyncio async def test_client_custom_configuration(aiohttp_client, metadata): """Check client creation for custom configuration""" namespaces = { 'edmx': "customEdmxUrl.com", 'edm': 'customEdmUrl.com' } custom_config = Config( xml_namespaces=namespaces, default_error_policy=PolicyFatal(), custom_error_policies={ ParserError.ANNOTATION: PolicyWarning(), ParserError.ASSOCIATION: PolicyIgnore() }) app = web.Application() app.router.add_get('/$metadata', generate_metadata_response(headers={'content-type': 'application/xml'}, body=metadata)) client = await aiohttp_client(app) with pytest.raises(PyODataException) as e_info: await Client.build_async_client(SERVICE_URL, client, config=custom_config, namespaces=namespaces) assert str(e_info.value) == 'You cannot pass namespaces and config at the same time' with pytest.warns(DeprecationWarning,match='Passing namespaces directly is deprecated. Use class Config instead'): service = await Client.build_async_client(SERVICE_URL, client, namespaces=namespaces) assert isinstance(service, pyodata.v2.service.Service) assert service.schema.config.namespaces == namespaces service = await Client.build_async_client(SERVICE_URL, client, config=custom_config) assert isinstance(service, pyodata.v2.service.Service) assert service.schema.config == custom_config python-pyodata-1.11.2/tests/integration/networking_libraries/test_httpx_client_async.py000066400000000000000000000110771500317427700320130ustar00rootroot00000000000000""" Test the pyodata integration with httpx client - it provided sync, requests like interface - it provides asyncio interface as well - FOCUS OF THIS TEST MODULE https://www.python-httpx.org/ """ import httpx from httpx import Response import respx import pytest import pyodata.v2.service from pyodata import Client from pyodata.exceptions import PyODataException, HttpError from pyodata.v2.model import ParserError, PolicyWarning, PolicyFatal, PolicyIgnore, Config SERVICE_URL = 'http://example.com' def test_invalid_odata_version(): """Check handling of request for invalid OData version implementation""" with pytest.raises(PyODataException) as e_info: pyodata.Client(SERVICE_URL, httpx, 'INVALID VERSION') assert str(e_info.value).startswith('No implementation for selected odata version') def test_create_client_for_local_metadata(metadata): """Check client creation for valid use case with local metadata""" client = pyodata.Client(SERVICE_URL, httpx, metadata=metadata) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.is_valid == True assert len(client.schema.entity_sets) != 0 @pytest.mark.parametrize("content_type", ['application/xml', 'application/atom+xml', 'text/xml']) def test_create_service_application(respx_mock, metadata, content_type): """Check client creation for valid MIME types""" # Note: respx_mock is provided by respx package as pytest helper headers = httpx.Headers( {'Content-Type': content_type} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=200, content=metadata, headers=headers, ) ) client = pyodata.Client(SERVICE_URL, httpx) assert isinstance(client, pyodata.v2.service.Service) # one more test for '/' terminated url client = pyodata.Client(SERVICE_URL + '/', httpx) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.is_valid def test_metadata_not_reachable(respx_mock): """Check handling of not reachable service metadata""" headers = httpx.Headers( {'Content-Type': 'text/html'} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=404, headers=headers, ) ) with pytest.raises(HttpError) as e_info: pyodata.Client(SERVICE_URL, httpx) assert str(e_info.value).startswith('Metadata request failed') def test_metadata_saml_not_authorized(respx_mock): """Check handling of not SAML / OAuth unauthorized response""" headers = httpx.Headers( {'Content-Type': 'text/html; charset=utf-8'} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=200, headers=headers, ) ) with pytest.raises(HttpError) as e_info: pyodata.Client(SERVICE_URL, httpx) assert str(e_info.value).startswith('Metadata request did not return XML, MIME type:') def test_client_custom_configuration(respx_mock,metadata): """Check client creation for custom configuration""" headers = httpx.Headers( {'Content-Type': 'application/xml'} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=200, headers=headers, content=metadata, ) ) namespaces = { 'edmx': "customEdmxUrl.com", 'edm': 'customEdmUrl.com' } custom_config = Config( xml_namespaces=namespaces, default_error_policy=PolicyFatal(), custom_error_policies={ ParserError.ANNOTATION: PolicyWarning(), ParserError.ASSOCIATION: PolicyIgnore() }) with pytest.raises(PyODataException) as e_info: client = pyodata.Client(SERVICE_URL, httpx, config=custom_config, namespaces=namespaces) assert str(e_info.value) == 'You cannot pass namespaces and config at the same time' with pytest.warns(DeprecationWarning,match='Passing namespaces directly is deprecated. Use class Config instead'): client = pyodata.Client(SERVICE_URL, httpx, namespaces=namespaces) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.config.namespaces == namespaces client = pyodata.Client(SERVICE_URL, httpx, config=custom_config) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.config == custom_configpython-pyodata-1.11.2/tests/integration/networking_libraries/test_httpx_client_sync.py000066400000000000000000000110771500317427700316520ustar00rootroot00000000000000""" Test the pyodata integration with httpx client - it provided sync, requests like interface - FOCUS OF THIS TEST MODULE - it provides asyncio interface as well https://www.python-httpx.org/ """ import httpx from httpx import Response import respx import pytest import pyodata.v2.service from pyodata import Client from pyodata.exceptions import PyODataException, HttpError from pyodata.v2.model import ParserError, PolicyWarning, PolicyFatal, PolicyIgnore, Config SERVICE_URL = 'http://example.com' def test_invalid_odata_version(): """Check handling of request for invalid OData version implementation""" with pytest.raises(PyODataException) as e_info: pyodata.Client(SERVICE_URL, httpx, 'INVALID VERSION') assert str(e_info.value).startswith('No implementation for selected odata version') def test_create_client_for_local_metadata(metadata): """Check client creation for valid use case with local metadata""" client = pyodata.Client(SERVICE_URL, httpx, metadata=metadata) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.is_valid == True assert len(client.schema.entity_sets) != 0 @pytest.mark.parametrize("content_type", ['application/xml', 'application/atom+xml', 'text/xml']) def test_create_service_application(respx_mock, metadata, content_type): """Check client creation for valid MIME types""" # Note: respx_mock is provided by respx package as pytest helper headers = httpx.Headers( {'Content-Type': content_type} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=200, content=metadata, headers=headers, ) ) client = pyodata.Client(SERVICE_URL, httpx) assert isinstance(client, pyodata.v2.service.Service) # one more test for '/' terminated url client = pyodata.Client(SERVICE_URL + '/', httpx) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.is_valid def test_metadata_not_reachable(respx_mock): """Check handling of not reachable service metadata""" headers = httpx.Headers( {'Content-Type': 'text/html'} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=404, headers=headers, ) ) with pytest.raises(HttpError) as e_info: pyodata.Client(SERVICE_URL, httpx) assert str(e_info.value).startswith('Metadata request failed') def test_metadata_saml_not_authorized(respx_mock): """Check handling of not SAML / OAuth unauthorized response""" headers = httpx.Headers( {'Content-Type': 'text/html; charset=utf-8'} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=200, headers=headers, ) ) with pytest.raises(HttpError) as e_info: pyodata.Client(SERVICE_URL, httpx) assert str(e_info.value).startswith('Metadata request did not return XML, MIME type:') def test_client_custom_configuration(respx_mock,metadata): """Check client creation for custom configuration""" headers = httpx.Headers( {'Content-Type': 'application/xml'} ) respx_mock.get(f"{SERVICE_URL}/$metadata").mock( return_value=Response(status_code=200, headers=headers, content=metadata, ) ) namespaces = { 'edmx': "customEdmxUrl.com", 'edm': 'customEdmUrl.com' } custom_config = Config( xml_namespaces=namespaces, default_error_policy=PolicyFatal(), custom_error_policies={ ParserError.ANNOTATION: PolicyWarning(), ParserError.ASSOCIATION: PolicyIgnore() }) with pytest.raises(PyODataException) as e_info: client = pyodata.Client(SERVICE_URL, httpx, config=custom_config, namespaces=namespaces) assert str(e_info.value) == 'You cannot pass namespaces and config at the same time' with pytest.warns(DeprecationWarning,match='Passing namespaces directly is deprecated. Use class Config instead'): client = pyodata.Client(SERVICE_URL, httpx, namespaces=namespaces) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.config.namespaces == namespaces client = pyodata.Client(SERVICE_URL, httpx, config=custom_config) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.config == custom_configpython-pyodata-1.11.2/tests/integration/networking_libraries/test_requests_client.py000066400000000000000000000077021500317427700313220ustar00rootroot00000000000000""" Test the pyodata integration with Requests library. https://requests.readthedocs.io/en/latest/ """ import responses import requests import pytest import pyodata import pyodata.v2.service from pyodata.exceptions import PyODataException, HttpError from pyodata.v2.model import ParserError, PolicyWarning, PolicyFatal, PolicyIgnore, Config SERVICE_URL = 'http://example.com' @responses.activate def test_invalid_odata_version(): """Check handling of request for invalid OData version implementation""" with pytest.raises(PyODataException) as e_info: pyodata.Client(SERVICE_URL, requests, 'INVALID VERSION') assert str(e_info.value).startswith('No implementation for selected odata version') @responses.activate def test_create_client_for_local_metadata(metadata): """Check client creation for valid use case with local metadata""" client = pyodata.Client(SERVICE_URL, requests, metadata=metadata) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.is_valid == True assert len(client.schema.entity_sets) != 0 @responses.activate @pytest.mark.parametrize("content_type", ['application/xml', 'application/atom+xml', 'text/xml']) def test_create_service_application(metadata, content_type): """Check client creation for valid MIME types""" responses.add( responses.GET, f"{SERVICE_URL}/$metadata", content_type=content_type, body=metadata, status=200) client = pyodata.Client(SERVICE_URL, requests) assert isinstance(client, pyodata.v2.service.Service) # one more test for '/' terminated url client = pyodata.Client(SERVICE_URL + '/', requests) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.is_valid @responses.activate def test_metadata_not_reachable(): """Check handling of not reachable service metadata""" responses.add( responses.GET, f"{SERVICE_URL}/$metadata", content_type='text/html', status=404) with pytest.raises(HttpError) as e_info: pyodata.Client(SERVICE_URL, requests) assert str(e_info.value).startswith('Metadata request failed') @responses.activate def test_metadata_saml_not_authorized(): """Check handling of not SAML / OAuth unauthorized response""" responses.add( responses.GET, f"{SERVICE_URL}/$metadata", content_type='text/html; charset=utf-8', status=200) with pytest.raises(HttpError) as e_info: pyodata.Client(SERVICE_URL, requests) assert str(e_info.value).startswith('Metadata request did not return XML, MIME type:') @responses.activate def test_client_custom_configuration(metadata): """Check client creation for custom configuration""" responses.add( responses.GET, f"{SERVICE_URL}/$metadata", content_type='application/xml', body=metadata, status=200) namespaces = { 'edmx': "customEdmxUrl.com", 'edm': 'customEdmUrl.com' } custom_config = Config( xml_namespaces=namespaces, default_error_policy=PolicyFatal(), custom_error_policies={ ParserError.ANNOTATION: PolicyWarning(), ParserError.ASSOCIATION: PolicyIgnore() }) with pytest.raises(PyODataException) as e_info: client = pyodata.Client(SERVICE_URL, requests, config=custom_config, namespaces=namespaces) assert str(e_info.value) == 'You cannot pass namespaces and config at the same time' with pytest.warns(DeprecationWarning,match='Passing namespaces directly is deprecated. Use class Config instead'): client = pyodata.Client(SERVICE_URL, requests, namespaces=namespaces) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.config.namespaces == namespaces client = pyodata.Client(SERVICE_URL, requests, config=custom_config) assert isinstance(client, pyodata.v2.service.Service) assert client.schema.config == custom_config python-pyodata-1.11.2/tests/metadata.xml000066400000000000000000000641161500317427700202360ustar00rootroot00000000000000 python-pyodata-1.11.2/tests/metadata_odata_org_northwind_v2.xml000066400000000000000000001141731500317427700247570ustar00rootroot00000000000000 python-pyodata-1.11.2/tests/test_model_v2.py000066400000000000000000002112421500317427700210460ustar00rootroot00000000000000"""Tests for OData Model module""" # pylint: disable=line-too-long,too-many-locals,too-many-statements,invalid-name, too-many-lines, no-name-in-module, expression-not-assigned, pointless-statement import os from datetime import datetime, timezone, timedelta from unittest.mock import patch import pytest from pyodata.v2.model import Schema, Typ, StructTypeProperty, Types, EntityType, EdmStructTypeSerializer, \ Association, AssociationSet, EndRole, AssociationSetEndRole, TypeInfo, MetadataBuilder, ParserError, PolicyWarning, \ PolicyIgnore, Config, PolicyFatal, NullType, NullAssociation, StructType, parse_datetime_literal from pyodata.exceptions import PyODataException, PyODataModelError, PyODataParserError from tests.conftest import assert_logging_policy import pyodata.v2.model def test_edmx(schema): """Test Edmx class""" # pylint: disable=redefined-outer-name assert set(schema.namespaces) == {'EXAMPLE_SRV', 'EXAMPLE_SRV_SETS'} assert set((entity_type.name for entity_type in schema.entity_types)) == { 'Address', 'MasterEntity', 'DataEntity', 'Employee', 'AnnotationTest', 'City', 'TemperatureMeasurement', 'Car', 'CarIDPic', 'Customer', 'Order', 'EnumTest', 'Enumeration', 'MaterialEntityWithEmptyString', } assert set((entity_set.name for entity_set in schema.entity_sets)) == { 'Addresses', 'Employees', 'MasterEntities', 'DataValueHelp', 'Cities', 'CitiesNotAddressable', 'CitiesWithFilter', 'TemperatureMeasurements', 'Cars', 'CarIDPics', 'Customers', 'Orders', 'EnumTests', 'Enumerations' } assert set((enum_type.name for enum_type in schema.enum_types)) == { 'Country', 'Language' } master_entity = schema.entity_type('MasterEntity') assert str(master_entity) == 'EntityType(MasterEntity)' assert master_entity.name == 'MasterEntity' assert master_entity.label is None assert not master_entity.is_value_list assert sorted([p.name for p in master_entity.proprties()]) == ['Data', 'DataName', 'DataType', 'Key'] master_entity_set = schema.entity_set('MasterEntities') assert master_entity_set.label == 'Master entities' data_entity = schema.entity_type('DataEntity') assert str(data_entity) == 'EntityType(DataEntity)' assert data_entity.name == 'DataEntity' assert data_entity.label == 'Data entities' assert data_entity.is_value_list assert not data_entity.proprty('Invisible').visible master_prop_key = master_entity.proprty('Key') assert str(master_prop_key) == 'StructTypeProperty(Key)' assert str(master_prop_key.struct_type) == 'EntityType(MasterEntity)' assert master_prop_key.value_helper is None assert master_prop_key.value_list == 'standard' master_prop_data = master_entity.proprty('Data') assert master_prop_data.text_proprty.name == 'DataName' assert master_prop_data.visible assert master_prop_data.max_length == StructTypeProperty.MAXIMUM_LENGTH master_prop_data_vh = master_prop_data.value_helper assert str(master_prop_data_vh) == 'ValueHelper(MasterEntity/Data)' assert str(master_prop_data_vh.proprty) == 'StructTypeProperty(Data)' assert str(master_prop_data_vh.entity_set) == 'EntitySet(DataValueHelp)' assert str(master_prop_data_vh.entity_set.entity_type) == 'EntityType(DataEntity)' vh_prm_data_type = master_prop_data_vh.local_property_param('DataType') assert str(vh_prm_data_type) == 'ValueHelperParameter(DataType=Type)' assert str(vh_prm_data_type.local_property) == 'StructTypeProperty(DataType)' assert str(vh_prm_data_type.list_property) == 'StructTypeProperty(Type)' vh_prm_description = master_prop_data_vh.list_property_param('Description') assert str(vh_prm_description) == 'ValueHelperParameter(Description)' assert str(vh_prm_description.list_property.struct_type) == 'EntityType(DataEntity)' annotation_test = schema.entity_type('AnnotationTest') no_format_prop = annotation_test.proprty('NoFormat') assert not no_format_prop.upper_case assert not no_format_prop.date assert not no_format_prop.non_negative upper_case_prop = annotation_test.proprty('UpperCase') assert upper_case_prop.upper_case assert not upper_case_prop.date assert not upper_case_prop.non_negative date_prop = annotation_test.proprty('Date') assert not date_prop.upper_case assert date_prop.date assert not date_prop.non_negative non_negative_prop = annotation_test.proprty('NonNegative') assert not non_negative_prop.upper_case assert not non_negative_prop.date assert non_negative_prop.non_negative car_entity = schema.entity_type('Car') assert car_entity.proprty('CodeName').filter_restriction == 'single-value' assert car_entity.proprty('CodeName').required_in_filter assert not car_entity.proprty('Price').required_in_filter price_prop = car_entity.proprty('Price') assert price_prop.precision == 7 assert price_prop.scale == 3 # EntityType from the method typ assert schema.typ('MasterEntity') == schema.entity_type('MasterEntity') assert schema.typ('MasterEntity', namespace='EXAMPLE_SRV') == schema.entity_type('MasterEntity', namespace='EXAMPLE_SRV') # check that the collection of this EntityType was generated assert schema.typ('Collection(MasterEntity)', namespace='EXAMPLE_SRV') == schema._collections_entity_types('Collection(MasterEntity)', namespace='EXAMPLE_SRV') # ComplexType from the method typ assert schema.typ('Building') == schema.complex_type('Building') assert schema.typ('Building', namespace='EXAMPLE_SRV') == schema.complex_type('Building', namespace='EXAMPLE_SRV') # check that the collection of this ComplexType was generated assert schema.typ('Collection(Building)', namespace='EXAMPLE_SRV') == schema._collections_complex_types( 'Collection(Building)',namespace='EXAMPLE_SRV') # Error handling in the method typ - without namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.typ('FooBar') assert typ_ex_info.value.args[0] == 'Type FooBar does not exist in Schema' # Error handling in the method typ - with namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.typ('FooBar', namespace='EXAMPLE_SRV') assert typ_ex_info.value.args[0] == 'Type FooBar does not exist in Schema Namespace EXAMPLE_SRV' def test_schema_entity_type_nullable(schema): emp_entity = schema.entity_type('Employee') id_property = emp_entity.proprty('ID') assert not id_property.nullable firstname_property = emp_entity.proprty('NameFirst') assert firstname_property.nullable nickname_property = emp_entity.proprty('NickName') assert nickname_property.nullable @pytest.mark.parametrize('property_name,is_fixed_length,comment', [ ('Name', False, 'Name has no FixedLength property, defaults to false'), ('ID', True, 'Customer ID length is fixed'), ('City', False, 'City names have arbitrary lengths'), ]) def test_schema_entity_type_fixed_length(schema, property_name, is_fixed_length, comment): customer_entity = schema.entity_type('Customer') property_ = customer_entity.proprty(property_name) assert property_.fixed_length == is_fixed_length, comment def test_schema_entity_sets(schema): """Test Schema methods for EntitySets""" for entity_set in schema.entity_sets: assert schema.entity_set(entity_set.name) == entity_set assert schema.entity_set('Cities', namespace='EXAMPLE_SRV') is not None # without namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.entity_set('FooBar') assert typ_ex_info.value.args[0] == 'EntitySet FooBar does not exist in any Schema Namespace' # with unknown namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.entity_set('FooBar', namespace='BLAH') assert typ_ex_info.value.args[0] == 'EntitySet FooBar does not exist in Schema Namespace BLAH' # with namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.entity_set('FooBar', namespace='EXAMPLE_SRV') assert typ_ex_info.value.args[0] == 'EntitySet FooBar does not exist in Schema Namespace EXAMPLE_SRV' def test_edmx_associations(schema): """Test parsing of associations and association sets""" assert set((association.name for association in schema.associations)) == { 'toCarIDPic', 'toDataEntity', 'CustomerOrders', 'CustomerReferredBy', 'AssociationEmployeeAddress', 'toSelfMaster' } association = schema.association('toDataEntity') assert str(association) == 'Association(toDataEntity)' from_role = association.end_by_role('FromRole_toDataEntity') assert from_role.multiplicity == '1' assert str(from_role.entity_type) == 'EntityType(MasterEntity)' to_role = association.end_by_role('ToRole_toDataEntity') assert to_role.multiplicity == '*' assert str(to_role.entity_type) == 'EntityType(DataEntity)' principal_role = association.referential_constraint.principal assert principal_role.name == 'FromRole_toDataEntity' assert principal_role.property_names == ['Key'] dependent_role = association.referential_constraint.dependent assert dependent_role.name == 'ToRole_toDataEntity' assert dependent_role.property_names == ['Name'] assert set((association_set.name for association_set in schema.association_sets)) == { 'toDataEntitySet', 'AssociationEmployeeAddress_AssocSet', 'CustomerOrder_AssocSet', 'CustomerReferredBy_AssocSet', 'toCarIDPicSet', 'toSelfMasterSet' } association_set = schema.association_set('toDataEntitySet') assert str(association_set) == 'AssociationSet(toDataEntitySet)' assert association_set.association_type.name == 'toDataEntity' # check associated references to entity sets association_set = schema.association_set('toDataEntitySet') entity_sets = {end.entity_set.name for end in association_set.end_roles} assert entity_sets == {'MasterEntities', 'DataValueHelp'} end_roles = {(end.entity_set_name, end.role) for end in association_set.end_roles} assert end_roles == {('DataValueHelp', 'ToRole_toDataEntity'), ('MasterEntities', 'FromRole_toDataEntity')} # same entity sets in different ends association_set = schema.association_set('toSelfMasterSet') assert str(association_set) == 'AssociationSet(toSelfMasterSet)' end_roles = {(end.entity_set_name, end.role) for end in association_set.end_roles} assert end_roles == {('MasterEntities', 'ToRole_toSelfMaster'), ('MasterEntities', 'FromRole_toSelfMaster')} # with namespace association_set = schema.association_set_by_association('CustomerOrders', namespace='EXAMPLE_SRV_SETS') assert str(association_set) == 'AssociationSet(CustomerOrder_AssocSet)' # without namespace association_set = schema.association_set_by_association('CustomerOrders') assert str(association_set) == 'AssociationSet(CustomerOrder_AssocSet)' # error handling: without namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.association_set_by_association('FooBar') assert typ_ex_info.value.args[0] == 'Association Set for Association FooBar does not exist in any Schema Namespace' # error handling: with unknown namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.association_set_by_association('FooBar', namespace='BLAH') assert typ_ex_info.value.args[0] == 'There is no Schema Namespace BLAH' # error handling: with namespace with pytest.raises(KeyError) as typ_ex_info: assert schema.association_set_by_association('FooBar', namespace='EXAMPLE_SRV') assert typ_ex_info.value.args[0] == 'Association Set for Association FooBar does not exist in Schema Namespace EXAMPLE_SRV' def test_edmx_navigation_properties(schema): """Test parsing of navigation properties""" emp_entity = schema.entity_type('Employee') assert str(emp_entity) == 'EntityType(Employee)' assert emp_entity.name == 'Employee' nav_prop = emp_entity.nav_proprty('Addresses') assert str(nav_prop) == 'NavigationTypeProperty(Addresses)' assert str(nav_prop.to_role) == 'EndRole(AddressRole)' assert str(nav_prop.to_role.entity_type) == 'EntityType(Address)' def test_edmx_function_imports(schema): """Test parsing of function imports""" assert set((func_import.name for func_import in schema.function_imports)) == {'get_best_measurements', 'retrieve', 'get_max', 'sum', 'sum_complex', 'refresh'} # pylint: disable=redefined-outer-name function_import = schema.function_import('retrieve') assert str(function_import) == 'FunctionImport(retrieve)' assert function_import.name == 'retrieve' assert function_import.return_type.name == 'Edm.Boolean' assert function_import.entity_set_name == 'MasterEntities' assert function_import.http_method == 'GET' param = function_import.parameters[0] assert str(param) == 'FunctionImportParameter(Param)' assert param.name == 'Param' assert param.typ.name == 'Edm.String' assert not param.nullable assert param.max_length is None assert param.mode == 'In' assert param.typ.traits.to_literal('Foo') == "'Foo'" assert param.typ.traits.from_literal("'Foo'") == 'Foo' # function import without return type function_import = schema.function_import('refresh') assert function_import.return_type is None assert function_import.http_method == 'GET' # function import that returns entity function_import = schema.function_import('get_max') assert str(function_import) == 'FunctionImport(get_max)' assert function_import.name == 'get_max' assert repr(function_import.return_type) == 'EntityType(TemperatureMeasurement)' assert function_import.return_type.kind == Typ.Kinds.Complex assert repr(function_import.return_type.traits) == 'EdmStructTypTraits' assert function_import.entity_set_name == 'TemperatureMeasurements' assert function_import.http_method == 'GET' # function import that returns collection of entities function_import = schema.function_import('get_best_measurements') assert str(function_import) == 'FunctionImport(get_best_measurements)' assert function_import.name == 'get_best_measurements' assert repr(function_import.return_type) == 'Collection(EntityType(TemperatureMeasurement))' assert function_import.return_type.kind == Typ.Kinds.Complex assert function_import.return_type.is_collection assert repr(function_import.return_type.traits) == 'Collection(EntityType(TemperatureMeasurement))' assert function_import.http_method == 'GET' def test_edmx_complex_types(schema): """Test parsing of complex types""" # pylint: disable=redefined-outer-name assert set(schema.namespaces) == {'EXAMPLE_SRV', 'EXAMPLE_SRV_SETS'} assert set((complex_type.name for complex_type in schema.complex_types)) == {'Building', 'ComplexNumber', 'Rectangle'} complex_number = schema.complex_type('ComplexNumber') assert str(complex_number) == 'ComplexType(ComplexNumber)' assert complex_number.name == 'ComplexNumber' assert sorted([p.name for p in complex_number.proprties()]) == ['Imaginary', 'Real'] real_prop = complex_number.proprty('Real') assert str(real_prop) == 'StructTypeProperty(Real)' assert str(real_prop.struct_type) == 'ComplexType(ComplexNumber)' # after correct parsing, new complex type is registered in metadata schema assert str(schema.typ('ComplexNumber')) == 'ComplexType(ComplexNumber)' assert str(schema.typ('Collection(ComplexNumber)')) == 'Collection(ComplexNumber)' def test_edmx_complex_type_prop_vh(schema): """Check that value helpers work also for ComplexType properties and aliases""" building = schema.complex_type('Building') city_prop = building.proprty('City') city_prop_vh = city_prop.value_helper assert city_prop_vh is not None assert city_prop_vh.proprty.name == 'City' assert city_prop_vh.entity_set.name == 'Cities' assert city_prop_vh.entity_set.entity_type.name == 'City' def test_traits(): """Test individual traits""" # generic typ = Types.from_name('Edm.Byte') assert repr(typ.traits) == 'TypTraits' assert typ.traits.to_literal('85') == '85' assert typ.traits.from_literal('170') == '170' # binary typ = Types.from_name('Edm.Binary') assert repr(typ.traits) == 'EdmBinaryTypTraits' assert typ.traits.to_literal('wAHK/rqt8A0=') == 'binary\'C001CAFEBAADF00D\'' assert typ.traits.from_literal('binary\'C001cafeBAADF00D\'') == 'wAHK/rqt8A0=' assert typ.traits.from_literal('X\'C001cafeBAADF00D\'') == 'wAHK/rqt8A0=' assert typ.traits.to_json('cHlvZGF0YQ==') == 'cHlvZGF0YQ==' assert typ.traits.from_json('cHlvZGF0YQ==') == 'cHlvZGF0YQ==' # string typ = Types.from_name('Edm.String') assert repr(typ.traits) == 'EdmStringTypTraits' assert typ.traits.to_literal('Foo Foo') == "'Foo Foo'" assert typ.traits.from_literal("'Alice Bob'") == 'Alice Bob' # bool typ = Types.from_name('Edm.Boolean') assert repr(typ.traits) == 'EdmBooleanTypTraits' assert typ.traits.to_literal(True) == 'true' assert typ.traits.from_literal('true') is True assert typ.traits.to_literal(False) == 'false' assert typ.traits.from_literal('false') is False assert typ.traits.to_literal(1) == 'true' assert typ.traits.to_literal(0) == 'false' assert typ.traits.from_json(True) is True assert typ.traits.from_json(False) is False # integers typ = Types.from_name('Edm.Int16') assert repr(typ.traits) == 'EdmIntTypTraits' assert typ.traits.to_literal(23) == '23' assert typ.traits.from_literal('345') == 345 typ = Types.from_name('Edm.Int32') assert repr(typ.traits) == 'EdmIntTypTraits' assert typ.traits.to_literal(23) == '23' assert typ.traits.from_literal('345') == 345 typ = Types.from_name('Edm.Int64') assert repr(typ.traits) == 'EdmLongIntTypTraits' assert typ.traits.to_literal(23) == '23L' assert typ.traits.from_literal('345L') == 345 assert typ.traits.from_json('345L') == 345 assert typ.traits.from_literal('345') == 345 assert typ.traits.from_json('345') == 345 assert typ.traits.from_literal('0') == 0 assert typ.traits.from_json('0') == 0 assert typ.traits.from_literal('0L') == 0 assert typ.traits.from_json('0L') == 0 typ = Types.from_name('Edm.Double') assert repr(typ.traits) == 'EdmFPNumTypTraits(15,d)' assert typ.traits.from_literal('1E+10d') == 10.0**10 assert typ.traits.from_literal('1E+10') == 10.0**10 assert typ.traits.from_literal('2.029d') == 2.029 assert typ.traits.from_literal('2.0d') == 2.0 assert typ.traits.from_json('2.0d') == 2.0 assert typ.traits.to_literal(10.0**10) == '1.000000E+10' assert typ.traits.to_literal(2.029) == '2.029000E+00' assert typ.traits.to_literal(2.0) == '2.000000E+00' assert typ.traits.to_json(2.0) == '2.000000E+00' typ = Types.from_name('Edm.Single') assert repr(typ.traits) == 'EdmFPNumTypTraits(7,f)' assert typ.traits.from_literal('2.029f') == 2.029 assert typ.traits.from_literal('2.029') == 2.029 assert typ.traits.from_json('2.029f') == 2.029 assert typ.traits.to_literal(2.029) == '2.029000' assert typ.traits.to_json(2.029) == '2.029000' typ = Types.from_name('Edm.Float') assert repr(typ.traits) == 'EdmFPNumTypTraits(7,d)' assert typ.traits.from_literal('2.029d') == 2.029 assert typ.traits.from_literal('2.029') == 2.029 assert typ.traits.from_json('2.029d') == 2.029 assert typ.traits.from_json('3.76000000E+04') == 3.76*10**4 assert typ.traits.to_literal(2.029) == '2.029000E+00' assert typ.traits.to_json(2.029) == '2.029000E+00' # GUIDs typ = Types.from_name('Edm.Guid') assert repr(typ.traits) == 'EdmPrefixedTypTraits' assert typ.traits.to_literal('000-0000') == "guid'000-0000'" assert typ.traits.from_literal("guid'1234-56'") == '1234-56' with pytest.raises(PyODataModelError) as e_info: typ.traits.from_literal("'1234-56'") assert str(e_info.value).startswith("Malformed value '1234-56' for primitive") @pytest.mark.parametrize('datetime_literal,expected', [ ('2001-02-03T04:05:06.000007', datetime(2001, 2, 3, 4, 5, 6, microsecond=7)), ('2001-02-03T04:05:06', datetime(2001, 2, 3, 4, 5, 6, 0)), ('2001-02-03T04:05', datetime(2001, 2, 3, 4, 5, 0, 0)), ]) def test_parse_datetime_literal(datetime_literal, expected): assert parse_datetime_literal(datetime_literal) == expected @pytest.mark.parametrize('illegal_input', [ '2001-02-03T04:05:61', '2001-02-03T04:61', '2001-02-03T24:05', '2001-02-32T04:05', '2001-13-03T04:05', '2001-00-03T04:05', '01-02-03T04:05', '2001-02-03T04:05.AAA', '', ]) def test_parse_datetime_literal_faulty(illegal_input): with pytest.raises(PyODataModelError) as e_info: parse_datetime_literal(f'{illegal_input}') assert str(e_info.value).startswith(f'Cannot decode datetime from value {illegal_input}') def test_traits_datetime(type_date_time): """Test Edm.DateTime traits""" type_date_time = Types.from_name('Edm.DateTime') assert repr(type_date_time.traits) == 'EdmDateTimeTypTraits' # 1. direction Python -> OData testdate = datetime(2005, 1, 28, 18, 30, 44, 123456, tzinfo=timezone.utc) assert type_date_time.traits.to_literal(testdate) == "datetime'2005-01-28T18:30:44.123456'" # without miliseconds part testdate = datetime(2005, 1, 28, 18, 30, 44, 0, tzinfo=timezone.utc) assert type_date_time.traits.to_literal(testdate) == "datetime'2005-01-28T18:30:44'" # serialization of invalid value with pytest.raises(PyODataModelError) as e_info: type_date_time.traits.to_literal('xyz') assert str(e_info.value).startswith('Cannot convert value of type') # 2. direction Literal -> python # parsing full representation testdate = type_date_time.traits.from_literal("datetime'1976-11-23T03:33:06.654321'") assert testdate.year == 1976 assert testdate.month == 11 assert testdate.day == 23 assert testdate.hour == 3 assert testdate.minute == 33 assert testdate.second == 6 assert testdate.microsecond == 654321 assert testdate.tzinfo == timezone.utc # parsing without miliseconds testdate = type_date_time.traits.from_literal("datetime'1976-11-23T03:33:06'") assert testdate.year == 1976 assert testdate.second == 6 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone.utc # parsing without seconds and miliseconds testdate = type_date_time.traits.from_literal("datetime'1976-11-23T03:33'") assert testdate.year == 1976 assert testdate.minute == 33 assert testdate.second == 0 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone.utc # parsing invalid value with pytest.raises(PyODataModelError) as e_info: type_date_time.traits.from_literal('xyz') assert str(e_info.value).startswith('Malformed value xyz for primitive') with pytest.raises(PyODataModelError) as e_info: type_date_time.traits.from_literal("datetime'xyz'") assert str(e_info.value).startswith('Cannot decode datetime from value xyz') # 3. direction OData -> python # parsing full representation testdate = type_date_time.traits.from_json("/Date(217567986010)/") assert testdate.year == 1976 assert testdate.month == 11 assert testdate.day == 23 assert testdate.hour == 3 assert testdate.minute == 33 assert testdate.second == 6 assert testdate.microsecond == 10000 assert testdate.tzinfo == timezone.utc # parsing without miliseconds testdate = type_date_time.traits.from_json("/Date(217567986000)/") assert testdate.year == 1976 assert testdate.second == 6 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone.utc # parsing without seconds and miliseconds testdate = type_date_time.traits.from_json("/Date(217567980000)/") assert testdate.year == 1976 assert testdate.minute == 33 assert testdate.second == 0 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone.utc # parsing below lowest value with workaround pyodata.v2.model.FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE = True testdate = type_date_time.traits.from_json("/Date(-62135596800001)/") assert testdate.year == 1 assert testdate.month == 1 assert testdate.day == 1 assert testdate.tzinfo == timezone.utc # parsing the lowest value pyodata.v2.model.FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE = False with pytest.raises(PyODataModelError) as e_info: type_date_time.traits.from_json("/Date(-62135596800001)/") assert str(e_info.value).startswith('Cannot decode datetime from value -62135596800001.') testdate = type_date_time.traits.from_json("/Date(-62135596800000)/") assert testdate.year == 1 assert testdate.month == 1 assert testdate.day == 1 assert testdate.hour == 0 assert testdate.minute == 0 assert testdate.second == 0 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone.utc # parsing above highest value with workaround pyodata.v2.model.FIX_SCREWED_UP_MAXIMUM_DATETIME_VALUE = True testdate = type_date_time.traits.from_json("/Date(253402300800000)/") assert testdate.year == 9999 assert testdate.month == 12 assert testdate.day == 31 assert testdate.tzinfo == timezone.utc # parsing the highest value pyodata.v2.model.FIX_SCREWED_UP_MAXIMUM_DATETIME_VALUE = False with pytest.raises(PyODataModelError) as e_info: type_date_time.traits.from_json("/Date(253402300800000)/") assert str(e_info.value).startswith('Cannot decode datetime from value 253402300800000.') testdate = type_date_time.traits.from_json("/Date(253402300799999)/") assert testdate.year == 9999 assert testdate.month == 12 assert testdate.day == 31 assert testdate.hour == 23 assert testdate.minute == 59 assert testdate.second == 59 assert testdate.microsecond == 999000 assert testdate.tzinfo == timezone.utc # parsing invalid value with pytest.raises(PyODataModelError) as e_info: type_date_time.traits.from_json("xyz") assert str(e_info.value).startswith('Malformed value xyz for primitive') with pytest.raises(PyODataModelError) as e_info: type_date_time.traits.from_json("/Date(xyz)/") assert str(e_info.value).startswith('Malformed value /Date(xyz)/ for primitive Edm.DateTime type.') def test_traits_datetime_with_offset_from_json(type_date_time): """Test Edm.DateTime with offset""" # +10 hours offset, yet must be converted to UTC testdate = type_date_time.traits.from_json("/Date(217567986010+0600)/") assert testdate.year == 1976 assert testdate.month == 11 assert testdate.day == 23 assert testdate.hour == 13 # 3 + 10 hours offset assert testdate.minute == 33 assert testdate.second == 6 assert testdate.microsecond == 10000 assert testdate.tzinfo == timezone.utc @pytest.mark.parametrize('python_datetime,expected,comment', [ (datetime(1976, 11, 23, 3, 33, 6, microsecond=123000, tzinfo=timezone.utc), '/Date(217567986123)/', 'With milliseconds'), (datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone.utc), '/Date(217567986000)/', 'No milliseconds'), ]) def test_traits_datetime_with_offset_to_json(type_date_time, python_datetime, expected, comment): """Test Edm.DateTimeOffset trait: Python -> json""" assert type_date_time.traits.to_json(python_datetime) == expected, comment def test_traits_datetimeoffset(type_date_time_offset): """Test Edm.DateTimeOffset traits""" assert repr(type_date_time_offset.traits) == 'EdmDateTimeOffsetTypTraits' def test_traits_datetimeoffset_to_literal(type_date_time_offset): """Test Edm.DateTimeOffset trait: Python -> literal""" testdate = datetime(1, 1, 1, 0, 0, 0, 0, tzinfo=timezone.utc) assert type_date_time_offset.traits.to_literal(testdate) == "datetimeoffset'0001-01-01T00:00:00+00:00'" testdate = datetime(2005, 1, 28, 18, 30, 44, 123456, tzinfo=timezone(timedelta(hours=3, minutes=40))) assert type_date_time_offset.traits.to_literal(testdate) == "datetimeoffset'2005-01-28T18:30:44.123456+03:40'" # without milliseconds part, negative offset testdate = datetime(2005, 1, 28, 18, 30, 44, 0, tzinfo=timezone(-timedelta(minutes=100))) assert type_date_time_offset.traits.to_literal(testdate) == "datetimeoffset'2005-01-28T18:30:44-01:40'" def test_traits_invalid_datetimeoffset_to_literal(type_date_time_offset): # serialization of invalid value with pytest.raises(PyODataModelError) as e_info: type_date_time_offset.traits.to_literal('xyz') assert str(e_info.value).startswith('Cannot convert value of type') @pytest.mark.parametrize('python_datetime,expected,comment', [ (datetime(1976, 11, 23, 3, 33, 6, microsecond=123000, tzinfo=timezone.utc), '/Date(217567986123+0000)/', 'UTC'), (datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=14))), '/Date(217567986000+0840)/', '+14 hours'), (datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=-12))), '/Date(217567986000-0720)/', '-12 hours'), ]) def test_traits_datetimeoffset_to_json(type_date_time_offset, python_datetime, expected, comment): """Test Edm.DateTimeOffset trait: Python -> json""" assert type_date_time_offset.traits.to_json(python_datetime) == expected, comment @pytest.mark.parametrize('literal,expected,comment', [ ("datetimeoffset'1976-11-23T03:33:06.654321+12:11'", datetime(1976, 11, 23, 3, 33, 6, microsecond=654321, tzinfo=timezone(timedelta(hours=12, minutes=11))), 'Full representation'), ("datetimeoffset'1976-11-23T03:33:06+12:11'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=12, minutes=11))), 'No milliseconds'), ("datetimeoffset'1976-11-23T03:33:06-01:00'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=-1))), 'Negative offset'), ("datetimeoffset'1976-11-23t03:33:06-01:00'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=-1))), "lowercase 'T' is valid"), ("datetimeoffset'1976-11-23T03:33:06+00:00'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone.utc), '+00:00 is UTC'), ("datetimeoffset'1976-11-23T03:33:06-00:00'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone.utc), '-00:00 is UTC'), ("datetimeoffset'1976-11-23t03:33:06Z'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone.utc), 'Z is UTC'), ("datetimeoffset'1976-11-23t03:33:06+12:00'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=12))), 'On dateline'), ("datetimeoffset'1976-11-23t03:33:06-12:00'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=-12))), 'Minimum offset'), ("datetimeoffset'1976-11-23t03:33:06+14:00'", datetime(1976, 11, 23, 3, 33, 6, tzinfo=timezone(timedelta(hours=14))), 'Maximum offset'), ]) def test_traits_datetimeoffset_from_literal(type_date_time_offset, literal, expected, comment): """Test Edm.DateTimeOffset trait: literal -> Python""" assert expected == type_date_time_offset.traits.from_literal(literal), comment def test_traits_datetimeoffset_from_invalid_literal(type_date_time_offset): with pytest.raises(PyODataModelError) as e_info: type_date_time_offset.traits.from_literal('xyz') assert str(e_info.value).startswith('Malformed value xyz for primitive') with pytest.raises(PyODataModelError) as e_info: type_date_time_offset.traits.from_literal("datetimeoffset'xyz'") assert str(e_info.value).startswith('Cannot decode datetimeoffset from value xyz') def test_traits_datetimeoffset_from_json(type_date_time_offset): """Test Edm.DateTimeOffset trait: OData -> Python""" # parsing full representation testdate = type_date_time_offset.traits.from_json("/Date(217567986010+0060)/") assert testdate.year == 1976 assert testdate.month == 11 assert testdate.day == 23 assert testdate.hour == 3 assert testdate.minute == 33 assert testdate.second == 6 assert testdate.microsecond == 10000 assert testdate.tzinfo == timezone(timedelta(hours=1)) # parsing without milliseconds, negative offset testdate = type_date_time_offset.traits.from_json("/Date(217567986000-0005)/") assert testdate.year == 1976 assert testdate.minute == 33 assert testdate.second == 6 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone(-timedelta(minutes=5)) # parsing special edge case with no offset provided, defaults to UTC testdate = type_date_time_offset.traits.from_json("/Date(217567986000)/") assert testdate.year == 1976 assert testdate.minute == 33 assert testdate.second == 6 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone.utc # parsing below lowest value with workaround pyodata.v2.model.FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE = True testdate = type_date_time_offset.traits.from_json("/Date(-62135596800001+0001)/") assert testdate.year == 1 assert testdate.month == 1 assert testdate.day == 1 assert testdate.minute == 0 assert testdate.tzinfo == timezone(timedelta(minutes=1)) # parsing the lowest value pyodata.v2.model.FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE = False with pytest.raises(PyODataModelError) as e_info: type_date_time_offset.traits.from_json("/Date(-62135596800001+0001)/") assert str(e_info.value).startswith('Cannot decode datetime from value -62135596800001.') testdate = type_date_time_offset.traits.from_json("/Date(-62135596800000+0055)/") assert testdate.year == 1 assert testdate.month == 1 assert testdate.day == 1 assert testdate.hour == 0 assert testdate.minute == 0 assert testdate.second == 0 assert testdate.microsecond == 0 assert testdate.tzinfo == timezone(timedelta(minutes=55)) # parsing above highest value with workaround pyodata.v2.model.FIX_SCREWED_UP_MAXIMUM_DATETIME_VALUE = True testdate = type_date_time_offset.traits.from_json("/Date(253402300800000+0055)/") assert testdate.year == 9999 assert testdate.month == 12 assert testdate.day == 31 assert testdate.minute == 0 assert testdate.tzinfo == timezone(timedelta(minutes=55)) # parsing the highest value pyodata.v2.model.FIX_SCREWED_UP_MAXIMUM_DATETIME_VALUE = False with pytest.raises(PyODataModelError) as e_info: type_date_time_offset.traits.from_json("/Date(253402300800000+0055)/") assert str(e_info.value).startswith('Cannot decode datetime from value 253402300800000.') testdate = type_date_time_offset.traits.from_json("/Date(253402300799999-0001)/") assert testdate.year == 9999 assert testdate.month == 12 assert testdate.day == 31 assert testdate.hour == 23 assert testdate.minute == 59 assert testdate.second == 59 assert testdate.microsecond == 999000 assert testdate.tzinfo == timezone(-timedelta(minutes=1)) # parsing invalid value with pytest.raises(PyODataModelError) as e_info: type_date_time_offset.traits.from_json("xyz") assert str(e_info.value).startswith('Malformed value xyz for primitive') with pytest.raises(PyODataModelError) as e_info: type_date_time_offset.traits.from_json("/Date(xyz)/") assert str(e_info.value).startswith('Malformed value /Date(xyz)/ for primitive Edm.DateTimeOffset type.') def test_traits_collections(): """Test collection traits""" typ = Types.from_name('Collection(Edm.Int32)') assert typ.traits.from_json(['23', '34']) == [23, 34] typ = Types.from_name('Collection(Edm.String)') assert typ.traits.from_json(['Bob', 'Alice']) == ['Bob', 'Alice'] def test_type_parsing(): """Test parsing of type names""" type_info = Types.parse_type_name('Edm.Boolean') assert type_info[0] is None assert type_info[1] == 'Edm.Boolean' assert not type_info[2] type_info = Types.parse_type_name('SomeType') assert type_info[0] is None assert type_info[1] == 'SomeType' assert not type_info[2] type_info = Types.parse_type_name('SomeNamespace.SomeType') assert type_info[0] == 'SomeNamespace' assert type_info[1] == 'SomeType' assert not type_info[2] # collections type_info = Types.parse_type_name('Collection(Edm.String)') assert type_info[0] is None assert type_info[1] == 'Edm.String' assert type_info[2] type_info = Types.parse_type_name('Collection(SomeType)') assert type_info[0] is None assert type_info[1] == 'SomeType' assert type_info[2] type_info = Types.parse_type_name('Collection(SomeNamespace.SomeType)') assert type_info[0] == 'SomeNamespace' assert type_info[1] == 'SomeType' assert type_info[2] def test_types(): """Test Types repository""" # generic for type_name in ['Edm.Binary', 'Edm.String', 'Edm.Int16', 'Edm.Guid']: typ = Types.from_name(type_name) assert typ.kind == Typ.Kinds.Primitive assert not typ.is_collection # Collection of primitive types typ = Types.from_name('Collection(Edm.String)') assert repr(typ) == 'Collection(Typ(Edm.String))' assert typ.kind is Typ.Kinds.Primitive assert typ.is_collection assert typ.name == 'Edm.String' def test_complex_serializer(schema): """Test de/serializer of complex edm types""" # pylint: disable=redefined-outer-name # encode without edm type information with pytest.raises(PyODataException) as e_info: EdmStructTypeSerializer().to_literal(None, 'something') assert str(e_info.value).startswith('Cannot encode value something') # decode without edm type information with pytest.raises(PyODataException) as e_info: EdmStructTypeSerializer().from_json(None, 'something') assert str(e_info.value).startswith('Cannot decode value something') # entity without properties entity_type = EntityType('Box', 'Box', False) srl = EdmStructTypeSerializer() assert srl.to_literal(entity_type, 'something') == {} assert srl.from_json(entity_type, 'something') == {} # entity with properties of ODATA primitive types entity_type = schema.entity_type('TemperatureMeasurement') assert srl.to_literal(entity_type, {'ignored-key': 'ignored-value', 'Sensor': 'x'}) == {'Sensor': "'x'"} assert srl.from_json(entity_type, {'ignored-key': 'ignored-value', 'Sensor': "'x'"}) == {'Sensor': 'x'} @patch('logging.Logger.warning') def test_annot_v_l_missing_e_s(mock_warning, xml_builder_factory): """Test correct handling of annotations whose entity set does not exist""" xml_builder = xml_builder_factory() xml_builder.add_schema( 'MISSING_ES', """ """ ) metadata = MetadataBuilder(xml_builder.serialize()) with pytest.raises(RuntimeError) as e_info: metadata.build() assert str(e_info.value) == 'Entity Set DataValueHelp for ValueHelper(Dict/Value) does not exist' metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyWarning() }) metadata.build() assert_logging_policy(mock_warning, 'RuntimeError', 'Entity Set DataValueHelp for ValueHelper(Dict/Value) does not exist' ) @patch('logging.Logger.warning') def test_annot_v_l_missing_e_t(mock_warning, xml_builder_factory): """Test correct handling of annotations whose target type does not exist""" xml_builder = xml_builder_factory() xml_builder.add_schema( 'MISSING_ET', """ """ ) metadata = MetadataBuilder(xml_builder.serialize()) try: metadata.build() assert 'Expected' == 'RuntimeError' except RuntimeError as ex: assert str(ex) == 'Target Type Dict of ValueHelper(Dict/Value) does not exist' metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyWarning() }) metadata.build() assert_logging_policy(mock_warning, 'RuntimeError', 'Target Type Dict of ValueHelper(Dict/Value) does not exist' ) @patch('pyodata.v2.model.PolicyIgnore.resolve') @patch('logging.Logger.warning') def test_annot_v_l_trgt_inv_prop(mock_warning, mock_resolve, xml_builder_factory): """Test correct handling of annotations whose target property does not exist""" xml_builder = xml_builder_factory() xml_builder.add_schema( 'MISSING_TP', """ """ ) metadata = MetadataBuilder(xml_builder.serialize()) with pytest.raises(RuntimeError) as typ_ex_info: metadata.build() assert typ_ex_info.value.args[0] == 'Target Property NoExisting of EntityType(Dict) as defined in ' \ 'ValueHelper(Dict/NoExisting) does not exist' metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyIgnore() }) metadata.build() assert PolicyIgnore.resolve is mock_resolve mock_resolve.assert_called_once() metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyWarning() }) metadata.build() assert_logging_policy(mock_warning, 'RuntimeError', 'Target Property NoExisting of EntityType(Dict) as defined in ValueHelper(Dict/NoExisting)' ' does not exist' ) def test_namespace_with_periods(xml_builder_factory): """Make sure Namespace can contain period""" xml_builder = xml_builder_factory() xml_builder.add_schema( 'Several.Levels.Of.Names', """ """ ) schema = MetadataBuilder(xml_builder.serialize()).build() db_entity = schema.entity_type('Database') nav_prop = db_entity.nav_proprty('Tables') assert str(nav_prop) == 'NavigationTypeProperty(Tables)' assert str(nav_prop.to_role) == 'EndRole(Table)' assert str(nav_prop.to_role.entity_type) == 'EntityType(Dict)' association_info = nav_prop.association_info association_set = schema.association_set_by_association(association_info.name, association_info.namespace) assert association_set is not None end_role = association_set.end_by_role(nav_prop.to_role.role) assert end_role is not None def test_edmx_entity_sets(schema): """Test EntitySet""" assert schema.entity_set('Cities').requires_filter is False assert schema.entity_set('CitiesWithFilter').requires_filter is True assert schema.entity_set('Cities').addressable is True assert schema.entity_set('CitiesNotAddressable').addressable is False cars_set = schema.entity_set('Cars') assert cars_set.pageable is False assert cars_set.countable is False assert cars_set.searchable is False assert cars_set.topable is True def test_config_set_default_error_policy(): """ Test configurability of policies """ config = Config( custom_error_policies={ ParserError.ANNOTATION: PolicyWarning() } ) assert isinstance(config.err_policy(ParserError.ENTITY_TYPE), PolicyFatal) assert isinstance(config.err_policy(ParserError.ANNOTATION), PolicyWarning) config.set_default_error_policy(PolicyIgnore()) assert isinstance(config.err_policy(ParserError.ENTITY_TYPE), PolicyIgnore) assert isinstance(config.err_policy(ParserError.ANNOTATION), PolicyIgnore) def test_null_type(xml_builder_factory): """ Test NullType being correctly assigned to invalid types""" xml_builder = xml_builder_factory() xml_builder.add_schema('TEST.NAMESPACE', """ """) metadata = MetadataBuilder( xml_builder.serialize(), config=Config( default_error_policy=PolicyIgnore() )) schema = metadata.build() type_info = TypeInfo(namespace=None, name='MasterProperty', is_collection=False) assert isinstance(schema.get_type(type_info).proprty('Key').typ, NullType) type_info = TypeInfo(namespace=None, name='MasterEnum', is_collection=False) assert isinstance(schema.get_type(type_info), NullType) type_info = TypeInfo(namespace=None, name='MasterComplex', is_collection=False) assert isinstance(schema.get_type(type_info), NullType) type_info = TypeInfo(namespace=None, name='MasterEntity', is_collection=False) assert isinstance(schema.get_type(type_info), NullType) with pytest.raises(PyODataModelError) as typ_ex_info: schema.get_type(type_info).Any assert typ_ex_info.value.args[0] == f'Cannot access this type. An error occurred during parsing type ' \ f'stated in xml({schema.get_type(type_info).name}) was not found, therefore it has been ' \ f'replaced with NullType.' def test_faulty_association(xml_builder_factory): """ Test NullAssociation being correctly assigned to invalid associations""" xml_builder = xml_builder_factory() xml_builder.add_schema('EXAMPLE_SRV', """ """) metadata = MetadataBuilder( xml_builder.serialize(), config=Config( default_error_policy=PolicyIgnore() )) schema = metadata.build() assert schema.is_valid == False assert isinstance(schema.associations[0], NullAssociation) with pytest.raises(PyODataModelError) as typ_ex_info: schema.associations[0].Any assert typ_ex_info.value.args[0] == 'Cannot access this association. An error occurred during parsing ' \ 'association metadata due to that annotation has been omitted.' def test_faulty_association_set(xml_builder_factory): """ Test NullAssociation being correctly assigned to invalid associations""" xml_builder = xml_builder_factory() xml_builder.add_schema('EXAMPLE_SRV', """ """) metadata = MetadataBuilder( xml_builder.serialize(), config=Config( default_error_policy=PolicyWarning() )) schema = metadata.build() assert schema.is_valid == False assert isinstance(schema.association_set('toDataEntitySet'), NullAssociation) with pytest.raises(PyODataModelError) as typ_ex_info: schema.association_set('toDataEntitySet').Any assert typ_ex_info.value.args[0] == 'Cannot access this association. An error occurred during parsing ' \ 'association metadata due to that annotation has been omitted.' def test_missing_association_for_navigation_property(xml_builder_factory): """ Test faulty aassociations on navigation property""" xml_builder = xml_builder_factory() xml_builder.add_schema('EXAMPLE_SRV', """ """) metadata = MetadataBuilder(xml_builder.serialize()) with pytest.raises(KeyError) as typ_ex_info: metadata.build() assert typ_ex_info.value.args[0] == 'Association Followers does not exist in namespace EXAMPLE_SRV' def test_edmx_association_end_by_role(): """Test the method end_by_role of the class Association""" end_from = EndRole(None, EndRole.MULTIPLICITY_ONE, 'From') end_to = EndRole(None, EndRole.MULTIPLICITY_ZERO_OR_ONE, 'To') association = Association('FooBar') association.end_roles.append(end_from) association.end_roles.append(end_to) assert association.end_by_role(end_from.role) == end_from assert association.end_by_role(end_to.role) == end_to with pytest.raises(KeyError) as typ_ex_info: association.end_by_role('Blah') assert typ_ex_info.value.args[0] == 'Association FooBar has no End with Role Blah' def test_edmx_association_set_end_by_role(): """Test the method end_by_role of the class AssociationSet""" end_from = AssociationSetEndRole('From', 'EntitySet') end_to = AssociationSetEndRole('To', 'EntitySet') association_set = AssociationSet('FooBar', 'Foo', 'EXAMPLE_SRV', [end_from, end_to]) assert association_set.end_by_role(end_from.role) == end_from assert association_set.end_by_role(end_to.role) == end_to def test_edmx_association_set_end_by_entity_set(): """Test the method end_by_entity_set of the class AssociationSet""" end_from = AssociationSetEndRole('From', 'EntitySet1') end_to = AssociationSetEndRole('To', 'EntitySet2') association_set = AssociationSet('FooBar', 'Foo', 'EXAMPLE_SRV', [end_from, end_to]) assert association_set.end_by_entity_set(end_from.entity_set_name) == end_from assert association_set.end_by_entity_set(end_to.entity_set_name) == end_to def test_missing_data_service(xml_builder_factory): """Test correct handling of missing DataService tag in xml""" xml_builder = xml_builder_factory() xml_builder.data_services_is_enabled = False xml = xml_builder.serialize() try: MetadataBuilder(xml).build() except PyODataParserError as ex: assert str(ex) == 'Metadata document is missing the element DataServices' def test_missing_schema(xml_builder_factory): """Test correct handling of missing Schema tag in xml""" xml_builder = xml_builder_factory() xml_builder.schema_is_enabled = False xml = xml_builder.serialize() try: MetadataBuilder(xml).build() except PyODataParserError as ex: assert str(ex) == 'Metadata document is missing the element Schema' @patch.object(Schema, 'from_etree') def test_namespace_whitelist(mock_from_etree, xml_builder_factory): """Test correct handling of whitelisted namespaces""" xml_builder = xml_builder_factory() xml_builder.namespaces['edmx'] = 'http://docs.oasis-open.org/odata/ns/edmx' xml_builder.namespaces['edm'] = 'http://docs.oasis-open.org/odata/ns/edm' xml_builder.add_schema('', '') xml = xml_builder.serialize() MetadataBuilder(xml).build() assert Schema.from_etree is mock_from_etree mock_from_etree.assert_called_once() @patch.object(Schema, 'from_etree') def test_unsupported_edmx_n(mock_from_etree, xml_builder_factory): """Test correct handling of non-whitelisted Edmx namespaces""" xml_builder = xml_builder_factory() edmx = 'wedonotsupportthisnamespace.com' xml_builder.namespaces['edmx'] = edmx xml_builder.add_schema('', '') xml = xml_builder.serialize() MetadataBuilder( xml, config=Config( xml_namespaces={'edmx': edmx} ) ).build() assert Schema.from_etree is mock_from_etree mock_from_etree.assert_called_once() try: MetadataBuilder(xml).build() except PyODataParserError as ex: assert str(ex) == f'Unsupported Edmx namespace - {edmx}' mock_from_etree.assert_called_once() @patch.object(Schema, 'from_etree') def test_unsupported_schema_n(mock_from_etree, xml_builder_factory): """Test correct handling of non-whitelisted Schema namespaces""" xml_builder = xml_builder_factory() edm = 'wedonotsupportthisnamespace.com' xml_builder.namespaces['edm'] = edm xml_builder.add_schema('', '') xml = xml_builder.serialize() MetadataBuilder( xml, config=Config( xml_namespaces={'edm': edm} ) ).build() assert Schema.from_etree is mock_from_etree mock_from_etree.assert_called_once() try: MetadataBuilder(xml).build() except PyODataParserError as ex: assert str(ex) == f'Unsupported Schema namespace - {edm}' mock_from_etree.assert_called_once() @patch.object(Schema, 'from_etree') def test_whitelisted_edm_namespace(mock_from_etree, xml_builder_factory): """Test correct handling of whitelisted Microsoft's edm namespace""" xml_builder = xml_builder_factory() xml_builder.namespaces['edm'] = 'http://schemas.microsoft.com/ado/2009/11/edm' xml_builder.add_schema('', '') xml = xml_builder.serialize() MetadataBuilder(xml).build() assert Schema.from_etree is mock_from_etree mock_from_etree.assert_called_once() @patch.object(Schema, 'from_etree') def test_whitelisted_edm_namespace_2006_04(mock_from_etree, xml_builder_factory): """Test correct handling of whitelisted Microsoft's edm namespace""" xml_builder = xml_builder_factory() xml_builder.namespaces['edm'] = 'http://schemas.microsoft.com/ado/2006/04/edm' xml_builder.add_schema('', '') xml = xml_builder.serialize() MetadataBuilder(xml).build() assert Schema.from_etree is mock_from_etree mock_from_etree.assert_called_once() @patch.object(Schema, 'from_etree') def test_whitelisted_edm_namespace_2007_05(mock_from_etree, xml_builder_factory): """Test correct handling of whitelisted Microsoft's edm namespace""" xml_builder = xml_builder_factory() xml_builder.namespaces['edm'] = 'http://schemas.microsoft.com/ado/2007/05/edm' xml_builder.add_schema('', '') xml = xml_builder.serialize() MetadataBuilder(xml).build() assert Schema.from_etree is mock_from_etree mock_from_etree.assert_called_once() def test_enum_parsing(schema): """Test correct parsing of enum""" country = schema.enum_type('Country').USA assert str(country) == "Country'USA'" country2 = schema.enum_type('Country')['USA'] assert str(country2) == "Country'USA'" try: schema.enum_type('Country').Cyprus except PyODataException as ex: assert str(ex) == f'EnumType EnumType(Country) has no member Cyprus' c = schema.enum_type('Country')[1] assert str(c) == "Country'China'" try: schema.enum_type('Country')[15] except PyODataException as ex: assert str(ex) == f'EnumType EnumType(Country) has no member with value {15}' type_info = TypeInfo(namespace=None, name='Country', is_collection=False) try: schema.get_type(type_info) except PyODataModelError as ex: assert str(ex) == f'Neither primitive types nor types parsed from service metadata contain requested type {type_info[0]}' language = schema.enum_type('Language') assert language.is_flags is True try: schema.enum_type('ThisEnumDoesNotExist') except KeyError as ex: assert str(ex) == f'\'EnumType ThisEnumDoesNotExist does not exist in any Schema Namespace\'' try: schema.enum_type('Country', 'WrongNamespace').USA except KeyError as ex: assert str(ex) == '\'EnumType Country does not exist in Schema Namespace WrongNamespace\'' def test_unsupported_enum_underlying_type(xml_builder_factory): """Test if parser will parse only allowed underlying types""" xml_builder = xml_builder_factory() xml_builder.add_schema('Test', '') xml = xml_builder.serialize() try: MetadataBuilder(xml).build() except PyODataParserError as ex: assert str(ex).startswith(f'Type Edm.Bool is not valid as underlying type for EnumType - must be one of') def test_enum_value_out_of_range(xml_builder_factory): """Test if parser will check for values ot of range defined by underlying type""" xml_builder = xml_builder_factory() xml_builder.add_schema('Test', """ """) xml = xml_builder.serialize() try: MetadataBuilder(xml).build() except PyODataParserError as ex: assert str(ex) == f'Value -130 is out of range for type Edm.Byte' @patch('logging.Logger.warning') def test_missing_property_referenced_in_annotation(mock_warning, xml_builder_factory): """Test that correct behavior when non existing property is referenced in annotation""" local_data_property = 'DataType' value_list_property = 'Type' schema = """ """ # Test case 1. -> LocalDataProperty is faulty and ValueListProperty is valid xml_builder = xml_builder_factory() xml_builder.add_schema('EXAMPLE_SRV', schema.format('---', value_list_property)) xml = xml_builder.serialize() with pytest.raises(RuntimeError) as typ_ex_info: MetadataBuilder(xml).build() assert typ_ex_info.value.args[0] == 'ValueHelperParameter(Type) of ValueHelper(MasterEntity/Data) points to ' \ 'an non existing LocalDataProperty --- of EntityType(MasterEntity)' MetadataBuilder(xml, Config( default_error_policy=PolicyWarning() )).build() assert_logging_policy(mock_warning, 'RuntimeError', 'ValueHelperParameter(Type) of ValueHelper(MasterEntity/Data) points to ' 'an non existing LocalDataProperty --- of EntityType(MasterEntity)' ) # Test case 2. -> LocalDataProperty is valid and ValueListProperty is faulty xml_builder = xml_builder_factory() xml_builder.add_schema('EXAMPLE_SRV', schema.format(local_data_property, '---')) xml = xml_builder.serialize() with pytest.raises(RuntimeError) as typ_ex_info: MetadataBuilder(xml).build() assert typ_ex_info.value.args[0] == 'ValueHelperParameter(---) of ValueHelper(MasterEntity/Data) points to an non ' \ 'existing ValueListProperty --- of EntityType(DataEntity)' MetadataBuilder(xml, Config( default_error_policy=PolicyWarning() )).build() assert_logging_policy(mock_warning, 'RuntimeError', 'ValueHelperParameter(---) of ValueHelper(MasterEntity/Data) points to an non ' 'existing ValueListProperty --- of EntityType(DataEntity)' ) # Test case 3. -> LocalDataProperty is valid and ValueListProperty is also valid xml_builder = xml_builder_factory() xml_builder.add_schema('EXAMPLE_SRV', schema.format(local_data_property, value_list_property)) xml = xml_builder.serialize() mock_warning.reset_mock() MetadataBuilder(xml, Config( default_error_policy=PolicyWarning() )).build() assert mock_warning.called is False def test_struct_type_has_property_initial_instance(): struct_type = StructType('Name', 'Label', False) assert struct_type.has_proprty('proprty') == False def test_struct_type_has_property_no(): struct_type = StructType('Name', 'Label', False) struct_type._properties['foo'] = 'ugly test hack' assert not struct_type.has_proprty('proprty') def test_struct_type_has_property_yes(): struct_type = StructType('Name', 'Label', False) struct_type._properties['proprty'] = 'ugly test hack' assert struct_type.has_proprty('proprty') def test_invalid_xml(xml_builder_factory): """Test for invalid XML""" xml_builder = xml_builder_factory() xml_builder.add_schema('Test', """ """) xml = xml_builder.serialize() with pytest.raises(PyODataParserError) as e_info: MetadataBuilder(xml).build() assert str(e_info.value) == 'Metadata document syntax error' python-pyodata-1.11.2/tests/test_model_v2_EdmStructTypeSerializer.py000066400000000000000000000105201500317427700257300ustar00rootroot00000000000000"""Tests of OData Model: class VariableDeclaration""" import pytest import datetime from pyodata.v2.model import EdmStructTypeSerializer, Types, StructType, StructTypeProperty from pyodata.exceptions import PyODataException @pytest.fixture def complex_type_property_declarations(): return { 'TestString': (Types.parse_type_name('Edm.String'), "'FooBar'", "'FooBar'", 'FooBar'), 'TestBoolean': (Types.parse_type_name('Edm.Boolean'), False, 'false', False), 'TestInt64': (Types.parse_type_name('Edm.Int64'), '123L', '123L', 123), 'TestDateTime': (Types.parse_type_name('Edm.DateTime'), "/Date(2147483647000)/", "datetime'2038-01-19T3:14:7'", datetime.datetime(2038, 1, 19, hour=3, minute=14, second=7, tzinfo=datetime.timezone.utc)) } def define_complex_type(complex_type_property_declarations, nullable = True): complex_typ = StructType('TestComplexType', 'Label Complex Type', False) for name, prop_decl in complex_type_property_declarations.items(): prop = StructTypeProperty(name, prop_decl[0], nullable, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None) prop.typ = Types.from_name(prop.type_info.name) complex_typ._properties[prop.name] = prop prop.struct_type = complex_typ return complex_typ @pytest.fixture def complex_type_with_nullable_props(complex_type_property_declarations, nullable = True): return define_complex_type(complex_type_property_declarations, nullable=True) @pytest.fixture def complex_type_without_nullable_props(complex_type_property_declarations, nullable = True): return define_complex_type(complex_type_property_declarations, nullable=False) def test_nullable_from_json_null_properties(complex_type_with_nullable_props, complex_type_property_declarations): entity_json = { prop_name: None for prop_name in complex_type_property_declarations.keys() } entity_odata = complex_type_with_nullable_props.traits.from_json(entity_json) assert entity_json.keys() == entity_odata.keys() for name, value in entity_odata.items(): assert value is None, f'Property: {name}' def test_non_nullable_from_json_null_properties(complex_type_without_nullable_props, complex_type_property_declarations): for prop_name in complex_type_property_declarations.keys(): entity_json = { prop_name : None } with pytest.raises(PyODataException): entity_odata = complex_type_without_nullable_props.traits.from_json(entity_json) def test_non_nullable_from_json(complex_type_without_nullable_props, complex_type_property_declarations): entity_json = { prop_name : prop_decl[1] for prop_name, prop_decl in complex_type_property_declarations.items() } entity_odata =complex_type_without_nullable_props.traits.from_json(entity_json) assert entity_json.keys() == entity_odata.keys() for name, value in entity_odata.items(): assert value == complex_type_property_declarations[name][3], f'Value of {name}' def test_nullable_from_literal_null_properties(complex_type_with_nullable_props, complex_type_property_declarations): entity_literal = { prop_name: None for prop_name in complex_type_property_declarations.keys() } entity_odata = complex_type_with_nullable_props.traits.from_literal(entity_literal) assert entity_literal.keys() == entity_odata.keys() for name, value in entity_odata.items(): assert value is None, f'Property: {name}' def test_non_nullable_from_literal_null_properties(complex_type_without_nullable_props, complex_type_property_declarations): for prop_name in complex_type_property_declarations.keys(): entity_literal = { prop_name : None } with pytest.raises(PyODataException): entity_odata = complex_type_without_nullable_props.traits.from_literal(entity_literal) def test_non_nullable_from_literal(complex_type_without_nullable_props, complex_type_property_declarations): entity_literal = { prop_name : prop_decl[2] for prop_name, prop_decl in complex_type_property_declarations.items() } entity_odata =complex_type_without_nullable_props.traits.from_literal(entity_literal) assert entity_literal.keys() == entity_odata.keys() for name, value in entity_odata.items(): assert value == complex_type_property_declarations[name][3], f'Value of {name}' python-pyodata-1.11.2/tests/test_model_v2_VariableDeclaration.py000066400000000000000000000056711500317427700250300ustar00rootroot00000000000000"""Tests of OData Model: class VariableDeclaration""" import pytest from pyodata.v2.model import VariableDeclaration, Types from pyodata.exceptions import PyODataException @pytest.fixture def variable_of_string_nullable(): variable = VariableDeclaration('TestVariable', Types.parse_type_name('Edm.String'), True, None, None, None, None) variable.typ = Types.from_name(variable.type_info.name) return variable @pytest.fixture def variable_of_string(): variable = VariableDeclaration('TestVariable', Types.parse_type_name('Edm.String'), False, None, None, None, None) variable.typ = Types.from_name(variable.type_info.name) return variable def test_variable_of_string_nullable_from_json_none(variable_of_string_nullable): assert variable_of_string_nullable.from_json(None) is None def test_variable_of_string_nullable_to_json_none(variable_of_string_nullable): assert variable_of_string_nullable.to_json(None) is None def test_variable_of_string_nullable_from_literal_none(variable_of_string_nullable): assert variable_of_string_nullable.from_literal(None) is None def test_variable_of_string_nullable_to_literal_none(variable_of_string_nullable): assert variable_of_string_nullable.to_literal(None) is None def test_variable_of_string_nullable_from_json_non_none(variable_of_string_nullable): assert variable_of_string_nullable.from_json('FromJSON') == 'FromJSON' def test_variable_of_string_nullable_to_json(variable_of_string_nullable): assert variable_of_string_nullable.to_json('ToJSON') == 'ToJSON' def test_variable_of_string_nullable_from_literal(variable_of_string_nullable): assert variable_of_string_nullable.from_literal("'FromLiteral'") == 'FromLiteral' def test_variable_of_string_nullable_to_literal(variable_of_string_nullable): assert variable_of_string_nullable.to_literal('ToLiteral') == "'ToLiteral'" def test_variable_of_string_from_json_none(variable_of_string): with pytest.raises(PyODataException) as e_info: variable_of_string.from_json(None) assert str(e_info.value).startswith('Cannot convert null JSON to value of VariableDeclaration(TestVariable)') def test_variable_of_string_to_json_none(variable_of_string): with pytest.raises(PyODataException) as e_info: variable_of_string.to_json(None) assert str(e_info.value).startswith('Cannot convert None to JSON of VariableDeclaration(TestVariable)') def test_variable_of_string_from_literal_none(variable_of_string): with pytest.raises(PyODataException) as e_info: variable_of_string.from_literal(None) assert str(e_info.value).startswith('Cannot convert null URL literal to value of VariableDeclaration(TestVariable)') def test_variable_of_string_to_literal_none(variable_of_string): with pytest.raises(PyODataException) as e_info: variable_of_string.to_literal(None) assert str(e_info.value).startswith('Cannot convert None to URL literal of VariableDeclaration(TestVariable)') python-pyodata-1.11.2/tests/test_service_v2.py000066400000000000000000002641741500317427700214220ustar00rootroot00000000000000"""Service tests""" import datetime import responses import requests import pytest from urllib.parse import quote from unittest.mock import patch import pyodata.v2.model import pyodata.v2.service from pyodata.exceptions import PyODataException, HttpError, ExpressionError, ProgramError, PyODataModelError from pyodata.v2 import model from pyodata.v2.service import EntityKey, EntityProxy, GetEntitySetFilter, ODataHttpResponse, HTTP_CODE_OK from tests.conftest import assert_request_contains_header, contents_of_fixtures_file URL_ROOT = 'http://odatapy.example.com' @pytest.fixture def service(schema): """Service fixture""" assert schema.namespaces # this is pythonic way how to check > 0 return pyodata.v2.service.Service(URL_ROOT, schema, requests) @pytest.fixture def service_retain_null(schema): """Service fixture which keeps null values as such""" assert schema.namespaces return pyodata.v2.service.Service(URL_ROOT, schema, requests, model.Config(retain_null=True)) @responses.activate def test_create_entity(service): """Basic test on creating entity""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/MasterEntities", headers={ 'Content-type': 'application/json', 'ETag': 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"' }, json={'d': { '__metadata': { 'etag': 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"', }, 'Key': '12345', 'Data': 'abcd' }}, status=201) result = service.entity_sets.MasterEntities.create_entity().set(**{'Key': '1234', 'Data': 'abcd'}).execute() assert result.Key == '12345' assert result.Data == 'abcd' assert result.etag == 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"' @responses.activate def test_create_entity_code_201(service): """Creating entity returns code 201""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/MasterEntities", headers={'Content-type': 'application/json'}, json={'d': { 'Key': '12345', 'Data': 'abcd' }}, status=200) result = service.entity_sets.MasterEntities.create_entity(200).set(**{'Key': '1234', 'Data': 'abcd'}).execute() assert result.Key == '12345' assert result.Data == 'abcd' @responses.activate def test_create_entity_code_400(service): """Test that exception is raised in case of incorrect return code""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/MasterEntities", headers={'Content-type': 'application/json'}, json={}, status=400) with pytest.raises(PyODataException) as e_info: service.entity_sets.MasterEntities.create_entity().set(**{'Key': '1234', 'Data': 'abcd'}).execute() assert str(e_info.value).startswith('HTTP POST for Entity Set') @responses.activate def test_create_entity_containing_enum(service): """Basic test on creating entity with enum""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/EnumTests", headers={'Content-type': 'application/json'}, json={'d': { 'CountryOfOrigin': 'USA', }}, status=201) result = service.entity_sets.EnumTests.create_entity().set(**{'CountryOfOrigin': 'USA'}).execute() USA = service.schema.enum_type('Country').USA assert result.CountryOfOrigin == USA traits = service.schema.enum_type('Country').traits literal = traits.to_literal(USA) assert literal == "EXAMPLE_SRV.Country\'USA\'" assert traits.from_literal(literal).name == 'USA' @responses.activate def test_create_entity_nested(service): """Basic test on creating entity""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/Cars", headers={'Content-type': 'application/json'}, json={'d': { 'Name': 'Hadraplan', }}, status=201) path = quote("Cars('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}/IDPic/$value/", headers={'Content-type': 'application/jpeg'}, body='DEADBEEF', status=200) entity = {'Name': 'Hadraplan', 'IDPic' : {'Content': 'DEADBEEF'}} result = service.entity_sets.Cars.create_entity().set(**entity).execute() assert result.Name == 'Hadraplan' assert result.nav('IDPic').get_value().execute().content == b'DEADBEEF' @responses.activate def test_create_entity_header_x_requested_with(service): """Test for header with item X-Requested-With in create entity request""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/Cars", headers={'Content-type': 'application/json'}, json={'d': { 'Name': 'Hadraplan', }}, status=201) entity = {'Name': 'Hadraplan'} result = service.entity_sets.Cars.create_entity().set(**entity).execute() assert result.Name == 'Hadraplan' assert_request_contains_header(responses.calls[0].request.headers, 'X-Requested-With', 'X') @responses.activate def test_create_entity_nested_list(service): """Test for creating entity with nested list""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/Customers", headers={'Content-type': 'application/json'}, json={'d': { 'Name': 'John', 'Orders': [ {'Owner': 'Mammon'}, {'Owner': 'Tomas'}, ] }}, status=201) entity = {'Name': 'John', 'Orders': [{'Owner': 'Mammon'}, {'Owner': 'Tomas'}]} result = service.entity_sets.Customers.create_entity().set(**entity).execute() assert responses.calls[0].request.body == '{"Name": "John", "Orders": [{"Owner": "Mammon"}, {"Owner": "Tomas"}]}' @responses.activate def test_get_entity_property(service): """Basic test on getting single property of selected entity""" # pylint: disable=redefined-outer-name path = quote("MasterEntities('12345')") responses.add( responses.GET, f"{service.url}/{path}", headers={ 'ETag': 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"', 'Content-type': 'application/json', }, json={'d': {'Key': '12345'}}, status=200) result = service.entity_sets.MasterEntities.get_entity('12345').execute() assert result.Key == '12345' assert result.etag == 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"' @responses.activate def test_entity_url(service): """Test correct build of entity url""" # pylint: disable=redefined-outer-name path = quote("MasterEntities('12345')") responses.add( responses.GET, f"{service.url}/{path}", headers={'Content-type': 'application/json'}, json={'d': {'Key': '12345'}}, status=200) entity = service.entity_sets.MasterEntities.get_entity('12345').execute() assert entity.url == URL_ROOT + "/MasterEntities('12345')" @responses.activate def test_entity_entity_set_name(service): """Test correct entity set name""" # pylint: disable=redefined-outer-name path = quote("MasterEntities('12345')") responses.add( responses.GET, f"{service.url}/{path}", headers={'Content-type': 'application/json'}, json={'d': {'Key': '12345'}}, status=200) entity = service.entity_sets.MasterEntities.get_entity('12345').execute() assert entity.entity_set.name == "MasterEntities" @responses.activate def test_entity_key_simple(service): """Test simple key of entity""" # pylint: disable=redefined-outer-name path = quote("MasterEntities('12345')") responses.add( responses.GET, f"{service.url}/{path}", headers={'Content-type': 'application/json'}, json={'d': {'Key': '12345'}}, status=200) entity = service.entity_sets.MasterEntities.get_entity('12345').execute() assert len(entity.entity_key.key_properties) == 1 assert entity.entity_key.key_properties[0].name == 'Key' @responses.activate def test_entity_key_complex(service): """Test complex key of entity""" # pylint: disable=redefined-outer-name path = quote("TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')") responses.add( responses.GET, f"{service.url}/{path}", headers={'Content-type': 'application/json'}, json={'d': { 'Sensor': 'sensor1', 'Date': "/Date(1514138400000)/" }}, status=200) entity_key = { 'Sensor': 'sensor1', 'Date': datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc) } key_properties = set(entity_key.keys()) entity = service.entity_sets.TemperatureMeasurements.get_entity(key=None, **entity_key).execute() assert key_properties == set(entity_property.name for entity_property in entity.entity_key.key_properties) # check also python represantation of date assert entity.Date == datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc) def test_get_entity_property_complex_key(service): """Check identification of entity with key consisting of multiple properites""" # pylint: disable=redefined-outer-name with pytest.raises(PyODataException) as e_info: service.entity_sets.TemperatureMeasurements.get_entity('12345') assert str(e_info.value).startswith('Key of entity type') def test_entity_key_simple_valid(service): """Test valid single value for simple key""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('MasterEntity'), '1') assert key.to_key_string() == "('1')" def test_entity_key_simple_named_valid(service): """Test valid single named value for simple key""" key = EntityKey( service.schema.entity_type('MasterEntity'), Key='1') assert key.to_key_string() == "(Key='1')" def test_entity_key_simple_named_invalid(service): """Test invalid single named value for simple key""" with pytest.raises(PyODataException) as e_info: EntityKey( service.schema.entity_type('MasterEntity'), XXX='1') assert str(e_info.value).startswith('Missing value for key property Key') def test_entity_key_complex_valid(service): """Test valid creationg of complex key""" key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) assert key.to_key_string() == "(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')" def test_entity_key_complex_single_value(service): """Test rejection of single value for complex key""" with pytest.raises(PyODataException) as e_info: EntityKey( service.schema.entity_type('TemperatureMeasurement'), 1) assert str(e_info.value).startswith('Key of entity type') @responses.activate def test_function_import_primitive(service): """Simple function call with primitive return type""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/sum?A=2&B=4", headers={'Content-type': 'application/json'}, json={'d': 6}, status=200) result = service.functions.sum.parameter('A', 2).parameter('B', 4).execute() assert result == 6 @responses.activate def test_function_import_escape_parameter(service): """Simple function call with special URL characters in parameter value""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/retrieve?Param=%27%26|%2B|%3D|%2F|%3F|+|%40%27", headers={'Content-type': 'application/json'}, json={'d': True}, status=200) chars = "|".join("&+=/? @") result = service.functions.retrieve.parameter('Param', chars).execute() assert result is True @responses.activate @patch('logging.Logger.warning') def test_function_import_primitive_unexpected_status_code(mock_warning, service): """Simple function call should use status code 200""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/sum?A=2&B=4", headers={'Content-type': 'application/json'}, json={'d': 6}, status=201) result = service.functions.sum.parameter('A', 2).parameter('B', 4).execute() mock_warning.assert_called_with( 'The Function Import %s has replied with HTTP Status Code %d instead of 200', 'sum', 201) @responses.activate def test_function_import_without_return_type(service): """A simple function call without return type""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=204) result = service.functions.refresh.execute() assert result is None @responses.activate @patch('logging.Logger.warning') def test_function_import_without_return_type_wrong_code(mock_warning, service): """A simple function call without return type should use status code 204""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=200) result = service.functions.refresh.execute() assert result is None mock_warning.assert_called_with( 'The No Return Function Import %s has replied with HTTP Status Code %d instead of 204', 'refresh', 200) @responses.activate def test_function_import_http_redirect(service): """Function Imports do not support Redirects""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=300) with pytest.raises(HttpError) as caught: service.functions.refresh.execute() assert str(caught.value) == 'Function Import refresh requires Redirection which is not supported' @responses.activate def test_function_import_http_bad_request(service): """Function Imports report user friendly error message for Bad Requests""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=400) with pytest.raises(HttpError) as caught: service.functions.refresh.execute() assert str(caught.value) == 'Function Import refresh call has failed with status code 400' @responses.activate def test_function_import_http_sever_error(service): """Function Imports report user friendly error message for Server Errors""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=500) with pytest.raises(HttpError) as caught: service.functions.refresh.execute() assert str(caught.value) == 'Server has encountered an error while processing Function Import refresh' @responses.activate def test_function_import_http_not_authorized(service): """Function Imports report user friendly error message for Not Authorized""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=401) with pytest.raises(HttpError) as caught: service.functions.refresh.execute() assert str(caught.value) == 'Not authorized to call Function Import refresh' @responses.activate def test_function_import_http_forbidden(service): """Function Imports report user friendly error message for Forbidden""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=403) with pytest.raises(HttpError) as caught: service.functions.refresh.execute() assert str(caught.value) == 'Missing privileges to call Function Import refresh' @responses.activate def test_function_import_http_forbidden(service): """Function Imports report user friendly error message for Not Allowed""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/refresh", status=405) with pytest.raises(HttpError) as caught: service.functions.refresh.execute() assert str(caught.value) == 'Despite definition Function Import refresh does not support HTTP GET' @responses.activate def test_function_import_entity(service): """Function call with entity return type""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f'{service.url}/get_max', headers={'Content-type': 'application/json'}, json={'d': { 'Sensor': 'Sensor-address', 'Date': "/Date(1516614510000)/", 'Value': '456.8d' }}, status=200) result = service.functions.get_max.execute() assert isinstance(result, pyodata.v2.service.EntityProxy) assert result.Sensor == 'Sensor-address' assert result.Value == 456.8 @responses.activate def test_update_entity(service): """Check updating of entity properties""" # pylint: disable=redefined-outer-name path = quote("TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')") responses.add( responses.PATCH, f"{service.url}/{path}", status=204) request = service.entity_sets.TemperatureMeasurements.update_entity( Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) assert isinstance(request, pyodata.v2.service.EntityModifyRequest) request.set(Value=34.0) # Tests if update entity correctly calls 'to_json' method request.set(Date=datetime.datetime(2017, 12, 24, 19, 0, tzinfo=datetime.timezone.utc)) assert request._values['Value'] == '3.400000E+01' assert request._values['Date'] == '/Date(1514142000000)/' # If preformatted datetime is passed (e. g. you already replaced datetime instance with string which is # complaint with odata specification), 'to_json' does not update given value (for backward compatibility reasons) request.set(Date='/Date(1714138400000)/') assert request._values['Date'] == '/Date(1714138400000)/' request.execute() @responses.activate def test_delete_entity(service): """Check deleting of entity""" path = quote("Employees(23)") responses.add(responses.DELETE, f"{service.url}/{path}", status=204) request = service.entity_sets.Employees.delete_entity(23) assert isinstance(request, pyodata.v2.service.EntityDeleteRequest) assert request.execute() is None @responses.activate def test_delete_entity_not_encoded_path(service): """Check deleting of entity""" responses.add(responses.DELETE, f"{service.url}/Employees(23)", status=204) request = service.entity_sets.Employees.delete_entity(23, encode_path=False) assert isinstance(request, pyodata.v2.service.EntityDeleteRequest) assert request.execute() is None @responses.activate def test_delete_entity_with_key(service): """Check deleting of entity with key""" path = quote("Employees(ID=23)") responses.add(responses.DELETE, f"{service.url}/{path}", status=204) key = EntityKey(service.schema.entity_type('Employee'), ID=23) request = service.entity_sets.Employees.delete_entity(key=key) assert isinstance(request, pyodata.v2.service.EntityDeleteRequest) assert request.execute() is None @responses.activate def test_delete_entity_http_error(service): """Check if error is raisen when deleting unknown entity""" path = quote("Employees(ID=23)") responses.add(responses.DELETE, f"{service.url}/{path}", status=404) key = EntityKey(service.schema.entity_type('Employee'), ID=23) request = service.entity_sets.Employees.delete_entity(key=key) assert isinstance(request, pyodata.v2.service.EntityDeleteRequest) with pytest.raises(HttpError) as caught_ex: request.execute() assert str(caught_ex.value).startswith('HTTP POST for Entity delete') assert caught_ex.value.response.status_code == 404 def test_update_entity_with_entity_key(service): """Make sure the method update_entity handles correctly the parameter key which is EntityKey""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.update_entity(key) assert query.get_path() == quote("TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')") def test_update_entity_with_put_method_specified(service): """Make sure the method update_entity handles correctly when PUT method is specified""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.update_entity(key, method="PUT") assert query.get_method() == "PUT" def test_update_entity_with_patch_method_specified(service): """Make sure the method update_entity handles correctly when PATCH method is specified""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.update_entity(key, method="PATCH") assert query.get_method() == "PATCH" def test_update_entity_with_merge_method_specified(service): """Make sure the method update_entity handles correctly when MERGE method is specified""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.update_entity(key, method='merge') assert query.get_method() == 'MERGE' def test_update_entity_with_no_method_specified(service): """Make sure the method update_entity handles correctly when no method is specified""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.update_entity(key) assert query.get_method() == "PATCH" def test_update_entity_with_service_config_set_to_put(service): """Make sure the method update_entity handles correctly when no method is specified""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) service.config['http']['update_method'] = "PUT" query = service.entity_sets.TemperatureMeasurements.update_entity(key) assert query.get_method() == "PUT" def test_update_entity_with_wrong_method_specified(service): """Make sure the method update_entity raises ValueError when wrong method is specified""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) with pytest.raises(ValueError) as caught_ex: service.entity_sets.TemperatureMeasurements.update_entity(key, method='DELETE') assert str(caught_ex.value).startswith('The value "DELETE" is not on the list of allowed Entity Update HTTP Methods: PATCH, PUT, MERGE') def test_get_entity_with_entity_key_and_other_params(service): """Make sure the method update_entity handles correctly the parameter key which is EntityKey""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.update_entity(key=key, Foo='Bar') assert query.get_path() == "TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')" def test_get_entities_with_custom_headers(service): query = service.entity_sets.TemperatureMeasurements.get_entities() query.add_headers({"X-Foo": "bar"}) assert query.get_headers() == {"Accept": "application/json", "X-Foo": "bar"} def test_get_entity_with_custom_headers(service): key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.get_entity(key) query.add_headers({"X-Foo": "bar"}) assert query.get_headers() == {"Accept": "application/json", "X-Foo": "bar"} def test_update_entities_with_custom_headers(service): key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.update_entity(key) query.add_headers({"X-Foo": "bar"}) assert query.get_headers() == {"Accept": "application/json", "Content-Type": "application/json", "X-Foo": "bar"} def test_create_entity_with_custom_headers(service): query = service.entity_sets.TemperatureMeasurements.create_entity() query.add_headers({"X-Foo": "bar"}) assert query.get_headers() == {"Accept": "application/json", "Content-Type": "application/json", "X-Requested-With": "X", "X-Foo": "bar"} def test_create_entity_with_overwriting_custom_headers(service): query = service.entity_sets.TemperatureMeasurements.create_entity() query.add_headers({"X-Requested-With": "bar"}) assert query.get_headers() == {"Accept": "application/json", "Content-Type": "application/json", "X-Requested-With": "bar"} def test_create_entity_with_blank_custom_headers(service): query = service.entity_sets.TemperatureMeasurements.create_entity() query.add_headers({}) assert query.get_headers() == {"Accept": "application/json", "Content-Type": "application/json", "X-Requested-With": "X"} def test_pass_incorrect_header_type(service): query = service.entity_sets.TemperatureMeasurements.create_entity() with pytest.raises(TypeError) as ex: query.add_headers(69420) assert str(ex) == "TypeError: Headers must be of type 'dict' not " @responses.activate def test_get_entities(service): """Get entities""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees", json={'d': { 'results': [ { 'ID': 669, 'NameFirst': 'Yennefer', 'NameLast': 'De Vengerberg' } ] }}, status=200) request = service.entity_sets.Employees.get_entities() assert isinstance(request, pyodata.v2.service.QueryRequest) empls = request.execute() assert empls[0].ID == 669 assert empls[0].NameFirst == 'Yennefer' assert empls[0].NameLast == 'De Vengerberg' @responses.activate def test_get_entities_with_deferred_nav_prop(service): """Get entities but don't include deferred navigation property""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees", json={'d': { 'results': [ { 'ID': 669, 'NameFirst': 'Yennefer', 'NameLast': 'De Vengerberg', 'Addresses': { '__deferred': {'uri': "https://remote.url/Employees(23)/Addresses"} } } ] }}, status=200) request = service.entity_sets.Employees.get_entities() assert isinstance(request, pyodata.v2.service.QueryRequest) empls = request.execute() assert empls[0].ID == 669 assert empls[0].NameFirst == 'Yennefer' assert empls[0].NameLast == 'De Vengerberg' assert len(empls[0].Addresses) == 0 @responses.activate def test_get_null_value_from_null_preserving_service(service_retain_null): """Get entity with missing property value as None type""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service_retain_null.url}/Employees", json={'d': { 'results': [ { 'ID': 1337, 'NameFirst': 'Neo', 'NameLast': None } ] }}, status=200) request = service_retain_null.entity_sets.Employees.get_entities() the_ones = request.execute() assert the_ones[0].ID == 1337 assert the_ones[0].NameFirst == 'Neo' assert the_ones[0].NameLast is None @responses.activate def test_get_null_value_from_non_null_preserving_service(service): """Get entity with missing property value as default type""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees", json={'d': { 'results': [ { 'ID': 1337, 'NameFirst': 'Neo', 'NameLast': None } ] }}, status=200) request = service.entity_sets.Employees.get_entities() the_ones = request.execute() assert the_ones[0].ID == 1337 assert the_ones[0].NameFirst == 'Neo' assert the_ones[0].NameLast == '' @responses.activate def test_get_non_nullable_value(service_retain_null): """Get error when receiving a null value for a non-nullable property""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service_retain_null.url}/Employees", json={'d': { 'results': [ { 'ID': None, 'NameFirst': 'Neo', } ] }}, status=200) with pytest.raises(PyODataException) as e_info: service_retain_null.entity_sets.Employees.get_entities().execute() assert str(e_info.value) == 'Value of non-nullable Property ID is null' @responses.activate def test_navigation_multi(service): """Get entities via navigation property""" # pylint: disable=redefined-outer-name path = quote("Employees(23)/Addresses") responses.add( responses.GET, f"{service.url}/{path}", json={'d': { 'results': [ { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' },{ 'ID': 457, 'Street': 'Lowth Road', 'City': 'London' },{ 'ID': 458, 'Street': 'Warner Road', 'City': 'London' } ] }}, status=200) request = service.entity_sets.Employees.get_entity(23).nav('Addresses').get_entities() assert isinstance(request, pyodata.v2.service.QueryRequest) addrs = request.execute() assert addrs[0].ID == 456 assert addrs[0].Street == 'Baker Street' assert addrs[0].City == 'London' assert addrs[1].ID == 457 assert addrs[1].Street == 'Lowth Road' assert addrs[1].City == 'London' assert addrs[2].ID == 458 assert addrs[2].Street == 'Warner Road' assert addrs[2].City == 'London' @responses.activate def test_navigation(service): """Check getting entity via navigation property""" # pylint: disable=redefined-outer-name path = quote("Employees(23)/Addresses(456)") responses.add( responses.GET, f"{service.url}/{path}", json={'d': { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' }}, status=200) request = service.entity_sets.Employees.get_entity(23).nav('Addresses').get_entity(456) assert isinstance(request, pyodata.v2.service.EntityGetRequest) addr = request.execute() assert addr.ID == 456 assert addr.Street == 'Baker Street' assert addr.City == 'London' @responses.activate def test_navigation_multi_on1(service): """Check getting entity via navigation property""" # pylint: disable=redefined-outer-name path = quote("Customers('Mammon')/ReferredBy") responses.add( responses.GET, f"{service.url}/{path}", headers={'Content-type': 'application/json'}, json = { 'd': { 'Name': 'John', } }, status=200) request = service.entity_sets.Customers.get_entity('Mammon').nav('ReferredBy') assert isinstance(request, pyodata.v2.service.EntityGetRequest) referred_by_proxy = request.execute() assert isinstance(referred_by_proxy, pyodata.v2.service.NavEntityProxy) assert referred_by_proxy.entity_set._name == 'Customers' assert referred_by_proxy._entity_type.name == 'Customer' assert referred_by_proxy.Name == 'John' @responses.activate def test_navigation_1on1(service): """Check getting entity via navigation property""" # pylint: disable=redefined-outer-name path = quote("Cars('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}/IDPic", headers={'Content-type': 'application/json'}, json = { 'd': { 'CarName': 'Hadraplan', 'Content': 'DEADBEAF', } }, status=200) request = service.entity_sets.Cars.get_entity('Hadraplan').nav('IDPic') assert isinstance(request, pyodata.v2.service.EntityGetRequest) idpic_proxy = request.execute() assert isinstance(idpic_proxy, pyodata.v2.service.NavEntityProxy) assert idpic_proxy.entity_set._name == 'Cars' assert idpic_proxy._entity_type.name == 'CarIDPic' assert idpic_proxy.CarName == 'Hadraplan' assert idpic_proxy.Content == 'DEADBEAF' @responses.activate def test_navigation_1on1_from_entity_proxy(service): """Check getting entity via navigation property""" # pylint: disable=redefined-outer-name path = quote("Cars('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}", headers={'Content-type': 'application/json'}, json = { 'd': { 'Name': 'Hadraplan', } }, status=200) responses.add( responses.GET, f"{service.url}/{path}/IDPic", headers={'Content-type': 'application/json'}, json = { 'd': { 'CarName': 'Hadraplan', 'Content': 'DEADBEAF', } }, status=200) request = service.entity_sets.Cars.get_entity('Hadraplan') assert isinstance(request, pyodata.v2.service.EntityGetRequest) car_proxy = request.execute() assert isinstance(car_proxy, pyodata.v2.service.EntityProxy) assert car_proxy.Name == 'Hadraplan' idpic_proxy = car_proxy.nav('IDPic').execute() assert isinstance(idpic_proxy, pyodata.v2.service.NavEntityProxy) assert idpic_proxy.entity_set._name == 'Cars' assert idpic_proxy._entity_type.name == 'CarIDPic' assert idpic_proxy.CarName == 'Hadraplan' assert idpic_proxy.Content == 'DEADBEAF' @responses.activate def test_navigation_1on1_get_value_without_proxy(service): """Check getting $value via navigation property""" # pylint: disable=redefined-outer-name path = quote("Cars('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}/IDPic/$value/", headers={'Content-type': 'application/jpeg'}, body='DEADBEAF', status=200) request = service.entity_sets.Cars.get_entity('Hadraplan').nav('IDPic').get_value() assert isinstance(request, pyodata.v2.service.ODataHttpRequest) stream = request.execute() assert stream.content == b'DEADBEAF' @responses.activate def test_navigation_when_nes_in_another_ns(service): """Check whether it is possible to navigate when AssociationSet is defined in a different namespace. """ # pylint: disable=redefined-outer-name path = quote("Customers('Mammon')/Orders") responses.add( responses.GET, f"{service.url}/{path}", json={'d': {'results' : [{ 'Number': '456', 'Owner': 'Mammon', }]}}, status=200) request = service.entity_sets.Customers.get_entity('Mammon').nav('Orders').get_entities() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) orders = request.execute() assert len(orders) == 1 assert orders[0].Number == '456' assert orders[0].Owner == 'Mammon' @responses.activate def test_entity_get_value_1on1_with_proxy(service): """Check getting $value""" # pylint: disable=redefined-outer-name path = quote("Cars('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}/IDPic", headers={'Content-type': 'application/json'}, json = { 'd': { 'CarName': 'Hadraplan', 'Content': 'DEADBEAF', } }, status=200) responses.add( responses.GET, f"{service.url}/Cars('Hadraplan')/IDPic/$value/", headers={'Content-type': 'application/jpeg'}, body='DEADBEAF', status=200) request = service.entity_sets.Cars.get_entity('Hadraplan').nav('IDPic').execute().get_value() assert isinstance(request, pyodata.v2.service.ODataHttpRequest) stream = request.execute() assert stream.content == b'DEADBEAF' @responses.activate def test_entity_get_value_without_proxy(service): """Check getting $value without proxy""" # pylint: disable=redefined-outer-name path = quote("CarIDPics('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}/$value/", headers={'Content-type': 'application/jpeg'}, body='DEADBEAF', status=200) request = service.entity_sets.CarIDPics.get_entity('Hadraplan').get_value() assert isinstance(request, pyodata.v2.service.ODataHttpRequest) stream = request.execute() assert stream.content == b'DEADBEAF' @responses.activate def test_entity_get_value_with_proxy(service): """Check getting $value with proxy""" # pylint: disable=redefined-outer-name path = quote("CarIDPics('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}", headers={'Content-type': 'application/json'}, json = { 'd': { 'CarName': 'Hadraplan', 'Content': 'DEADBEAF', } }, status=200) responses.add( responses.GET, f"{service.url}/CarIDPics('Hadraplan')/$value/", headers={'Content-type': 'application/jpeg'}, body='DEADBEAF', status=200) request = service.entity_sets.CarIDPics.get_entity('Hadraplan').execute().get_value() assert isinstance(request, pyodata.v2.service.ODataHttpRequest) stream = request.execute() assert stream.content == b'DEADBEAF' @responses.activate def test_entity_get_value_without_proxy_error(service): """Check getting $value without proxy""" # pylint: disable=redefined-outer-name path = quote("CarIDPics('Hadraplan')") responses.add( responses.GET, f"{service.url}/{path}/$value/", headers={'Content-type': 'text/plain'}, body='Internal Server Error', status=500) with pytest.raises(HttpError) as caught_ex: service.entity_sets.CarIDPics.get_entity('Hadraplan').get_value().execute() assert str(caught_ex.value).startswith('HTTP GET for $value failed with status code 500') assert caught_ex.value.response.status_code == 500 @responses.activate def test_navigation_create_entity(service): """Check creating entity via a navigation property""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/Employees(23)/Addresses", json={'d': { 'ID': 42, 'Street': 'Holandska', 'City': 'Brno' }}, status=201) request = service.entity_sets.Employees.get_entity(23).nav('Addresses').create_entity() request.set(ID='42', Street='Holandska', City='Brno') assert isinstance(request, pyodata.v2.service.EntityCreateRequest) addr = request.execute() assert len(responses.calls) == 1 assert addr.ID == 42 assert addr.Street == 'Holandska' assert addr.City == 'Brno' @responses.activate def test_navigation_from_entity_multi(service): """Get entities via navigation property from entity proxy""" # pylint: disable=redefined-outer-name path = quote("Employees(23)") responses.add( responses.GET, f"{service.url}/{path}", json={'d': { 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes' }}, status=200) responses.add( responses.GET, f"{service.url}/{path}/Addresses", json={'d': { 'results': [ { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' },{ 'ID': 457, 'Street': 'Lowth Road', 'City': 'London' },{ 'ID': 458, 'Street': 'Warner Road', 'City': 'London' } ] }}, status=200) request = service.entity_sets.Employees.get_entity(23) assert isinstance(request, pyodata.v2.service.EntityGetRequest) emp = request.execute() request = emp.nav('Addresses').get_entities() assert isinstance(request, pyodata.v2.service.QueryRequest) addrs = request.execute() assert addrs[0].ID == 456 assert addrs[0].Street == 'Baker Street' assert addrs[0].City == 'London' assert addrs[1].ID == 457 assert addrs[1].Street == 'Lowth Road' assert addrs[1].City == 'London' assert addrs[2].ID == 458 assert addrs[2].Street == 'Warner Road' assert addrs[2].City == 'London' @responses.activate def test_navigation_from_entity(service): """Check getting entity via navigation property from entity proxy""" # pylint: disable=redefined-outer-name path_employes = quote("Employees(23)") responses.add( responses.GET, f"{service.url}/{path_employes}", json={'d': { 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes' }}, status=200) path_employes_adresses = quote("Employees(23)/Addresses(456)") responses.add( responses.GET, f"{service.url}/{path_employes_adresses}", json={'d': { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' }}, status=200) request = service.entity_sets.Employees.get_entity(23) assert isinstance(request, pyodata.v2.service.EntityGetRequest) emp = request.execute() request = emp.nav('Addresses').get_entity(456) addr = request.execute() assert addr.ID == 456 assert addr.Street == 'Baker Street' assert addr.City == 'London' # TODO add test_get_entity_with_guid @responses.activate def test_get_entity(service): """Check getting entities""" # pylint: disable=redefined-outer-name path = quote("Employees(23)") responses.add( responses.GET, f"{service.url}/{path}", json={'d': { 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes' }}, status=200) request = service.entity_sets.Employees.get_entity(23) assert isinstance(request, pyodata.v2.service.EntityGetRequest) emp = request.execute() assert emp.ID == 23 assert emp.NameFirst == 'Rob' assert emp.NameLast == 'Ickes' @responses.activate def test_get_entity_not_encoded_path(service): """Check getting entities""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')", json={'d': { 'Sensor': 'sensor1', 'Date': '/Date(1514138400000)/', 'Value': 34.0 }}, status=200) request = service.entity_sets.TemperatureMeasurements.get_entity(Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc), encode_path=False) assert isinstance(request, pyodata.v2.service.EntityGetRequest) assert request.get_path() == "TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')" emp = request.execute() assert emp.Sensor == 'sensor1' assert emp.Date == datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc) assert emp.Value == 34.0 @responses.activate def test_get_entity_expanded_with_results(service): """Check getting entities with expanded navigation properties""" # pylint: disable=redefined-outer-name path = quote("Employees(23)") responses.add( responses.GET, f"{service.url}/{path}", json={'d': { 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes', 'Addresses': { "results": [ { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' } ] } }}, status=200) request = service.entity_sets.Employees.get_entity(23) assert isinstance(request, pyodata.v2.service.EntityGetRequest) emp = request.expand('Addresses').execute() assert emp.ID == 23 assert emp.NameFirst == 'Rob' assert emp.NameLast == 'Ickes' assert emp.Addresses[0].ID == 456 assert emp.Addresses[0].Street == 'Baker Street' assert emp.Addresses[0].City == 'London' @responses.activate def test_get_entity_expanded(service): """Check getting entities with expanded navigation properties""" # pylint: disable=redefined-outer-name path = quote("Employees(23)") responses.add( responses.GET, f"{service.url}/{path}", json={'d': { 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes', 'Addresses': [ { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' } ] }}, status=200) request = service.entity_sets.Employees.get_entity(23) assert isinstance(request, pyodata.v2.service.EntityGetRequest) emp = request.expand('Addresses').execute() assert emp.ID == 23 assert emp.NameFirst == 'Rob' assert emp.NameLast == 'Ickes' assert emp.Addresses[0].ID == 456 assert emp.Addresses[0].Street == 'Baker Street' assert emp.Addresses[0].City == 'London' @responses.activate def test_batch_request(service): """Batch requests""" # pylint: disable=redefined-outer-name response_body = (b'--batch_r1\n' b'Content-Type: application/http\n' b'Content-Transfer-Encoding: binary\n' b'\n' b'HTTP/1.1 200 OK\n' b'Content-Type: application/json\n' b'\n' b'{"d": {"ID": 23, "NameFirst": "Rob", "NameLast": "Ickes", "Address": { "ID": 456, "Street": "Baker Street", "City": "London"} }}' b'\n' b'--batch_r1\n' b'Content-Type: multipart/mixed; boundary=changeset_1\n' b'\n' b'--changeset_1\n' b'Content-Type: application/http\n' b'Content-Transfer-Encoding: binary\n' b'\n' b'HTTP/1.1 204 Updated\n' b'Content-Type: application/json\n' b'\n' b"{b'd': {'Sensor': 'Sensor-address', 'Date': datetime\'2017-12-24T18:00\', 'Value': '34.0d'}}" b'\n' b'--changeset_1--\n' b'\n' b'--batch_r1--') responses.add( responses.POST, f'{URL_ROOT}/$batch', body=response_body, content_type='multipart/mixed; boundary=batch_r1', status=202) batch = service.create_batch('batch1') chset = service.create_changeset('chset1') employee_request = service.entity_sets.Employees.get_entity(23) temp_request = service.entity_sets.TemperatureMeasurements.update_entity( Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)).set(Value=34.0) batch.add_request(employee_request) chset.add_request(temp_request) batch.add_request(chset) response = batch.execute() assert len(response) == 2 employee_response = response[0] assert isinstance(employee_response, pyodata.v2.service.EntityProxy) chset_response = response[1] assert isinstance(chset_response, list) assert len(chset_response) == 1 assert chset_response[0] is None # response to update request is None @responses.activate def test_batch_request_not_encoded_path(service): """Batch requests""" # pylint: disable=redefined-outer-name response_body = (b'--batch_r1\n' b'Content-Type: application/http\n' b'Content-Transfer-Encoding: binary\n' b'\n' b'HTTP/1.1 200 OK\n' b'Content-Type: application/json\n' b'\n' b'{"d": {"ID": 23, "NameFirst": "Rob", "NameLast": "Ickes", "Address": { "ID": 456, "Street": "Baker Street", "City": "London"} }}' b'\n' b'--batch_r1\n' b'Content-Type: multipart/mixed; boundary=changeset_1\n' b'\n' b'--changeset_1\n' b'Content-Type: application/http\n' b'Content-Transfer-Encoding: binary\n' b'\n' b'HTTP/1.1 204 Updated\n' b'Content-Type: application/json\n' b'\n' b"{b'd': {'Sensor': 'Sensor-address', 'Date': datetime\'2017-12-24T18:00\', 'Value': '34.0d'}}" b'\n' b'--changeset_1--\n' b'\n' b'--batch_r1--') responses.add( responses.POST, f'{URL_ROOT}/$batch', body=response_body, content_type='multipart/mixed; boundary=batch_r1', status=202) batch = service.create_batch('batch1') chset = service.create_changeset('chset1') employee_request = service.entity_sets.Employees.get_entity(23, encode_path=False) assert employee_request.get_path() == 'Employees(23)' temp_request = service.entity_sets.TemperatureMeasurements.update_entity( Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc), encode_path=True).set(Value=34.0) batch.add_request(employee_request) chset.add_request(temp_request) assert f'{temp_request.get_method()} TemperatureMeasurements%28Sensor%3D%27sensor1%27%2CDate%3Ddatetime%272017-12-24T18%3A00%3A00%27%29' in chset.get_body() batch.add_request(chset) batch.add_request(temp_request) response = batch.execute() assert len(response) == 2 employee_response = response[0] assert isinstance(employee_response, pyodata.v2.service.EntityProxy) chset_response = response[1] assert isinstance(chset_response, list) assert len(chset_response) == 1 assert chset_response[0] is None # response to update request is None @responses.activate def test_enormous_batch_request(service): """Batch requests""" # pylint: disable=redefined-outer-name response_body = contents_of_fixtures_file('enormous_batch_response') responses.add( responses.POST, f'{URL_ROOT}/$batch', body=response_body, content_type='multipart/mixed; boundary=16804F9C063D8720EACA19F7DFB3CD4A0', status=202) batch = service.create_batch() employee_request = service.entity_sets.Enumerations.get_entities() batch.add_request(employee_request) response = batch.execute() assert len(response) == 1 assert len(response[0]) == 1016 @responses.activate def test_batch_request_failed_changeset(service): """Check single response for changeset""" # pylint: disable=redefined-outer-name response_body = ('--batch_r1\n' 'Content-Type: application/http\n' 'Content-Transfer-Encoding: binary\n' '\n' 'HTTP/1.1 400 Bad Request\n' 'Content-Type: application/json;charset=utf-8' '' '{"error": "this is error description"}' '--batch_r1--') responses.add( responses.POST, f'{URL_ROOT}/$batch', body=response_body, content_type='multipart/mixed; boundary=batch_r1', status=202) batch = service.create_batch('batch1') chset = service.create_changeset('chset1') employee_request1 = service.entity_sets.Employees.get_entity(23) employee_request2 = service.entity_sets.Employees.get_entity(23) chset.add_request(employee_request1) chset.add_request(employee_request2) batch.add_request(chset) with pytest.raises(HttpError) as e_info: batch.execute() assert str(e_info.value).startswith('Changeset cannot be processed') assert isinstance(e_info.value, HttpError) assert e_info.value.response.status_code == 400 def test_get_entity_with_entity_key(service): """Make sure the method get_entity handles correctly the parameter key which is EntityKey""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.get_entity(key) assert query.get_path() == quote("TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')") def test_get_entity_with_entity_key_and_other_params(service): """Make sure the method get_entity handles correctly the parameter key which is EntityKey""" # pylint: disable=redefined-outer-name key = EntityKey( service.schema.entity_type('TemperatureMeasurement'), Sensor='sensor1', Date=datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc)) query = service.entity_sets.TemperatureMeasurements.get_entity(key=key, Foo='Bar') assert query.get_path() == quote("TemperatureMeasurements(Sensor='sensor1',Date=datetime'2017-12-24T18:00:00')") def test_entity_proxy_equals(service): """Two entity proxies are equal if they hold the same data""" properties = {'Key': 'a', 'DataType': 'b', 'Data': 'c', 'DataName': 'd'} fst_entity = EntityProxy(service, service.entity_sets.MasterEntities, service.schema.entity_type('MasterEntity'), properties) scn_entity = EntityProxy(service, service.entity_sets.MasterEntities, service.schema.entity_type('MasterEntity'), properties) properties['DataType'] = 'g' thr_entity = EntityProxy(service, service.entity_sets.MasterEntities, service.schema.entity_type('MasterEntity'), properties) assert fst_entity.equals(fst_entity) assert fst_entity.equals(scn_entity) assert scn_entity.equals(fst_entity) assert not fst_entity.equals(thr_entity) assert not scn_entity.equals(thr_entity) def test_get_entity_set_query_filter_eq(service): """Test the operator 'eq' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.MasterEntities.get_entities() filter_str = request.Key == 'foo' assert filter_str == "Key eq 'foo'" def test_get_entity_set_query_filter_ne(service): """Test the operator 'ne' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.MasterEntities.get_entities() filter_str = request.Key != 'bar' assert filter_str == "Key ne 'bar'" def test_get_entity_set_query_filter_lt(service): """Test the operator 'lt' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.Cars.get_entities() filter_str = request.Price < 2 assert filter_str == "Price lt 2" def test_get_entity_set_query_filter_le(service): """Test the operator 'le' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.Cars.get_entities() filter_str = request.Price <= 2 assert filter_str == "Price le 2" def test_get_entity_set_query_filter_ge(service): """Test the operator 'ge' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.Cars.get_entities() filter_str = request.Price >= 2 assert filter_str == "Price ge 2" def test_get_entity_set_query_filter_gt(service): """Test the operator 'gt' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.Cars.get_entities() filter_str = request.Price > 2 assert filter_str == "Price gt 2" def test_get_entity_set_query_filter_and(service): """Test the operator 'and' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.MasterEntities.get_entities() filter_str = GetEntitySetFilter.and_(request.Key == 'bar', request.DataType != 'foo') assert filter_str == "(Key eq 'bar' and DataType ne 'foo')" with pytest.raises(ExpressionError) as e_info: GetEntitySetFilter.and_() assert e_info.value.args[0] == 'The $filter operator \'and\' needs at least two operands' with pytest.raises(ExpressionError) as e_info: GetEntitySetFilter.and_('foo') assert e_info.value.args[0] == 'The $filter operator \'and\' needs at least two operands' def test_get_entity_set_query_filter_or(service): """Test the operator 'and' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.MasterEntities.get_entities() filter_str = GetEntitySetFilter.or_(request.Key == 'bar', request.DataType != 'foo') assert filter_str == "(Key eq 'bar' or DataType ne 'foo')" with pytest.raises(ExpressionError) as e_info: GetEntitySetFilter.or_() assert e_info.value.args[0] == 'The $filter operator \'or\' needs at least two operands' with pytest.raises(ExpressionError) as e_info: GetEntitySetFilter.or_('foo') assert e_info.value.args[0] == 'The $filter operator \'or\' needs at least two operands' def test_get_entity_set_query_filter_property_error(service): """Test the operator 'and' of $filter for humans""" # pylint: disable=redefined-outer-name, invalid-name request = service.entity_sets.MasterEntities.get_entities() with pytest.raises(KeyError) as e_info: assert not request.Foo == 'bar' assert e_info.value.args[0] == 'Foo' @responses.activate def test_inlinecount(service): """Check getting entities with $inlinecount""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees?$inlinecount=allpages", json={'d': { '__count': 3, 'results': [ { 'ID': 21, 'NameFirst': 'George', 'NameLast': 'Doe' },{ 'ID': 22, 'NameFirst': 'John', 'NameLast': 'Doe' },{ 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes' } ] }}, status=200) request = service.entity_sets.Employees.get_entities().count(inline=True) assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute().total_count == 3 @responses.activate def test_inlinecount_with_skip(service): """Check getting entities with $inlinecount with $skip""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees?$inlinecount=allpages&$skip=1", json={'d': { '__count': 3, 'results': [ { 'ID': 22, 'NameFirst': 'John', 'NameLast': 'Doe' },{ 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes' } ] }}, status=200) request = service.entity_sets.Employees.get_entities().skip(1).count(inline=True) assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute().total_count == 3 @responses.activate def test_navigation_inlinecount(service): """Check getting entities with $inlinecount via navigation property""" # pylint: disable=redefined-outer-name path = quote("Employees(23)/Addresses") responses.add( responses.GET, f"{service.url}/{path}?$inlinecount=allpages", json={'d': { '__count': 3, 'results': [ { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' },{ 'ID': 457, 'Street': 'Lowth Road', 'City': 'London' },{ 'ID': 458, 'Street': 'Warner Road', 'City': 'Manchester' } ] }}, status=200) addresses = service.entity_sets.Employees.get_entity(23).nav('Addresses').get_entities() request = addresses.count(inline=True) assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute().total_count == 3 @responses.activate def test_inlinecount_with_filter(service): """Check getting entities with $inlinecount and $filter""" # pylint: disable=redefined-outer-name path = quote("Employees(23)/Addresses") responses.add( responses.GET, f"{service.url}/{path}?$inlinecount=allpages&%24filter=City%20eq%20%27London%27", json={'d': { '__count': 2, 'results': [ { 'ID': 456, 'Street': 'Baker Street', 'City': 'London' },{ 'ID': 457, 'Street': 'Lowth Road', 'City': 'London' } ] }}, status=200) addresses = service.entity_sets.Employees.get_entity(23).nav('Addresses').get_entities() request = addresses.filter(addresses.City == 'London').count(inline=True) assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute().total_count == 2 @responses.activate def test_total_count_exception(service): """Check getting entities without $inlinecount and then requesting total_count""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees", json={'d': { 'results': [ { 'ID': 21, 'NameFirst': 'George', 'NameLast': 'Doe' },{ 'ID': 22, 'NameFirst': 'John', 'NameLast': 'Doe' },{ 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes' } ] }}, status=200) request = service.entity_sets.Employees.get_entities() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) with pytest.raises(ProgramError) as e_info: request.execute().total_count assert str(e_info.value) == ('The collection does not include Total Count of items because ' 'the request was made without specifying "count(inline=True)".') @responses.activate def test_count(service): """Check getting $count""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count", json=23, status=200) request = service.entity_sets.Employees.get_entities().count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 23 @responses.activate def test_count_with_skip(service): """Check getting $count with $skip""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$skip=12", json=11, status=200) request = service.entity_sets.Employees.get_entities().skip(12).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 11 @responses.activate def test_navigation_count(service): """Check getting $count via navigation property""" # pylint: disable=redefined-outer-name path = quote("Employees(23)/Addresses") responses.add( responses.GET, f"{service.url}/{path}/$count", json=458, status=200) addresses = service.entity_sets.Employees.get_entity(23).nav('Addresses').get_entities() request = addresses.count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 458 @responses.activate def test_count_with_filter(service): """Check getting $count with $filter""" # pylint: disable=redefined-outer-name path = quote("Employees(23)/Addresses") responses.add( responses.GET, f"{service.url}/{path}/$count?%24filter=City%20eq%20%27London%27", json=3, status=200) addresses = service.entity_sets.Employees.get_entity(23).nav('Addresses').get_entities() request = addresses.filter(addresses.City == 'London').count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter(service): """Check getting $count with $filter and using new filter syntax""" # pylint: disable=redefined-outer-name path = quote("Employees(23)/Addresses") responses.add( responses.GET, f"{service.url}/{path}/$count?%24filter=City%20eq%20%27London%27", json=3, status=200) employees = service.entity_sets.Employees.get_entity(23).nav('Addresses').get_entities() request = employees.filter(City="London").count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_partial_listing(service): """Using __next URI to fetch all entities in a collection""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees?$inlinecount=allpages", json={'d': { '__count': 3, '__next': f"{service.url}/Employees?$inlinecount=allpages&$skiptoken='opaque'", 'results': [ { 'ID': 21, 'NameFirst': 'George', 'NameLast': 'Doe' },{ 'ID': 22, 'NameFirst': 'John', 'NameLast': 'Doe' } ] }}, status=200) responses.add( responses.GET, f"{service.url}/Employees?$inlinecount=allpages&$skiptoken='opaque'", json={'d': { '__count': 3, 'results': [ { 'ID': 23, 'NameFirst': 'Rob', 'NameLast': 'Ickes' } ] }}, status=200) # Fetching (potentially) all entities, actually getting 2 request = service.entity_sets.Employees.get_entities().count(inline=True) assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) result = request.execute() assert len(result) == 2 assert result.total_count == 3 assert result.next_url is not None # Fetching next batch, receive the one remaining entity request = service.entity_sets.Employees.get_entities().next_url(result.next_url) assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) result = request.execute() assert len(result) == 1 assert result.total_count == 3, "(inline) count flag inherited from first request" assert result.next_url is None @responses.activate def test_count_with_chainable_filter_lt_operator(service): """Check getting $count with $filter with new filter syntax using multiple filters""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?%24filter=ID%20lt%2023", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__lt=23).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_lte_operator(service): """Check getting $count with $filter with new filter syntax using multiple filters""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?%24filter=ID%20le%2023", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__lte=23).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_gt_operator(service): """Check getting $count with $filter with new filter syntax using multiple filters""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?%24filter=ID%20gt%2023", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__gt=23).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_gte_operator(service): """Check getting $count with $filter with new filter syntax using multiple filters""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?%24filter=ID%20ge%2023", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__gte=23).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_eq_operator(service): """Check getting $count with $filter with new filter syntax using multiple filters""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?%24filter=ID%20eq%2023", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__eq=23).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_in_operator(service): """Check getting $count with $filter in""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=ID%20eq%201%20or%20ID%20eq%202%20or%20ID%20eq%203", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__in=[1,2,3]).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_startswith_operator(service): """Check getting $count with $filter in""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=startswith%28NickName%2C%20%27Tim%27%29%20eq%20true", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(NickName__startswith="Tim").count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_endswith_operator(service): """Check getting $count with $filter in""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=endswith%28NickName%2C%20%27othy%27%29%20eq%20true", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(NickName__endswith="othy").count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_length_operator(service): """Check getting $count with $filter in""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=length%28NickName%29%20eq%206", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(NickName__length=6).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_length_operator_as_string(service): """Check getting $count with $filter in""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=length%28NickName%29%20eq%206", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(NickName__length="6").count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_contains_operator(service): """Check getting $count with $filter in""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=substringof%28%27Tim%27%2C%20NickName%29%20eq%20true", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(NickName__contains="Tim").count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_range_operator(service): """Check getting $count with $filter in""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=ID%20gte%2020%20and%20ID%20lte%2050", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__range=(20, 50)).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_multiple(service): """Check getting $count with $filter with new filter syntax using multiple filters""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?%24filter=ID%20eq%2023%20and%20NickName%20eq%20%27Steve%27", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID=23, NickName="Steve").count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filter_or(service): """Check getting $count with $filter with FilterExpression syntax or""" from pyodata.v2.service import FilterExpression as Q # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=%28ID%20eq%2023%20and%20NickName%20eq%20%27Steve%27%29%20or%20%28ID%20eq%2025%20and%20NickName%20eq%20%27Tim%27%29", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(Q(ID=23, NickName="Steve") | Q(ID=25, NickName="Tim")).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_multiple_chainable_filters_startswith(service): """Check getting $count with $filter calling startswith""" from pyodata.v2.service import FilterExpression as Q # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=%28ID%20eq%2023%20and%20startswith%28NickName%2C%20%27Ste%27%29%20eq%20true%29%20or%20%28ID%20eq%2025%20and%20NickName%20eq%20%27Tim%27%29", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(Q(ID=23, NickName__startswith="Ste") | Q(ID=25, NickName="Tim")).count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_count_with_chainable_filters_invalid_property_lookup(service): """Check getting $count with $filter calling startswith""" # pylint: disable=redefined-outer-name employees = service.entity_sets.Employees.get_entities() with pytest.raises(ValueError) as ex: request = employees.filter(Foo="Bar") assert str(ex.value) == '"Foo" is not a valid property or operator' @responses.activate def test_count_with_chainable_filters_invalid_operator_lookup(service): """Check getting $count with $filter calling startswith""" # pylint: disable=redefined-outer-name employees = service.entity_sets.Employees.get_entities() with pytest.raises(ValueError) as ex: request = employees.filter(NickName__foo="Bar") assert str(ex.value) == '"foo" is not a valid property or operator' @responses.activate def test_count_with_chained_filters(service): """Check getting $count with chained filters""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?$filter=ID%20gte%2020%20and%20ID%20lte%2050%20and%20NickName%20eq%20%27Tim%27", json=3, status=200) employees = service.entity_sets.Employees.get_entities() request = employees.filter(ID__range=(20, 50)).filter(NickName="Tim").count() assert isinstance(request, pyodata.v2.service.GetEntitySetRequest) assert request.execute() == 3 @responses.activate def test_create_entity_with_utc_datetime(service): """Basic test on creating entity with an UTC datetime object""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/TemperatureMeasurements", headers={'Content-type': 'application/json'}, json={'d': { 'Sensor': 'Sensor1', 'Date': '/Date(1514138400000)/', 'Value': '34.0d' }}, status=201) request = service.entity_sets.TemperatureMeasurements.create_entity().set(**{ 'Sensor': 'Sensor1', 'Date': datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc), 'Value': 34.0 }) assert request._values['Date'] == '/Date(1514138400000)/' result = request.execute() assert result.Date == datetime.datetime(2017, 12, 24, 18, 0, tzinfo=datetime.timezone.utc) @responses.activate def test_create_entity_with_non_utc_datetime(service): """ Basic test on creating entity with an non-UTC datetime object Also tzinfo is set to simulate user passing datetime object with different timezone than UTC """ # https://stackoverflow.com/questions/17976063/how-to-create-tzinfo-when-i-have-utc-offset class MyUTCOffsetTimezone(datetime.tzinfo): def __init__(self, offset=19800, name=None): self.offset = datetime.timedelta(seconds=offset) self.name = name or self.__class__.__name__ def utcoffset(self, dt): return self.offset def tzname(self, dt): return self.name def dst(self, dt): return datetime.timedelta(0) # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/TemperatureMeasurements", headers={'Content-type': 'application/json'}, json={'d': { 'Sensor': 'Sensor1', 'Date': '/Date(1514138400000)/', 'Value': '34.0d' }}, status=201) with pytest.raises(PyODataModelError) as e_info: # Offset -18000 sec is for America/Chicago (CDT) timezone service.entity_sets.TemperatureMeasurements.create_entity().set(**{ 'Sensor': 'Sensor1', 'Date': datetime.datetime(2017, 12, 24, 18, 0, tzinfo=MyUTCOffsetTimezone(-18000)), 'Value': 34.0 }) @responses.activate def test_create_entity_with_naive_datetime(service): """Preventing creation/usage of an entity with an unaware datetime object""" with pytest.raises(PyODataModelError) as e_info: service.entity_sets.TemperatureMeasurements.create_entity().set(**{ 'Sensor': 'Sensor1', 'Date': datetime.datetime(2017, 12, 24, 18, 0), 'Value': 34.0 }) assert str(e_info.value).startswith('Edm.DateTime accepts only UTC') @responses.activate def test_null_datetime(service): """Test default value of DateTime. Default value gets inserted when a property is null""" responses.add( responses.GET, f"{service.url}/TemperatureMeasurements", headers={'Content-type': 'application/json'}, json={'d': { 'results': [ { 'Date': None, } ] }}, status=200) result = service.entity_sets.TemperatureMeasurements.get_entities().execute() assert result[0].Date == datetime.datetime(1753, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc) @responses.activate def test_parsing_of_datetime_before_unix_time(service): """Test DateTime handling of time before 1970""" # pylint: disable=redefined-outer-name responses.add( responses.POST, f"{service.url}/TemperatureMeasurements", headers={'Content-type': 'application/json'}, json={'d': { 'Sensor': 'Sensor1', 'Date': '/Date(-777877200000)/', 'Value': '34.0d' }}, status=201) request = service.entity_sets.TemperatureMeasurements.create_entity().set(**{ 'Sensor': 'Sensor1', 'Date': datetime.datetime(1945, 5, 8, 19, 0, tzinfo=datetime.timezone.utc), 'Value': 34.0 }) assert request._values['Date'] == '/Date(-777877200000)/' result = request.execute() assert result.Date == datetime.datetime(1945, 5, 8, 19, 0, tzinfo=datetime.timezone.utc) @responses.activate @pytest.mark.parametrize("json_input,expected", [ ('/Date(981173106000+0001)/', datetime.datetime(2001, 2, 3, 4, 5, 6, tzinfo=datetime.timezone(datetime.timedelta(minutes=1)))), ('/Date(981173106000-0001)/', datetime.datetime(2001, 2, 3, 4, 5, 6, tzinfo=datetime.timezone(-datetime.timedelta(minutes=1)))), (None, datetime.datetime(1753, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc)), ]) def test_parsing_of_datetimeoffset(service, json_input, expected): """Test DateTimeOffset handling.""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/TemperatureMeasurements", headers={'Content-type': 'application/json'}, json={'d': { 'results': [ { 'Sensor': 'Sensor1', 'Date': '/Date(-981173106000)/', 'DateTimeWithOffset': json_input, 'Value': '34.0d' } ] }}, status=200) result = service.entity_sets.TemperatureMeasurements.get_entities().execute() assert result[0].DateTimeWithOffset == expected @responses.activate def test_mismatched_etags_in_body_and_header(service): """Test creating entity with missmatched etags""" responses.add( responses.POST, f"{service.url}/MasterEntities", headers={ 'Content-type': 'application/json', 'ETag': 'W/\"JEF\"' }, json={'d': { '__metadata': { 'etag': 'W/\"PEF\"', } }}, status=201) with pytest.raises(PyODataException) as e_info: service.entity_sets.MasterEntities.create_entity().set(**{}).execute() assert str(e_info.value) == 'Etag from header does not match the Etag from response body' def test_odata_http_response(): """Test that ODataHttpResponse is complaint with requests.Reponse""" response_string = 'HTTP/1.1 200 OK \n' \ 'Content-Type: application/json\n' \ '\n' \ '{"d": {"ID": 23 }}' response = ODataHttpResponse.from_string(response_string) assert response.status_code == HTTP_CODE_OK assert isinstance(response.headers, dict) assert response.headers['Content-Type'] == 'application/json' assert response.json()['d']['ID'] == 23 @responses.activate def test_custom_with_get_entity(service): """ Test that `custom` can be called after `get_entity`""" path = quote("MasterEntities('12345')") responses.add( responses.GET, f"{service.url}/{path}?foo=bar", headers={'Content-type': 'application/json'}, json={'d': {'Key': '12345'}}, status=200) entity = service.entity_sets.MasterEntities.get_entity('12345').custom("foo", "bar").execute() assert entity.Key == '12345' @responses.activate def test_custom_with_get_entity_url_params(service): """ Test that `custom` after `get_entity` is setting up correctly URL parts """ path = quote("MasterEntities('12345')") responses.add( responses.GET, f"{service.url}/{path}?foo=bar", headers={'Content-type': 'application/json'}, json={'d': {'Key': '12345'}}, status=200) oDataHttpRequest = service.entity_sets.MasterEntities.get_entity('12345').custom("foo", "bar") assert oDataHttpRequest.get_query_params() == {'foo': 'bar'} assert oDataHttpRequest.get_path() == quote("MasterEntities('12345')") entity = oDataHttpRequest.execute() assert entity.Key == '12345' @responses.activate def test_multiple_custom_with_get_entity_url_params(service): """ Test that `custom` after `get_entity` called several times is setting up correctly URL parts """ path = quote("MasterEntities('12345')") responses.add( responses.GET, f"{service.url}/{path}?foo=bar&$fizz=buzz", headers={'Content-type': 'application/json'}, json={'d': {'Key': '12345'}}, status=200) oDataHttpRequest = service.entity_sets.MasterEntities.get_entity('12345').custom("foo", "bar").custom("$fizz", "buzz") assert oDataHttpRequest.get_query_params() == {'foo': 'bar', '$fizz': 'buzz'} assert oDataHttpRequest.get_path() == quote("MasterEntities('12345')") entity = oDataHttpRequest.execute() assert entity.Key == '12345' @responses.activate def test_custom_with_get_entities_and_chained_filters_url_params(service): """ Test that `custom` after `get_entities` works with complex query (count, filter) """ # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service.url}/Employees/$count?foo=bar&$fizz=buzz&$filter=ID%20gte%2020%20and%20ID%20lte%2050%20and%20NickName%20eq%20%27Tim%27", json=3, status=200) employees = service.entity_sets.Employees.get_entities().custom("foo", "bar").custom("$fizz", "buzz") request = employees.filter(ID__range=(20, 50)).filter(NickName="Tim").count() assert request.get_query_params() == {'foo': 'bar', '$fizz': 'buzz', '$filter': "ID gte 20 and ID lte 50 and NickName eq 'Tim'"} assert request.get_path() == 'Employees/$count' @responses.activate def test_custom_with_create_entity_url_params(service): """Test that `custom` after creating entity works correctly""" # pylint: dispyable=redefined-outer-name responses.add( responses.POST, f"{service.url}/MasterEntities?foo=bar", headers={ 'Content-type': 'application/json', 'ETag': 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"' }, json={'d': { '__metadata': { 'etag': 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"', }, 'Key': '12345', 'Data': 'abcd' }}, status=201) oDataHttpRequest = service.entity_sets.MasterEntities.create_entity().set(**{'Key': '1234', 'Data': 'abcd'}).custom("foo", "bar") assert oDataHttpRequest.get_query_params() == {'foo': 'bar'} assert oDataHttpRequest.get_path() == 'MasterEntities' assert oDataHttpRequest.get_method() == 'POST' assert oDataHttpRequest.get_body() == '{"Key": "1234", "Data": "abcd"}' result = oDataHttpRequest.execute() assert result.Key == '12345' assert result.Data == 'abcd' assert result.etag == 'W/\"J0FtZXJpY2FuIEFpcmxpbmVzJw==\"'python-pyodata-1.11.2/tests/test_vendor_microsoft.py000066400000000000000000000027541500317427700227270ustar00rootroot00000000000000"""PyOData Microsoft tests""" import os import requests import pytest import responses import pyodata from pyodata.v2.model import schema_from_xml from tests.conftest import contents_of_fixtures_file @pytest.fixture def metadata_northwind_v2(): return contents_of_fixtures_file("metadata_odata_org_northwind_v2.xml") @pytest.fixture def schema_northwind_v2(metadata_northwind_v2): return schema_from_xml(metadata_northwind_v2) @pytest.fixture def service_northwind_v2(schema_northwind_v2): """https://services.odata.org/V2/Northwind/Northwind.svc/""" return pyodata.v2.service.Service('http://not.resolvable.services.odata.org/V2/Northwind/Northwind.svc', schema_northwind_v2, requests) @responses.activate def test_get_entities_with_top_and_skip_without_results_member(service_northwind_v2): """Get entities with the missing member results.""" # pylint: disable=redefined-outer-name responses.add( responses.GET, f"{service_northwind_v2.url}/Employees?$skip=10&$top=5", json={'d': [ { 'EmployeeID': 1, 'LastName': 'Quellcrist', 'FirstName': 'Falconer' } ] }, status=200) empls = service_northwind_v2.entity_sets.Employees.get_entities().skip(10).top(5).execute() assert empls[0].EmployeeID == 1 assert empls[0].LastName == 'Quellcrist' assert empls[0].FirstName == 'Falconer' python-pyodata-1.11.2/tests/test_vendor_sap.py000066400000000000000000000211671500317427700215040ustar00rootroot00000000000000"""PyOData Vendor SAP tests""" import logging from typing import NamedTuple, ByteString import pytest from pyodata.exceptions import PyODataException, HttpError from pyodata.vendor import SAP import responses import requests import json class MockResponse(NamedTuple): content: ByteString @pytest.fixture def response_with_error(): return MockResponse( b'{"error": { "message": { "value": "Gateway Error" } } }') @pytest.fixture def response_with_error_and_innererror(): return MockResponse( b'{ "error": {\n\ "message": { "value": "Gateway Error" },\n\ "innererror": { "errordetails" : [\n\ { "message" : "Inner Error 1" },\n\ { "message" : "Inner Error 2" } ] } } }\n') def test_parse_invalid_json(): """Make sure an invalid JSON does not cause a disaster""" sap_error = SAP.BusinessGatewayError('Programmer message', MockResponse(b'random data')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_without_error(): """Make sure a JSON without error member does not cause a disaster""" sap_error = SAP.BusinessGatewayError('Programmer message', MockResponse(b'{"random": "data"}')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_without_error_object(): """Make sure a JSON without error member does not cause a disaster""" sap_error = SAP.BusinessGatewayError('Programmer message', MockResponse(b'{"error": "data"}')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_without_message(): """Make sure a JSON without message member does not cause a disaster""" sap_error = SAP.BusinessGatewayError('Programmer message', MockResponse(b'{"error": { "data" : "foo" } }')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_without_message_object(): """Make sure a JSON without message member does not cause a disaster""" sap_error = SAP.BusinessGatewayError('Programmer message', MockResponse(b'{"error": { "message" : "foo" } }')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_without_value(): """Make sure a JSON without value member does not cause a disaster""" sap_error = SAP.BusinessGatewayError( 'Programmer message', MockResponse(b'{"error": { "message" : { "foo" : "value" } } }')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_with_error(response_with_error): """Make sure a JSON without message member does not cause a disaster""" sap_error = SAP.BusinessGatewayError( 'Programmer message', response_with_error) assert str(sap_error) == 'Gateway Error' assert not sap_error.errordetails def test_parse_without_errordetails(): """Make sure a JSON without errordetails member does not cause a disaster """ sap_error = SAP.BusinessGatewayError( 'Programmer message', MockResponse(b'{"error" : {\n\ "innererror": { "message" : "value" } } }')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_without_array_errordetails(): """Make sure a JSON without array errordetails member does not cause a disaster """ sap_error = SAP.BusinessGatewayError( 'Programmer message', MockResponse(b'{"error" : {\n\ "innererror": { "errordetails" : "value" } } }')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_errordetails_no_object(): """Make sure a JSON where error details are not objects does not cause a disaster """ sap_error = SAP.BusinessGatewayError( 'Programmer message', MockResponse(b'{"error" : {\n\ "innererror": { "errordetails" : [ "foo", "bar" ] } } }')) assert str(sap_error) == 'Programmer message' assert not sap_error.errordetails def test_parse_errordetails_no_message(): """Make sure a JSON where error details misses the member message does not cause a disaster """ sap_error = SAP.BusinessGatewayError( 'Programmer message', MockResponse(b'{"error" : {\n\ "innererror": { "errordetails" : [ { "foo" : "bar" } ] } } }')) assert str(sap_error) == 'Programmer message' assert [''] == sap_error.errordetails def test_parse_with_error_and_innererror(response_with_error_and_innererror): """Make sure we parse out data correctly""" sap_error = SAP.BusinessGatewayError( 'Programmer error', response_with_error_and_innererror) assert str(sap_error) == 'Gateway Error' assert sap_error.errordetails assert 2 == len(sap_error.errordetails) assert sap_error.errordetails[0] == 'Inner Error 1' assert sap_error.errordetails[1] == 'Inner Error 2' def test_vendor_http_error(response_with_error): """Check that HttpError correctly returns an instance of BusinessGatewayError """ logging.debug('First run') http_error = HttpError('Foo bar', response_with_error) assert isinstance(http_error, HttpError) assert str(http_error) == 'Foo bar' logging.debug('Second run') HttpError.VendorType = SAP.BusinessGatewayError sap_error = HttpError('Another foo bar', response_with_error) assert isinstance(sap_error, SAP.BusinessGatewayError) assert str(sap_error) == 'Gateway Error' MOCK_AUTH_URL = "https://example.authentication.hana.ondemand.com" MOCK_BTP_USER = "example_btp_user@gmail.com" MOCK_BTP_PASSWORD = "example_password" MOCK_KEY = { "uaa": { "url": MOCK_AUTH_URL, "clientid": "example-client-id", "clientsecret": "example-client-secret" } } @responses.activate def test_add_btp_token_to_session_valid(): """Valid username, password and key return a session with set token""" responses.add( responses.POST, MOCK_AUTH_URL + f'/oauth/token?grant_type=password&username={MOCK_BTP_USER}&password={MOCK_BTP_PASSWORD}', headers={'Content-type': 'application/json'}, json={ 'access_token': 'valid_access_token', 'token_type': 'bearer', 'id_token': 'valid_id_token', 'refresh_token': 'valid_refresh_token', 'expires_in': 43199, 'scope': 'openid uaa.user', 'jti': 'valid_jti' }, status=200) result = SAP.add_btp_token_to_session(requests.Session(), MOCK_KEY, MOCK_BTP_USER, MOCK_BTP_PASSWORD) assert result.headers['Authorization'] == 'Bearer valid_id_token' @responses.activate def test_add_btp_token_to_session_invalid_user(): """Invalid username returns an HttpError""" invalid_user = "invalid@user.com" responses.add( responses.POST, MOCK_AUTH_URL + f'/oauth/token?grant_type=password&username={invalid_user}&password={MOCK_BTP_PASSWORD}', headers={'Content-type': 'application/json'}, json={ 'error': 'unauthorized', 'error_description': { 'error': 'invalid_grant', 'error_description': 'User authentication failed.' } }, status=401) with pytest.raises(HttpError) as caught: SAP.add_btp_token_to_session(requests.Session(), MOCK_KEY, invalid_user, MOCK_BTP_PASSWORD) assert caught.value.response.status_code == 401 assert json.loads(caught.value.response.text)['error_description']['error'] == 'invalid_grant' @responses.activate def test_add_btp_token_to_session_invalid_clientid(): """Invalid clientid in key returns an HttpError""" invalid_key = MOCK_KEY.copy() invalid_key['uaa']['clientid'] = 'invalid-client-id' responses.add( responses.POST, MOCK_AUTH_URL + f'/oauth/token?grant_type=password&username={MOCK_BTP_USER}&password={MOCK_BTP_PASSWORD}', headers={'Content-type': 'application/json'}, json={ 'error': 'unauthorized', 'error_description': 'Bad credentials' }, status=401) with pytest.raises(HttpError) as caught: SAP.add_btp_token_to_session(requests.Session(), invalid_key, MOCK_BTP_USER, MOCK_BTP_PASSWORD) assert caught.value.response.status_code == 401 assert json.loads(caught.value.response.text)['error_description'] == 'Bad credentials'