Commit Graph
16360 Commits
Author SHA1 Message Date
Lin Jen-Shin 9d8dca08e4 Use AR callbacks as suggested by:
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4964#note_12744656
2016-06-29 17:44:39 +08:00
Lin Jen-Shin 1bc0d732f6 Also remove ci_builds.artifacts_size when erased 2016-06-28 20:37:46 +08:00
Lin Jen-Shin 0a294698db Just save the size in total rather than individual files
Feedback:
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4964#note_12741046
2016-06-28 11:16:48 +00:00
Lin Jen-Shin fe0c59d2e6 Introduce ci_builds.artifacts_sizes as JSON:
We store the sizes as a hash from path to bytes like:

``` ruby
{'ci_artifacts.txt' => 27,
 'other_artifacts_0.1.2/another-subdirectory/banana_sample.gif' =>
71759,
 'other_artifacts_0.1.2/doc_sample.txt' => 1314,
 'rails_sample.jpg' => 35255,
 'tests_encoding/utf8 test dir ✓/regular_file_2' => 7}
```

So that it's easier to access than reading gzip file again.
2016-06-28 18:14:21 +08:00
Robert Speicher c9a4626333 Merge remote-tracking branch 'dev/master' 2016-06-27 18:39:42 -04:00
Douwe Maan e4dacb353e Merge branch 'issue_18398' into 'master'
Check for conflict with wiki projects when creating a new project.

## What does this MR do?
Check for conflict with wiki projects when creating a new project
## Are there points in the code the reviewer needs to double check?
No
## Why was this MR needed?
To avoid exposing the information from the wiki repository of other project
## What are the relevant issue numbers?
#18398 
## Screenshots (if relevant)
![Screen_Shot_2016-06-24_at_6.03.49_PM](/uploads/7bf55e5159bf0c2b653b8f4f941f72fc/Screen_Shot_2016-06-24_at_6.03.49_PM.png)
## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !4918
2016-06-27 19:15:22 +00:00
Robert Speicher 8a197c15d4 Merge branch 'fix-18997' into 'master'
Fix visibility of snippets when searching

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/18997

See merge request !1972
2016-06-27 18:43:12 +00:00
Robert Speicher 7d8b3a0314 Merge branch '19102-fix' into 'master'
Fix an information disclosure when requesting access to a group containing private projects

Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/19102.

The commit speaks for itself:

    Fix an information disclosure when requesting access to a group containing private projects
    
    The issue was with the `User#groups` and `User#projects` associations
    which goes through the `User#group_members` and `User#project_members`.
    
    Initially I chose to use a secure approach by storing the requester's
    user ID in `Member#created_by_id` instead of `Member#user_id` because I
    was aware that there was a security risk since I didn't know the
    codebase well enough.
    
    Then during the review, we decided to change that and directly store the
    requester's user ID into `Member#user_id` (for the sake of simplifying
    the code I believe), meaning that every `group_members` / `project_members`
    association would include the requesters by default...
    
    My bad for not checking that all the `group_members` / `project_members`
    associations and the ones that go through them (e.g. `Group#users` and
    `Project#users`) were made safe with the `where(requested_at: nil)` /
    `where(members: { requested_at: nil })` scopes.
    
    Now they are all secure.

See merge request !1973
2016-06-27 18:41:31 +00:00
Robert Speicher 9c9b0eef46 Merge branch 'cherry-pick-5734e266' into 'master'
Fix rendering of commit notes

See merge request !4953
2016-06-27 18:31:45 +00:00
Ruben Davila 16a0303801 Check for conflict with wiki projects when creating a new project.
This fix avoids exposing the information from the wiki repository of other project.
2016-06-27 13:23:19 -05:00
Jacob Schatz e0e325625e Merge branch 'emoji-menu-stick-search' into 'master'
Made the search bar on emoji menu sticky

## What does this MR do?

