summary refs log tree commit diff
path: root/synapse/rest (follow)
Commit message (Expand)AuthorAgeFilesLines
* missed oneDavid Baker2018-10-121-0/+1
* Don't mangle exceptionsDavid Baker2018-10-121-4/+2
* Split /room_keys/version into 2 servletsDavid Baker2018-10-121-9/+21
* PR feedback pt. 1David Baker2018-10-121-1/+1
* isortDavid Baker2018-10-091-1/+1
* Merge remote-tracking branch 'origin/develop' into dbkr/e2e_backupsDavid Baker2018-10-0921-123/+197
|\
| * Merge pull request #3932 from matrix-org/erikj/auto_start_expiring_cachesRichard van der Hoff2018-09-251-1/+0
| |\
| | * Fix some instances of ExpiringCache not expiring cache itemsErik Johnston2018-09-211-1/+0
| * | added "media-src: 'self'" to CSP for resources (#3578)Jérémy Farnaud2018-09-251-0/+1
| |/
| * Merge pull request #3835 from krombel/fix_3821Amber Brown2018-09-121-1/+5
| |\
| | * fix VOIP crashes under Python 3 (#3821)Krombel2018-09-101-1/+5
| * | Port rest/ to Python 3 (#3823)Amber Brown2018-09-1217-100/+112
| |/
| * Merge pull request #3790 from matrix-org/rav/respect_event_format_in_filterRichard van der Hoff2018-09-051-13/+38
| |\
| | * Implement 'event_format' filter param in /syncRichard van der Hoff2018-09-041-13/+38
| * | improve human readable error messageNeil Johnson2018-09-041-1/+2
| * | improve human readable error messagesNeil Johnson2018-09-042-7/+20
| |/
| * move threepid checker to config, add missing yieldsNeil Johnson2018-08-312-5/+7
| * ensure post registration auth checks do not fail erroneouslyNeil Johnson2018-08-312-0/+8
| * fix bug where preserved threepid user comes to sign up and server is mau blockedNeil Johnson2018-08-312-1/+10
* | WIP e2e key backupsDavid Baker2018-09-131-4/+10
* | try to make flake8 and isort happyHubert Chathi2018-09-061-1/+4
* | Merge branch 'develop' into e2e_backupsHubert Chathi2018-08-2413-79/+143
|\|
| * Merge pull request #3724 from Half-Shot/hs/guest-fetch-eventErik Johnston2018-08-221-1/+1
| |\
| | * Allow guests to access /rooms/:roomId/event/:eventIdWill Hunt2018-08-201-1/+1
| * | fix another consent encoding failRichard van der Hoff2018-08-211-1/+1
| * | Fix 500 error from /consent formRichard van der Hoff2018-08-211-2/+11
| |/
| * Port over enough to get some sytests running on Python 3 (#3668)Amber Brown2018-08-202-6/+6
| * Integrate presence from hotfixes (#3694)Amber Brown2018-08-181-1/+2
| * Remove v1/register's broken shared secret functionality (#3703)Amber Brown2018-08-181-54/+0
| * Add GET media/v1/config (#3184)Will Hunt2018-08-162-1/+50
| * lazyload aware /messages (#3589)Matthew Hodgson2018-08-161-1/+12
| * initial cut at a room summary API (#3574)Matthew Hodgson2018-08-161-0/+1
| * speed up /members and add at= and membership params (#3568)Matthew Hodgson2018-08-151-3/+29
| * Merge pull request #3667 from matrix-org/erikj/fixup_unbindErik Johnston2018-08-152-6/+27
| |\
| | * Don't fail requests to unbind 3pids for non supporting ID serversErik Johnston2018-08-082-6/+27
| * | Rename async to async_helpers because `async` is a keyword on Python 3.7 (#3678)Amber Brown2018-08-103-3/+3
| |/
* | missing importMatthew Hodgson2018-08-121-1/+1
* | use parse_stringMatthew Hodgson2018-08-121-3/+3
* | support DELETE /version with no argsMatthew Hodgson2018-08-121-2/+3
* | implement remaining tests and make them workMatthew Hodgson2018-08-121-0/+6
* | improve docstringMatthew Hodgson2018-08-121-1/+5
* | add a tonne of docstring; make upload_room_keys properly assert versionMatthew Hodgson2018-08-121-1/+10
* | more docstring for the e2e_room_keys restMatthew Hodgson2018-08-121-0/+51
* | blindly incorporate PR review - needs testing & fixingMatthew Hodgson2018-08-121-0/+2
* | make /room_keys/version workMatthew Hodgson2018-08-121-1/+8
* | implement /room_keys/version too (untested)Matthew Hodgson2018-08-121-0/+47
* | document the APIMatthew Hodgson2018-08-121-0/+133
* | make it work and fix pep8Matthew Hodgson2018-08-122-13/+22
* | interim WIP checkin; doesn't build yetMatthew Hodgson2018-08-121-4/+33
* | total WIP skeleton for /room_keys APIMatthew Hodgson2018-08-121-0/+56
|/
* Merge pull request #3639 from matrix-org/rav/refactor_error_handlingRichard van der Hoff2018-08-021-1/+1
|\
| * Refactor code for turning HttpResponseException into SynapseErrorRichard van der Hoff2018-08-011-1/+1
* | Merge branch 'master' into developRichard van der Hoff2018-08-022-2/+2
|\ \
| * | Check room visibility for /event/ requestsRichard van der Hoff2018-08-022-2/+2
* | | Merge pull request #3620 from fuzzmz/return-404-room-not-foundRichard van der Hoff2018-08-011-2/+2
|\ \ \ | |_|/ |/| |
| * | return NotFoundError if room not foundSerban Constantin2018-07-311-2/+2
* | | Python 3: Convert some unicode/bytes uses (#3569)Amber Brown2018-08-023-14/+22
|/ /
* | make /context lazyload & filter aware (#3567)Matthew Hodgson2018-07-271-0/+9
* | Fix some looping_call calls which were broken in #3604Richard van der Hoff2018-07-262-2/+2
* | Wrap a number of things that run in the backgroundRichard van der Hoff2018-07-252-2/+14
* | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/client_api...Erik Johnston2018-07-236-13/+206
|\ \
| * | Admin API for creating new users (#3415)Amber Brown2018-07-201-0/+122
| * | Move v1-only APIs into their own module & isolate deprecated ones (#3460)Amber Brown2018-07-195-13/+84
| |/
* | Move RoomContextHandler out of HandlersErik Johnston2018-07-181-2/+2
* | Split MessageHandler into read only and writersErik Johnston2018-07-182-15/+13
|/
* Refactor REST API tests to use explicit reactors (#3351)Amber Brown2018-07-171-1/+1
* rerun isort with latest versionKrombel2018-07-161-13/+3
* check isort by travisKrombel2018-07-165-9/+19
* Fix develop because I broke it :( (#3535)Amber Brown2018-07-141-2/+2
* Merge pull request #3534 from krombel/use_parse_and_asserts_from_servletAmber Brown2018-07-1414-139/+92
|\
| * fix sytestsAmber Brown2018-07-141-1/+1
| * add changelogKrombel2018-07-131-1/+1
| * rename assert_params_in_request to assert_params_in_dictKrombel2018-07-139-30/+30
| * Use parse_{int,str} and assert from http.servletKrombel2018-07-1313-132/+85
* | Make auth & transactions more testable (#3499)Amber Brown2018-07-147-35/+31
|/
* Merge branch 'develop' into rav/enforce_report_apiRichard van der Hoff2018-07-1251-339/+338
|\
| * run isortAmber Brown2018-07-0950-307/+288
| * Attempt to be more performant on PyPy (#3462)Amber Brown2018-06-285-5/+8
| * update doc for deactivate APIMatthew Hodgson2018-06-261-1/+1
| * add GDPR erase param to deactivate APIMatthew Hodgson2018-06-261-1/+12
| * Revert "Revert "Merge pull request #3431 from matrix-org/rav/erasure_visibili...Erik Johnston2018-06-252-3/+14
| * Revert "Merge pull request #3431 from matrix-org/rav/erasure_visibility"Richard van der Hoff2018-06-222-14/+3
| * Merge pull request #3431 from matrix-org/rav/erasure_visibilityErik Johnston2018-06-222-3/+14
| |\
| | * mark accounts as erased when requestedRichard van der Hoff2018-06-122-3/+14
| * | Pass around the reactor explicitly (#3385)Amber Brown2018-06-222-3/+7
| * | Remove run_on_reactor (#3395)Amber Brown2018-06-143-17/+0
| |/
| * Merge pull request #3276 from matrix-org/dbkr/unbindDavid Baker2018-06-111-3/+10
| |\
| | * Merge remote-tracking branch 'origin/develop' into dbkr/unbindDavid Baker2018-05-241-3/+5
| | |\
| | * | pep8David Baker2018-05-241-1/+1
| | * | Unbind 3pids when they're deleted tooDavid Baker2018-05-241-3/+10
| * | | fix logRichard van der Hoff2018-06-071-1/+1
| * | | Fix event-purge-by-ts admin APIRichard van der Hoff2018-06-071-6/+4
| * | | Consistently use six's iteritems and wrap lazy keys/values in list() if they'...Amber Brown2018-05-311-1/+1
* | | | Enforce the specified API for report_eventRichard van der Hoff2018-05-311-2/+23
|/ / /
* | | Merge pull request #3244 from NotAFile/py3-six-4Amber Brown2018-05-241-1/+2
|\ \ \
| * | | replace some iteritems with sixAdrian Tschira2018-05-191-1/+2
* | | | Merge pull request #3247 from NotAFile/py3-miscAmber Brown2018-05-241-3/+5
|\ \ \ \ | |_|_|/ |/| | |
| * | | py3-ize url previewAdrian Tschira2018-05-191-3/+5
| |/ /
* | | Merge pull request #3243 from NotAFile/py3-six-3Erik Johnston2018-05-241-3/+5
|\ \ \ | |_|/ |/| |
| * | Replace some more comparisons with sixAdrian Tschira2018-05-191-3/+5
| |/
* | Add a 'has_consented' template var to consent formsRichard van der Hoff2018-05-221-3/+14
* | Enable auto-escaping for the consent templatesRichard van der Hoff2018-05-221-1/+4
* | Stub out ServerNoticesSender on the workersRichard van der Hoff2018-05-221-0/+4
* | Move consent config parsing into ConsentConfigRichard van der Hoff2018-05-221-5/+3
* | Rename 'version' param on user consent configRichard van der Hoff2018-05-221-1/+1
* | Fix logcontext leak in HttpTransactionCacheRichard van der Hoff2018-05-211-25/+21
* | Stop the transaction cache caching failuresRichard van der Hoff2018-05-211-9/+13
|/
* Merge pull request #3221 from matrix-org/erikj/purge_tokenErik Johnston2018-05-181-7/+10
|\
| * Make purge_history operate on tokensErik Johnston2018-05-151-7/+10
* | Move RoomCreationHandler out of synapse.handlers.HandlersRichard van der Hoff2018-05-172-5/+4
* | Merge pull request #3213 from matrix-org/rav/consent_handlerRichard van der Hoff2018-05-162-0/+210
|\ \ | |/ |/|
| * ConsentResource to gather policy consent from usersRichard van der Hoff2018-05-152-0/+210
* | Set Server header in SynapseRequestRichard van der Hoff2018-05-109-14/+1
|/
* Remove redundant request_handler decoratorRichard van der Hoff2018-05-105-29/+38
* notifications: Convert next_token to string according to the specKonstantinos Sideris2018-05-051-1/+1
* Merge pull request #3161 from NotAFile/remove-v1authRichard van der Hoff2018-05-032-2/+6
|\
| * Burminate v1authAdrian Tschira2018-04-302-2/+6
* | Fix logcontext leak in media repoRichard van der Hoff2018-05-022-1/+4
|/
* add guard for None on purge_history apiKrombel2018-04-301-1/+14
* Merge pull request #3155 from NotAFile/py3-bytes-1Richard van der Hoff2018-04-301-3/+3
|\
| * more bytes stringsAdrian Tschira2018-04-291-3/+3
* | Merge pull request #3140 from matrix-org/rav/use_run_in_backgroundRichard van der Hoff2018-04-301-2/+3
|\ \
| * | Merge remote-tracking branch 'origin/develop' into rav/use_run_in_backgroundRichard van der Hoff2018-04-271-2/+7
| |\|
| * | Use run_in_background in preference to preserve_fnRichard van der Hoff2018-04-271-2/+3
* | | Merge pull request #3156 from NotAFile/py3-hmac-bytesRichard van der Hoff2018-04-302-11/+15
|\ \ \
| * | | Construct HMAC as bytes on py3Adrian Tschira2018-04-292-11/+15
| | |/ | |/|
* | | Merge pull request #3108 from NotAFile/py3-six-urlparseRichard van der Hoff2018-04-304-7/+8
|\ \ \ | |/ / |/| |
| * | Use six.moves.urlparseAdrian Tschira2018-04-154-7/+8
| |/
* / Improve exception handling for background processesRichard van der Hoff2018-04-271-2/+7
|/
* Merge pull request #3079 from matrix-org/erikj/limit_concurrent_sendsErik Johnston2018-04-101-6/+1
|\
| * Use create_and_send_nonmember_event everywhereErik Johnston2018-04-091-6/+1
* | Merge pull request #2996 from krombel/allow_auto_join_roomsRichard van der Hoff2018-04-101-32/+0
|\ \
| * \ Merge branch 'develop' of into allow_auto_join_roomsKrombel2018-03-283-3/+3
| |\ \
| * | | move handling of auto_join_rooms to RegisterHandlerKrombel2018-03-141-32/+0
* | | | Merge pull request #3061 from NotAFile/add-some-byte-stringsRichard van der Hoff2018-04-091-2/+2
|\ \ \ \
| * | | | Add b prefixes to some strings that are bytes in py3Adrian Tschira2018-04-041-2/+2
| | |/ / | |/| |
* | | | Merge pull request #3073 from NotAFile/use-six-reraiseRichard van der Hoff2018-04-091-1/+3
|\ \ \ \
| * | | | Replace old-style raise with six.reraiseAdrian Tschira2018-04-061-1/+3
| | |_|/ | |/| |
* | | | Merge pull request #2938 from dklug/developRichard van der Hoff2018-04-091-1/+4
|\ \ \ \ | |/ / / |/| | |
| * | | Return 401 for invalid access_token on logoutdklug2018-03-021-1/+4
* | | | Merge pull request #2986 from jplatte/join_reponse_room_idRichard van der Hoff2018-04-051-1/+6
|\ \ \ \
| * | | | Add room_id to the response of `rooms/{roomId}/join`Jonas Platte2018-03-131-1/+6
| | |_|/ | |/| |
* | | | Use "/settings/" (plural)Luke Barnard2018-04-051-1/+1
* | | | Use join_policy API instead of joinableLuke Barnard2018-04-031-6/+6
* | | | This should probably be a PUTDavid Baker2018-03-281-1/+1
* | | | Add joinability for groupsDavid Baker2018-03-281-0/+28
| |_|/ |/| |
* | | Merge branch 'master' of github.com:matrix-org/synapse into developErik Johnston2018-03-192-2/+2
|\ \ \
| * | | Replace ujson with simplejsonErik Johnston2018-03-153-3/+3
* | | | Replace some ujson with simplejson to make it workErik Johnston2018-03-161-1/+1
| |/ / |/| |
* | | RoomMembershipRestServlet doesn't handle /forgetErik Johnston2018-03-131-1/+1
* | | Add transactional API to history purgeRichard van der Hoff2018-03-121-3/+35
* | | Provide a means to pass a timestamp to purge_historyRichard van der Hoff2018-03-051-3/+55
| |/ |/|
* | Move RoomMemberHandler out of HandlersErik Johnston2018-03-013-13/+15
* | Make store_file use store_into_fileErik Johnston2018-02-141-26/+11
* | Merge pull request #2854 from matrix-org/erikj/event_create_workerErik Johnston2018-02-131-1/+0
|\ \
| * | Add event_creator workerErik Johnston2018-02-071-1/+0
* | | Fix typos in purge api & docRichard van der Hoff2018-02-131-3/+1
* | | Merge pull request #2857 from matrix-org/erikj/upload_storeErik Johnston2018-02-121-0/+6
|\ \ \
| * | | Tell storage providers about new file so they can uploadErik Johnston2018-02-071-0/+6
| |/ /
* | | Merge pull request #2858 from matrix-org/rav/purge_updatesRichard van der Hoff2018-02-091-1/+10
|\ \ \ | |/ / |/| |
| * | delete_local_events for purge_historyRichard van der Hoff2018-02-091-1/+10
* | | Update copyrightErik Johnston2018-02-062-0/+2
* | | Update places where we create eventsErik Johnston2018-02-052-9/+11
* | | Merge pull request #2791 from matrix-org/erikj/media_storage_refactorErik Johnston2018-02-053-12/+47
|\ \ \
| * | | Use better file consumerErik Johnston2018-01-181-5/+10
| * | | Ensure media is in local cache before thumbnailingErik Johnston2018-01-183-10/+40
* | | | Merge pull request #2845 from matrix-org/rav/urlcache_error_handlingRichard van der Hoff2018-02-021-21/+34
|\ \ \ \
| * | | | Handle url_previews with no content-typeRichard van der Hoff2018-02-021-21/+34
* | | | | Merge branch 'develop' into travis/admin-list-mediaTravis Ralston2018-02-016-30/+138
|\| | | |
| * | | | fix thinko on 3pid whitelistingMatthew Hodgson2018-01-241-2/+2
| * | | | add ?ts massaging for ASes (#2754)Matthew Hodgson2018-01-231-6/+11
| * | | | Add federation_domain_whitelist option (#2820)Matthew Hodgson2018-01-222-2/+25
| * | | | Merge pull request #2813 from matrix-org/matthew/registrations_require_3pidMatthew Hodgson2018-01-223-22/+102
| |\ \ \ \
| | * | | | fix typo (thanks sytest)Matthew Hodgson2018-01-191-1/+1
| | * | | | oops, check all login typesMatthew Hodgson2018-01-191-14/+11
| | * | | | trailing commasMatthew Hodgson2018-01-192-7/+7
| | * | | | rewrite based on PR feedback:Matthew Hodgson2018-01-194-76/+43
| | * | | | fix up v1, and improve errorsMatthew Hodgson2018-01-193-19/+53
| | * | | | fix pep8Matthew Hodgson2018-01-191-2/+1
| | * | | | add registrations_require_3pidMatthew Hodgson2018-01-193-13/+96
| | | |/ / | | |/| |
* | / | | Add an admin route to get all the media in a roomTravis Ralston2018-01-201-0/+22
|/ / / /
* | | | Merge pull request #2814 from matrix-org/rav/fix_urlcache_thumbsRichard van der Hoff2018-01-191-0/+8
|\ \ \ \
| * | | | Use the right path for url_preview thumbnailsRichard van der Hoff2018-01-191-0/+8
| |/ / /
* | | | Fix storage provider bug introduced when renamed to store_localErik Johnston2018-01-181-1/+1
* | | | Merge pull request #2812 from matrix-org/erikj/media_storage_provider_configErik Johnston2018-01-182-20/+27
|\ \ \ \
| * | | | Missing staticmethodErik Johnston2018-01-181-0/+1
| * | | | Fixup commentsErik Johnston2018-01-181-2/+2
| * | | | Make storage providers more configurableErik Johnston2018-01-182-20/+26
| | |/ / | |/| |
* | | | Fix typo in thumbnail resource causing access times to be incorrectErik Johnston2018-01-181-2/+2
| |/ / |/| |
* | | Update last access time when thumbnails are viewedErik Johnston2018-01-171-0/+2
* | | Keep track of last access time for local mediaErik Johnston2018-01-171-7/+25
|/ /
* | Add docstringErik Johnston2018-01-171-1/+1
* | Use local varsErik Johnston2018-01-161-6/+2
* | Change _generate_thumbnails to take media_typeErik Johnston2018-01-162-7/+10
* | Move setting of file_id up to callerErik Johnston2018-01-162-13/+14
* | Fix typoErik Johnston2018-01-161-7/+10
* | Fix up log linesErik Johnston2018-01-162-7/+10
* | Correctly use server_name/file_id when generating/fetching remote thumbnailsErik Johnston2018-01-162-5/+8
* | Log when we respond with 404Erik Johnston2018-01-162-1/+8
* | Fix thumbnailing remote filesErik Johnston2018-01-162-2/+30
* | Merge pull request #2767 from matrix-org/erikj/media_storage_refactorErik Johnston2018-01-167-346/+843
|\ \
| * | Fix up commentsErik Johnston2018-01-122-7/+16
| * | Correctly reraise exceptionErik Johnston2018-01-121-2/+4
| * | Make Responder a context managerErik Johnston2018-01-122-9/+10
| * | Add missing class varErik Johnston2018-01-121-0/+3
| * | Merge branch 'develop' of github.com:matrix-org/synapse into erikj/media_stor...Erik Johnston2018-01-121-3/+26
| |\ \
| * | | Remove unnecessary conditionErik Johnston2018-01-121-4/+1
| * | | Remove unused variablesErik Johnston2018-01-121-3/+0
| * | | Make class var localErik Johnston2018-01-121-3/+3
| * | | CommentsErik Johnston2018-01-123-15/+65
| * | | Add StorageProvider conceptErik Johnston2018-01-093-9/+162
| * | | Make PreviewUrlResource use MediaStorageErik Johnston2018-01-092-8/+14
| * | | Make ThumbnailResource use MediaStorageErik Johnston2018-01-092-48/+68
| * | | Use MediaStorage for remote mediaErik Johnston2018-01-092-136/+156
| * | | Use MediaStorage for local filesErik Johnston2018-01-092-119/+73
| * | | Add MediaStorage classErik Johnston2018-01-091-0/+198
| * | | Add some helper classesErik Johnston2018-01-091-0/+73
| * | | Split out add_file_headersErik Johnston2018-01-091-28/+42
* | | | Reinstate media download on thumbnail requestRichard van der Hoff2018-01-121-0/+5
| |/ / |/| |
* | | Merge pull request #2766 from matrix-org/rav/room_eventRichard van der Hoff2018-01-111-3/+26
|\ \ \ | |/ / |/| |
| * | Add /room/{id}/event/{id} to synapseRichard van der Hoff2018-01-091-3/+26
* | | Remove dead TODOErik Johnston2018-01-091-2/+0
* | | Remove dead code related to default thumbnailsErik Johnston2018-01-091-73/+3
|/ /
* / Better logging when login can't find a 3pidRichard van der Hoff2017-12-201-4/+10
|/
* Fix error when deleting devicesRichard van der Hoff2017-12-051-1/+1
* Factor out a validate_user_via_ui_auth methodRichard van der Hoff2017-12-052-74/+59
* Refactor UI auth implementationRichard van der Hoff2017-12-054-27/+51
* Delete devices in various logout situationsRichard van der Hoff2017-11-291-2/+25
* Move set_password into its own handlerRichard van der Hoff2017-11-292-3/+4
* Move deactivate_account into its own handlerRichard van der Hoff2017-11-292-5/+6
* Allow guest access to group APIs for readingLuke Barnard2017-11-281-11/+11
* Merge pull request #2697 from matrix-org/rav/fix_urlcache_index_errorRichard van der Hoff2017-11-271-3/+7
|\
| * Check database in has_completed_background_updatesRichard van der Hoff2017-11-221-1/+1
| * Fix error on sqlite 3.7Richard van der Hoff2017-11-211-3/+7
* | Fix OPTIONS on preview_urlRichard van der Hoff2017-11-231-1/+5
|/
* Declare support for r0.3.0Richard van der Hoff2017-11-151-0/+1
* Merge pull request #2668 from turt2live/travis/whoamiRichard van der Hoff2017-11-141-0/+15
|\
| * Remove redundent callTravis Ralston2017-11-131-2/+0
| * Add a route for determining who you areTravis Ralston2017-11-121-0/+17
* | Bit more loggingRichard van der Hoff2017-11-101-0/+2
* | Cache failures in url_preview handlerRichard van der Hoff2017-11-101-41/+45
|/
* Add some more comments appservice user registrationRichard van der Hoff2017-11-101-1/+4
* Downcase userids for shared-secret registrationRichard van der Hoff2017-11-102-3/+21
* Downcase userid on registrationRichard van der Hoff2017-11-091-1/+7
* Register group servletErik Johnston2017-11-091-0/+1
* Have an explicit API to update room configErik Johnston2017-11-081-0/+27
* Revert "Modify group room association API to allow modification of is_public"Erik Johnston2017-11-081-2/+2
* Merge pull request #2576 from maximevaillancourt/exclude-noscript-url-previewMatthew Hodgson2017-11-071-1/+8
|\
| * Ignore noscript tags when generating URL previewsMaxime Vaillancourt2017-10-251-1/+8
* | support inhibit_login in /registerRichard van der Hoff2017-11-021-12/+16