forked from ryanmwangi/CalMerger
Compare commits
96 Commits
Author | SHA1 | Date |
---|---|---|
Ryan Mwangi | 92c6fffe64 | |
Ryan Mwangi | 51c4f5c31f | |
Ryan Mwangi | 5ec6341680 | |
Ryan Mwangi | d6022eeb62 | |
Ryan Mwangi | 5ec42d07bb | |
xeruf | ff595a9f70 | |
xeruf | 1706b9cad3 | |
xeruf | 2bd5c967af | |
xeruf | c8f3771717 | |
Ryan Mwangi | 5b40bf5d75 | |
Ryan Mwangi | 227ec8a211 | |
Ryan Mwangi | 5769c9ce5b | |
Ryan Mwangi | 6a428c55e0 | |
Ryan Mwangi | 56e5f69cbb | |
Ryan Mwangi | e45c433797 | |
Ryan Mwangi | c4c723d60a | |
Ryan Mwangi | 29208d8b4d | |
Ryan Mwangi | c1c6ae47de | |
Ryan Mwangi | 174a845c78 | |
Ryan Mwangi | ad3ec6f7a6 | |
Ryan Mwangi | fab6753c5a | |
Ryan Mwangi | 379a79617b | |
Ryan Mwangi | d15d0be707 | |
Ryan Mwangi | 5e3e8eab5b | |
Ryan Mwangi | 2283b82ba7 | |
Ryan Mwangi | 2f3b791e5d | |
Ryan Mwangi | ac26afe778 | |
Ryan Mwangi | e5e9dbb680 | |
Ryan Mwangi | 8881361a1f | |
Ryan Mwangi | 8965eaa319 | |
Ryan Mwangi | ca52065f66 | |
Ryan Mwangi | 8ab685dec0 | |
Ryan Mwangi | 585b83b03c | |
Ryan Mwangi | 73e46d7f99 | |
Ryan Mwangi | d2b0234b4b | |
Ryan Mwangi | 2b7002303c | |
Ryan Mwangi | 6cf5b8420e | |
Ryan Mwangi | ddcfedbbdf | |
xeruf | bed3e47f8e | |
xeruf | 1f19d8cf1f | |
xeruf | 77e6963118 | |
Ryan Mwangi | 782e62d56d | |
Ryan Mwangi | 9468e58132 | |
Ryan Mwangi | d4498cd0d8 | |
Ryan Mwangi | 3edc551031 | |
Ryan Mwangi | 859d3f3db5 | |
xeruf | 00e152f08c | |
xeruf | 864a3739b3 | |
Ryan Mwangi | 495fb57675 | |
Ryan Mwangi | ff32bb430d | |
Ryan Mwangi | 9a0a62675c | |
xeruf | 0a863a4eb2 | |
Ryan Mwangi | a94727df56 | |
Ryan Mwangi | 7e2b846029 | |
Ryan Mwangi | cbdfdf6c97 | |
Ryan Mwangi | 2e9de0749d | |
Ryan Mwangi | d08d87f47c | |
Ryan Mwangi | 0114c94caa | |
Ryan Mwangi | e8582cd411 | |
Ryan Mwangi | 665c134597 | |
ryanmwangi | 0b0ecaa0c2 | |
xeruf | 4032e2c49d | |
Ryan Mwangi | 441f4d2fb3 | |
Ryan Mwangi | 8c0de14d5f | |
Ryan Mwangi | af980956cb | |
Ryan Mwangi | 5d7bdb6878 | |
Ryan Mwangi | df37f35ace | |
Ryan Mwangi | 2a0fe0812e | |
Ryan Mwangi | 3b590958a0 | |
Ryan Mwangi | 299b8c1404 | |
Ryan Mwangi | be6d378890 | |
Ryan Mwangi | 11a4efe30b | |
Ryan Mwangi | db78a0121e | |
Ryan Mwangi | 1bb1db7326 | |
Ryan Mwangi | 73135dd9d4 | |
Ryan Mwangi | 41687e1e22 | |
Ryan Mwangi | 8e143df754 | |
Ryan Mwangi | ffd2fa5370 | |
Ryan Mwangi | 1c241c0738 | |
Ryan Mwangi | 69f2f71a2d | |
Ryan Mwangi | 708144baa6 | |
Ryan Mwangi | b32696f14c | |
Ryan Mwangi | cdc25981b5 | |
Ryan Mwangi | 1dde451f9d | |
Ryan Mwangi | 00f5fedb2a | |
Ryan Mwangi | 1bc7119b08 | |
Ryan Mwangi | 0c61cb0e7c | |
Ryan Mwangi | af74d809c4 | |
Ryan Mwangi | cf10a62049 | |
xeruf | 495557e6c2 | |
xeruf | 5b3a47a122 | |
xeruf | 8eb44e18f6 | |
Ryan Mwangi | 6c9fb1139f | |
Ryan Mwangi | 188a2b713c | |
Ryan Mwangi | 4fce46c57e | |
Ryan Mwangi | 9f036b43cd |
|
@ -0,0 +1,8 @@
|
|||
node_modules
|
||||
npm-debug.log
|
||||
.DS_Store
|
||||
tests
|
||||
*.test.js
|
||||
*.log
|
||||
.git
|
||||
.env
|
|
@ -0,0 +1,2 @@
|
|||
* text=auto eol=lf
|
||||
*.ics text eol=crlf
|
|
@ -1,2 +1,3 @@
|
|||
node_modules/
|
||||
tests/calendar/
|
||||
test/calendar/
|
||||
calendar/
|
||||
|
|
44
README.md
44
README.md
|
@ -39,6 +39,50 @@ The application also generates a unique URL for the merged calendar and updates
|
|||
```bash
|
||||
npm start
|
||||
```
|
||||
## Building and Running with Docker
|
||||
|
||||
### 1. Build the Docker Image
|
||||
|
||||
Run the following command to build the Docker image:
|
||||
|
||||
```bash
|
||||
docker build -t calmerger-app .
|
||||
```
|
||||
|
||||
### 2. Run the Docker Container
|
||||
|
||||
To start the container, use:
|
||||
|
||||
```bash
|
||||
docker run -d --name calmerger -p 3000:3000 calmerger-app
|
||||
|
||||
```
|
||||
|
||||
This maps the container's port `3000` to the host system's port `3000`. The application will be accessible at [http://localhost:3000](http://localhost:3000).
|
||||
|
||||
### 3. Using Docker Compose (Optional)
|
||||
|
||||
If you prefer to use Docker Compose, ensure you have a `docker-compose.yml` file in your project directory. Then, run:
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
This will automatically build and start the container based on the configuration in the `docker-compose.yml` file.
|
||||
|
||||
### 4. Stopping the Docker Container
|
||||
|
||||
To stop the running container, use:
|
||||
|
||||
```bash
|
||||
docker stop calmerger
|
||||
```
|
||||
|
||||
To remove the container:
|
||||
|
||||
```bash
|
||||
docker rm calmerger
|
||||
```
|
||||
|
||||
## Running Tests
|
||||
|
||||
|
|
158
calendar.test.js
158
calendar.test.js
|
@ -1,158 +0,0 @@
|
|||
import request from 'supertest';
|
||||
import express from 'express';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import app from './server';
|
||||
|
||||
const TEST_MERGED_CALENDARS_DIR = path.join(__dirname, 'tests');
|
||||
const TEST_CALENDARS_DIR = 'test_calendars';
|
||||
const EXPECTED_OUTPUTS_DIR = 'expected_outputs';
|
||||
let server;
|
||||
describe('Calendar Merging API', () => {
|
||||
beforeAll(async () => {
|
||||
console.log(`Test Merged Calendars Directory: ${TEST_MERGED_CALENDARS_DIR}`);
|
||||
// Ensure the test merged calendars directory exists
|
||||
if (!fs.existsSync(TEST_MERGED_CALENDARS_DIR)) {
|
||||
fs.mkdirSync(TEST_MERGED_CALENDARS_DIR, { recursive: true });
|
||||
}
|
||||
// Change the working directory to the test-specific directory
|
||||
process.chdir(TEST_MERGED_CALENDARS_DIR);
|
||||
console.log(process.cwd());
|
||||
// Start the server
|
||||
server = app.listen(0);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
// Ensure the server is closed before cleanup
|
||||
await new Promise(resolve => server.close(resolve));
|
||||
|
||||
// Optional: Add a delay to ensure all handles are released
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
});
|
||||
|
||||
const loadCalendarFile = (filename) => {
|
||||
return path.join(__dirname, TEST_CALENDARS_DIR, filename);
|
||||
};
|
||||
|
||||
const loadExpectedOutput = (filename) => {
|
||||
return fs.readFileSync(path.join(EXPECTED_OUTPUTS_DIR, filename), 'utf8');
|
||||
};
|
||||
|
||||
test('Merge date-based calendar', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'Date Based Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: loadCalendarFile('ferien_bayern_2023.ics'),
|
||||
prefix: 'Ferien_Bayern_2023',
|
||||
override: false,
|
||||
},
|
||||
{
|
||||
url: loadCalendarFile('US_Holidays.ics'),
|
||||
prefix: 'US_holidays',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(/calendar\/Date_Based_Calendar/);
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'Date_Based_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('Date_Based_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
// expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
test('Merge time-based calendar', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'Time Based Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: loadCalendarFile('other_work.ics'),
|
||||
prefix: 'other_work',
|
||||
override: false,
|
||||
},
|
||||
{
|
||||
url: loadCalendarFile('work.ics'),
|
||||
prefix: 'work',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(/calendar\/Time_Based_Calendar/);
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'Time_Based_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('Time_Based_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync (filePath, 'utf8');
|
||||
// expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
test('Merge calendar without prefix', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'No Prefix Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: loadCalendarFile('San_Francisco_Public_Holidays.ics'),
|
||||
prefix: '',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(/calendar\/No_Prefix_Calendar/);
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'No_Prefix_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('No_Prefix_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
// expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
test('Merge calendar with override', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'Override Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: loadCalendarFile('San_Francisco_Public_Holidays.ics'),
|
||||
prefix: 'Override Event',
|
||||
override: true,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(/calendar\/Override_Calendar/);
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(TEST_MERGED_CALENDARS_DIR, 'Override_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('Override_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
// expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,20 @@
|
|||
# Use an official Node.js runtime as a parent image
|
||||
FROM node:18-alpine
|
||||
|
||||
# Set working directory inside the container
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy package.json and package-lock.json for installing dependencies
|
||||
COPY package*.json ./
|
||||
|
||||
# Install dependencies
|
||||
RUN npm install --production
|
||||
|
||||
# Copy the rest of the project files
|
||||
COPY . .
|
||||
|
||||
# Expose the port your application runs on (if applicable)
|
||||
EXPOSE 3000
|
||||
|
||||
# Command to run the application
|
||||
CMD ["node", "src/app.js"]
|
|
@ -1,5 +0,0 @@
|
|||
module.exports = {
|
||||
transform: {
|
||||
'^.+\\.jsx?$': 'babel-jest',
|
||||
},
|
||||
};
|
|
@ -0,0 +1,7 @@
|
|||
export default {
|
||||
transform: {
|
||||
'^.+\\.jsx?$': 'babel-jest',
|
||||
},
|
||||
moduleFileExtensions: ['js', 'jsx'],
|
||||
testEnvironment: 'node',
|
||||
};
|
File diff suppressed because it is too large
Load Diff
20
package.json
20
package.json
|
@ -1,28 +1,30 @@
|
|||
{
|
||||
"name": "calendar-merger",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"version": "1.1.0",
|
||||
"scripts": {
|
||||
"start": "node server.js",
|
||||
"test": "jest"
|
||||
"start": "node src/app.js",
|
||||
"test": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js ./test"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.7.7",
|
||||
"calendar-merger": "file:",
|
||||
"express": "^4.17.1",
|
||||
"ical": "^0.8.0",
|
||||
"ical-generator": "^0.2.10",
|
||||
"ical.js": "^2.1.0",
|
||||
"node-cron": "^2.0.3",
|
||||
"supertest": "^7.0.0"
|
||||
},
|
||||
"description": "cal merge",
|
||||
"main": "script.js",
|
||||
"description": "calmerger",
|
||||
"main": "server.js",
|
||||
"author": "Ryan",
|
||||
"type": "module",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.26.0",
|
||||
"@babel/plugin-transform-modules-commonjs": "^7.25.9",
|
||||
"@babel/preset-env": "^7.26.0",
|
||||
"@babel/register": "^7.25.9",
|
||||
"jest": "^29.7.0"
|
||||
"babel-jest": "^29.7.0",
|
||||
"jest": "^29.7.0",
|
||||
"rewire": "^7.0.0"
|
||||
}
|
||||
}
|
||||
|
|
250
server.js
250
server.js
|
@ -1,250 +0,0 @@
|
|||
import express from 'express';
|
||||
import ICAL from 'ical.js';
|
||||
import fs from 'fs';
|
||||
import axios from 'axios';
|
||||
import path from 'path';
|
||||
import icalGenerator from 'ical-generator';
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
// Determine the merged calendars directory based on the environment
|
||||
const MERGED_CALENDARS_DIR = 'calendar';
|
||||
console.log(`Merged calendars directory: ${MERGED_CALENDARS_DIR} under ${process.cwd()}`);
|
||||
|
||||
// Ensure the merged calendars directory exists
|
||||
fs.mkdirSync(MERGED_CALENDARS_DIR, { recursive: true });
|
||||
|
||||
app.get('/script.js', (req, res) => {
|
||||
res.setHeader('Content-Type', 'application/javascript');
|
||||
res.sendFile('script.js', { root: '.' });
|
||||
});
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.sendFile('index.html', { root: '.' });
|
||||
});
|
||||
|
||||
// Function to sanitize the linkGroupName for use as a filename
|
||||
function sanitizeFilename(filename) {
|
||||
return filename.replace(/[<>:"/\\|?* ]/g, '_'); // Replace invalid characters with underscores
|
||||
}
|
||||
|
||||
// Merge calendars endpoint
|
||||
app.post('/merge', async (req, res) => {
|
||||
const { linkGroupName, calendars } = req.body;
|
||||
|
||||
try {
|
||||
// Validate the input
|
||||
if (!linkGroupName || !calendars || !Array.isArray(calendars) || calendars.length === 0) {
|
||||
return res.status(400).json({ error: 'Invalid input. Please provide a linkGroupName and at least one calendar.' });
|
||||
}
|
||||
|
||||
// Sanitize the linkGroupName to create a valid filename
|
||||
const sanitizedLinkGroupName = sanitizeFilename(linkGroupName);
|
||||
const filename = `${sanitizedLinkGroupName}.ics`;
|
||||
|
||||
// Fetch calendar data from URLs or load from local files
|
||||
const promises = calendars.map((calendar) => {
|
||||
// Check if calendar URL is a file path or a URL
|
||||
const isFilePath = !calendar.url.startsWith('http');
|
||||
if (isFilePath) {
|
||||
try{
|
||||
// Read calendar data from local file
|
||||
const data = fs.readFileSync(path.resolve(calendar.url), 'utf-8');
|
||||
return Promise.resolve({
|
||||
data: data,
|
||||
prefix: calendar.prefix,
|
||||
override: calendar.override,
|
||||
});
|
||||
|
||||
} catch (error){
|
||||
console.error(`Error reading calendar file ${calendar.url}:`, error);
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
} else {
|
||||
// Fetch calendar data from URL
|
||||
return axios.get(calendar.url)
|
||||
.then((response) => {
|
||||
return {
|
||||
data: response.data,
|
||||
prefix: calendar.prefix,
|
||||
override: calendar.override,
|
||||
};
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(`Error fetching calendar from ${calendar.url}:`, error);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
const results = await Promise.all(promises);
|
||||
// Filter out any failed requests
|
||||
const validResults = results.filter((result) => result !== null);
|
||||
|
||||
// Create a new iCalendar instance
|
||||
const calendar = icalGenerator({ name: linkGroupName });
|
||||
|
||||
// Parse calendar data
|
||||
validResults.forEach((result) => {
|
||||
const parsed = ICAL.parse(result.data);
|
||||
const component = new ICAL.Component(parsed);
|
||||
const events = component.getAllSubcomponents('vevent');
|
||||
|
||||
events.forEach((event) => {
|
||||
const vevent = new ICAL.Event(event);
|
||||
const start = vevent.startDate.toJSDate();
|
||||
const end = vevent.endDate.toJSDate();
|
||||
const summary = result.override ? result.prefix : `${result.prefix} ${vevent.summary}`;
|
||||
|
||||
if (vevent.startDate.isDate) {
|
||||
calendar.createEvent({
|
||||
start: start.toISOString().split('T')[0],
|
||||
end: end.toISOString().split('T')[0],
|
||||
summary: summary,
|
||||
allDay: true,
|
||||
});
|
||||
} else {
|
||||
calendar.createEvent({
|
||||
start: start,
|
||||
end: end,
|
||||
summary: summary,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Save the calendar to a file
|
||||
const filePath = `${MERGED_CALENDARS_DIR}/${filename}`;
|
||||
fs.writeFileSync(filePath, calendar.toString());
|
||||
console.log(`Calendar saved to ${filePath}`);
|
||||
|
||||
// Save the user input and sanitizedLinkGroupName in a separate JSON file
|
||||
saveCalendarData(sanitizedLinkGroupName, linkGroupName, calendars);
|
||||
|
||||
res.json({ url: `${req.protocol}://${req.get('host')}/calendar/${sanitizedLinkGroupName}` });
|
||||
} catch (error) {
|
||||
console.error('Error merging calendars:', error);
|
||||
res.status(500).json({ error: 'Failed to merge calendars' });
|
||||
}
|
||||
});
|
||||
|
||||
// Serve the merged calendar file and refresh if older than an hour
|
||||
app.get('/calendar/:name', async (req, res) => {
|
||||
const calendarName = req.params.name;
|
||||
const icsFilePath = path.resolve(MERGED_CALENDARS_DIR, `${calendarName}.ics`);
|
||||
const jsonFilePath = path.resolve(MERGED_CALENDARS_DIR, `${calendarName}.json`);
|
||||
|
||||
try {
|
||||
// Check if the .ics file exists
|
||||
if (fs.existsSync(icsFilePath)) {
|
||||
const stats = fs.statSync(icsFilePath);
|
||||
const lastModified = new Date(stats.mtime);
|
||||
const now = new Date();
|
||||
// Check if the file is older than one hour
|
||||
if (now - lastModified > 60 * 60 * 1000) {
|
||||
console .log('Refreshing calendar data...');
|
||||
|
||||
// Read the JSON file to get the source URL and other details
|
||||
const jsonData = JSON.parse(fs.readFileSync(jsonFilePath, 'utf8'));
|
||||
const { calendars } = jsonData;
|
||||
|
||||
// Fetch calendar data for each merged calendar
|
||||
const promises = calendars.map((calendar) => {
|
||||
return axios.get(calendar.url)
|
||||
.then((response) => {
|
||||
return {
|
||||
data: response.data,
|
||||
prefix: calendar.prefix,
|
||||
override: calendar.override,
|
||||
};
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(error);
|
||||
return null;
|
||||
});
|
||||
});
|
||||
|
||||
const results = await Promise.all(promises);
|
||||
// Filter out any failed requests
|
||||
const validResults = results.filter((result) => result !== null);
|
||||
|
||||
// Create a new iCalendar instance
|
||||
const calendar = icalGenerator({ name: calendarName });
|
||||
|
||||
// Parse calendar data
|
||||
validResults.forEach((result) => {
|
||||
const parsed = ICAL.parse(result.data);
|
||||
const component = new ICAL.Component(parsed);
|
||||
const events = component.getAllSubcomponents('vevent');
|
||||
|
||||
events.forEach((event) => {
|
||||
const vevent = new ICAL.Event(event);
|
||||
const start = vevent.startDate.toJSDate();
|
||||
const end = vevent.endDate.toJSDate();
|
||||
const summary = result.override ? result.prefix : `${result.prefix} ${vevent.summary}`;
|
||||
|
||||
if (vevent.startDate.isDate) {
|
||||
calendar.createEvent({
|
||||
start: start.toISOString().split('T')[0],
|
||||
end: end.toISOString().split('T')[0],
|
||||
summary: summary,
|
||||
allDay: true,
|
||||
});
|
||||
} else {
|
||||
calendar.createEvent({
|
||||
start: start,
|
||||
end: end,
|
||||
summary: summary,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Save the calendar to a file
|
||||
fs.writeFileSync(icsFilePath, calendar.toString());
|
||||
|
||||
console.log('Calendar data refreshed.');
|
||||
}
|
||||
} else {
|
||||
return res.status(404).json({ error: 'Calendar not found.' });
|
||||
}
|
||||
|
||||
// Return the contents of the .ics file
|
||||
res.setHeader('Content-Type', 'text/calendar');
|
||||
res.sendFile(icsFilePath);
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Failed to retrieve calendar data.' });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//function to save calendar data to seperate .json files
|
||||
function saveCalendarData(calendarId, linkGroupName, calendars) {
|
||||
const calendarFile = `${MERGED_CALENDARS_DIR}/${calendarId}.json`;
|
||||
const calendarData = {
|
||||
id: calendarId,
|
||||
linkGroupName: linkGroupName,
|
||||
calendars: calendars
|
||||
};
|
||||
|
||||
try {
|
||||
fs.writeFileSync(calendarFile, JSON.stringify(calendarData, null, 2));
|
||||
} catch (error) {
|
||||
console.error('Error writing to calendar file:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Start the server
|
||||
if (process.env.NODE_ENV !== 'test') {
|
||||
const port = 3000;
|
||||
app.listen(port, () => {
|
||||
console.log(`Server started on port ${port}`);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
export default app;
|
|
@ -0,0 +1,6 @@
|
|||
import server from './server.js';
|
||||
|
||||
const port = process.env.NODE_PORT || 3000;
|
||||
server.listen(port, () => {
|
||||
console.log(`Server started on port ${port}`);
|
||||
});
|
|
@ -0,0 +1,117 @@
|
|||
import ICAL from './lib/ical.timezones.js'
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import axios from 'axios'
|
||||
|
||||
export const MERGED_CALENDARS_DIR = path.join(process.cwd(), 'calendar');
|
||||
|
||||
// Ensure the merged calendars directory exists
|
||||
fs.mkdirSync(MERGED_CALENDARS_DIR, { recursive: true });
|
||||
|
||||
// Utility to sanitize filenames
|
||||
export const sanitizeFilename = (filename) => filename.replace(/[<>:"/\\|?* ]/g, '_');
|
||||
|
||||
// Fetch calendar data from URL or file
|
||||
export async function fetchCalendarData(calendar) {
|
||||
const isFilePath = !calendar.url.startsWith('http');
|
||||
try {
|
||||
if (isFilePath) {
|
||||
return { data: fs.readFileSync(path.resolve(calendar.url), 'utf-8'), ...calendar };
|
||||
} else {
|
||||
const response = await axios.get(calendar.url);
|
||||
return { data: response.data, ...calendar };
|
||||
}
|
||||
} catch (error) {
|
||||
throw new Error(`Error retrieving calendar from ${calendar.url}: ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Create a top-level VCALENDAR component
|
||||
export function createCalendarComponent(name) {
|
||||
const calendarComponent = new ICAL.Component(['vcalendar', [], []]);
|
||||
calendarComponent.updatePropertyWithValue('name', name);
|
||||
calendarComponent.updatePropertyWithValue('prodid', '-//CalMerge//Calendar Merger 1.0//EN');
|
||||
calendarComponent.updatePropertyWithValue('version', '2.0');
|
||||
calendarComponent.updatePropertyWithValue('calscale', 'GREGORIAN');
|
||||
return calendarComponent;
|
||||
}
|
||||
|
||||
// Add events to the calendar component
|
||||
export function addEventsToCalendar(newCalendar, calendars) {
|
||||
let defaultTimeZone = null; // To store the first found X-WR-TIMEZONE
|
||||
|
||||
calendars.forEach((calendarRaw) => {
|
||||
try {
|
||||
const { data, prefix, override } = calendarRaw; // Extract prefix and override
|
||||
const calendar = new ICAL.Component(ICAL.parse(calendarRaw.data));
|
||||
|
||||
// Extract METHOD from the parsed data (if available)
|
||||
const method = calendar.getFirstPropertyValue('method');
|
||||
if (method) {
|
||||
console.log(`Extracted METHOD: ${method}`);
|
||||
// Only add the METHOD property once
|
||||
if (!newCalendar.getFirstPropertyValue('method')) {
|
||||
newCalendar.updatePropertyWithValue('method', method.toUpperCase());
|
||||
}
|
||||
}
|
||||
// Extract X-WR-TIMEZONE if available
|
||||
const wrTimeZone = calendar.getFirstPropertyValue('x-wr-timezone');
|
||||
if (wrTimeZone) {
|
||||
console.log(`Extracted X-WR-TIMEZONE: ${wrTimeZone}`);
|
||||
// Set it as the default if not already set
|
||||
if (!defaultTimeZone) {
|
||||
defaultTimeZone = wrTimeZone;
|
||||
if (!newCalendar.getFirstPropertyValue('x-wr-timezone')) {
|
||||
newCalendar.updatePropertyWithValue('x-wr-timezone', defaultTimeZone);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Extract and add VTIMEZONE components
|
||||
const timezones = calendar.getAllSubcomponents('vtimezone');
|
||||
timezones.forEach((timezone) => {
|
||||
const tzid = timezone.getFirstPropertyValue('tzid');
|
||||
if (!newCalendar.getFirstSubcomponent((comp) => comp.name === 'vtimezone' && comp.getFirstPropertyValue('tzid') === tzid)) {
|
||||
newCalendar.addSubcomponent(timezone);
|
||||
}
|
||||
});
|
||||
|
||||
// Process VEVENT components
|
||||
calendar.getAllSubcomponents('vevent').forEach((vevent) => {
|
||||
const event = new ICAL.Event(vevent);
|
||||
const newEvent = new ICAL.Event();
|
||||
|
||||
newEvent.uid = event.uid;
|
||||
newEvent.startDate = event.startDate
|
||||
newEvent.endDate = event.endDate
|
||||
|
||||
const dtstamp = vevent.getFirstPropertyValue('dtstamp');
|
||||
if (dtstamp) newEvent.component.updatePropertyWithValue('dtstamp', dtstamp);
|
||||
|
||||
if (override) {
|
||||
newEvent.summary = prefix || 'Busy';
|
||||
} else {
|
||||
newEvent.summary = prefix ? `${prefix} ${event.summary}` : event.summary;
|
||||
if (event.location) newEvent.location = event.location;
|
||||
}
|
||||
|
||||
const rrule = vevent.getFirstPropertyValue('rrule');
|
||||
if (rrule) newEvent.component.updatePropertyWithValue('rrule', rrule);
|
||||
|
||||
// Add the VEVENT to the calendar
|
||||
newCalendar.addSubcomponent(newEvent.component);
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(`Error processing calendar:`, calendarRaw, error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Save calendar data to file
|
||||
export function saveCalendarFile(filename, content) {
|
||||
const normalizedContent = content.replace(/\r?\n/g, '\r\n').trimEnd(); // Normalize to CRLF
|
||||
const filePath = path.join(MERGED_CALENDARS_DIR, filename);
|
||||
console.log(`Saving calendar data to file: ${filePath}`);
|
||||
fs.writeFileSync(filePath, normalizedContent);
|
||||
return filePath;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,348 @@
|
|||
import { createRequire } from 'module';
|
||||
const require = createRequire(import.meta.url);
|
||||
|
||||
const ICAL = require('./ical.cjs');
|
||||
(function() {
|
||||
function register(tzdata) { ICAL.TimezoneService.register(ICAL.Component.fromString("BEGIN:VTIMEZONE\r\n" + tzdata + "\r\nEND:VTIMEZONE")) };
|
||||
ICAL.TimezoneService.IANA_TZDB_VERSION = "2024b";
|
||||
register("TZID:Africa/Abidjan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Abidjan\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Algiers\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Algiers\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Bissau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Bissau\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Cairo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Cairo\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700424T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701030T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Casablanca\r\nTZUNTIL:20870511T020001Z\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Casablanca\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Ceuta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Ceuta\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Africa/El_Aaiun\r\nTZUNTIL:20870511T020001Z\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/El_Aaiun\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Johannesburg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Johannesburg\r\nBEGIN:STANDARD\r\nTZNAME:SAST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Juba\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Juba\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Khartoum\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Khartoum\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Lagos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Lagos\r\nBEGIN:STANDARD\r\nTZNAME:WAT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Maputo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Maputo\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Monrovia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Monrovia\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Nairobi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Nairobi\r\nBEGIN:STANDARD\r\nTZNAME:EAT\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Ndjamena\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Ndjamena\r\nBEGIN:STANDARD\r\nTZNAME:WAT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Sao_Tome\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Sao_Tome\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Tripoli\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Tripoli\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Tunis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Tunis\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Africa/Windhoek\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Africa/Windhoek\r\nBEGIN:STANDARD\r\nTZNAME:CAT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Adak\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Adak\r\nBEGIN:DAYLIGHT\r\nTZNAME:HDT\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-0900\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:HST\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-1000\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Anchorage\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Anchorage\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Araguaina\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Araguaina\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Buenos_Aires\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Buenos_Aires\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Catamarca\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Catamarca\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Cordoba\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Cordoba\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Jujuy\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Jujuy\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/La_Rioja\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/La_Rioja\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Mendoza\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Mendoza\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Rio_Gallegos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Rio_Gallegos\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Salta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Salta\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/San_Juan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/San_Juan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/San_Luis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/San_Luis\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Tucuman\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Tucuman\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Argentina/Ushuaia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Argentina/Ushuaia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Asuncion\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Asuncion\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19701004T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19700322T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Bahia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Bahia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Bahia_Banderas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Bahia_Banderas\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Barbados\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Barbados\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Belem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Belem\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Belize\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Belize\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Boa_Vista\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Boa_Vista\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Bogota\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Bogota\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Boise\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Boise\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Cambridge_Bay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cambridge_Bay\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Campo_Grande\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Campo_Grande\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Cancun\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cancun\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Caracas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Caracas\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Cayenne\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cayenne\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Chicago\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Chicago\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Chihuahua\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Chihuahua\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Ciudad_Juarez\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Ciudad_Juarez\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Costa_Rica\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Costa_Rica\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Cuiaba\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Cuiaba\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Danmarkshavn\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Danmarkshavn\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Dawson\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Dawson\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Dawson_Creek\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Dawson_Creek\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Denver\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Denver\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Detroit\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Detroit\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Edmonton\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Edmonton\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Eirunepe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Eirunepe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/El_Salvador\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/El_Salvador\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Fort_Nelson\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Fort_Nelson\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Fortaleza\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Fortaleza\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Glace_Bay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Glace_Bay\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Goose_Bay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Goose_Bay\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Grand_Turk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Grand_Turk\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Guatemala\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Guatemala\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Guayaquil\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Guayaquil\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Guyana\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Guyana\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Halifax\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Halifax\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Havana\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Havana\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Hermosillo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Hermosillo\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Indianapolis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Indianapolis\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Knox\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Knox\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Marengo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Marengo\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Petersburg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Petersburg\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Tell_City\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Tell_City\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Vevay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Vevay\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Vincennes\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Vincennes\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Indiana/Winamac\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Indiana/Winamac\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Inuvik\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Inuvik\r\nBEGIN:DAYLIGHT\r\nTZNAME:MDT\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0600\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0700\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Iqaluit\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Iqaluit\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Jamaica\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Jamaica\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Juneau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Juneau\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Kentucky/Louisville\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Kentucky/Louisville\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Kentucky/Monticello\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Kentucky/Monticello\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/La_Paz\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/La_Paz\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Lima\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Lima\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Los_Angeles\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Los_Angeles\r\nBEGIN:DAYLIGHT\r\nTZNAME:PDT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Maceio\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Maceio\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Managua\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Managua\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Manaus\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Manaus\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Martinique\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Martinique\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Matamoros\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Matamoros\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Mazatlan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Mazatlan\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Menominee\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Menominee\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Merida\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Merida\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Metlakatla\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Metlakatla\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Mexico_City\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Mexico_City\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Miquelon\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Miquelon\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0200\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0300\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Moncton\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Moncton\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Monterrey\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Monterrey\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Montevideo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Montevideo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/New_York\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/New_York\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Nome\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Nome\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Noronha\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Noronha\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/North_Dakota/Beulah\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/North_Dakota/Beulah\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/North_Dakota/Center\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/North_Dakota/Center\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/North_Dakota/New_Salem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/North_Dakota/New_Salem\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Nuuk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Nuuk\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0100\r\nDTSTART:19700328T230000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0200\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Ojinaga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Ojinaga\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Panama\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Panama\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Paramaribo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Paramaribo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Phoenix\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Phoenix\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Port-au-Prince\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Port-au-Prince\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Porto_Velho\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Porto_Velho\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Puerto_Rico\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Puerto_Rico\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Punta_Arenas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Punta_Arenas\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Rankin_Inlet\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Rankin_Inlet\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Recife\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Recife\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Regina\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Regina\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Resolute\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Resolute\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Rio_Branco\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Rio_Branco\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Santarem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Santarem\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Santiago\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Santiago\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19700405T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700906T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Santo_Domingo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Santo_Domingo\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Sao_Paulo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Sao_Paulo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Scoresbysund\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Scoresbysund\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0200\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0100\r\nDTSTART:19700328T230000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Sitka\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Sitka\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/St_Johns\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/St_Johns\r\nBEGIN:STANDARD\r\nTZNAME:NST\r\nTZOFFSETFROM:-0230\r\nTZOFFSETTO:-0330\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:NDT\r\nTZOFFSETFROM:-0330\r\nTZOFFSETTO:-0230\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:America/Swift_Current\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Swift_Current\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Tegucigalpa\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Tegucigalpa\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Thule\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Thule\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Tijuana\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Tijuana\r\nBEGIN:DAYLIGHT\r\nTZNAME:PDT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Toronto\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Toronto\r\nBEGIN:DAYLIGHT\r\nTZNAME:EDT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EST\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Vancouver\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Vancouver\r\nBEGIN:DAYLIGHT\r\nTZNAME:PDT\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0700\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0800\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Whitehorse\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Whitehorse\r\nBEGIN:STANDARD\r\nTZNAME:MST\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:America/Winnipeg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Winnipeg\r\nBEGIN:DAYLIGHT\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:America/Yakutat\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:America/Yakutat\r\nBEGIN:DAYLIGHT\r\nTZNAME:AKDT\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0800\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AKST\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0900\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:Antarctica/Casey\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Casey\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Antarctica/Davis\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Davis\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Antarctica/Macquarie\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Macquarie\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Antarctica/Mawson\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Mawson\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Antarctica/Palmer\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Palmer\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Antarctica/Rothera\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Rothera\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Antarctica/Troll\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Troll\r\nBEGIN:DAYLIGHT\r\nTZNAME:+02\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:+00\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Antarctica/Vostok\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Antarctica/Vostok\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Almaty\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Almaty\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Amman\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Amman\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Anadyr\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Anadyr\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Aqtau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Aqtau\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Aqtobe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Aqtobe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Ashgabat\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ashgabat\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Atyrau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Atyrau\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Baghdad\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Baghdad\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Baku\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Baku\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Bangkok\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Bangkok\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Barnaul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Barnaul\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Beirut\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Beirut\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Bishkek\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Bishkek\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Chita\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Chita\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Colombo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Colombo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0530\r\nTZOFFSETTO:+0530\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Damascus\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Damascus\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Dhaka\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dhaka\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Dili\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dili\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Dubai\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dubai\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Dushanbe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Dushanbe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Famagusta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Famagusta\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Gaza\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Gaza\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700328T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Hebron\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Hebron\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700328T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701024T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Ho_Chi_Minh\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ho_Chi_Minh\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Hong_Kong\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Hong_Kong\r\nBEGIN:STANDARD\r\nTZNAME:HKT\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Hovd\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Hovd\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Irkutsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Irkutsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Jakarta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Jakarta\r\nBEGIN:STANDARD\r\nTZNAME:WIB\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Jayapura\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Jayapura\r\nBEGIN:STANDARD\r\nTZNAME:WIT\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Jerusalem\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Jerusalem\r\nBEGIN:DAYLIGHT\r\nTZNAME:IDT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700327T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:IST\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Kabul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kabul\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0430\r\nTZOFFSETTO:+0430\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Kamchatka\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kamchatka\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Karachi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Karachi\r\nBEGIN:STANDARD\r\nTZNAME:PKT\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Kathmandu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kathmandu\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0545\r\nTZOFFSETTO:+0545\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Khandyga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Khandyga\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Kolkata\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kolkata\r\nBEGIN:STANDARD\r\nTZNAME:IST\r\nTZOFFSETFROM:+0530\r\nTZOFFSETTO:+0530\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Krasnoyarsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Krasnoyarsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Kuching\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Kuching\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Macau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Macau\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Magadan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Magadan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Makassar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Makassar\r\nBEGIN:STANDARD\r\nTZNAME:WITA\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Manila\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Manila\r\nBEGIN:STANDARD\r\nTZNAME:PST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Nicosia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Nicosia\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Asia/Novokuznetsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Novokuznetsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Novosibirsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Novosibirsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Omsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Omsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Oral\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Oral\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Pontianak\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Pontianak\r\nBEGIN:STANDARD\r\nTZNAME:WIB\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Pyongyang\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Pyongyang\r\nBEGIN:STANDARD\r\nTZNAME:KST\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Qatar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Qatar\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Qostanay\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Qostanay\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Qyzylorda\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Qyzylorda\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Riyadh\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Riyadh\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Sakhalin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Sakhalin\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Samarkand\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Samarkand\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Seoul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Seoul\r\nBEGIN:STANDARD\r\nTZNAME:KST\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Shanghai\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Shanghai\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Singapore\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Singapore\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Srednekolymsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Srednekolymsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Taipei\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Taipei\r\nBEGIN:STANDARD\r\nTZNAME:CST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Tashkent\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tashkent\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Tbilisi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tbilisi\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Tehran\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tehran\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0330\r\nTZOFFSETTO:+0330\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Thimphu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Thimphu\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Tokyo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tokyo\r\nBEGIN:STANDARD\r\nTZNAME:JST\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Tomsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Tomsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Ulaanbaatar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ulaanbaatar\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Urumqi\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Urumqi\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Ust-Nera\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Ust-Nera\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Vladivostok\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Vladivostok\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Yakutsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yakutsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Yangon\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yangon\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0630\r\nTZOFFSETTO:+0630\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Yekaterinburg\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yekaterinburg\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Asia/Yerevan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Asia/Yerevan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/Azores\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Azores\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19700329T000000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:-0100\r\nDTSTART:19701025T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/Bermuda\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Bermuda\r\nBEGIN:DAYLIGHT\r\nTZNAME:ADT\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0300\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AST\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0400\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/Canary\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Canary\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/Cape_Verde\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Cape_Verde\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/Faroe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Faroe\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/Madeira\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Madeira\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/South_Georgia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/South_Georgia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Atlantic/Stanley\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Atlantic/Stanley\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Australia/Adelaide\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Adelaide\r\nBEGIN:STANDARD\r\nTZNAME:ACST\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:ACDT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Australia/Brisbane\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Brisbane\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Australia/Broken_Hill\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Broken_Hill\r\nBEGIN:STANDARD\r\nTZNAME:ACST\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+0930\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:ACDT\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+1030\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Australia/Darwin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Darwin\r\nBEGIN:STANDARD\r\nTZNAME:ACST\r\nTZOFFSETFROM:+0930\r\nTZOFFSETTO:+0930\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Australia/Eucla\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Eucla\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0845\r\nTZOFFSETTO:+0845\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Australia/Hobart\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Hobart\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:Australia/Lindeman\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Lindeman\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Australia/Lord_Howe\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Lord_Howe\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1030\r\nDTSTART:19700405T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:+1030\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Australia/Melbourne\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Melbourne\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Australia/Perth\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Perth\r\nBEGIN:STANDARD\r\nTZNAME:AWST\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Australia/Sydney\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Australia/Sydney\r\nBEGIN:STANDARD\r\nTZNAME:AEST\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1000\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:AEDT\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1100\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Etc/GMT\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+1\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+1\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0100\r\nTZOFFSETTO:-0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+10\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+10\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+11\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+11\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+12\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+12\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1200\r\nTZOFFSETTO:-1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+2\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+2\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0200\r\nTZOFFSETTO:-0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+3\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+3\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0300\r\nTZOFFSETTO:-0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+4\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+4\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+5\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+5\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+6\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+6\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+7\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+7\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0700\r\nTZOFFSETTO:-0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+8\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+8\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT+9\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT+9\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-1\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-1\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-10\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-10\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-11\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-11\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-12\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-12\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-13\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-13\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-14\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-14\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1400\r\nTZOFFSETTO:+1400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-2\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-2\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-3\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-3\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-4\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-4\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-5\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-5\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-6\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-6\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-7\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-7\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0700\r\nTZOFFSETTO:+0700\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-8\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-8\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0800\r\nTZOFFSETTO:+0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/GMT-9\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/GMT-9\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Etc/UTC\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Etc/UTC\r\nBEGIN:STANDARD\r\nTZNAME:UTC\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Andorra\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Andorra\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Astrakhan\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Astrakhan\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Athens\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Athens\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Belgrade\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Belgrade\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Berlin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Berlin\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Brussels\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Brussels\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Bucharest\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Bucharest\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Budapest\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Budapest\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Chisinau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Chisinau\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Dublin\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Dublin\r\nBEGIN:STANDARD\r\nTZNAME:IST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Europe/Gibraltar\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Gibraltar\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Helsinki\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Helsinki\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Istanbul\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Istanbul\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Kaliningrad\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Kaliningrad\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Kirov\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Kirov\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Kyiv\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Kyiv\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Europe/Lisbon\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Lisbon\r\nBEGIN:STANDARD\r\nTZNAME:WET\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:WEST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT");
|
||||
register("TZID:Europe/London\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/London\r\nBEGIN:DAYLIGHT\r\nTZNAME:BST\r\nTZOFFSETFROM:+0000\r\nTZOFFSETTO:+0100\r\nDTSTART:19700329T010000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:GMT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0000\r\nDTSTART:19701025T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Madrid\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Madrid\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Malta\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Malta\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Minsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Minsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Moscow\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Moscow\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Paris\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Paris\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Prague\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Prague\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Riga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Riga\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Rome\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Rome\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Samara\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Samara\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Saratov\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Saratov\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Simferopol\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Simferopol\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Sofia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Sofia\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Tallinn\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Tallinn\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Tirane\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Tirane\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Ulyanovsk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Ulyanovsk\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Vienna\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Vienna\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Vilnius\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Vilnius\r\nBEGIN:DAYLIGHT\r\nTZNAME:EEST\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nDTSTART:19700329T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:EET\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nDTSTART:19701025T040000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Volgograd\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Volgograd\r\nBEGIN:STANDARD\r\nTZNAME:MSK\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Warsaw\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Warsaw\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Europe/Zurich\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Europe/Zurich\r\nBEGIN:DAYLIGHT\r\nTZNAME:CEST\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:CET\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD");
|
||||
register("TZID:Indian/Chagos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Indian/Chagos\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0600\r\nTZOFFSETTO:+0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Indian/Maldives\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Indian/Maldives\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0500\r\nTZOFFSETTO:+0500\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Indian/Mauritius\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Indian/Mauritius\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0400\r\nTZOFFSETTO:+0400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Apia\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Apia\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Auckland\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Auckland\r\nBEGIN:DAYLIGHT\r\nTZNAME:NZDT\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1300\r\nDTSTART:19700927T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:NZST\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1200\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Bougainville\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Bougainville\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Chatham\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Chatham\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:+1245\r\nTZOFFSETTO:+1345\r\nDTSTART:19700927T024500\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1345\r\nTZOFFSETTO:+1245\r\nDTSTART:19700405T034500\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Easter\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Easter\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nDTSTART:19700404T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SA\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nDTSTART:19700905T220000\r\nRRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA\r\nEND:DAYLIGHT");
|
||||
register("TZID:Pacific/Efate\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Efate\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Fakaofo\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Fakaofo\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Fiji\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Fiji\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Galapagos\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Galapagos\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0600\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Gambier\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Gambier\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0900\r\nTZOFFSETTO:-0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Guadalcanal\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Guadalcanal\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Guam\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Guam\r\nBEGIN:STANDARD\r\nTZNAME:ChST\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Honolulu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Honolulu\r\nBEGIN:STANDARD\r\nTZNAME:HST\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Kanton\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kanton\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Kiritimati\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kiritimati\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1400\r\nTZOFFSETTO:+1400\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Kosrae\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kosrae\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Kwajalein\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Kwajalein\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Marquesas\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Marquesas\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0930\r\nTZOFFSETTO:-0930\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Nauru\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Nauru\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Niue\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Niue\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Norfolk\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Norfolk\r\nBEGIN:DAYLIGHT\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1200\r\nDTSTART:19701004T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1100\r\nDTSTART:19700405T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Noumea\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Noumea\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1100\r\nTZOFFSETTO:+1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Pago_Pago\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Pago_Pago\r\nBEGIN:STANDARD\r\nTZNAME:SST\r\nTZOFFSETFROM:-1100\r\nTZOFFSETTO:-1100\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Palau\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Palau\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+0900\r\nTZOFFSETTO:+0900\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Pitcairn\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Pitcairn\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-0800\r\nTZOFFSETTO:-0800\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Port_Moresby\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Port_Moresby\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1000\r\nTZOFFSETTO:+1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Rarotonga\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Rarotonga\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Tahiti\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Tahiti\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:-1000\r\nTZOFFSETTO:-1000\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Tarawa\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Tarawa\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1200\r\nTZOFFSETTO:+1200\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
register("TZID:Pacific/Tongatapu\r\nLAST-MODIFIED:20241022T084017Z\r\nX-LIC-LOCATION:Pacific/Tongatapu\r\nBEGIN:STANDARD\r\nTZNAME:%z\r\nTZOFFSETFROM:+1300\r\nTZOFFSETTO:+1300\r\nDTSTART:19700101T000000\r\nEND:STANDARD");
|
||||
})();
|
||||
export default ICAL;
|
|
@ -0,0 +1,85 @@
|
|||
import express from 'express';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import { fetchCalendarData, sanitizeFilename, createCalendarComponent, addEventsToCalendar, saveCalendarFile, MERGED_CALENDARS_DIR } from './calendarUtil.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// Merge calendars endpoint
|
||||
router.post('/merge', async (req, res) => {
|
||||
const { linkGroupName, calendars } = req.body;
|
||||
|
||||
// Validate the input
|
||||
if (!linkGroupName || !Array.isArray(calendars) || calendars.length === 0) {
|
||||
return res.status(400).json({ error: 'Invalid input. Please provide a linkGroupName and at least one calendar.' });
|
||||
}
|
||||
|
||||
try {
|
||||
// Sanitize the linkGroupName to create a valid filename
|
||||
const sanitizedLinkGroupName = sanitizeFilename(linkGroupName);
|
||||
const filename = `${sanitizedLinkGroupName}.ics`;
|
||||
|
||||
// Fetch calendar data
|
||||
const results = await Promise.all(calendars.map(fetchCalendarData));
|
||||
|
||||
// Generate merged calendar using ical.js
|
||||
const calendarComponent = createCalendarComponent(linkGroupName);
|
||||
addEventsToCalendar(calendarComponent, results);
|
||||
|
||||
// Save the calendar to a file
|
||||
saveCalendarFile(filename, calendarComponent.toString());
|
||||
|
||||
// Save the user input and sanitizedLinkGroupName in a separate JSON file
|
||||
saveCalendarFile(`${sanitizedLinkGroupName}.json`, JSON.stringify({ linkGroupName, calendars }, null, 2));
|
||||
|
||||
res.json({ url: `${req.protocol}://${req.get('host')}/calendar/${sanitizedLinkGroupName}` });
|
||||
} catch (error) {
|
||||
console.error('Error merging calendars:', error.message);
|
||||
res.status(500).json({ error: 'Failed to merge calendars' });
|
||||
}
|
||||
});
|
||||
|
||||
// Refresh calendar if outdated
|
||||
async function refreshCalendarData(calendarName) {
|
||||
const jsonFilePath = path.join(MERGED_CALENDARS_DIR, `${calendarName}.json`);
|
||||
console.log(`Refreshing calendar data for: ${calendarName}`);
|
||||
|
||||
// Read the JSON file to get the source URL and other details
|
||||
const { calendars } = JSON.parse(fs.readFileSync(jsonFilePath, 'utf-8'));
|
||||
|
||||
const calendarResults = await Promise.all(calendars.map(fetchCalendarData));
|
||||
const calendarComponent = createCalendarComponent(calendarName);
|
||||
addEventsToCalendar(calendarComponent, calendarResults);
|
||||
|
||||
saveCalendarFile(`${calendarName}.ics`, calendarComponent.toString());
|
||||
console.log('Calendar data refreshed and saved.');
|
||||
}
|
||||
|
||||
// Serve the merged calendar file and refresh if older than an hour
|
||||
router.get('/calendar/:name', async (req, res) => {
|
||||
const calendarName = req.params.name;
|
||||
const icsFilePath = path.join(MERGED_CALENDARS_DIR, `${calendarName}.ics`);
|
||||
|
||||
try {
|
||||
// Check if the .ics file exists
|
||||
console.log(`Serving calendar for: ${calendarName}`);
|
||||
if (fs.existsSync(icsFilePath)) {
|
||||
const stats = fs.statSync(icsFilePath);
|
||||
const isOutdated = new Date() - new Date(stats.mtime) > 60 * 60 * 1000;
|
||||
|
||||
if (isOutdated){
|
||||
console.log(`Calendar ${calendarName} is outdated. Refreshing...`);
|
||||
await refreshCalendarData(calendarName);
|
||||
}
|
||||
res.setHeader('Content-Type', 'text/calendar');
|
||||
res.sendFile(icsFilePath);
|
||||
} else {
|
||||
res.status(404).json({ error: 'Calendar not found.' });
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error retrieving calendar data:', error.message);
|
||||
res.status(500).json({ error: 'Failed to retrieve calendar data.' });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
|
@ -0,0 +1,14 @@
|
|||
import express from 'express';
|
||||
import path from 'path';
|
||||
import routes from './routes.js';
|
||||
|
||||
console.log(`Starting server in ${process.cwd()}`);
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
// Serve static files from the 'public' directory
|
||||
app.use(express.static(path.join(process.cwd(), 'public')));
|
||||
app.use('/', routes);
|
||||
|
||||
export default app;
|
|
@ -0,0 +1,277 @@
|
|||
import request from 'supertest';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
// ESM equivalent of __dirname
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const CALENDARS_DIR = path.join(__dirname, 'calendar');
|
||||
const TEST_CALENDARS_DIR = path.join(__dirname, 'test_calendars');
|
||||
const EXPECTED_OUTPUTS_DIR = path.join(__dirname, 'expected_outputs');
|
||||
|
||||
let server;
|
||||
process.chdir(__dirname)
|
||||
const app = await import('../src/server');
|
||||
|
||||
describe('Calendar Merging API', () => {
|
||||
beforeAll(async () => {
|
||||
// Start the server
|
||||
server = app.default.listen(0);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
// Ensure the server is closed before cleanup
|
||||
await new Promise(resolve => server.close(resolve));
|
||||
|
||||
// Optional: Add a delay to ensure all handles are released
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
});
|
||||
|
||||
const getTestCalendarFilename = (filename) => {
|
||||
return path.join(TEST_CALENDARS_DIR, filename);
|
||||
};
|
||||
|
||||
const loadExpectedOutput = (filename) => {
|
||||
return fs.readFileSync(path.join(EXPECTED_OUTPUTS_DIR, filename), 'utf8');
|
||||
};
|
||||
|
||||
test('Preserve nextcloud calendar', async () => {
|
||||
const input = getTestCalendarFilename('nextcloud-minimal.ics');
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'nextcloud-minimal',
|
||||
calendars: [
|
||||
{
|
||||
url: input,
|
||||
prefix: '',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(response.status).toBe(200);
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'nextcloud-minimal.ics');
|
||||
console.log('Checking if file exists at:', filePath);
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output
|
||||
const expectedOutput = fs.readFileSync(input, 'utf8');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
//compare
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
test('Preserve google calendar', async () => {
|
||||
const input = getTestCalendarFilename('google-calendar-minimal.ics');
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'google-calendar-minimal',
|
||||
calendars: [
|
||||
{
|
||||
url: input,
|
||||
prefix: '',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(response.status).toBe(200);
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'google-calendar-minimal.ics');
|
||||
console.log('Checking if file exists at:', filePath);
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output
|
||||
const expectedOutput = fs.readFileSync(input, 'utf8');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
//compare
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
|
||||
test('Preserve date-based calendar', async () => {
|
||||
const input = getTestCalendarFilename('US_Holidays.ics');
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'US Holidays',
|
||||
calendars: [
|
||||
{
|
||||
url: input,
|
||||
prefix: '',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(response.status).toBe(200);
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'US_Holidays.ics');
|
||||
console.log('Checking if file exists at:', filePath);
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
// Load expected output and compare
|
||||
const expectedOutput = fs.readFileSync(input, 'utf8');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
test('Merge date-based calendar', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'Date Based Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: getTestCalendarFilename('holiday_calendar_2023.ics'),
|
||||
prefix: 'holiday_calendar_2023',
|
||||
override: false,
|
||||
},
|
||||
{
|
||||
url: getTestCalendarFilename('US_Holidays.ics'),
|
||||
prefix: 'US_holidays',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(new RegExp(`calendar/Date_Based_Calendar`));
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'Date_Based_Calendar.ics');
|
||||
console.log('Checking if file exists at:', filePath);
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('Date_Based_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
//test Merge time-based calendar
|
||||
test('Merge time-based calendar', async () => {
|
||||
const input = getTestCalendarFilename('work_task_calendar.ics');
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'Time Based Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: getTestCalendarFilename('team_meeting_calendar.ics'), // Time-based calendar
|
||||
prefix: 'team_meeting_calendar',
|
||||
override: false,
|
||||
},
|
||||
{
|
||||
url: getTestCalendarFilename('work_task_calendar.ics'), // Time-based calendar
|
||||
prefix: 'Work_Task',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(/calendar\/Time_Based_Calendar/);
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'Time_Based_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('Time_Based_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
//test Merge calendar without prefix
|
||||
test('Merge calendar without prefix', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'No Prefix Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: getTestCalendarFilename('sf_public_holidays.ics'),
|
||||
prefix: '',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(/calendar\/No_Prefix_Calendar/);
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'No_Prefix_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('No_Prefix_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
//test Merge calendar with override
|
||||
test('Merge calendar with override', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'Override Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: getTestCalendarFilename('sf_public_holidays.ics'),
|
||||
prefix: 'Override Event',
|
||||
override: true,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(/calendar\/Override_Calendar/);
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'Override_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('Override_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
//test Merge date-based and time-based calendars
|
||||
test('Merge date-based and time-based calendars', async () => {
|
||||
const response = await request(server)
|
||||
.post('/merge')
|
||||
.send({
|
||||
linkGroupName: 'Merged Date and Time Based Calendar',
|
||||
calendars: [
|
||||
{
|
||||
url: getTestCalendarFilename('holiday_calendar_2023.ics'), // Date-based calendar
|
||||
prefix: 'Holiday_2023',
|
||||
override: false,
|
||||
},
|
||||
{
|
||||
url: getTestCalendarFilename('work_task_calendar.ics'), // Time-based calendar
|
||||
prefix: 'Work_Task',
|
||||
override: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.url).toMatch(new RegExp('calendar/Merged_Date_and_Time_Based_Calendar'));
|
||||
|
||||
// Check if the file was created in the test directory
|
||||
const filePath = path.join(CALENDARS_DIR, 'Merged_Date_and_Time_Based_Calendar.ics');
|
||||
expect(fs.existsSync(filePath)).toBe(true);
|
||||
|
||||
// Load expected output and compare
|
||||
const expectedOutput = loadExpectedOutput('Merged_Date_and_Time_Based_Calendar.ics');
|
||||
const actualOutput = fs.readFileSync(filePath, 'utf8');
|
||||
expect(actualOutput).toBe(expectedOutput);
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,56 @@
|
|||
import ICAL from '../src/lib/ical.timezones';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import axios from 'axios';
|
||||
import { jest } from '@jest/globals';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
// ESM equivalent of __dirname
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
// Describe the test suite for Calendar Utility Functions
|
||||
describe('Calendar Utility Functions', () => {
|
||||
// Declare variable to hold the functions we will be testing
|
||||
let fetchCalendarData;
|
||||
|
||||
beforeAll(async () => {
|
||||
const calendarUtilModule = await import('../src/calendarUtil.js');
|
||||
fetchCalendarData = calendarUtilModule.fetchCalendarData;
|
||||
});
|
||||
|
||||
// Describe a nested test suite for the 'fetchCalendarData' function
|
||||
describe('fetchCalendarData', () => {
|
||||
|
||||
// Test case: fetching data from a URL
|
||||
it('fetches data from a URL', async () => {
|
||||
const testCalendar = { url: 'https://calendar.google.com/calendar/ical/b4c66eb4bb2cc15257d071bab3f935385778b042112ea1aaedada47f3f1a6e3a%40group.calendar.google.com/public/basic.ics' };
|
||||
|
||||
// Mock the axios.get method to resolve with specific test data
|
||||
jest.spyOn(axios, 'get').mockResolvedValue({ data: 'test data' });
|
||||
|
||||
// Call the fetchCalendarData function with the test calendar object
|
||||
const result = await fetchCalendarData(testCalendar);
|
||||
|
||||
// Assert that the fetched result's data matches the expected test data
|
||||
expect(result.data).toBe('test data');
|
||||
|
||||
// Restore the original axios.get method after the test
|
||||
axios.get.mockRestore();
|
||||
});
|
||||
|
||||
// Test case: reading data from a file
|
||||
it('reads and parses data from a file', async () => {
|
||||
const testCalendar = { url: path.join(__dirname, 'test_calendars', 'nextcloud.ics'), };
|
||||
|
||||
// Call the fetchCalendarData function
|
||||
const result = await fetchCalendarData(testCalendar);
|
||||
const parsed = ICAL.parse(result.data);
|
||||
const component = new ICAL.Component(parsed);
|
||||
const firstEvent = new ICAL.Event(component.getAllSubcomponents('vevent')[0]);
|
||||
// Assert that the fetched and parsed data matches
|
||||
expect(firstEvent.startDate.toJSON()).toEqual({"day": 20, "hour": 21, "isDate": false, "minute": 15, "month": 11, "second": 0, "timezone": "Europe/Berlin", "year": 2024});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
|
@ -0,0 +1,21 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:Date Based Calendar
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
DTSTAMP:20231225T000000Z
|
||||
SUMMARY:holiday_calendar_2023 Christmas Day
|
||||
LOCATION:Germany
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
DTSTAMP:20231225T000000Z
|
||||
SUMMARY:US_holidays Christmas Day
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"linkGroupName": "Date Based Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\holiday_calendar_2023.ics",
|
||||
"prefix": "holiday_calendar_2023",
|
||||
"override": false
|
||||
},
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\US_Holidays.ics",
|
||||
"prefix": "US_holidays",
|
||||
"override": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:Merged Date and Time Based Calendar
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
DTSTAMP:20231225T000000Z
|
||||
SUMMARY:Holiday_2023 Christmas Day
|
||||
LOCATION:Germany
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:20231108T090000-001@example.com
|
||||
DTSTART:20231108T090000Z
|
||||
DTEND:20231108T100000Z
|
||||
DTSTAMP:20231108T090000Z
|
||||
SUMMARY:Work_Task Work Task
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"linkGroupName": "Merged Date and Time Based Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\holiday_calendar_2023.ics",
|
||||
"prefix": "Holiday_2023",
|
||||
"override": false
|
||||
},
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\work_task_calendar.ics",
|
||||
"prefix": "Work_Task",
|
||||
"override": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:No Prefix Calendar
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
DTSTAMP:20231225T000000Z
|
||||
SUMMARY:Christmas Day
|
||||
LOCATION:San Francisco
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"linkGroupName": "No Prefix Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\sf_public_holidays.ics",
|
||||
"prefix": "",
|
||||
"override": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:Override Calendar
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
DTSTAMP:20231225T000000Z
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"linkGroupName": "Override Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\sf_public_holidays.ics",
|
||||
"prefix": "Override Event",
|
||||
"override": true
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:Time Based Calendar
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VEVENT
|
||||
UID:20231109T110000-001@example.com
|
||||
DTSTART:20231109T110000Z
|
||||
DTEND:20231109T120000Z
|
||||
DTSTAMP:20231109T110000Z
|
||||
SUMMARY:team_meeting_calendar Team Meeting
|
||||
LOCATION:Virtual
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:20231108T090000-001@example.com
|
||||
DTSTART:20231108T090000Z
|
||||
DTEND:20231108T100000Z
|
||||
DTSTAMP:20231108T090000Z
|
||||
SUMMARY:Work_Task Work Task
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"linkGroupName": "Time Based Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\team_meeting_calendar.ics",
|
||||
"prefix": "team_meeting_calendar",
|
||||
"override": false
|
||||
},
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship_tasks\\final calmerg\\test\\test_calendars\\work_task_calendar.ics",
|
||||
"prefix": "work_task",
|
||||
"override": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:US Holidays
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
DTSTAMP:20231225T000000Z
|
||||
SUMMARY:Christmas Day
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:google-calendar-minimal
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-TIMEZONE:Africa/Nairobi
|
||||
BEGIN:VEVENT
|
||||
UID:6tbrvsitniuu72li7kk15gou2b@google.com
|
||||
DTSTART:20241003T190000Z
|
||||
DTEND:20241003T200000Z
|
||||
DTSTAMP:20241119T115316Z
|
||||
SUMMARY:progodessey
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -8,7 +8,7 @@ X-WR-TIMEZONE:Africa/Nairobi
|
|||
BEGIN:VEVENT
|
||||
DTSTART:20240930T113000Z
|
||||
DTEND:20240930T123000Z
|
||||
DTSTAMP:20241104T102505Z
|
||||
DTSTAMP:20241119T115316Z
|
||||
UID:0d0p2hp0l26ebuk2r0kb1q9kuo@google.com
|
||||
CREATED:20240930T111532Z
|
||||
LAST-MODIFIED:20240930T111532Z
|
||||
|
@ -20,7 +20,7 @@ END:VEVENT
|
|||
BEGIN:VEVENT
|
||||
DTSTART:20241003T190000Z
|
||||
DTEND:20241003T200000Z
|
||||
DTSTAMP:20241104T102505Z
|
||||
DTSTAMP:20241119T115316Z
|
||||
UID:6tbrvsitniuu72li7kk15gou2b@google.com
|
||||
CREATED:20241001T194455Z
|
||||
LAST-MODIFIED:20241001T194455Z
|
||||
|
@ -30,10 +30,10 @@ SUMMARY:progodessey
|
|||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:7l7n9nltrudluv65gfgll2q930@google.com
|
||||
DTSTART:20241009T173000Z
|
||||
DTEND:20241009T183000Z
|
||||
DTSTAMP:20241104T102505Z
|
||||
UID:7l7n9nltrudluv65gfgll2q930@google.com
|
||||
DTSTAMP:20241119T115316Z
|
||||
CREATED:20241010T123337Z
|
||||
LAST-MODIFIED:20241010T123337Z
|
||||
SEQUENCE:0
|
||||
|
@ -41,4 +41,4 @@ STATUS:CONFIRMED
|
|||
SUMMARY:do
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//Example Corp//NONSGML Event//EN
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTAMP:20231225T000000Z
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
SUMMARY:Christmas Day
|
||||
DESCRIPTION:Public holiday for Christmas.
|
||||
LOCATION:Germany
|
||||
STATUS:CONFIRMED
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,32 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:nextcloud-minimal
|
||||
PRODID:-//CalMerge//Calendar Merger 1.0//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Berlin
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:CEST
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:CET
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||
DTSTART;TZID=Europe/Berlin:20241120T211500
|
||||
DTEND;TZID=Europe/Berlin:20241120T215000
|
||||
DTSTAMP:20241113T212909Z
|
||||
SUMMARY:JR Weekly Check-In
|
||||
LOCATION:FaceTime
|
||||
RRULE:FREQ=WEEKLY;BYDAY=WE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,131 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
PRODID:-//SabreDAV//SabreDAV//EN
|
||||
X-WR-CALNAME:Progodyssey Ryan (stackspin-a51baefe-70df-4cce-9be1-048354b619
|
||||
b8)
|
||||
X-APPLE-CALENDAR-COLOR:#ddcb55
|
||||
REFRESH-INTERVAL;VALUE=DURATION:PT4H
|
||||
X-PUBLISHED-TTL:PT4H
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Berlin
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:CEST
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:CET
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241113T212909Z
|
||||
DTEND;TZID=Europe/Berlin:20241120T215000
|
||||
DTSTAMP:20241113T212909Z
|
||||
DTSTART;TZID=Europe/Berlin:20241120T211500
|
||||
LAST-MODIFIED:20241113T212909Z
|
||||
LOCATION:FaceTime
|
||||
RRULE:FREQ=WEEKLY;BYDAY=WE
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:JR Weekly Check-In
|
||||
TRANSP:OPAQUE
|
||||
UID:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||
RELATED-TO;RELTYPE=SIBLING:17cf7d22-9bee-4a8e-9023-878b1a1b73a0
|
||||
BEGIN:VALARM
|
||||
ACKNOWLEDGED:20241113T202052Z
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:This is an event reminder.
|
||||
TRIGGER:-PT20M
|
||||
UID:99250427-AB45-4111-A999-DB417FC290D1
|
||||
X-WR-ALARMUID:99250427-AB45-4111-A999-DB417FC290D1
|
||||
SUMMARY:JR Weekly Check-In
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241113T213036Z
|
||||
DTEND;TZID=Europe/Berlin:20241204T212500
|
||||
DTSTAMP:20241113T213036Z
|
||||
DTSTART;TZID=Europe/Berlin:20241204T203000
|
||||
LAST-MODIFIED:20241113T213036Z
|
||||
LOCATION:FaceTime
|
||||
SEQUENCE:1
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:JR Weekly Check-In
|
||||
TRANSP:OPAQUE
|
||||
UID:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||
RELATED-TO;RELTYPE=SIBLING:17cf7d22-9bee-4a8e-9023-878b1a1b73a0
|
||||
RECURRENCE-ID;TZID=Europe/Berlin:20241204T211500
|
||||
BEGIN:VALARM
|
||||
ACKNOWLEDGED:20241113T202052Z
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:This is an event reminder.
|
||||
TRIGGER:-PT20M
|
||||
UID:99250427-AB45-4111-A999-DB417FC290D1
|
||||
X-WR-ALARMUID:99250427-AB45-4111-A999-DB417FC290D1
|
||||
SUMMARY:JR Weekly Check-In
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241107T101403Z
|
||||
DTEND;TZID=Europe/Berlin:20241111T134500
|
||||
DTSTAMP:20241118T103806Z
|
||||
DTSTART;TZID=Europe/Berlin:20241111T121500
|
||||
LAST-MODIFIED:20241118T103803Z
|
||||
LOCATION:https://call.element.io/room/#/progodyssey?password=bU95nPdV2u-BGJ
|
||||
4zw9cPGw&roomId=%21QsGQUxdyuMfGKhGvNH%3Acall.ems.host
|
||||
RRULE:FREQ=WEEKLY;BYDAY=MO
|
||||
SEQUENCE:4
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:JR Coprogramming Session
|
||||
TRANSP:OPAQUE
|
||||
UID:8c251542-6cbf-4396-b83d-490be79c97a9
|
||||
BEGIN:VALARM
|
||||
ACKNOWLEDGED:20241118T103803Z
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:This is an event reminder.
|
||||
SUMMARY:Coprogramming Session
|
||||
TRIGGER:-PT1H
|
||||
UID:55C3B462-E182-4A2B-A500-3F249FC860C2
|
||||
X-WR-ALARMUID:55C3B462-E182-4A2B-A500-3F249FC860C2
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:Reminder
|
||||
TRIGGER:-PT1H
|
||||
UID:9AABB2AB-A755-4723-87CF-10B119670E7F
|
||||
X-APPLE-DEFAULT-ALARM:TRUE
|
||||
X-WR-ALARMUID:9AABB2AB-A755-4723-87CF-10B119670E7F
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241107T101605Z
|
||||
DTEND;TZID=Europe/Berlin:20241113T215500
|
||||
DTSTAMP:20241113T212909Z
|
||||
DTSTART;TZID=Europe/Berlin:20241113T213000
|
||||
LAST-MODIFIED:20241113T212909Z
|
||||
LOCATION:FaceTime
|
||||
RRULE:FREQ=WEEKLY;BYDAY=WE;UNTIL=20241120T202959Z
|
||||
SEQUENCE:4
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:JR Weekly Check-In
|
||||
TRANSP:OPAQUE
|
||||
UID:17cf7d22-9bee-4a8e-9023-878b1a1b73a0
|
||||
RELATED-TO;RELTYPE=SIBLING:5f4ad965-16a8-48eb-8233-78bf93a8b35e
|
||||
BEGIN:VALARM
|
||||
ACKNOWLEDGED:20241113T202052Z
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:This is an event reminder.
|
||||
SUMMARY:JR Weekly Check-In
|
||||
TRIGGER:-PT20M
|
||||
UID:99250427-AB45-4111-A999-DB417FC290D1
|
||||
X-WR-ALARMUID:99250427-AB45-4111-A999-DB417FC290D1
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//Example Corp//NONSGML Event//EN
|
||||
BEGIN:VEVENT
|
||||
UID:20231225T000000-001@example.com
|
||||
DTSTAMP:20231225T000000Z
|
||||
DTSTART;VALUE=DATE:20231225
|
||||
DTEND;VALUE=DATE:20231226
|
||||
SUMMARY:Christmas Day
|
||||
DESCRIPTION:Public holiday for Christmas in San Francisco.
|
||||
LOCATION:San Francisco
|
||||
STATUS:CONFIRMED
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,15 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//Example Corp//NONSGML Event//EN
|
||||
BEGIN:VEVENT
|
||||
UID:20231109T110000-001@example.com
|
||||
DTSTAMP:20231109T110000Z
|
||||
DTSTART:20231109T110000Z
|
||||
DTEND:20231109T120000Z
|
||||
SUMMARY:Team Meeting
|
||||
DESCRIPTION:Team meeting for project planning.
|
||||
LOCATION:Virtual
|
||||
STATUS:CONFIRMED
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -0,0 +1,11 @@
|
|||
BEGIN:VCALENDAR
|
||||
NAME:Time Based Calendar
|
||||
VERSION:2.0
|
||||
BEGIN:VEVENT
|
||||
UID:20231108T090000-001@example.com
|
||||
DTSTAMP:20231108T090000Z
|
||||
DTSTART:20231108T090000Z
|
||||
DTEND:20231108T100000Z
|
||||
SUMMARY:Work Task
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,336 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//sebbo.net//ical-generator//EN
|
||||
NAME:Date Based Calendar
|
||||
X-WR-CALNAME:Date Based Calendar
|
||||
BEGIN:VEVENT
|
||||
UID:l93d@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20230219
|
||||
DTEND;VALUE=DATE:20230224
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Ferien_Bayern_2023 Winterferien 2023 Bayern
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:bxei@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20230402
|
||||
DTEND;VALUE=DATE:20230415
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Ferien_Bayern_2023 Osterferien 2023 Bayern
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:csr1@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20230529
|
||||
DTEND;VALUE=DATE:20230609
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Ferien_Bayern_2023 Pfingstferien 2023 Bayern
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:gamv@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20230730
|
||||
DTEND;VALUE=DATE:20230911
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Ferien_Bayern_2023 Sommerferien 2023 Bayern
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:xuty@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20231029
|
||||
DTEND;VALUE=DATE:20231103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Ferien_Bayern_2023 Herbstferien 2023 Bayern
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:l9k9@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20231121
|
||||
DTEND;VALUE=DATE:20231122
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Ferien_Bayern_2023 Herbstferien 2023 Bayern
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:om17@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20231222
|
||||
DTEND;VALUE=DATE:20240105
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Ferien_Bayern_2023 Weihnachtsferien 2023 Bayern
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:1i1v@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20231231
|
||||
DTEND;VALUE=DATE:20231231
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays New Year's Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:qga1@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240114
|
||||
DTEND;VALUE=DATE:20240114
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays M L King Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:axvt@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240218
|
||||
DTEND;VALUE=DATE:20240218
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Presidents' Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:3t87@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240328
|
||||
DTEND;VALUE=DATE:20240328
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Good Friday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:olsu@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240330
|
||||
DTEND;VALUE=DATE:20240330
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Easter Sunday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:xts1@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240526
|
||||
DTEND;VALUE=DATE:20240526
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Memorial Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:0e36@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240618
|
||||
DTEND;VALUE=DATE:20240618
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Juneteenth
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:rc80@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240703
|
||||
DTEND;VALUE=DATE:20240703
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Independence Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:386s@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20240901
|
||||
DTEND;VALUE=DATE:20240901
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Labor Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:102z@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20241013
|
||||
DTEND;VALUE=DATE:20241013
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Columbus Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:qqbg@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20241110
|
||||
DTEND;VALUE=DATE:20241110
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Veterans Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:dyh3@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20241127
|
||||
DTEND;VALUE=DATE:20241127
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Thanksgiving Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:oqsd@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20241224
|
||||
DTEND;VALUE=DATE:20241224
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Christmas
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:8140@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20241231
|
||||
DTEND;VALUE=DATE:20241231
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays New Year's Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:fmmb@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250119
|
||||
DTEND;VALUE=DATE:20250119
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays M L King Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:l4x1@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250216
|
||||
DTEND;VALUE=DATE:20250216
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Presidents' Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:fpt7@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250417
|
||||
DTEND;VALUE=DATE:20250417
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Good Friday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:x3y4@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250419
|
||||
DTEND;VALUE=DATE:20250419
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Easter Sunday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:fhn8@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250525
|
||||
DTEND;VALUE=DATE:20250525
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Memorial Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:wue7@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250618
|
||||
DTEND;VALUE=DATE:20250618
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Juneteenth
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:oq6h@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250703
|
||||
DTEND;VALUE=DATE:20250703
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Independence Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:4gm3@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20250831
|
||||
DTEND;VALUE=DATE:20250831
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Labor Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:8he3@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20251012
|
||||
DTEND;VALUE=DATE:20251012
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Columbus Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:3u40@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20251110
|
||||
DTEND;VALUE=DATE:20251110
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Veterans Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:s651@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20251126
|
||||
DTEND;VALUE=DATE:20251126
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Thanksgiving Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:yzoz@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART;VALUE=DATE:20251224
|
||||
DTEND;VALUE=DATE:20251224
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:US_holidays Christmas
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"id": "Date_Based_Calendar",
|
||||
"linkGroupName": "Date Based Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\ferien_bayern_2023.ics",
|
||||
"prefix": "Ferien_Bayern_2023",
|
||||
"override": false
|
||||
},
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\US_Holidays.ics",
|
||||
"prefix": "US_holidays",
|
||||
"override": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,266 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//sebbo.net//ical-generator//EN
|
||||
NAME:No Prefix Calendar
|
||||
X-WR-CALNAME:No Prefix Calendar
|
||||
BEGIN:VEVENT
|
||||
UID:jfle@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20231231
|
||||
DTEND;VALUE=DATE:20231231
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:s4ov@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240101
|
||||
DTEND;VALUE=DATE:20240101
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:ov14@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240102
|
||||
DTEND;VALUE=DATE:20240102
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:qdqh@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240103
|
||||
DTEND;VALUE=DATE:20240103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:i05i@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240104
|
||||
DTEND;VALUE=DATE:20240104
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:k6ih@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240106
|
||||
DTEND;VALUE=DATE:20240106
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Orthodox Christmas
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:32bn@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240107
|
||||
DTEND;VALUE=DATE:20240107
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Orthodox Christmas Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:k1o7@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240222
|
||||
DTEND;VALUE=DATE:20240222
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Defender of the Fatherland
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:4l5n@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240307
|
||||
DTEND;VALUE=DATE:20240307
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Intl. Women's Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:ymwf@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240430
|
||||
DTEND;VALUE=DATE:20240430
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Spring and Labor Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:t4fd@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240508
|
||||
DTEND;VALUE=DATE:20240508
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Victory Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:foxu@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240611
|
||||
DTEND;VALUE=DATE:20240611
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Russia Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:ne1r@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20241103
|
||||
DTEND;VALUE=DATE:20241103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Civil Unity Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:jzcn@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20241231
|
||||
DTEND;VALUE=DATE:20241231
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:dfzn@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250101
|
||||
DTEND;VALUE=DATE:20250101
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:v9mu@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250102
|
||||
DTEND;VALUE=DATE:20250102
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:x79k@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250103
|
||||
DTEND;VALUE=DATE:20250103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:gj06@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250104
|
||||
DTEND;VALUE=DATE:20250104
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: New Year's Day Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:s75j@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250106
|
||||
DTEND;VALUE=DATE:20250106
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Orthodox Christmas
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:u16z@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250107
|
||||
DTEND;VALUE=DATE:20250107
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Orthodox Christmas Holiday
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:c1co@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250223
|
||||
DTEND;VALUE=DATE:20250223
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Defender of the Fatherland
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:s1ga@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250309
|
||||
DTEND;VALUE=DATE:20250309
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Intl. Women's Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:7050@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250430
|
||||
DTEND;VALUE=DATE:20250430
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Spring and Labor Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:stsk@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250508
|
||||
DTEND;VALUE=DATE:20250508
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Victory Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:n4iy@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250611
|
||||
DTEND;VALUE=DATE:20250611
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Russia Day
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:7dco@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20251103
|
||||
DTEND;VALUE=DATE:20251103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY: Civil Unity Day
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"id": "No_Prefix_Calendar",
|
||||
"linkGroupName": "No Prefix Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\San_Francisco_Public_Holidays.ics",
|
||||
"prefix": "",
|
||||
"override": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,266 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//sebbo.net//ical-generator//EN
|
||||
NAME:Override Calendar
|
||||
X-WR-CALNAME:Override Calendar
|
||||
BEGIN:VEVENT
|
||||
UID:cknb@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20231231
|
||||
DTEND;VALUE=DATE:20231231
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:p03j@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240101
|
||||
DTEND;VALUE=DATE:20240101
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:s2a8@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240102
|
||||
DTEND;VALUE=DATE:20240102
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:ptdn@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240103
|
||||
DTEND;VALUE=DATE:20240103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:d7oa@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240104
|
||||
DTEND;VALUE=DATE:20240104
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:wuts@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240106
|
||||
DTEND;VALUE=DATE:20240106
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:g3b0@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240107
|
||||
DTEND;VALUE=DATE:20240107
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:qbx4@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240222
|
||||
DTEND;VALUE=DATE:20240222
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:v25w@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240307
|
||||
DTEND;VALUE=DATE:20240307
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:7u8c@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240430
|
||||
DTEND;VALUE=DATE:20240430
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:apf4@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240508
|
||||
DTEND;VALUE=DATE:20240508
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:jfpb@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20240611
|
||||
DTEND;VALUE=DATE:20240611
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:2ykv@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20241103
|
||||
DTEND;VALUE=DATE:20241103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:0b26@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20241231
|
||||
DTEND;VALUE=DATE:20241231
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:qs49@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250101
|
||||
DTEND;VALUE=DATE:20250101
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:559o@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250102
|
||||
DTEND;VALUE=DATE:20250102
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:8giv@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250103
|
||||
DTEND;VALUE=DATE:20250103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:e57i@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250104
|
||||
DTEND;VALUE=DATE:20250104
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:ur8w@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250106
|
||||
DTEND;VALUE=DATE:20250106
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:08hg@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250107
|
||||
DTEND;VALUE=DATE:20250107
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:gvgf@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250223
|
||||
DTEND;VALUE=DATE:20250223
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:rllx@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250309
|
||||
DTEND;VALUE=DATE:20250309
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:sy19@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250430
|
||||
DTEND;VALUE=DATE:20250430
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:um2w@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250508
|
||||
DTEND;VALUE=DATE:20250508
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:fdjj@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20250611
|
||||
DTEND;VALUE=DATE:20250611
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:fsik@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122935Z
|
||||
DTSTART;VALUE=DATE:20251103
|
||||
DTEND;VALUE=DATE:20251103
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT:TRUE
|
||||
SUMMARY:Override Event
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"id": "Override_Calendar",
|
||||
"linkGroupName": "Override Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\San_Francisco_Public_Holidays.ics",
|
||||
"prefix": "Override Event",
|
||||
"override": true
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//sebbo.net//ical-generator//EN
|
||||
NAME:Time Based Calendar
|
||||
X-WR-CALNAME:Time Based Calendar
|
||||
BEGIN:VEVENT
|
||||
UID:upko@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART:20241001T183000Z
|
||||
DTEND:20241001T193000Z
|
||||
SUMMARY:other_work calmerge
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:myd3@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART:20241010T173000Z
|
||||
DTEND:20241010T183000Z
|
||||
SUMMARY:other_work to do
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:zs1z@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART:20240930T113000Z
|
||||
DTEND:20240930T123000Z
|
||||
SUMMARY:work other work
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:d6rq@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART:20241003T190000Z
|
||||
DTEND:20241003T200000Z
|
||||
SUMMARY:work progodessey
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:6c65@Ryan-jr
|
||||
SEQUENCE:0
|
||||
DTSTAMP:20241105T122934Z
|
||||
DTSTART:20241009T173000Z
|
||||
DTEND:20241009T183000Z
|
||||
SUMMARY:work do
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"id": "Time_Based_Calendar",
|
||||
"linkGroupName": "Time Based Calendar",
|
||||
"calendars": [
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\other_work.ics",
|
||||
"prefix": "other_work",
|
||||
"override": false
|
||||
},
|
||||
{
|
||||
"url": "C:\\Users\\user\\OneDrive\\Desktop\\Internship tasks\\final calmerg\\test_calendars\\work.ics",
|
||||
"prefix": "work",
|
||||
"override": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,320 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//Calendar Labs//Calendar 1.0//EN
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-CALNAME:Russia Holidays
|
||||
X-WR-TIMEZONE:Etc/GMT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day
|
||||
DTSTART;VALUE=DATE:20240101
|
||||
DTEND;VALUE=DATE:20240101
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcb9111729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20240102
|
||||
DTEND;VALUE=DATE:20240102
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcba351729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20240103
|
||||
DTEND;VALUE=DATE:20240103
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcbb4a1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20240104
|
||||
DTEND;VALUE=DATE:20240104
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcbc471729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20240105
|
||||
DTEND;VALUE=DATE:20240105
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcbd3c1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Orthodox Christmas
|
||||
DTSTART;VALUE=DATE:20240107
|
||||
DTEND;VALUE=DATE:20240107
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcbe351729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Orthodox Christmas Holiday
|
||||
DTSTART;VALUE=DATE:20240108
|
||||
DTEND;VALUE=DATE:20240108
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcbf5b1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Defender of the Fatherland
|
||||
DTSTART;VALUE=DATE:20240223
|
||||
DTEND;VALUE=DATE:20240223
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/defender-of-the-fatherland.php to know more about Defender of the Fatherland. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc0661729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Intl. Women's Day
|
||||
DTSTART;VALUE=DATE:20240308
|
||||
DTEND;VALUE=DATE:20240308
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/international/international-womens-day.php to know more about Intl. Women's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc16e1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Spring and Labor Day
|
||||
DTSTART;VALUE=DATE:20240501
|
||||
DTEND;VALUE=DATE:20240501
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/uk/may-day.php to know more about Spring and Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc26f1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Victory Day
|
||||
DTSTART;VALUE=DATE:20240509
|
||||
DTEND;VALUE=DATE:20240509
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/victory-day.php to know more about Victory Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc36f1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Russia Day
|
||||
DTSTART;VALUE=DATE:20240612
|
||||
DTEND;VALUE=DATE:20240612
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/russia-day.php to know more about Russia Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc4771729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Civil Unity Day
|
||||
DTSTART;VALUE=DATE:20241104
|
||||
DTEND;VALUE=DATE:20241104
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/unity-day.php to know more about Civil Unity Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc57d1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day
|
||||
DTSTART;VALUE=DATE:20250101
|
||||
DTEND;VALUE=DATE:20250101
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc6811729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20250102
|
||||
DTEND;VALUE=DATE:20250102
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc7881729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20250103
|
||||
DTEND;VALUE=DATE:20250103
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc8911729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20250104
|
||||
DTEND;VALUE=DATE:20250104
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcc9a21729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day Holiday
|
||||
DTSTART;VALUE=DATE:20250105
|
||||
DTEND;VALUE=DATE:20250105
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bccac61729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Orthodox Christmas
|
||||
DTSTART;VALUE=DATE:20250107
|
||||
DTEND;VALUE=DATE:20250107
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bccbd41729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Orthodox Christmas Holiday
|
||||
DTSTART;VALUE=DATE:20250108
|
||||
DTEND;VALUE=DATE:20250108
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/orthodox-christmas.php to know more about Orthodox Christmas Holiday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bccceb1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Defender of the Fatherland
|
||||
DTSTART;VALUE=DATE:20250224
|
||||
DTEND;VALUE=DATE:20250224
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/defender-of-the-fatherland.php to know more about Defender of the Fatherland. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcce091729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Intl. Women's Day
|
||||
DTSTART;VALUE=DATE:20250310
|
||||
DTEND;VALUE=DATE:20250310
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/international/international-womens-day.php to know more about Intl. Women's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bccf3b1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Spring and Labor Day
|
||||
DTSTART;VALUE=DATE:20250501
|
||||
DTEND;VALUE=DATE:20250501
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/uk/may-day.php to know more about Spring and Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcd0531729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Victory Day
|
||||
DTSTART;VALUE=DATE:20250509
|
||||
DTEND;VALUE=DATE:20250509
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/victory-day.php to know more about Victory Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcd16f1729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Russia Day
|
||||
DTSTART;VALUE=DATE:20250612
|
||||
DTEND;VALUE=DATE:20250612
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/russia-day.php to know more about Russia Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcd2961729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Civil Unity Day
|
||||
DTSTART;VALUE=DATE:20251104
|
||||
DTEND;VALUE=DATE:20251104
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/russia/unity-day.php to know more about Civil Unity Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:67164e0bcd3b51729515019@calendarlabs.com
|
||||
DTSTAMP:20241021T125019Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,320 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//Calendar Labs//Calendar 1.0//EN
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-CALNAME:US Holidays
|
||||
X-WR-TIMEZONE:Etc/GMT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day
|
||||
DTSTART;VALUE=DATE:20240101
|
||||
DTEND;VALUE=DATE:20240101
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca14c1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:M L King Day
|
||||
DTSTART;VALUE=DATE:20240115
|
||||
DTEND;VALUE=DATE:20240115
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/martin-luther-king-day.php to know more about M L King Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca1e81728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Presidents' Day
|
||||
DTSTART;VALUE=DATE:20240219
|
||||
DTEND;VALUE=DATE:20240219
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/presidents-day.php to know more about Presidents' Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca27d1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Good Friday
|
||||
DTSTART;VALUE=DATE:20240329
|
||||
DTEND;VALUE=DATE:20240329
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/good-friday.php to know more about Good Friday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca3161728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Easter Sunday
|
||||
DTSTART;VALUE=DATE:20240331
|
||||
DTEND;VALUE=DATE:20240331
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/easter.php to know more about Easter Sunday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca3ad1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Memorial Day
|
||||
DTSTART;VALUE=DATE:20240527
|
||||
DTEND;VALUE=DATE:20240527
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/memorial-day.php to know more about Memorial Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca44a1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Juneteenth
|
||||
DTSTART;VALUE=DATE:20240619
|
||||
DTEND;VALUE=DATE:20240619
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/juneteenth.php to know more about Juneteenth. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca4dc1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Independence Day
|
||||
DTSTART;VALUE=DATE:20240704
|
||||
DTEND;VALUE=DATE:20240704
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/independence-day.php to know more about Independence Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca5731728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Labor Day
|
||||
DTSTART;VALUE=DATE:20240902
|
||||
DTEND;VALUE=DATE:20240902
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/labor-day.php to know more about Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca60a1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Columbus Day
|
||||
DTSTART;VALUE=DATE:20241014
|
||||
DTEND;VALUE=DATE:20241014
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/columbus-day.php to know more about Columbus Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca69e1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Veterans Day
|
||||
DTSTART;VALUE=DATE:20241111
|
||||
DTEND;VALUE=DATE:20241111
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/veterans-day.php to know more about Veterans Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca7351728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Thanksgiving Day
|
||||
DTSTART;VALUE=DATE:20241128
|
||||
DTEND;VALUE=DATE:20241128
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/thanksgiving-day.php to know more about Thanksgiving Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca7c61728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Christmas
|
||||
DTSTART;VALUE=DATE:20241225
|
||||
DTEND;VALUE=DATE:20241225
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/christmas.php to know more about Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca8631728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day
|
||||
DTSTART;VALUE=DATE:20250101
|
||||
DTEND;VALUE=DATE:20250101
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/new-years-day.php to know more about New Year's Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca8fe1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:M L King Day
|
||||
DTSTART;VALUE=DATE:20250120
|
||||
DTEND;VALUE=DATE:20250120
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/martin-luther-king-day.php to know more about M L King Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93cca99a1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Presidents' Day
|
||||
DTSTART;VALUE=DATE:20250217
|
||||
DTEND;VALUE=DATE:20250217
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/presidents-day.php to know more about Presidents' Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccaa361728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Good Friday
|
||||
DTSTART;VALUE=DATE:20250418
|
||||
DTEND;VALUE=DATE:20250418
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/good-friday.php to know more about Good Friday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccaad11728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Easter Sunday
|
||||
DTSTART;VALUE=DATE:20250420
|
||||
DTEND;VALUE=DATE:20250420
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/easter.php to know more about Easter Sunday. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccab6b1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Memorial Day
|
||||
DTSTART;VALUE=DATE:20250526
|
||||
DTEND;VALUE=DATE:20250526
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/memorial-day.php to know more about Memorial Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccac0d1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Juneteenth
|
||||
DTSTART;VALUE=DATE:20250619
|
||||
DTEND;VALUE=DATE:20250619
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/juneteenth.php to know more about Juneteenth. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccacac1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Independence Day
|
||||
DTSTART;VALUE=DATE:20250704
|
||||
DTEND;VALUE=DATE:20250704
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/independence-day.php to know more about Independence Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccad4a1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Labor Day
|
||||
DTSTART;VALUE=DATE:20250901
|
||||
DTEND;VALUE=DATE:20250901
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/labor-day.php to know more about Labor Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccadea1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Columbus Day
|
||||
DTSTART;VALUE=DATE:20251013
|
||||
DTEND;VALUE=DATE:20251013
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/columbus-day.php to know more about Columbus Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccae8a1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Veterans Day
|
||||
DTSTART;VALUE=DATE:20251111
|
||||
DTEND;VALUE=DATE:20251111
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/veterans-day.php to know more about Veterans Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccaf2b1728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Thanksgiving Day
|
||||
DTSTART;VALUE=DATE:20251127
|
||||
DTEND;VALUE=DATE:20251127
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/thanksgiving-day.php to know more about Thanksgiving Day. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccafd01728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Christmas
|
||||
DTSTART;VALUE=DATE:20251225
|
||||
DTEND;VALUE=DATE:20251225
|
||||
LOCATION:United States
|
||||
DESCRIPTION:Visit https://calendarlabs.com/holidays/us/christmas.php to know more about Christmas. \n\n Like us on Facebook: http://fb.com/calendarlabs to get updates
|
||||
UID:6704d93ccb0721728371004@calendarlabs.com
|
||||
DTSTAMP:20241008T070324Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,89 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH
|
||||
PRODID:-//schulferien.org//iCal Generator//DE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20240921T032002Z
|
||||
LAST-MODIFIED:20240921T032002Z
|
||||
DTSTAMP:20240921T032002Z
|
||||
SUMMARY:Winterferien 2023 Bayern
|
||||
DTSTART;VALUE=DATE:20230220
|
||||
DTEND;VALUE=DATE:20230225
|
||||
URL:http://www.schulferien.org
|
||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
||||
TRANSP:TRANSPARENT
|
||||
UID:F_2023_termin66ee1f432d75c@schulferien.org
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20240921T032002Z
|
||||
LAST-MODIFIED:20240921T032002Z
|
||||
DTSTAMP:20240921T032002Z
|
||||
SUMMARY:Osterferien 2023 Bayern
|
||||
DTSTART;VALUE=DATE:20230403
|
||||
DTEND;VALUE=DATE:20230416
|
||||
URL:http://www.schulferien.org
|
||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
||||
TRANSP:TRANSPARENT
|
||||
UID:F_2023_termin66ee1f432dc7f@schulferien.org
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20240921T032002Z
|
||||
LAST-MODIFIED:20240921T032002Z
|
||||
DTSTAMP:20240921T032002Z
|
||||
SUMMARY:Pfingstferien 2023 Bayern
|
||||
DTSTART;VALUE=DATE:20230530
|
||||
DTEND;VALUE=DATE:20230610
|
||||
URL:http://www.schulferien.org
|
||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
||||
TRANSP:TRANSPARENT
|
||||
UID:F_2023_termin66ee1f432dccb@schulferien.org
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20240921T032002Z
|
||||
LAST-MODIFIED:20240921T032002Z
|
||||
DTSTAMP:20240921T032002Z
|
||||
SUMMARY:Sommerferien 2023 Bayern
|
||||
DTSTART;VALUE=DATE:20230731
|
||||
DTEND;VALUE=DATE:20230912
|
||||
URL:http://www.schulferien.org
|
||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
||||
TRANSP:TRANSPARENT
|
||||
UID:F_2023_termin66ee1f432dd04@schulferien.org
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20240921T032002Z
|
||||
LAST-MODIFIED:20240921T032002Z
|
||||
DTSTAMP:20240921T032002Z
|
||||
SUMMARY:Herbstferien 2023 Bayern
|
||||
DTSTART;VALUE=DATE:20231030
|
||||
DTEND;VALUE=DATE:20231104
|
||||
URL:http://www.schulferien.org
|
||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
||||
TRANSP:TRANSPARENT
|
||||
UID:F_2023_termin66ee1f432dd29@schulferien.org
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20240921T032002Z
|
||||
LAST-MODIFIED:20240921T032002Z
|
||||
DTSTAMP:20240921T032002Z
|
||||
SUMMARY:Herbstferien 2023 Bayern
|
||||
DTSTART;VALUE=DATE:20231122
|
||||
DTEND;VALUE=DATE:20231123
|
||||
URL:http://www.schulferien.org
|
||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
||||
TRANSP:TRANSPARENT
|
||||
UID:F_2023_termin66ee1f432dd58@schulferien.org
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
CREATED:20240921T032002Z
|
||||
LAST-MODIFIED:20240921T032002Z
|
||||
DTSTAMP:20240921T032002Z
|
||||
SUMMARY:Weihnachtsferien 2023 Bayern
|
||||
DTSTART;VALUE=DATE:20231223
|
||||
DTEND;VALUE=DATE:20240106
|
||||
URL:http://www.schulferien.org
|
||||
DESCRIPTION:Alle Termine auf www.schulferien.org
|
||||
TRANSP:TRANSPARENT
|
||||
UID:F_2023_termin66ee1f432dd7c@schulferien.org
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
|
@ -1,32 +0,0 @@
|
|||
BEGIN:VCALENDAR
|
||||
PRODID:-//Google Inc//Google Calendar 70.9054//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-CALNAME:other work
|
||||
X-WR-TIMEZONE:Africa/Nairobi
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20241001T183000Z
|
||||
DTEND:20241001T193000Z
|
||||
DTSTAMP:20241104T123219Z
|
||||
UID:5rplp3qqvjadm1bc210un9po2l@google.com
|
||||
CREATED:20241001T194435Z
|
||||
LAST-MODIFIED:20241001T194435Z
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:calmerge
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20241010T173000Z
|
||||
DTEND:20241010T183000Z
|
||||
DTSTAMP:20241104T123219Z
|
||||
UID:58f1gf5cbp8k1du2chiufuo510@google.com
|
||||
CREATED:20241010T123352Z
|
||||
LAST-MODIFIED:20241010T123352Z
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:to do
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
Loading…
Reference in New Issue