When scrolling down the emoji menu, the search bar disappears. For better UX, the search bar no stays at the top when scrolling.

## Screenshots (if relevant)

![emoji-sticky](/uploads/a5b4773547d3d67342ddcfc07c8f1568/emoji-sticky.gif)

See merge request !4743
2016-06-27 18:03:08 +00:00
Douwe MaanandDouwe Maan c2223efe84 Fix rendering of commit notes 2016-06-27 18:00:18 +00:00
Robert Speicher 21842cf90f Merge branch 'mark-done-todo-id' into 'master'
Correctly return todo ID after creating todo

See merge request !4941
2016-06-27 17:49:29 +00:00
Fatih Acet 121c5c837f Merge branch '19075-new-wiki' into 'master'
Remove duplicate new page btn from edit wiki

## What does this MR do?
Removes duplicate button on wiki page

## What are the relevant issue numbers?
Closes #19075 

## Screenshots (if relevant)
![Screen_Shot_2016-06-24_at_9.45.28_AM](/uploads/8dca96c3e75b428d63acaaba6dede9a6/Screen_Shot_2016-06-24_at_9.45.28_AM.png)
![Screen_Shot_2016-06-24_at_9.45.57_AM](/uploads/e6ea97b07e48d2fe6f108d8c5a943583/Screen_Shot_2016-06-24_at_9.45.57_AM.png)

See merge request !4904
2016-06-27 17:29:03 +00:00
Fatih Acet 70c0d87a5e Merge branch 'new-branch-check-fix' into 'master'
Fix check for existence of New Branch button on Issue page

## What does this MR do?

The condition in [`initCanCreateBranch`][initCanCreateBranch] mistakenly checks `$container` (the New Branch button) for falsy. However JQuery returns an empty array if no matching element was found, so this condition is never met.

## Why was this MR needed?

