text:
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.58...0.1.59)

**Implemented enhancements:**

- Reuse previous user consent when reauthorizing a third party client [\#26](https://github.com/anvilresearch/connect/issues/26)

**Fixed bugs:**

- connect-redis - ERR wrong number of arguments for 'set' command [\#298](https://github.com/anvilresearch/connect/issues/298)

**Closed issues:**

- Will you accept a PR updating the Dependencies? [\#300](https://github.com/anvilresearch/connect/issues/300)
- Getting connect up and running on OS X [\#294](https://github.com/anvilresearch/connect/issues/294)
- npm install on OS X with node 0.12 failing  [\#287](https://github.com/anvilresearch/connect/issues/287)
- Coverage data for the Travis build? [\#274](https://github.com/anvilresearch/connect/issues/274)

**Merged pull requests:**

- Extract `ensureWritableDirectory` to `fs-utils` [\#308](https://github.com/anvilresearch/connect/pull/308) ([bauglir](https://github.com/bauglir))
- Return array of strings from `authorizedScope` [\#307](https://github.com/anvilresearch/connect/pull/307) ([bauglir](https://github.com/bauglir))
- Add endpoints for manipulating client roles [\#306](https://github.com/anvilresearch/connect/pull/306) ([bauglir](https://github.com/bauglir))
- Ensure writable `logs` folder on boot [\#305](https://github.com/anvilresearch/connect/pull/305) ([bauglir](https://github.com/bauglir))
- UserInfo update [\#303](https://github.com/anvilresearch/connect/pull/303) ([christiansmith](https://github.com/christiansmith))
- udpate dependencies [\#301](https://github.com/anvilresearch/connect/pull/301) ([nelsonic](https://github.com/nelsonic))
- feat\(authorize\): reuse existing consent with third party client [\#299](https://github.com/anvilresearch/connect/pull/299) ([EternalDeiwos](https://github.com/EternalDeiwos))
- Specifying 'query' response\_mode still resulted in fragmented \(\#\) response. [\#297](https://github.com/anvilresearch/connect/pull/297) ([tonyevans](https://github.com/tonyevans))
- eslint to ignore public vendor scripts. [\#295](https://github.com/anvilresearch/connect/pull/295) ([henrjk](https://github.com/henrjk))
- Improve coveralls in travis build [\#293](https://github.com/anvilresearch/connect/pull/293) ([henrjk](https://github.com/henrjk))
- Add coveralls.io to build [\#290](https://github.com/anvilresearch/connect/pull/290) ([christiansmith](https://github.com/christiansmith))
- feat\(logger\): replace bucker with bunyan [\#282](https://github.com/anvilresearch/connect/pull/282) ([anth1y](https://github.com/anth1y))

## [0.1.58](https://github.com/anvilresearch/connect/tree/0.1.58) (2015-10-22)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.57...0.1.58)

## [0.1.57](https://github.com/anvilresearch/connect/tree/0.1.57) (2015-10-21)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.56...0.1.57)

**Implemented enhancements:**

- Expose coverage script as an npm script [\#272](https://github.com/anvilresearch/connect/issues/272)
- Node version check [\#235](https://github.com/anvilresearch/connect/issues/235)
- SAML Protocol [\#137](https://github.com/anvilresearch/connect/issues/137)
- Split CLI to separate repo and communicate w/server via REST API [\#44](https://github.com/anvilresearch/connect/issues/44)
- Use Travis CI [\#247](https://github.com/anvilresearch/connect/pull/247) ([vsimonian](https://github.com/vsimonian))
- Implement SAML 2.0 protocol support [\#245](https://github.com/anvilresearch/connect/pull/245) ([vsimonian](https://github.com/vsimonian))

**Fixed bugs:**

- Make from field validation regex more flexible [\#255](https://github.com/anvilresearch/connect/pull/255) ([vsimonian](https://github.com/vsimonian))

**Closed issues:**

- Issuer Config - response\_modes\_supported is empty array [\#264](https://github.com/anvilresearch/connect/issues/264)
- Issuer Config - response\_types\_supported includes none [\#263](https://github.com/anvilresearch/connect/issues/263)
- Ready for production? [\#261](https://github.com/anvilresearch/connect/issues/261)
- Suggestion: mention the use of git in the readme for dependencies [\#234](https://github.com/anvilresearch/connect/issues/234)

**Merged pull requests:**

- Remove `nv` binary reference [\#279](https://github.com/anvilresearch/connect/pull/279) ([bauglir](https://github.com/bauglir))
- refactor\(cli\): nuke deprecated CLI [\#278](https://github.com/anvilresearch/connect/pull/278) ([christiansmith](https://github.com/christiansmith))
- Adding coverage script to package.json [\#273](https://github.com/anvilresearch/connect/pull/273) ([EternalDeiwos](https://github.com/EternalDeiwos))
- adding coverage to gitignore [\#271](https://github.com/anvilresearch/connect/pull/271) ([henrjk](https://github.com/henrjk))
- adding basic coverage for istanbul [\#270](https://github.com/anvilresearch/connect/pull/270) ([henrjk](https://github.com/henrjk))
- Repair broken `this` reference in authorizedScope\(\) [\#269](https://github.com/anvilresearch/connect/pull/269) ([christiansmith](https://github.com/christiansmith))
- Include `sub` claim in userinfo response [\#267](https://github.com/anvilresearch/connect/pull/267) ([christiansmith](https://github.com/christiansmith))
- Update anvil-connect-jwt dependency [\#262](https://github.com/anvilresearch/connect/pull/262) ([christiansmith](https://github.com/christiansmith))
- Add `jti` claim to Client Token [\#250](https://github.com/anvilresearch/connect/pull/250) ([christiansmith](https://github.com/christiansmith))
- Requesting claims using scope values [\#248](https://github.com/anvilresearch/connect/pull/248) ([christiansmith](https://github.com/christiansmith))
- Create separate section for code style guidelines [\#243](https://github.com/anvilresearch/connect/pull/243) ([vsimonian](https://github.com/vsimonian))
- Migrations [\#240](https://github.com/anvilresearch/connect/pull/240) ([christiansmith](https://github.com/christiansmith))
- Link to getting started guide in connect-docs [\#239](https://github.com/anvilresearch/connect/pull/239) ([vsimonian](https://github.com/vsimonian))
- Added Bountysource link and text [\#238](https://github.com/anvilresearch/connect/pull/238) ([Cynfusion](https://github.com/Cynfusion))
- Remove unused dependencies [\#237](https://github.com/anvilresearch/connect/pull/237) ([vsimonian](https://github.com/vsimonian))
- Added version check to server.js [\#236](https://github.com/anvilresearch/connect/pull/236) ([msamblanet](https://github.com/msamblanet))

## [0.1.56](https://github.com/anvilresearch/connect/tree/0.1.56) (2015-09-17)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.55...0.1.56)

**Implemented enhancements:**

- SSL and secure cookies in production [\#90](https://github.com/anvilresearch/connect/issues/90)

**Merged pull requests:**

- Use anvil-connect-keys package [\#229](https://github.com/anvilresearch/connect/pull/229) ([christiansmith](https://github.com/christiansmith))
- Change type of client "trusted" property to boolean  [\#228](https://github.com/anvilresearch/connect/pull/228) ([christiansmith](https://github.com/christiansmith))

## [0.1.55](https://github.com/anvilresearch/connect/tree/0.1.55) (2015-09-10)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.54...0.1.55)

**Implemented enhancements:**

- Improve error-handling and display [\#224](https://github.com/anvilresearch/connect/pull/224) ([vsimonian](https://github.com/vsimonian))
- Create first time setup endpoint [\#223](https://github.com/anvilresearch/connect/pull/223) ([vsimonian](https://github.com/vsimonian))

**Fixed bugs:**

- Fix tests for error-handling middleware [\#226](https://github.com/anvilresearch/connect/pull/226) ([vsimonian](https://github.com/vsimonian))

**Closed issues:**

- Strip leading/trailing whitespace from JSON inputs. [\#220](https://github.com/anvilresearch/connect/issues/220)

**Merged pull requests:**

- Namespace user-by-provider index  [\#227](https://github.com/anvilresearch/connect/pull/227) ([vsimonian](https://github.com/vsimonian))
- Use Modinha trim property for client redirect\_uris [\#225](https://github.com/anvilresearch/connect/pull/225) ([vsimonian](https://github.com/vsimonian))
- Trim whitespace around redirect URIs [\#221](https://github.com/anvilresearch/connect/pull/221) ([vsimonian](https://github.com/vsimonian))
- Use GitHub Changelog Generator [\#219](https://github.com/anvilresearch/connect/pull/219) ([vsimonian](https://github.com/vsimonian))

## [0.1.54](https://github.com/anvilresearch/connect/tree/0.1.54) (2015-09-04)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.53...0.1.54)

**Implemented enhancements:**

- Enforce client grant\_types [\#96](https://github.com/anvilresearch/connect/issues/96)
- Enforce client response\_types [\#95](https://github.com/anvilresearch/connect/issues/95)

**Fixed bugs:**

- Fix handling of optional `options` parameter in Passport shim [\#218](https://github.com/anvilresearch/connect/pull/218) ([vsimonian](https://github.com/vsimonian))

**Merged pull requests:**

- Enforce client grant\_types and response\_types [\#217](https://github.com/anvilresearch/connect/pull/217) ([vsimonian](https://github.com/vsimonian))

## [0.1.53](https://github.com/anvilresearch/connect/tree/0.1.53) (2015-09-03)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.52...0.1.53)

**Implemented enhancements:**

- Validate client does not use both `jwks` and `jwks\_uri` [\#98](https://github.com/anvilresearch/connect/issues/98)
- Validate client application\_type [\#97](https://github.com/anvilresearch/connect/issues/97)
- Support response\_type "none" [\#55](https://github.com/anvilresearch/connect/issues/55)
- Validate client application\_type [\#214](https://github.com/anvilresearch/connect/pull/214) ([vsimonian](https://github.com/vsimonian))
- Validate that jwks and jwks\_uri are not used together [\#212](https://github.com/anvilresearch/connect/pull/212) ([vsimonian](https://github.com/vsimonian))
- Support `none` response\_type and fix response\_type handling [\#211](https://github.com/anvilresearch/connect/pull/211) ([vsimonian](https://github.com/vsimonian))

**Fixed bugs:**

- Always verify redirect\_uri before issuing redirect [\#216](https://github.com/anvilresearch/connect/pull/216) ([vsimonian](https://github.com/vsimonian))
- Validate new redirect\_uris instead of original values [\#215](https://github.com/anvilresearch/connect/pull/215) ([vsimonian](https://github.com/vsimonian))
- Support `none` response\\_type and fix response\\_type handling [\#211](https://github.com/anvilresearch/connect/pull/211) ([vsimonian](https://github.com/vsimonian))

**Merged pull requests:**

- Use lx-valid validation hooks for jwks and jwks\_uri [\#213](https://github.com/anvilresearch/connect/pull/213) ([vsimonian](https://github.com/vsimonian))

## [0.1.52](https://github.com/anvilresearch/connect/tree/0.1.52) (2015-09-01)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.51...0.1.52)

**Fixed bugs:**

- Guard against undefined sessions [\#209](https://github.com/anvilresearch/connect/pull/209) ([vsimonian](https://github.com/vsimonian))

## [0.1.51](https://github.com/anvilresearch/connect/tree/0.1.51) (2015-08-31)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.50...0.1.51)

**Implemented enhancements:**

- Rename key pair files [\#200](https://github.com/anvilresearch/connect/issues/200)
- Make "daysToCrack" password strength property configurable from password provider [\#189](https://github.com/anvilresearch/connect/issues/189)
- Key pair generation [\#187](https://github.com/anvilresearch/connect/issues/187)
- E-mail verification token TTL should be configurable [\#175](https://github.com/anvilresearch/connect/issues/175)
- OIDC Sessions [\#138](https://github.com/anvilresearch/connect/issues/138)
- Separate key pairs for signing and encryption [\#5](https://github.com/anvilresearch/connect/issues/5)
- feat\(email\): configurable email verification token ttl [\#206](https://github.com/anvilresearch/connect/pull/206) ([christiansmith](https://github.com/christiansmith))
- feat\(boot\): generate token-signing keypair if missing on boot [\#197](https://github.com/anvilresearch/connect/pull/197) ([christiansmith](https://github.com/christiansmith))

**Fixed bugs:**

- Allow overriding provider-specific amr and refresh\_userinfo options with falsy values [\#191](https://github.com/anvilresearch/connect/issues/191)
- Enable email templates to be overridden [\#190](https://github.com/anvilresearch/connect/issues/190)
- Stub client reg type setting for client reg tests [\#201](https://github.com/anvilresearch/connect/pull/201) ([vsimonian](https://github.com/vsimonian))
- fix\(oidc\): set amr values consistently [\#195](https://github.com/anvilresearch/connect/pull/195) ([christiansmith](https://github.com/christiansmith))
- Allow overriding amr and refresh\_userinfo values with falsy values  [\#194](https://github.com/anvilresearch/connect/pull/194) ([vsimonian](https://github.com/vsimonian))
- Allow e-mail templates to be overridden [\#193](https://github.com/anvilresearch/connect/pull/193) ([vsimonian](https://github.com/vsimonian))

**Closed issues:**

- De-nest config/keys directory [\#198](https://github.com/anvilresearch/connect/issues/198)
- Eliminate repetitive code in signin, signup, and signout [\#143](https://github.com/anvilresearch/connect/issues/143)

**Merged pull requests:**

- Remove passport dependency [\#205](https://github.com/anvilresearch/connect/pull/205) ([vsimonian](https://github.com/vsimonian))
- Rename RSA key pair files and add separate encryption key pair [\#204](https://github.com/anvilresearch/connect/pull/204) ([christiansmith](https://github.com/christiansmith))
- refactor\(keys\): de-nest config/keys directory [\#199](https://github.com/anvilresearch/connect/pull/199) ([christiansmith](https://github.com/christiansmith))
- feat\(settings\): configurable "daysToCrack" for password provider [\#196](https://github.com/anvilresearch/connect/pull/196) ([christiansmith](https://github.com/christiansmith))

## [0.1.50](https://github.com/anvilresearch/connect/tree/0.1.50) (2015-08-23)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.49...0.1.50)

**Implemented enhancements:**

- sentinel support and ioredis [\#125](https://github.com/anvilresearch/connect/issues/125)
- Code Conventions, Formatters, and Linting [\#116](https://github.com/anvilresearch/connect/issues/116)
- Use ioredis [\#188](https://github.com/anvilresearch/connect/pull/188) ([vsimonian](https://github.com/vsimonian))

**Merged pull requests:**

- Use Javascript Standard Style [\#184](https://github.com/anvilresearch/connect/pull/184) ([vsimonian](https://github.com/vsimonian))

## [0.1.49](https://github.com/anvilresearch/connect/tree/0.1.49) (2015-08-21)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.48...0.1.49)

**Implemented enhancements:**

- Configurable refresh of user claims upon call to userinfo [\#181](https://github.com/anvilresearch/connect/issues/181)
- Support `amr` claim. [\#136](https://github.com/anvilresearch/connect/issues/136)
- Password reset [\#20](https://github.com/anvilresearch/connect/issues/20)

## [0.1.48](https://github.com/anvilresearch/connect/tree/0.1.48) (2015-08-20)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.47...0.1.48)

## [0.1.47](https://github.com/anvilresearch/connect/tree/0.1.47) (2015-08-18)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.46...0.1.47)

**Implemented enhancements:**

- Use built in views unless project directory contains custom views [\#165](https://github.com/anvilresearch/connect/issues/165)
- Allow views to be overridden individually. [\#179](https://github.com/anvilresearch/connect/pull/179) ([christiansmith](https://github.com/christiansmith))

**Fixed bugs:**

- Fix intermittently failing tests [\#178](https://github.com/anvilresearch/connect/pull/178) ([vsimonian](https://github.com/vsimonian))

## [0.1.46](https://github.com/anvilresearch/connect/tree/0.1.46) (2015-08-18)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.45...0.1.46)

**Implemented enhancements:**

- Create mechanism for generic expiring tokens [\#168](https://github.com/anvilresearch/connect/issues/168)
- E-mail verification tokens should expire [\#167](https://github.com/anvilresearch/connect/issues/167)
- Support expiring, single-use tokens [\#171](https://github.com/anvilresearch/connect/pull/171) ([vsimonian](https://github.com/vsimonian))

**Fixed bugs:**

- Ensure database always has default entries [\#172](https://github.com/anvilresearch/connect/pull/172) ([vsimonian](https://github.com/vsimonian))

**Merged pull requests:**

- Refactor email verification to use new OneTimeToken model [\#174](https://github.com/anvilresearch/connect/pull/174) ([christiansmith](https://github.com/christiansmith))
- Fix one time token [\#173](https://github.com/anvilresearch/connect/pull/173) ([vsimonian](https://github.com/vsimonian))

## [0.1.45](https://github.com/anvilresearch/connect/tree/0.1.45) (2015-08-14)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.44...0.1.45)

**Fixed bugs:**

- Set jwks to array of keys instead of single object [\#161](https://github.com/anvilresearch/connect/pull/161) ([vsimonian](https://github.com/vsimonian))

## [0.1.44](https://github.com/anvilresearch/connect/tree/0.1.44) (2015-08-14)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.43...0.1.44)

**Merged pull requests:**

- Use pem-jwk instead of ursa to convert public key to JWK [\#156](https://github.com/anvilresearch/connect/pull/156) ([vsimonian](https://github.com/vsimonian))

## [0.1.43](https://github.com/anvilresearch/connect/tree/0.1.43) (2015-08-12)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.42...0.1.43)

**Implemented enhancements:**

- Boot time database init to deprecate `nv migrate` [\#128](https://github.com/anvilresearch/connect/issues/128)
- Containerized Deployment [\#121](https://github.com/anvilresearch/connect/issues/121)
- LDAP protocol [\#120](https://github.com/anvilresearch/connect/issues/120)
- Throw error for unreachable Redis instance [\#39](https://github.com/anvilresearch/connect/issues/39)
- E-mail verification [\#21](https://github.com/anvilresearch/connect/issues/21)
- Add LDAP support [\#144](https://github.com/anvilresearch/connect/pull/144) ([vsimonian](https://github.com/vsimonian))
- Initialize database during boot. [\#142](https://github.com/anvilresearch/connect/pull/142) ([christiansmith](https://github.com/christiansmith))
- E-mail verification support [\#123](https://github.com/anvilresearch/connect/pull/123) ([vsimonian](https://github.com/vsimonian))

**Closed issues:**

- Slack vs. Gitter [\#122](https://github.com/anvilresearch/connect/issues/122)
- Standard OAuth2 protocol require error [\#74](https://github.com/anvilresearch/connect/issues/74)
- cli help [\#34](https://github.com/anvilresearch/connect/issues/34)

**Merged pull requests:**

- Support OIDC `amr` claim in id\_tokens [\#141](https://github.com/anvilresearch/connect/pull/141) ([christiansmith](https://github.com/christiansmith))
- Reject auth requests with mismatching referrer [\#135](https://github.com/anvilresearch/connect/pull/135) ([vsimonian](https://github.com/vsimonian))
- Clarified setup instructions [\#134](https://github.com/anvilresearch/connect/pull/134) ([Cynfusion](https://github.com/Cynfusion))
- style and content revisions [\#133](https://github.com/anvilresearch/connect/pull/133) ([Cynfusion](https://github.com/Cynfusion))
- Updates to content and style of ReadMe [\#132](https://github.com/anvilresearch/connect/pull/132) ([Cynfusion](https://github.com/Cynfusion))
- Add error message for invalid providers during sign-in [\#117](https://github.com/anvilresearch/connect/pull/117) ([vsimonian](https://github.com/vsimonian))

## [0.1.42](https://github.com/anvilresearch/connect/tree/0.1.42) (2015-07-01)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.41...0.1.42)

**Merged pull requests:**

- Various bugfixes and style adjustments [\#110](https://github.com/anvilresearch/connect/pull/110) ([vsimonian](https://github.com/vsimonian))
- Fix callback function name [\#109](https://github.com/anvilresearch/connect/pull/109) ([vsimonian](https://github.com/vsimonian))
- Update to match express v4 API [\#108](https://github.com/anvilresearch/connect/pull/108) ([vsimonian](https://github.com/vsimonian))
- Add Active Directory support [\#107](https://github.com/anvilresearch/connect/pull/107) ([vsimonian](https://github.com/vsimonian))
- fix\(routes\): Pass `next` to `passport.authenticate` [\#106](https://github.com/anvilresearch/connect/pull/106) ([vsimonian](https://github.com/vsimonian))
- feat\(fields\): Generate sign in form for providers with defined fields [\#105](https://github.com/anvilresearch/connect/pull/105) ([vsimonian](https://github.com/vsimonian))
- Add provider templating for boot-time inheritance [\#104](https://github.com/anvilresearch/connect/pull/104) ([vsimonian](https://github.com/vsimonian))

## [0.1.41](https://github.com/anvilresearch/connect/tree/0.1.41) (2015-06-29)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.40...0.1.41)

**Implemented enhancements:**

- Error display for `nv init deployment` and other commands [\#31](https://github.com/anvilresearch/connect/issues/31)
- Make password signin optional [\#25](https://github.com/anvilresearch/connect/issues/25)

**Closed issues:**

- Reduce/minimize size of dependencies [\#72](https://github.com/anvilresearch/connect/issues/72)
- Throw error for malformed JSON in config file [\#38](https://github.com/anvilresearch/connect/issues/38)

**Merged pull requests:**

- Update to match express v4 API [\#103](https://github.com/anvilresearch/connect/pull/103) ([vsimonian](https://github.com/vsimonian))
- Fix broken git URL [\#101](https://github.com/anvilresearch/connect/pull/101) ([vsimonian](https://github.com/vsimonian))

## [0.1.40](https://github.com/anvilresearch/connect/tree/0.1.40) (2015-06-20)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.39...0.1.40)

## [0.1.39](https://github.com/anvilresearch/connect/tree/0.1.39) (2015-06-09)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.38...0.1.39)

**Implemented enhancements:**

- Generating a CHANGELOG [\#66](https://github.com/anvilresearch/connect/issues/66)

**Closed issues:**

- anvil.io 'docs' link in footer points to anvil.io, docs aren't on the site [\#94](https://github.com/anvilresearch/connect/issues/94)
- Cannot GET / - what to do after installation [\#93](https://github.com/anvilresearch/connect/issues/93)

**Merged pull requests:**

- Deployment [\#92](https://github.com/anvilresearch/connect/pull/92) ([tomkersten](https://github.com/tomkersten))

## [0.1.38](https://github.com/anvilresearch/connect/tree/0.1.38) (2015-05-19)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.37...0.1.38)

## [0.1.37](https://github.com/anvilresearch/connect/tree/0.1.37) (2015-05-18)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.36...0.1.37)

**Closed issues:**

- Anvil incompatible with Node 0.12.x [\#91](https://github.com/anvilresearch/connect/issues/91)
- Empty user name after normal registration. [\#87](https://github.com/anvilresearch/connect/issues/87)

**Merged pull requests:**

- Change the names for form fields "first name" and "last name", to match the mapping in User model. [\#88](https://github.com/anvilresearch/connect/pull/88) ([ovi-tamasan-3pg](https://github.com/ovi-tamasan-3pg))
- dev dependencies update [\#86](https://github.com/anvilresearch/connect/pull/86) ([adi-ads](https://github.com/adi-ads))
- don't add password as a icon in views [\#84](https://github.com/anvilresearch/connect/pull/84) ([adi-ads](https://github.com/adi-ads))
- update faker [\#83](https://github.com/anvilresearch/connect/pull/83) ([adi-ads](https://github.com/adi-ads))

## [0.1.36](https://github.com/anvilresearch/connect/tree/0.1.36) (2015-04-20)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.35...0.1.36)

## [0.1.35](https://github.com/anvilresearch/connect/tree/0.1.35) (2015-04-08)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.34...0.1.35)

**Merged pull requests:**

- Support optional nonce for auth code flow [\#82](https://github.com/anvilresearch/connect/pull/82) ([adi-ads](https://github.com/adi-ads))
- update faker package name to lowercase [\#81](https://github.com/anvilresearch/connect/pull/81) ([adi-ads](https://github.com/adi-ads))

## [0.1.34](https://github.com/anvilresearch/connect/tree/0.1.34) (2015-04-08)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.33...0.1.34)

## [0.1.33](https://github.com/anvilresearch/connect/tree/0.1.33) (2015-04-07)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.32...0.1.33)

## [0.1.32](https://github.com/anvilresearch/connect/tree/0.1.32) (2015-04-07)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.31...0.1.32)

**Closed issues:**

- Cannot run nv init [\#77](https://github.com/anvilresearch/connect/issues/77)
- Does anvil-connect server work via https? [\#76](https://github.com/anvilresearch/connect/issues/76)

**Merged pull requests:**

- update modinha version [\#79](https://github.com/anvilresearch/connect/pull/79) ([adi-ads](https://github.com/adi-ads))
- app default config update [\#78](https://github.com/anvilresearch/connect/pull/78) ([adi-ads](https://github.com/adi-ads))

## [0.1.31](https://github.com/anvilresearch/connect/tree/0.1.31) (2015-04-05)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.30...0.1.31)

## [0.1.30](https://github.com/anvilresearch/connect/tree/0.1.30) (2015-04-05)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.29...0.1.30)

## [0.1.29](https://github.com/anvilresearch/connect/tree/0.1.29) (2015-04-02)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.28...0.1.29)

**Closed issues:**

- nv migrate fails [\#73](https://github.com/anvilresearch/connect/issues/73)

## [0.1.28](https://github.com/anvilresearch/connect/tree/0.1.28) (2015-03-14)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.27...0.1.28)

## [0.1.27](https://github.com/anvilresearch/connect/tree/0.1.27) (2015-03-10)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.26...0.1.27)

**Implemented enhancements:**

- Authorization flow [\#1](https://github.com/anvilresearch/connect/issues/1)

**Fixed bugs:**

- Authorization flow [\#1](https://github.com/anvilresearch/connect/issues/1)

**Closed issues:**

- mongodb support [\#69](https://github.com/anvilresearch/connect/issues/69)
- Storing Provider Auth + UserInfo Responses with Anvil user object [\#63](https://github.com/anvilresearch/connect/issues/63)

**Merged pull requests:**

- protocol/OpenID.js works against master [\#71](https://github.com/anvilresearch/connect/pull/71) ([nrhope](https://github.com/nrhope))
- Add a Gitter chat badge to README.md [\#70](https://github.com/anvilresearch/connect/pull/70) ([gitter-badger](https://github.com/gitter-badger))
- fix ID Token expiry delta \(was undefined so token expired immediately\) [\#60](https://github.com/anvilresearch/connect/pull/60) ([nrhope](https://github.com/nrhope))
- tweaks to get server talking to external Java \(mitreid\) and passport-openid clients [\#59](https://github.com/anvilresearch/connect/pull/59) ([nrhope](https://github.com/nrhope))
- Renamed function [\#58](https://github.com/anvilresearch/connect/pull/58) ([tomkersten](https://github.com/tomkersten))

## [0.1.26](https://github.com/anvilresearch/connect/tree/0.1.26) (2014-10-28)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.25...0.1.26)

**Implemented enhancements:**

- JWK set URI [\#19](https://github.com/anvilresearch/connect/issues/19)

## [0.1.25](https://github.com/anvilresearch/connect/tree/0.1.25) (2014-10-22)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.24...0.1.25)

## [0.1.24](https://github.com/anvilresearch/connect/tree/0.1.24) (2014-10-20)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.23...0.1.24)

**Implemented enhancements:**

- JWT Access Tokens [\#15](https://github.com/anvilresearch/connect/issues/15)
- Hybrid Authorization Flow [\#8](https://github.com/anvilresearch/connect/issues/8)
- Multiple response types [\#6](https://github.com/anvilresearch/connect/issues/6)

**Merged pull requests:**

- Fixed `revoke` argument parsing indice mistake [\#56](https://github.com/anvilresearch/connect/pull/56) ([tomkersten](https://github.com/tomkersten))

## [0.1.23](https://github.com/anvilresearch/connect/tree/0.1.23) (2014-08-04)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.22...0.1.23)

## [0.1.22](https://github.com/anvilresearch/connect/tree/0.1.22) (2014-07-25)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.21...0.1.22)

**Closed issues:**

- Configurable token expiration [\#50](https://github.com/anvilresearch/connect/issues/50)
- "Requires login" prompt? [\#45](https://github.com/anvilresearch/connect/issues/45)

## [0.1.21](https://github.com/anvilresearch/connect/tree/0.1.21) (2014-06-27)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.20...0.1.21)

## [0.1.20](https://github.com/anvilresearch/connect/tree/0.1.20) (2014-06-27)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.19...0.1.20)

## [0.1.19](https://github.com/anvilresearch/connect/tree/0.1.19) (2014-06-26)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.18...0.1.19)

**Merged pull requests:**

- Added some basic styling to views [\#43](https://github.com/anvilresearch/connect/pull/43) ([petebot](https://github.com/petebot))

## [0.1.18](https://github.com/anvilresearch/connect/tree/0.1.18) (2014-06-19)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.17...0.1.18)

**Fixed bugs:**

- nv-commands fail without env variables set [\#41](https://github.com/anvilresearch/connect/issues/41)

**Closed issues:**

- Rewrite `nv init db` [\#42](https://github.com/anvilresearch/connect/issues/42)

## [0.1.17](https://github.com/anvilresearch/connect/tree/0.1.17) (2014-06-16)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.16...0.1.17)

## [0.1.16](https://github.com/anvilresearch/connect/tree/0.1.16) (2014-06-16)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.15...0.1.16)

## [0.1.15](https://github.com/anvilresearch/connect/tree/0.1.15) (2014-06-12)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.14...0.1.15)

## [0.1.14](https://github.com/anvilresearch/connect/tree/0.1.14) (2014-06-12)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.13...0.1.14)

## [0.1.13](https://github.com/anvilresearch/connect/tree/0.1.13) (2014-06-12)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.12...0.1.13)

## [0.1.12](https://github.com/anvilresearch/connect/tree/0.1.12) (2014-06-12)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.11...0.1.12)

**Implemented enhancements:**

- Keyfiles [\#2](https://github.com/anvilresearch/connect/issues/2)

## [0.1.11](https://github.com/anvilresearch/connect/tree/0.1.11) (2014-06-10)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.10...0.1.11)

## [0.1.10](https://github.com/anvilresearch/connect/tree/0.1.10) (2014-06-10)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.9...0.1.10)

## [0.1.9](https://github.com/anvilresearch/connect/tree/0.1.9) (2014-06-09)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.8...0.1.9)

## [0.1.8](https://github.com/anvilresearch/connect/tree/0.1.8) (2014-06-09)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.7...0.1.8)

**Implemented enhancements:**

- Logging [\#27](https://github.com/anvilresearch/connect/issues/27)

**Fixed bugs:**

- .gitignore on `nv init deployment` [\#29](https://github.com/anvilresearch/connect/issues/29)

**Closed issues:**

- cli usage [\#33](https://github.com/anvilresearch/connect/issues/33)
- cli version [\#32](https://github.com/anvilresearch/connect/issues/32)

## [0.1.7](https://github.com/anvilresearch/connect/tree/0.1.7) (2014-06-04)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.6...0.1.7)

**Implemented enhancements:**

- Support global install for `nv` cli [\#30](https://github.com/anvilresearch/connect/issues/30)

## [0.1.6](https://github.com/anvilresearch/connect/tree/0.1.6) (2014-06-04)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.5...0.1.6)

**Merged pull requests:**

- Add public/.gitkeep so 'public' dir is in repo [\#28](https://github.com/anvilresearch/connect/pull/28) ([tomkersten](https://github.com/tomkersten))

## [0.1.5](https://github.com/anvilresearch/connect/tree/0.1.5) (2014-06-04)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.4...0.1.5)

## [0.1.4](https://github.com/anvilresearch/connect/tree/0.1.4) (2014-06-04)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.3...0.1.4)

## [0.1.3](https://github.com/anvilresearch/connect/tree/0.1.3) (2014-06-03)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.2...0.1.3)

## [0.1.2](https://github.com/anvilresearch/connect/tree/0.1.2) (2014-06-03)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.1...0.1.2)

## [0.1.1](https://github.com/anvilresearch/connect/tree/0.1.1) (2014-06-03)
[Full Changelog](https://github.com/anvilresearch/connect/compare/0.1.0...0.1.1)

**Implemented enhancements:**

- Node Cluster [\#17](https://github.com/anvilresearch/connect/issues/17)
- Static assets [\#4](https://github.com/anvilresearch/connect/issues/4)
- Project/deployment generator [\#3](https://github.com/anvilresearch/connect/issues/3)

## [0.1.0](https://github.com/anvilresearch/connect/tree/0.1.0) (2014-05-30)

\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*


text:
using System;
using System.Collections.Generic;
using Microsoft.AspNet.Identity;
using NHibernate.AspNet.Identity.DomainModel;
using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist;

namespace NHibernate.AspNet.Identity
{
    public class IdentityUser : EntityWithTypedId<string>, IUser
    {
        public virtual int AccessFailedCount { get; set; }

        public virtual string Email { get; set; }

        public virtual bool EmailConfirmed { get; set; }

        public virtual bool LockoutEnabled { get; set; }

        public virtual DateTime? LockoutEndDateUtc { get; set; }

        public virtual string PasswordHash { get; set; }

        public virtual string PhoneNumber { get; set; }

        public virtual bool PhoneNumberConfirmed { get; set; }

        public virtual bool TwoFactorEnabled { get; set; }

        public virtual string UserName { get; set; }

        public virtual string SecurityStamp { get; set; }

        public virtual ICollection<IdentityRole> Roles { get; protected set; }

        public virtual ICollection<IdentityUserClaim> Claims { get; protected set; }

        public virtual ICollection<IdentityUserLogin> Logins { get; protected set; }

        public IdentityUser()
        {
            this.Roles = new List<IdentityRole>();
            this.Claims = new List<IdentityUserClaim>();
            this.Logins = new List<IdentityUserLogin>();
        }

        public IdentityUser(string userName)
            : this()
        {
            this.UserName = userName;
        }
    }

    public class IdentityUserMap : ClassMapping<IdentityUser>
    {
        public IdentityUserMap()
        {
            this.Table("AspNetUsers");
            this.Id(x => x.Id, m => m.Generator(new UUIDHexCombGeneratorDef("D")));

            this.Property(x => x.AccessFailedCount);

            this.Property(x => x.Email);

            this.Property(x => x.EmailConfirmed);

            this.Property(x => x.LockoutEnabled);

            this.Property(x => x.LockoutEndDateUtc);

            this.Property(x => x.PasswordHash);

            this.Property(x => x.PhoneNumber);

            this.Property(x => x.PhoneNumberConfirmed);

            this.Property(x => x.TwoFactorEnabled);

            this.Property(x => x.UserName, map =>
            {
                map.Length(255);
                map.NotNullable(true);
                map.Unique(true);
            });

            this.Property(x => x.SecurityStamp);

            this.Bag(x => x.Claims, map =>
            {
                map.Key(k =>
                {
                    k.Column("UserId");
                    k.Update(false); // to prevent extra update afer insert
                });
                map.Cascade(Cascade.All | Cascade.DeleteOrphans);
            }, rel =>
            {
                rel.OneToMany();
            });

            this.Set(x => x.Logins, cam =>
            {
                cam.Table("AspNetUserLogins");
                cam.Key(km => km.Column("UserId"));
                cam.Cascade(Cascade.All | Cascade.DeleteOrphans);
            },
                     map =>
                     {
                         map.Component(comp =>
                         {
                             comp.Property(p => p.LoginProvider);
                             comp.Property(p => p.ProviderKey);
                         });
                     });

            this.Bag(x => x.Roles, map =>
            {
                map.Table("AspNetUserRoles");
                map.Key(k => k.Column("UserId"));
            }, rel => rel.ManyToMany(p => p.Column("RoleId")));
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.

namespace ServiceBase.Events
{
    /// <summary>
    /// Configures events
    /// </summary>
    public class EventOptions
    {
        /// <summary>
        /// Gets or sets a value indicating whether to raise success events.
        /// </summary>
        /// <value>
        ///   <c>true</c> if success event should be raised; otherwise, <c>false</c>.
        /// </value>
        public bool RaiseSuccessEvents { get; set; } = false;

        /// <summary>
        /// Gets or sets a value indicating whether to raise failure events.
        /// </summary>
        /// <value>
        ///   <c>true</c> if failure events should be raised; otherwise, <c>false</c>.
        /// </value>
        public bool RaiseFailureEvents { get; set; } = false;

        /// <summary>
        /// Gets or sets a value indicating whether to raise information events.
        /// </summary>
        /// <value>
        /// <c>true</c> if information events should be raised; otherwise, <c>false</c>.
        /// </value>
        public bool RaiseInformationEvents { get; set; } = false;

        /// <summary>
        /// Gets or sets a value indicating whether to raise error events.
        /// </summary>
        /// <value>
        ///   <c>true</c> if error events should be raised; otherwise, <c>false</c>.
        /// </value>
        public bool RaiseErrorEvents { get; set; } = false;
    }
}


text:
package de.javagl.flow.module;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import de.javagl.flow.module.slot.InputSlot;
import de.javagl.flow.module.slot.OutputSlot;
import de.javagl.flow.module.slot.SlotInfo;
import de.javagl.flow.module.slot.Slots;

/**
 * Abstract base implementation of a simple {@link Module}. This class
 * extends {@link AbstractModule} by providing a list of
 * {@link InputSlot} objects and {@link OutputSlot} objects. These are created
 * based on the {@link ModuleInfo} that is given in the constructor.
 */
public abstract class SimpleAbstractModule
    extends AbstractModule implements Module
{
    /**
     * The {@link InputSlot} objects of this module
     */
    private final List<InputSlot> inputSlots;

    /**
     * The {@link OutputSlot} objects of this module
     */
    private final List<OutputSlot> outputSlots;

    /**
     * Creates a new module with the given {@link ModuleInfo}
     *
     * @param moduleInfo The {@link ModuleInfo}. May not be null.
     */
    protected SimpleAbstractModule(ModuleInfo moduleInfo)
    {
        super(moduleInfo);

        this.inputSlots = new ArrayList<InputSlot>();
        this.outputSlots = new ArrayList<OutputSlot>();

        TypeVariableInstantiator typeVariableInstantiator =
            createTypeVariableInstantiator();

        createInputSlots(typeVariableInstantiator);
        createOutputSlots(typeVariableInstantiator);
    }

    /**
     * Creates the {@link TypeVariableInstantiator} for this module.
     * For multiple, equal type variables that occur in the inputs
     * or outputs of this module, it will create unique instances
     * of type variables.
     *
     * @return The {@link TypeVariableInstantiator}
     */
    private TypeVariableInstantiator createTypeVariableInstantiator()
    {
        TypeVariableInstantiator typeVariableInstantiator =
            new TypeVariableInstantiator();
        List<SlotInfo> inputSlotInfos = getModuleInfo().getInputSlotInfos();
        for (int i=0; i<inputSlotInfos.size(); i++)
        {
            SlotInfo slotInfo = inputSlotInfos.get(i);
            typeVariableInstantiator.register(slotInfo.getType());
        }
        List<SlotInfo> outputSlotInfos = getModuleInfo().getOutputSlotInfos();
        for (int i=0; i<outputSlotInfos.size(); i++)
        {
            SlotInfo slotInfo = outputSlotInfos.get(i);
            typeVariableInstantiator.register(slotInfo.getType());
        }
        return typeVariableInstantiator;
    }

    /**
     * Create all input slots of this module
     *
     * @param typeVariableInstantiator The {@link TypeVariableInstantiator}
     */
    private void createInputSlots(
        TypeVariableInstantiator typeVariableInstantiator)
    {
        List<SlotInfo> inputSlotInfos = getModuleInfo().getInputSlotInfos();
        for (int i=0; i<inputSlotInfos.size(); i++)
        {
            SlotInfo slotInfo = inputSlotInfos.get(i);
            Type slotInfoType = slotInfo.getType();
            Type formalType =
                typeVariableInstantiator.instantiate(slotInfoType);
            InputSlot inputSlot = createInputSlot(i, formalType);
            inputSlots.add(inputSlot);
        }
    }

    /**
     * Create the {@link InputSlot} with the given index and the given
     * formal type of this {@link Module}. The default implementation
     * creates a default {@link InputSlot}. The method may be overridden
     * by subclasses to create specialized {@link InputSlot} objects.
     *
     * @param index The index of the {@link InputSlot} to create
     * @param formalType The formal type of the {@link InputSlot}, as
     * defined in the corresponding {@link SlotInfo}
     * @return The new {@link InputSlot}
     */
    protected InputSlot createInputSlot(int index, Type formalType)
    {
        return Slots.createInputSlot(this, index, formalType);
    }

    /**
     * Create all output slots of this module
     *
     * @param typeVariableInstantiator The {@link TypeVariableInstantiator}
     */
    private void createOutputSlots(
        TypeVariableInstantiator typeVariableInstantiator)
    {
        List<SlotInfo> outputSlotInfos = getModuleInfo().getOutputSlotInfos();
        for (int i=0; i<outputSlotInfos.size(); i++)
        {
            SlotInfo slotInfo = outputSlotInfos.get(i);
            Type slotInfoType = slotInfo.getType();
            Type formalType =
                typeVariableInstantiator.instantiate(slotInfoType);
            OutputSlot outputSlot = createOutputSlot(i, formalType);
            outputSlots.add(outputSlot);
        }
    }

    /**
     * Create the {@link OutputSlot} with the given index and the given
     * formal type of this {@link Module}. The default implementation
     * creates a default {@link OutputSlot}. The method may be overridden
     * by subclasses to create specialized {@link OutputSlot} objects.
     *
     * @param index The index of the {@link OutputSlot} to create
     * @param formalType The formal type of the {@link OutputSlot}, as
     * defined in the corresponding {@link SlotInfo}
     * @return The new {@link OutputSlot}
     */
    protected OutputSlot createOutputSlot(int index, Type formalType)
    {
        return Slots.createOutputSlot(this, index, formalType);
    }

    @Override
    public final List<InputSlot> getInputSlots()
    {
        return Collections.unmodifiableList(inputSlots);
    }

    @Override
    public final List<OutputSlot> getOutputSlots()
    {
        return Collections.unmodifiableList(outputSlots);
    }

}


text:
using System;
using System.Collections.Generic;

namespace Spackle.Extensions;

/// <summary>
/// Provides extension methods for <see cref="IList<T>"/>-based objects.
/// </summary>
public static class IListOfTExtensions
{
	private const string ErrorOutOfPosition = "The positions parameter is not a valid position value.";

	/// <summary>
	/// Moves all of the elements in <paramref name="this"/> in a certain direction.
	/// </summary>
	/// <typeparam name="T">The type of the members in <paramref name="this"/>.</typeparam>
	/// <param name="this">The list to rotate elements in.</param>
	/// <param name="positions">The delta value for rotation.</param>
	/// <param name="direction">The direction in which the values should rotate.</param>
	/// <exception cref="ArgumentNullException">
	/// Thrown if <paramref name="this"/> is <c>null</c>.
	/// </exception>
	/// <exception cref="ArgumentException">
	/// Thrown if <paramref name="positions"/> is negative or larger than the number
	/// of elements in <paramref name="this"/>.
	/// </exception>
	/// <remarks>
	/// This code is based on the work presented here: http://eli.thegreenplace.net/2008/08/29/space-efficient-list-rotation/.
	/// </remarks>
	public static void Rotate<T>(this IList<T> self, int positions, RotateDirection direction)
	{
		static int GCD(int a, int b)
		{
			while (b != 0)
			{
				var remainder = a % b;
				a = b;
				b = remainder;
			}

			return a;
		}

		ArgumentNullException.ThrowIfNull(self);

		var itemsCount = self.Count;

		if (positions <= 0 || positions > itemsCount)
		{
			throw new ArgumentException(IListOfTExtensions.ErrorOutOfPosition, nameof(positions));
		}

		if (self.Count > 1 && positions % itemsCount != 0)
		{
			if (direction == RotateDirection.Positive)
			{
				positions = self.Count - positions;
			}

			for (var i = 0; i < GCD(positions, itemsCount); i++)
			{
				var value = self[i];
				var j = i;

				while (true)
				{
					var k = (j + positions) % itemsCount;

					if (k == i)
					{
						break;
					}

					self[j] = self[k];
					j = k;
				}

				self[j] = value;
			}
		}
	}

	/// <summary>
	/// Shuffles the given list.
	/// </summary>
	/// <typeparam name="T">The type of the members in <paramref name="this"/>.</typeparam>
	/// <param name="this">The list to shuffle.</param>
	/// <exception cref="ArgumentNullException">Thrown if <paramref name="this"/> is <c>null</c>.</exception>
	/// <remarks>
	/// The implementation of <c>Shuffle</c> uses the Fisher–Yates shuffle, as implemented by Durstenfeld -
	/// see http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle for details on this implementation.
	/// </remarks>
	public static void Shuffle<T>(this IList<T> self)
	{
		ArgumentNullException.ThrowIfNull(self);
		using var random = new SecureRandom();
		self.Shuffle(random);
	}

	/// <summary>
	/// Shuffles the given list using the given <see cref="SecureRandom"/> generator.
	/// </summary>
	/// <typeparam name="T">The type of the members in <paramref name="this"/>.</typeparam>
	/// <param name="this">The list to shuffle.</param>
	/// <param name="random">The random number generator to use.</param>
	/// <exception cref="ArgumentNullException">Thrown if <paramref name="this"/> or <paramref name="random"/> is <c>null</c>.</exception>
	/// <remarks>
	/// The implementation of <c>Shuffle</c> uses the Fisher–Yates shuffle, as implemented by Durstenfeld -
	/// see http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle for details on this implementation.
	/// </remarks>
	public static void Shuffle<T>(this IList<T> self, Random random)
	{
		ArgumentNullException.ThrowIfNull(self);
		ArgumentNullException.ThrowIfNull(random);

		var length = self.Count;

		while (length > 1)
		{
			length--;
#pragma warning disable CA5394 // Do not use insecure randomness
			var nextIndex = random.Next(length + 1);
#pragma warning restore CA5394 // Do not use insecure randomness
			self.Swap(nextIndex, length);
		}
	}

	/// <summary>
	/// Swaps two values.
	/// </summary>
	/// <typeparam name="T">The type of the members in <paramref name="this"/>.</typeparam>
	/// <param name="this">The list to swap elements in.</param>
	/// <param name="x">An index value into the given list.</param>
	/// <param name="y">An index value into the given list.</param>
	/// <exception cref="ArgumentNullException">Thrown if <paramref name="this"/> is <c>null</c>.</exception>
	/// <exception cref="IndexOutOfRangeException">Throw if <paramref name="x"/> and/or <paramref name="y"/>
	/// are outside the bounds of the given list.</exception>
	/// <remarks>
	/// If <paramref name="x"/> and <paramref name="y"/> are equal, nothing is done to the given list.
	/// </remarks>
	public static void Swap<T>(this IList<T> self, int x, int y)
	{
		ArgumentNullException.ThrowIfNull(self);

		if (x != y)
		{
			var xValue = self[x];
			self[x] = self[y];
			self[y] = xValue;
		}
	}
}


text:
namespace OrchardCore.ContentLocalization.Models
{
    public class ContentRequestCultureProviderSettings
    {
        public bool SetCookie { get; set; }
    }
}


text:
@import url(http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);

@font-face {
  font-family: 'League Gothic';
  src: url("../../lib/font/league_gothic-webfont.eot");
  src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
  font-weight: normal;
  font-style: normal; }

/*********************************************
 * GLOBAL STYLES
 *********************************************/
body {
  background: #1c1e20;
  background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
  background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
  background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
  background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
  background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
  background-color: #2b2b2b; }

.reveal {
  font-family: "Lato", Helvetica, Arial, sans-serif;
  font-size: 36px;
  font-weight: 200;
  letter-spacing: -0.02em;
  color: #eeeeee; }

::selection {
  color: white;
  background: #ff5e99;
  text-shadow: none; }

/*********************************************
 * HEADERS
 *********************************************/
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
  margin: 0 0 20px 0;
  color: #eeeeee;
  font-family: lato, "League Gothic", Impact, sans-serif;
  line-height: 0.9em;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  /*  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);*/ }

.reveal h2 {
  letter-spacing: 0.0em;
  word-spacing: 0.2em; }

.reveal h1 + h2 {
  text-transform: none; }

.reveal pre {
  font-size: 0.85em; }

.reveal pre code {
  padding: 0 0.5em 0 0;
  background: #111; }

section:nth-child(1) h1 {
  font-size: 7rem; }
section:nth-child(1) h2 {
  text-transform: uppercase;
  font-size: 3rem;
  margin: 1em 0 2em;
  color: rgba(255, 255, 255, 0.4); }

.no-break {
  white-space: nowrap; }

/*********************************************
 * LINKS
 *********************************************/
.reveal a:not(.image) {
  color: #ffb900;
  text-decoration: none;
  -webkit-transition: color .15s ease;
  -moz-transition: color .15s ease;
  -ms-transition: color .15s ease;
  -o-transition: color .15s ease;
  transition: color .15s ease; }

.reveal a:not(.image):hover {
  color: #71e9f4;
  text-shadow: none;
  border: none; }

.reveal .roll span:after {
  color: #fff;
  background: #0d99a5; }

/*********************************************
 * IMAGES
 *********************************************/
.reveal section img {
  margin: 15px;
  -webkit-transition: all .2s linear;
  -moz-transition: all .2s linear;
  -ms-transition: all .2s linear;
  -o-transition: all .2s linear;
  transition: all .2s linear; }

.reveal a:hover img {
  background: rgba(255, 255, 255, 0.2);
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }

/*********************************************
 * NAVIGATION CONTROLS
 *********************************************/
.reveal .controls div.navigate-left,
.reveal .controls div.navigate-left.enabled {
  border-right-color: #13daec; }

.reveal .controls div.navigate-right,
.reveal .controls div.navigate-right.enabled {
  border-left-color: #13daec; }

.reveal .controls div.navigate-up,
.reveal .controls div.navigate-up.enabled {
  border-bottom-color: #13daec; }

.reveal .controls div.navigate-down,
.reveal .controls div.navigate-down.enabled {
  border-top-color: #13daec; }

.reveal .controls div.navigate-left.enabled:hover {
  border-right-color: #71e9f4; }

.reveal .controls div.navigate-right.enabled:hover {
  border-left-color: #71e9f4; }

.reveal .controls div.navigate-up.enabled:hover {
  border-bottom-color: #71e9f4; }

.reveal .controls div.navigate-down.enabled:hover {
  border-top-color: #71e9f4; }

/*********************************************
 * PROGRESS BAR
 *********************************************/
.reveal .progress {
  background: rgba(0, 0, 0, 0.2); }

.reveal .progress span {
  background: #ffb900;
  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }

/*********************************************
 * Slides BG
 *********************************************/
#logo {
  position: absolute;
  opacity: 0;
  transition: opacity 0.5s ease-out;
  top: 0;
  right: 7%;
  z-index: 1; }

#logo img {
  width: 2em; }

.intro #logo {
  opacity: 1; }

.reveal .state-background {
  background: #384042 center top no-repeat;
  background-image: url(../../resources/grid_masked_dark.png), -webkit-linear-gradient(top, #384042, #46494c);
  background-image: url(../../resources/grid_masked_dark.png), linear-gradient(top, #384042, #46494c); }

.blendingbg .reveal .state-background {
  background: #4ba1b7 top center no-repeat;
  background-image: url(../../resources/grid_masked_dark.png), -webkit-linear-gradient(to bottom, #4ba1b7, #146c90);
  background-image: url(../../resources/grid_masked_dark.png), linear-gradient(to bottom, #4ba1b7, #146c90); }

.maskingbg .reveal .state-background {
  background: #1D6872 top center no-repeat;
  background-image: url(../../resources/grid_masked_dark.png), -webkit-linear-gradient(top, #41a0a0, #1d6872);
  background-image: url(../../resources/grid_masked_dark.png), linear-gradient(top, #41a0a0, #1d6872); }

@supports (background-blend-mode: multiply) {
  .reveal .state-background {
    background: #384042 center top no-repeat;
    background-image: url(../../resources/grunge-luminance-1.jpg), -webkit-linear-gradient(top, #858585, #858585);
    background-image: url(../../resources/grunge-luminance-1.jpg), linear-gradient(top, #858585, #858585);
    background-size: cover;
    background-blend-mode: multiply; }

  .blendingbg .reveal .state-background {
    background-image: url(../../resources/grunge-luminance-1.jpg), -webkit-linear-gradient(top, #206b7e, #0a3647);
    background-image: url(../../resources/grunge-luminance-1.jpg), linear-gradient(top, #206b7e, #0a3647);
    background-size: cover; }

  .maskingbg .reveal .state-background {
    background: #1D6872 top center no-repeat;
    background-image: url(../../resources/grunge-luminance-1.jpg), -webkit-linear-gradient(top, #71a3a3, #1d6872);
    background-image: url(../../resources/grunge-luminance-1.jpg), linear-gradient(top, #71a3a3, #1d6872);
    background-size: cover; }
}

.photo .reveal section img {
  background: rgba(255, 255, 255, 0.12);
  box-shadow: 0 0 15px 5px rgba(0, 0, 0, 0.15); }

.safety .reveal h1 {
  font-size: 3.2em; }

.resources .reveal section {
  text-align: left; }

.resources .reveal ul {
  margin-left: 0;
  padding-left: 0;
  margin-bottom: 1em; }

.resources .reveal li {
  list-style: none;
  padding: 0.2em 0 0 0; }

p.desc {
  font-size: 2em;
  margin: 0 0 1em; }

.toc li {
  list-style: none;
  padding: 0.3em 0; }

.toc li.past {
  opacity: 0.5; }

.side-by-side {
  display: -webkit-flex;
  display: -moz-flex;
  display: flex;
  box-sizing: border-box; }
  .side-by-side .side {
    -webkit-flex: 1 0 0;
    -moz-flex: 1 0 0;
    flex: 1 0 0; }
  .side-by-side .side.fix-w3c {
    display: flex; }
  .side-by-side .side + .side {
    margin-left: 2rem; }

#recap .side-by-side {
  margin-bottom: 2rem; }
  #recap .side-by-side img {
    max-width: auto;
    max-height: auto; }

img.partial {
  -webkit-mask: -webkit-linear-gradient(25deg, black 50%, rgba(252, 252, 252, 0.3) 50%);
  -moz-mask: -moz-linear-gradient(25deg, black 50%, rgba(252, 252, 252, 0.3) 50%);
  mask: linear-gradient(25deg, black 50%, rgba(252, 252, 252, 0.3) 50%); }

/* ------ Blending */
@keyframes blending-slide-over {
  to {
    -webkit-transform: rotatex(0);
    -moz-transform: rotatex(0);
    transform: rotatex(0); } }

input[type="color"] {
  position: absolute;
  top: 1em;
  left: 1em;
  width: 3em;
  height: 3em; }

.reveal .support-warning {
  padding: 1rem;
  background: #fc5;
  font-size: 1rem;
  color: #333;
  letter-spacing: 0;
  line-height: 1.5rem; }
  .reveal .support-warning a {
    color: navy;
    text-decoration: underline; }
  .reveal .support-warning a:hover {
    color: navy;
    text-decoration: none; }

#blending-comparison figure {
  width: 100%;
  height: 9em;
  padding: 0;
  margin: 3rem 0 0;
  position: relative;
  -webkit-perspective: 400;
  -moz-perspective: 400;
  perspective: 400; }
#blending-comparison .gradient {
  background: -webkit-linear-gradient(top, rgba(211, 19, 173, 0.78), rgba(255, 213, 0, 0.8)), url("../../resources/blending-source.jpg") top left no-repeat;
  background: -moz-linear-gradient(top, rgba(211, 19, 173, 0.78), rgba(255, 213, 0, 0.8)), url("../../resources/blending-source.jpg") top left no-repeat;
  background: linear-gradient(top, rgba(211, 19, 173, 0.78), rgba(255, 213, 0, 0.8)), url("../../resources/blending-source.jpg") top left no-repeat;
  background-size: cover, cover; }
#blending-comparison .solid {
  background: url("../../resources/blending-source.jpg") top left no-repeat;
  background-color: rgba(214, 121, 23, 0.7);
  background-size: cover; }
#blending-comparison .mock-overlay {
  width: 100%;
  height: 100%;
  background-color: inherit;
  position: absolute;
  top: 0;
  left: 0;
  transform: rotateX(-90deg);
  transform-origin: center center;
  animation: blending-slide-over 1.5s;
  animation-play-state: paused;
  animation-fill-mode: forwards; }
#blending-comparison .mock-overlay.visible {
  animation-play-state: running; }

/* turn off warnings if there is support */
@supports (background-blend-mode: overlay) {
  .reveal .support-warning.blending {
    display: none; }

  #blending-comparison figure.blended {
    background-blend-mode: overlay; } }
@supports (-webkit-clip-path: circle(25% at 50% 50%)) {
  .reveal .support-warning.clipping {
    display: none; } }
@supports (-webkit-clip-path: circle(25% at 50% 50%)) and (background-blend-mode: overlay) and (mix-blend-mode: overlay) {
  .reveal .support-warning.intro {
    display: none; } }
.reveal ul {
  list-style: none; }

#blending-illustration .layer {
  display: -webkit-flex;
  display: -moz-flex;
  display: flex;
  -webkit-justify-content: flex-end;
  -moz-justify-content: flex-end;
  justify-content: flex-end;
  -webkit-align-items: flex-start;
  -moz-align-items: flex-start;
  align-items: flex-start;
  -webkit-perspective: 1000;
  -moz-perspective: 1000;
  perspective: 1000;
  -webkit-perspective-origin: left bottom;
  -moz-perspective-origin: left bottom;
  perspective-origin: left bottom; }
  #blending-illustration .layer p {
    text-align: left;
    -webkit-flex: 1 1 auto;
    -moz-flex: 1 1 auto;
    flex: 1 1 auto;
    border-bottom: 0.1em solid rgba(255, 255, 255, 0.4); }
  #blending-illustration .layer img {
    margin: 0;
    padding: 0; }
  #blending-illustration .layer figure {
    width: 10em;
    height: 6em;
    -webkit-transform-origin: right top;
    -moz-transform-origin: right top;
    transform-origin: right top;
    -webkit-transform: rotatex(35deg) translate(-100px, -50px);
    -moz-transform: rotatex(35deg) translate(-100px, -50px);
    transform: rotatex(35deg) translate(-100px, -50px);
    -webkit-filter: drop-shadow(0 1em 0.5em rgba(0, 0, 0, 0.5));
    -moz-filter: drop-shadow(0 1em 0.5em rgba(0, 0, 0, 0.5));
    filter: drop-shadow(0 1em 0.5em rgba(0, 0, 0, 0.5));
    background-image: url("../../resources/blending-source.jpg");
    background-repeat: none;
    background-size: cover;
    background-color: #d67917;
    background-blend-mode: overlay; }
  #blending-illustration .layer.source figure {
    background-color: transparent; }
  #blending-illustration .layer.destination figure {
    background-image: none; }
  #blending-illustration .layer.result p {
    border-style: dashed; }

.surface {
  height: 700px;
  display: flex;
  -webkit-transform: scale(2);
  -moz-transform: scale(2);
  transform: scale(2); }

.surface ::selection {
  background: none; }

.scratch {
  background: #111111 url(../../resources/scratch-texture.jpg); }

.scratch h2 {
  margin: auto;
  font-size: 4em;
  width: 100%;
  outline: none;
  font-family: bangers, sans-serif;
  color: white;
  opacity: 1;
  mix-blend-mode: difference; }

/* Toggle to default state */
.scratch h2:active {
  opacity: 0.7;
  mix-blend-mode: normal; }

@keyframes hola-join {
  from {
    letter-spacing: 0em; }

  90%,100% {
    letter-spacing: -0.15em; } }

.hola {
  background: #fff; }

.hola h2 {
  margin: auto;
  font-size: 7em;
  animation: hola-join 1.6s ease-in-out infinite;
  animation-direction: alternate;
  animation-play-state: paused; }
  .hola h2 span {
    mix-blend-mode: multiply;
    font-family: 'Passion One', sans-serif; }
  .hola h2 span:nth-child(1) {
    color: #fb3f2d; }
  .hola h2 span:nth-child(2) {
    color: #1b8bcc; }
  .hola h2 span:nth-child(3) {
    color: #fa3a7a; }
  .hola h2 span:nth-child(4) {
    color: #1b958f; }
  .hola h2 span:nth-child(5) {
    color: #fbc839; }

.hola h2.texture {
  -webkit-mask-image: url(../../resources/grunge-alpha-1.png);
  mask-image: url(../../resources/grunge-alpha-1.png);
  -webkit-mask-size: 400px 100%;
  mask-size: 400px 100%; }

.hola h2:hover {
  animation-play-state: running; }

/* Toggle to default state */
.hola h2:active span {
  opacity: 0.7;
  mix-blend-mode: normal; }

#shapes-illustration div {
  background: #ffb900;
  float: left;
  margin: 0 1em 1em 0; }
  #shapes-illustration div:nth-child(1) {
    width: 6em;
    height: 4em; }
  #shapes-illustration div:nth-child(2) {
    width: 4em;
    height: 6em; }
  #shapes-illustration div:nth-child(3) {
    width: 6em;
    height: 6em; }
  #shapes-illustration div:nth-child(4) {
    width: 3em;
    height: 3em; }
  #shapes-illustration div:nth-child(5) {
    width: 1em;
    height: 1em; }
  #shapes-illustration div:nth-child(6) {
    width: 6em;
    height: 4em;
    border-radius: 1em;
    clear: left; }
  #shapes-illustration div:nth-child(7) {
    width: 4em;
    height: 6em;
    border-radius: 1em; }
  #shapes-illustration div:nth-child(8) {
    width: 6em;
    height: 6em;
    border-radius: 50%; }

.clip-surface {
  background: url("../../resources/road.jpg") center bottom no-repeat;
  height: 500px; }

#clip-target-circle {
  -webkit-clip-path: circle(25% at 50% 50%);
  -moz-clip-path: circle(25% at 50% 50%);
  /* FIXME (13 April, 2014): Un-prefixed clip-path still applies to SVG only. To replace when parity is achieved. */ }

#clip-target-ellipse {
  -webkit-clip-path: ellipse(50% 40% at 50% 50%);
  -moz-clip-path: ellipse(50% 40% at 50% 50%); }

#clip-target-polygon {
  -webkit-clip-path: polygon(nonzero, 955px 405px, 483px 212px, 1px 400px, 0px 500px, 956px 500px);
  -moz-clip-path: polygon(nonzero, 955px 405px, 483px 212px, 1px 400px, 0px 500px, 956px 500px); }