The wrong condition causes:
* `$.getJSON($container.data('path'))` to be called where `$container.data('path')` is `undefined`
* in this case `$.getJSON` uses `location.href`
* if the current page has a JSON representation, it is fetched and cached by browser and displayed the next time the page is visited (#17365)
* otherwise "Failed to check if new branch can be created" is displayed (#17264)

## What are the relevant issue numbers?

Fixes #17264 and #17365.

[initCanCreateBranch]: https://gitlab.com/gitlab-org/gitlab-ce/blob/v8.8.4/app/assets/javascripts/issue.js.coffee#L102


See merge request !4630
2016-06-27 16:59:05 +00:00
Annabel Dunstone 550e40a53c Add conditional for new pag link 2016-06-27 11:52:38 -05:00
Annabel Dunstone 5d7153e61d Remove duplicate new page btn from edit wiki 2016-06-27 11:52:38 -05:00
Jacob Schatz 89506940f4 Merge branch 'revert-sri' into 'master'
Revert Subresource Integrity pending a fix for Firefox's incorrect hashing implementation.

Per the discussion in #18230, Firefox support is broken :(

cc: @jschatz1 

See merge request !4943
2016-06-27 16:13:37 +00:00
Phil Hughes d17ab054cf Correctly returns todo ID after creating todo 2016-06-27 17:00:27 +01:00
winniehell 87fcb0abcb Fix check for existence of new branch button (!4630) 2016-06-27 17:59:50 +02:00
Rémy Coutable 4f39e72773 Merge branch 'image-sizing' into 'master'
Image sizing

## What does this MR do?

Limits image height to fit the screen. The wrapping div is so the image is guaranteed to be a block element without the link area growing to be larger than the image itself.

## Are there points in the code the reviewer needs to double check?

Make sure this can't be done in a more performant or concise way with Banzai.

## Why was this MR needed?

Images were displayed at their full resolution, which made it difficult to read issues when the image height was greater than the viewport height (see #18861).

## What are the relevant issue numbers?

Fixes #18861.

## Screenshots (if relevant)

Before:

![Screen_Shot_2016-06-20_at_3.25.26_PM](/uploads/158424375ade95adcd337ccd34c48747/Screen_Shot_2016-06-20_at_3.25.26_PM.png)

After:

![Screen_Shot_2016-06-20_at_3.24.57_PM](/uploads/f1a3b5f6442e4e3b1067332a547fb1c8/Screen_Shot_2016-06-20_at_3.24.57_PM.png)

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [x] Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

cc: @jschatz1 @dzaporozhets @rspeicher

See merge request !4810
2016-06-27 15:45:01 +00:00
Connor Shea c7b04841c0 Wrap images in divs with Banzai and limit max-height.
Add max-height to prevent images from displaying larger than the provided screen size.

Also fix a failing test and add a new one.
2016-06-27 09:16:07 -06:00
Rémy Coutable 52be433c36 Merge branch 'case-insensitive-ci-skip' into 'master'
Allow "ci skip" to be in any case

## What does this MR do?

This MR makes the check for the [ci skip] tag in a commit message case insensitive and adds support for [skip ci].

## Are there points in the code the reviewer needs to double check?

No.

## Why was this MR needed?

I couldn't understand why some of my commits were being built, even though they contained "[CI Skip]".

## What are the relevant issue numbers?
N/A
## Screenshots (if relevant)
N/A
## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [x] Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !4785
2016-06-27 14:53:21 +00:00
Connor Shea 47b9b162c7 Revert Subresource Integrity pending a fix for Firefox's incorrect hashing implementation. 2016-06-27 07:47:33 -06:00
Takuya Noguchi ed713c81d7 Clean up some unused templates imported from GitLab CI 2016-06-26 15:02:49 +09:00
Stan Hu 4c767bab58 Merge branch 'issue_19096' into 'master'
Validate presence of essential params for diff rendering

## What does this MR do?

Check the presence of essential params before rendering diff content.
## Are there points in the code the reviewer needs to double check?

No
## Why was this MR needed?

To avoid the generated application error
## What are the relevant issue numbers?

#19096

## Screenshots (if relevant)

## Does this MR meet the acceptance criteria?

- [ ] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !4917
2016-06-25 03:38:13 +00:00
Simon Welsh 0550f2a5e7 Add support for "skip ci" too 2016-06-25 11:38:06 +10:00
Simon Welsh 2fc91c4865 Allow "ci skip" to be in any case 2016-06-25 11:36:36 +10:00
Ruben Davila 7627cc1989 Validate presence of essential params for diff rendering
This will avoid application errors generated by the assumption of the
presence of these params.
2016-06-24 16:20:53 -05:00
Jacob Schatz f0ed8930f7 Merge branch 'issue_15588' into 'master'
Fix issue being ordered twice and callback when moving between states

fixes #15588 

See merge request !4296
2016-06-24 21:09:33 +00:00
Jacob Schatz e45d6043e8 Merge branch 'js-content-for' into 'master'
Re-implement page-specific JS in a better way.

## What does this MR do?

This rebuilds the way we do page-specific JavaScript assets for a few reasons:

- The current implementation does not work with Subresource Integrity (!4808)
- The current implementation doesn't allow caching of libraries because each page we hook up with this system will have a separate application.js. Meaning that for every page that uses Ace Editor, we'd have to load Ace Editor plus any GitLab-specific scripts in the same file, making local caching of just Ace Editor impossible.
- The current implementation is rather hacky.

## Are there points in the code the reviewer needs to double check?

That Sprockets doesn't choke on this when we use precompiled assets.

## What are the relevant issue numbers?

#14372

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [x] API support added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

cc: @jschatz1 @pavelloz

Thanks to @pavelloz for his example implementation which was very useful.

See merge request !4883
2016-06-24 20:51:02 +00:00
Felipe Artur bade71ba5a Add specs and improve coffescript sortable binding function 2016-06-24 15:24:59 -03:00
Felipe Artur c391a72c18 Fix issue being ordered twice and callback when moving between states 2016-06-24 15:23:33 -03:00
Rémy Coutable e3d464d82a Fix a wrong MR status when merge_when_build_succeeds & project.only_allow_merge_if_build_succeeds are true
The issue was that `MergeRequest#mergeable?` returns false when the CI
state is not success and project.only_allow_merge_if_build_succeeds is
true. In this case `Projects::MergeRequestsController#merge` would
return the `:failed` status when enabling `merge_when_build_succeeds`,
thus leading to a weird state and the MR never automatically merged.

The fix is to disable the CI state check in the controller safeguard
that early return the `:failed` status.

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-06-24 18:33:02 +02:00
Rémy Coutable 07ea22e52b Merge branch 'fix/gitlab-import-project-file-fix' into 'master'
Fix temp file being deleted after the request while importing a GitLab project

Fixes https://gitlab.com/gitlab-com/infrastructure/issues/151

In production, the temporary uploaded file is getting deleted straight after the request so the Sidekiq worker is unable to find it in `/tmp`

Also, improved erroring/logging of this situation.

See merge request !4894
2016-06-24 10:22:44 +00:00
Rémy Coutable aec3475df9 Fix an information disclosure when requesting access to a group containing private projects
The issue was with the `User#groups` and `User#projects` associations
which goes through the `User#group_members` and `User#project_members`.

Initially I chose to use a secure approach by storing the requester's
user ID in `Member#created_by_id` instead of `Member#user_id` because I
was aware that there was a security risk since I didn't know the
codebase well enough.

Then during the review, we decided to change that and directly store the
requester's user ID into `Member#user_id` (for the sake of simplifying
the code I believe), meaning that every `group_members` / `project_members`
association would include the requesters by default...

My bad for not checking that all the `group_members` / `project_members`
associations and the ones that go through them (e.g. `Group#users` and
`Project#users`) were made safe with the `where(requested_at: nil)` /
`where(members: { requested_at: nil })` scopes.

Now they are all secure.

Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-06-24 12:01:48 +02:00
Yorick Peterse d470f3d195 Support for rendering/redacting multiple documents
This commit changes the way certain documents are rendered (currently
only Notes) and how documents are redacted. Previously both rendering
and redacting would run on a per document basis. The result of this was
that for every document we'd have to run countless queries just to
figure out if we could display a set of links or not.

This commit changes things around so that redacting Markdown documents
is no longer tied into the html-pipeline Gem. This in turn allows it to
redact multiple documents in a single pass, thus reducing the number of
queries needed.

In turn rendering issue/merge request notes has been adjusted to take
advantage of this new setup. Instead of rendering Markdown somewhere
deep down in a view the Markdown is rendered and redacted in the
controller (taking the current user and all that into account). This has
been done in such a way that the "markdown()" helper method can still be
used on its own.

This particular commit also paves the way for caching rendered HTML on
object level. Right now there's an accessor method Note#note_html which
is used for setting/getting the rendered HTML. Once we cache HTML on row
level we can simply change this field to be a column and call a "save"
whenever needed and we're pretty much done.
2016-06-24 11:46:39 +02:00
James Lopez c3b6eadc33 fix params 2016-06-24 11:41:33 +02:00
James Lopez 46b89a270f Fix tmp file being deleted after the request plus some cleanup and improved erroring for this situation 2016-06-24 10:50:23 +02:00
Robert Speicher 9e43fc151b Merge branch 'hamlit-test' into 'master'
Replace Haml with Hamlit

What this change does:
- It replaces HAML with [Hamlit](https://github.com/k0kubun/hamlit), a much more efficient implementation of HAML.
- It removes `haml-rails`.
- It adds `hamlit.rb` and removes `haml.rb`.
- It makes things faster and less memory-hungry!

See also #13201.

See merge request !3666
2016-06-23 23:51:08 +00:00
Douwe Maan 951b0a1a12 Merge branch 'zj-pipeline-can-be-nil' 2016-06-23 18:55:16 -04:00
Jacob Schatz 214137aa60 Merge branch 'fix-logo' into 'master'
Remove width restriction for logo on sign-in page.

Follow-up on !4661 since we didn't remove the width restriction on that.

See merge request !4888
2016-06-23 22:42:55 +00:00
Jacob Schatz 1f472c72bc Merge branch '18438-ios-scrolling' into 'master'
Resolve "Scrolling horz on iOS for the secondary nav is broken"

## What does this MR do?
Moves absolutely positioned `div`s outside of the scrolling container because mobile safari causes those elements to jump around on scroll.

## Are there points in the code the reviewer needs to double check?
Check on a real iPhone (was only able to check in iOS simulator)

## Why was this MR needed?
Mobile Safari.

## What are the relevant issue numbers?
Closes #18438 

## Screenshots (if relevant)
![mobile-safari-fix](/uploads/b38bba735530eb11507fe03036292dd8/mobile-safari-fix.gif)

See merge request !4869
2016-06-23 22:21:21 +00:00
Connor Shea efabe5a444 Remove width restriction for logo on sign-in page. 2016-06-23 15:58:10 -06:00
Jacob Schatz c390555f2f Merge branch '19008_ci_dropdown_label_fix' into 'master'
Apply selected value as label

## What does this MR do?

## Are there points in the code the reviewer needs to double check?

## Why was this MR needed?

## What are the relevant issue numbers?

## Screenshots (if relevant)
![dropdown-label](/uploads/db2ea7cb3cc51fbdeea53c304f1bd7a5/dropdown-label.gif)


## Does this MR meet the acceptance criteria?

- [ ] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !4886
2016-06-23 21:46:50 +00:00
Jacob Schatz 0710560cf6 Merge branch 'fix-bulk-assign' into 'master'
Fix unwanted label unassignment

## What does this MR do?
- When updating the milestone
  - [x] Do not remove labels when assigning a milestone
  - [x] Do not remove labels when unassigning a milestone
  - [x] Do not remove labels when assigning a milestone and adding another label

- When toggling selected issues labels should be kept
  - [x] Select an issue with an assigned label -> pick another label from dropdown-> unselect the issue -> select the issue again -> submit the form: Existing label should not be removed.

## Are there points in the code the reviewer needs to double check?
Labels should not be added or removed to issues when doing bulk actions unless we explicitly select a label from the dropdown

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !4863
2016-06-23 21:46:06 +00:00
Annabel DunstoneandJacob Schatz 12aca07723 Fix positioning of Repository sub nav scrolling 2016-06-23 17:45:22 -04:00
Annabel DunstoneandJacob Schatz ee8b0d37fa Move fade divs out of every scrolling container; remove unneeded scrolling CSS 2016-06-23 17:45:22 -04:00
Annabel DunstoneandJacob Schatz 350e57fd0e Move fade out divs outside of scrolling container on project view 2016-06-23 17:45:22 -04:00
Jacob Schatz d61c69f450 Merge branch '18536_status_dropdown_label' into 'master'
Set button label when picking an option from status dropdown

## What does this MR do?
Fixes an issue with the status dropdown. It was not setting up the correct label after picking an option

## What are the relevant issue numbers?
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/18536

## Screenshots (if relevant)

**Previous**

![status-select-previous](/uploads/7c6adbd6c5ba2660dc39a762d53d3b68/status-select-previous.gif)

**After**

![status-select](/uploads/91483efed8fbd63a79a01c9ca2154b74/status-select.gif)

## Does this MR meet the acceptance criteria?

- [ ] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- [ ] Tests
  - [ ] Added for this feature/bug
  - [x] All builds are passing
- [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !4771
2016-06-23 21:42:04 +00:00